Mercurial > emacs
changeset 22681:127d903d615a
(Ffile_regular_p) [WINDOWSNT]: Bind
`w32-get-true-file-attributes' to t while calling stat.
(Finsert_file_contents) [WINDOWSNT]: Likewise.
(Fwrite_region): Don't try seeking to end of FILENAME for
appending if not a regular file.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 03 Jul 1998 20:01:02 +0000 |
parents | 3cf03f32956c |
children | c283610d2a74 |
files | src/fileio.c |
diffstat | 1 files changed, 33 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fileio.c Fri Jul 03 19:54:30 1998 +0000 +++ b/src/fileio.c Fri Jul 03 20:01:02 1998 +0000 @@ -206,6 +206,10 @@ extern Lisp_Object Vuser_login_name; +#ifdef WINDOWSNT +extern Lisp_Object Vw32_get_true_file_attributes; +#endif + extern int minibuf_level; extern int minibuffer_auto_raise; @@ -3092,9 +3096,25 @@ absname = ENCODE_FILE (absname); +#ifdef WINDOWSNT + { + int result; + Lisp_Object tem = Vw32_get_true_file_attributes; + + /* Tell stat to use expensive method to get accurate info. */ + Vw32_get_true_file_attributes = Qt; + result = stat (XSTRING (absname)->data, &st); + Vw32_get_true_file_attributes = tem; + + if (result < 0) + return Qnil; + return (st.st_mode & S_IFMT) == S_IFREG ? Qt : Qnil; + } +#else if (stat (XSTRING (absname)->data, &st) < 0) return Qnil; return (st.st_mode & S_IFMT) == S_IFREG ? Qt : Qnil; +#endif } DEFUN ("file-modes", Ffile_modes, Sfile_modes, 1, 1, 0, @@ -3345,12 +3365,24 @@ fd = -1; +#ifdef WINDOWSNT + { + Lisp_Object tem = Vw32_get_true_file_attributes; + + /* Tell stat to use expensive method to get accurate info. */ + Vw32_get_true_file_attributes = Qt; + total = stat (XSTRING (filename)->data, &st); + Vw32_get_true_file_attributes = tem; + } + if (total < 0) +#else #ifndef APOLLO if (stat (XSTRING (filename)->data, &st) < 0) #else if ((fd = open (XSTRING (filename)->data, O_RDONLY)) < 0 || fstat (fd, &st) < 0) #endif /* not APOLLO */ +#endif /* WINDOWSNT */ { if (fd >= 0) close (fd); badopen: @@ -4446,7 +4478,7 @@ record_unwind_protect (close_file_unwind, make_number (desc)); - if (!NILP (append)) + if (!NILP (append) && !NILP (Ffile_regular_p (filename))) if (lseek (desc, 0, 2) < 0) { #ifdef CLASH_DETECTION