summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/globals.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2013-04-24 10:16:13 +0000
committerCorinna Vinschen <corinna@vinschen.de>2013-04-24 10:16:13 +0000
commit9ecd475cd871bd06b930849b05f5c773d4a7e5ce (patch)
tree7220dbff1b6129514d80bfa4e262a03f65d5d68a /winsup/cygwin/globals.cc
parentbd91f4a96a8bc21bd501a92965b350756d9e3b28 (diff)
downloadcygnal-9ecd475cd871bd06b930849b05f5c773d4a7e5ce.tar.gz
cygnal-9ecd475cd871bd06b930849b05f5c773d4a7e5ce.tar.bz2
cygnal-9ecd475cd871bd06b930849b05f5c773d4a7e5ce.zip
* 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.
Diffstat (limited to 'winsup/cygwin/globals.cc')
-rw-r--r--winsup/cygwin/globals.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc
index d7d278fca..887326156 100644
--- a/winsup/cygwin/globals.cc
+++ b/winsup/cygwin/globals.cc
@@ -49,6 +49,16 @@ enum exit_states
ES_FINAL
};
+/* The type of symlink to create. The value is set depending on the
+ "winsymlinks" setting of the CYGWIN environment variable. */
+enum winsym_t
+{
+ WSYM_sysfile = 0,
+ WSYM_lnk,
+ WSYM_native,
+ WSYM_nfs
+};
+
exit_states NO_COPY exit_state;
/* Set in init.cc. Used to check if Cygwin DLL is dynamically loaded. */
@@ -58,7 +68,7 @@ int NO_COPY dynamically_loaded;
bool allow_glob = true;
bool ignore_case_with_glob = false;
bool dos_file_warning = true;
-bool allow_winsymlinks = false;
+winsym_t allow_winsymlinks = WSYM_sysfile;
bool reset_com = false;
bool pipe_byte = false;
bool detect_bloda = false;
@@ -124,6 +134,7 @@ extern "C" {
extern UNICODE_STRING _RDATA ro_u_unixfs = _ROU (L"UNIXFS");
extern UNICODE_STRING _RDATA ro_u_nwfs = _ROU (L"NWFS");
extern UNICODE_STRING _RDATA ro_u_ncfsd = _ROU (L"NcFsd");
+ extern UNICODE_STRING _RDATA ro_u_afs = _ROU (L"AFSRDRFsd");
extern UNICODE_STRING _RDATA ro_u_volume = _ROU (L"\\??\\Volume{");
extern UNICODE_STRING _RDATA ro_u_pipedir = _ROU (L"\\\\?\\PIPE\\");
extern UNICODE_STRING _RDATA ro_u_globalroot = _ROU (L"\\\\.\\GLOBALROOT");