[AC21.4] Fix windows support for readonly files
Vin Shelton
ethersoft at gmail.com
Sat Jan 6 21:46:06 EST 2007
APPROVE COMMIT 21.4
This patch will appear in 21.4.21.
- Vin
On 1/4/07, Vin Shelton <acs at alumni.princeton.edu> wrote:
> I think this patch (against 21.4 in CVS) fixes the problems identified:
>
> 1) I can once again edit a non-existent file in a write-protected directory
> 2) XEmacs respects the readonly bit
> 3) the infloop on "xemacs -vanilla nonexistent_file" problem has gone away.
>
> Please review. I will commit if no one objects.
>
> - Vin
>
> Index: src/ChangeLog
> ===================================================================
> RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
> retrieving revision 1.290.2.117
> diff -a -u -r1.290.2.117 ChangeLog
> --- src/ChangeLog 2007/01/02 01:32:40 1.290.2.117
> +++ src/ChangeLog 2007/01/04 22:34:51
> @@ -1,3 +1,8 @@
> +2007-01-04 Vin Shelton <acs at xemacs.org>
> +
> + * fileio.c (check_writable): Check old-style readonly bit only for
> + non-directories.
> +
> 2006-12-25 Benson I. Margulies <benson at dchbk.us>
>
> * src/fileio.c (check_writable):
> Index: src/fileio.c
> ===================================================================
> RCS file: /pack/xemacscvs/XEmacs/xemacs/src/fileio.c,v
> retrieving revision 1.66.2.9
> diff -a -u -r1.66.2.9 fileio.c
> --- src/fileio.c 2007/01/02 01:32:45 1.66.2.9
> +++ src/fileio.c 2007/01/04 22:34:52
> @@ -2307,17 +2307,18 @@
> filename = filename_buffer;
> #endif
>
> - // ask simple question first
> + // First check for a normal file with the old-style readonly bit
> attributes = GetFileAttributes(filename);
> - if (0 != (attributes & FILE_ATTRIBUTE_READONLY))
> - return 0;
> + if (FILE_ATTRIBUTE_READONLY == (attributes &
> (FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_READONLY)))
> + return 0;
>
> /* Win32 prototype lacks const. */
> error = GetNamedSecurityInfo((LPTSTR)filename, SE_FILE_OBJECT,
>
> DACL_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|OWNER_SECURITY_INFORMATION,
> &psidOwner, &psidGroup, &pDacl, &pSacl, &pDesc);
> if (error != ERROR_SUCCESS) { // FAT?
> - return 1;
> + attributes = GetFileAttributes(filename);
> + return (attributes & FILE_ATTRIBUTE_DIRECTORY) || (0 ==
> (attributes & FILE_ATTRIBUTE_READONLY));
> }
>
> genericMapping.GenericRead = FILE_GENERIC_READ;
>
--
The Journey by Mary Oliver
http://www.poemhunter.com/p/m/poem.asp?poet=6771&poem=30506
More information about the XEmacs-Beta
mailing list