1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-07 16:10:46 -08:00

(Fcopy_file) [WINDOWS_NT]: Ensure file is not

read-only when setting modified time.
This commit is contained in:
Jason Rumney 2002-03-09 00:38:54 +00:00
parent f67acc8dfb
commit ad497129ba
2 changed files with 23 additions and 5 deletions

View file

@ -1,3 +1,8 @@
2002-03-09 Jason Rumney <jasonr@gnu.org>
* fileio.c (Fcopy_file) [WINDOWS_NT]: Ensure file is not
read-only when setting modified time.
2002-03-08 Gerd Moellmann <gerd@gnu.org>
* xdisp.c (move_it_vertically_backward): At the end of the

View file

@ -2409,12 +2409,25 @@ A prefix arg makes KEEP-TIME non-nil. */)
else if (NILP (keep_time))
{
EMACS_TIME now;
DWORD attributes;
char * filename;
EMACS_GET_TIME (now);
if (set_file_times (XSTRING (encoded_newname)->data,
now, now))
Fsignal (Qfile_date_error,
Fcons (build_string ("Cannot set file date"),
Fcons (newname, Qnil)));
filename = XSTRING (encoded_newname)->data;
/* Ensure file is writable while its modified time is set. */
attributes = GetFileAttributes (filename);
SetFileAttributes (filename, attributes ^ FILE_ATTRIBUTE_READONLY);
if (set_file_times (filename, now, now))
{
/* Restore original attributes. */
SetFileAttributes (filename, attributes);
Fsignal (Qfile_date_error,
Fcons (build_string ("Cannot set file date"),
Fcons (newname, Qnil)));
}
/* Restore original attributes. */
SetFileAttributes (filename, attributes);
}
#else /* not WINDOWSNT */
ifd = emacs_open (XSTRING (encoded_file)->data, O_RDONLY, 0);