diff options
author | Christopher Faylor <me@cgf.cx> | 2002-05-02 04:13:48 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-05-02 04:13:48 +0000 |
commit | 291be3076b91e2165b6c9aecf89d7e767afa89d7 (patch) | |
tree | 0da562f5dfc2f8f7e63bb335aff79ddd60429aca /winsup/cygwin/path.h | |
parent | e1377e380f8dc4ee26802a3b15ce94ebf629c64c (diff) | |
download | cygnal-291be3076b91e2165b6c9aecf89d7e767afa89d7.tar.gz cygnal-291be3076b91e2165b6c9aecf89d7e767afa89d7.tar.bz2 cygnal-291be3076b91e2165b6c9aecf89d7e767afa89d7.zip |
* path.h (pathconv_arg): Add PC_POSIX.
(path_conv): Add normalized_path field.
* path.cc (path_conv::~path_conv): New destructor.
(path_conv::check): Set normalized_path, where appropriate.
* dtable.cc (build_fhandler_from_name): Use normalized path from path_conv.
* syscalls.cc (chroot): Ditto.
* cygheap.h: Remove path_prefix_p declaration. Christopher Faylor
<cgf@redhat.com> (minor fixups)
* Makefile.in: Add fhandler_proc.o, fhandler_registry.o, fhandler_process.o and
fhandler_virtual.o.
* dtable.cc (dtable::build_fhandler): Add entries for FH_PROC, FH_REGISTRY and
FH_PROCESS. Set unix_name to the normalized posix path.
* fhandler.h: Add constants for FH_PROC, FH_REGISTRY and FH_PROCESS. Add class
declarations for fhandler_virtual, fhandler_proc, fhandler_registry and
fhandler_virtual. Update fhandler_union accordingly.
* fhandler_proc.cc: New file. Add implementation for fhandler_proc.
* fhandler_virtual.cc: New file. Add implementation for fhandler_virtual.
* fhandler_process.cc: New file. Add implementation for fhandler_process.
* fhandler_registry.cc: New file. Add implementation for fhandler_registry.
* path.cc: Add isproc and isvirtual_dev macros.
* path.cc (path_conv::check): Add check for virtual devices.
* path.cc (mount_info::conv_to_win32_path): Convert paths in /proc to empty
Win32 paths.
* path.cc (chdir): Replace check for FH_CYGDRIVE with more generic
isvirtual_dev macro. Force setting of posix path for virtual fhandlers.
* path.h: Add externally visible path_prefix_p and normalized_posix_path
prototypes.
Diffstat (limited to 'winsup/cygwin/path.h')
-rw-r--r-- | winsup/cygwin/path.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index ea3a6545a..1daaa11d8 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -23,7 +23,8 @@ enum pathconv_arg PC_SYM_CONTENTS = 0x0008, PC_FULL = 0x0010, PC_NULLEMPTY = 0x0020, - PC_CHECK_EA = 0x0040 + PC_CHECK_EA = 0x0040, + PC_POSIX = 0x0080 }; enum case_checking @@ -75,6 +76,7 @@ class path_conv int unit; DWORD fileattr; BOOL case_clash; + char *normalized_path; int isdisk () const { return path_flags & PATH_ISDISK;} int isremote () const {return is_remote_drive;} @@ -126,9 +128,11 @@ class path_conv path_conv (): path_flags (0), known_suffix (NULL), error (0), devn (0), unit (0), fileattr (INVALID_FILE_ATTRIBUTES) {path[0] = '\0';} + ~path_conv (); inline char *get_win32 () { return path; } - operator char *() {return path; } - operator DWORD &() {return fileattr; } + operator char *() {return path;} + operator const char *() {return path;} + operator DWORD &() {return fileattr;} operator int &() {return (int) fileattr; } BOOL is_device () {return devn != FH_BAD && devn != FH_DISK;} DWORD get_devn () {return devn == FH_BAD ? (DWORD) FH_DISK : devn;} @@ -178,3 +182,5 @@ has_exec_chars (const char *buf, int len) int pathmatch (const char *path1, const char *path2) __attribute__ ((regparm (2))); int pathnmatch (const char *path1, const char *path2, int len) __attribute__ ((regparm (2))); + +int path_prefix_p (const char *path1, const char *path2, int len1) __attribute__ ((regparm (3))); |