diff options
author | Juergen Kahrs <Juergen.Kahrs@googlemail.com> | 2013-05-16 21:08:20 +0200 |
---|---|---|
committer | Juergen Kahrs <Juergen.Kahrs@googlemail.com> | 2013-05-16 21:08:20 +0200 |
commit | 98ecd5e8c7b6c83b8c794050249b445dfea17334 (patch) | |
tree | bebd47cf502ca7ffcf4f013bf0aa5d6c42339963 /extension/inplace.c | |
parent | 57fe811dd036e276abd30eed3aac135df7e362ab (diff) | |
parent | 403350c2b25551c749e2310556ba2f63e271042b (diff) | |
download | egawk-98ecd5e8c7b6c83b8c794050249b445dfea17334.tar.gz egawk-98ecd5e8c7b6c83b8c794050249b445dfea17334.tar.bz2 egawk-98ecd5e8c7b6c83b8c794050249b445dfea17334.zip |
Merge remote-tracking branch 'origin/master' into cmake
Diffstat (limited to 'extension/inplace.c')
-rw-r--r-- | extension/inplace.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/extension/inplace.c b/extension/inplace.c index ded4746c..ad6f0e23 100644 --- a/extension/inplace.c +++ b/extension/inplace.c @@ -51,6 +51,20 @@ #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) #endif +#ifdef __MINGW32__ +# define chown(x,y,z) (0) +# define link(f1,f2) rename(f1,f2) +int +mkstemp (char *template) +{ + char *tmp_fname = _mktemp (template); + + if (tmp_fname) + return _open (tmp_fname, O_RDWR | O_CREAT | O_EXCL, S_IREAD | S_IWRITE); + return -1; +} +#endif + static const gawk_api_t *api; /* for convenience macros to work */ static awk_ext_id_t *ext_id; static const char *ext_version = "inplace extension: version 1.0"; @@ -225,6 +239,10 @@ do_inplace_end(int nargs, awk_value_t *result) free(bakname); } +#ifdef __MINGW32__ + unlink(filename.str_value.str); +#endif + if (rename(state.tname, filename.str_value.str) < 0) fatal(ext_id, _("inplace_end: rename(`%s', `%s') failed (%s)"), state.tname, filename.str_value.str, strerror(errno)); |