* path.h (pathconv_arg): Define PC_NO_ACCESS_CHECK.

(path_types): Define PATH_NO_ACCESS_CHECK == PC_NO_ACCESS_CHECK.
* path.cc (symlink_info::check_sysfile): Move to symlink_info class and
eliminate arguments that are part of class.  Use set_error.
(symlink_info::check_shortcut): Ditto.
(symlink_info::set_error): New function.
(path_conv::check): Pass PC_NO_ACCESS_CHECK to symlink_info::check.
(symlink_info::check): Preserve PC_NO_ACCESS_CHECK in pflags.  Use set_error.
This commit is contained in:
Christopher Faylor
2005-03-12 02:33:00 +00:00
parent 640c3ce5df
commit ac7bc2d470
3 changed files with 65 additions and 38 deletions

View File

@ -38,7 +38,8 @@ enum pathconv_arg
PC_FULL = 0x0010,
PC_NULLEMPTY = 0x0020,
PC_CHECK_EA = 0x0040,
PC_POSIX = 0x0080
PC_POSIX = 0x0080,
PC_NO_ACCESS_CHECK = 0x00800000
};
enum case_checking
@ -54,18 +55,19 @@ enum case_checking
enum path_types
{
PATH_NOTHING = 0,
PATH_SYMLINK = MOUNT_SYMLINK,
PATH_BINARY = MOUNT_BINARY,
PATH_EXEC = MOUNT_EXEC,
PATH_NOTEXEC = MOUNT_NOTEXEC,
PATH_CYGWIN_EXEC = MOUNT_CYGWIN_EXEC,
PATH_ENC = MOUNT_ENC,
PATH_ALL_EXEC = (PATH_CYGWIN_EXEC | PATH_EXEC),
PATH_LNK = 0x01000000,
PATH_TEXT = 0x02000000,
PATH_HAS_SYMLINKS = 0x10000000,
PATH_SOCKET = 0x40000000
PATH_NOTHING = 0,
PATH_SYMLINK = MOUNT_SYMLINK,
PATH_BINARY = MOUNT_BINARY,
PATH_EXEC = MOUNT_EXEC,
PATH_NOTEXEC = MOUNT_NOTEXEC,
PATH_CYGWIN_EXEC = MOUNT_CYGWIN_EXEC,
PATH_ENC = MOUNT_ENC,
PATH_ALL_EXEC = (PATH_CYGWIN_EXEC | PATH_EXEC),
PATH_NO_ACCESS_CHECK = PC_NO_ACCESS_CHECK,
PATH_LNK = 0x01000000,
PATH_TEXT = 0x02000000,
PATH_HAS_SYMLINKS = 0x10000000,
PATH_SOCKET = 0x40000000
};
class symlink_info;