* autoload.cc (CreateSymbolicLink): Define.
* environ.cc (set_winsymlinks): Set allow_winsymlinks. (parse_thing): Change "winsymlinks" to set by function. * globals.cc (enum winsym_t): Define. (allow_winsymlinks): Define as winsym_t. (ro_u_afs): New R/O Unicode string. * mount.cc (fs_info::update): Fix comment. Handle AFS. (fs_names): Add "afs". * mount.h (enum fs_info_type): Add afs. (class fs_info): Implement afs. * path.cc (symlink): Drop third parameter in call to symlink_worker. (symlink_nfs): New function. (symlink_native): New function. (symlink_worker): Drop third argument. Handle native symlink type by calling symlink_native. Move code to handle NFS to symlink_nfs. Fix formatting. Slightly restructure code. * path.h (class path_conv): Add fs_is_afs method. (symlink_worker): Declare here. * security.h: Define privilege constants as unsigned int instead of as unsigned long. * syscalls.cc (mknod_worker): Set third parameter in symlink_worker call to WSYM_lnk. * winsup.h (symlink_worker): Drop declaration here.
This commit is contained in:
@@ -89,6 +89,19 @@ tty_is_gone (const char *buf)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
set_winsymlinks (const char *buf)
|
||||
{
|
||||
if (!buf || !*buf)
|
||||
allow_winsymlinks = WSYM_lnk;
|
||||
else if (ascii_strncasematch (buf, "lnk", 3))
|
||||
allow_winsymlinks = WSYM_lnk;
|
||||
/* Make sure to try native symlinks only on systems supporting them. */
|
||||
else if (ascii_strncasematch (buf, "native", 6)
|
||||
&& wincap.max_sys_priv () >= SE_CREATE_SYMBOLIC_LINK_PRIVILEGE)
|
||||
allow_winsymlinks = WSYM_native;
|
||||
}
|
||||
|
||||
/* The structure below is used to set up an array which is used to
|
||||
parse the CYGWIN environment variable or, if enabled, options from
|
||||
the registry. */
|
||||
@@ -121,7 +134,7 @@ static struct parse_thing
|
||||
{"proc_retry", {func: set_proc_retry}, isfunc, NULL, {{0}, {5}}},
|
||||
{"reset_com", {&reset_com}, setbool, NULL, {{false}, {true}}},
|
||||
{"tty", {func: tty_is_gone}, isfunc, NULL, {{0}, {0}}},
|
||||
{"winsymlinks", {&allow_winsymlinks}, setbool, NULL, {{false}, {true}}},
|
||||
{"winsymlinks", {func: set_winsymlinks}, isfunc, NULL, {{0}, {0}}},
|
||||
{NULL, {0}, setdword, 0, {{0}, {0}}}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user