From 70c370d674c5696d39e64970300c889c64ecd752 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 12 Apr 2001 21:21:37 +0000 Subject: * dir.cc (mkdir): Check for case clash. * environ.cc: Add extern declaration for `pcheck_case'. (check_case_init): New function. (struct parse_thing): Add "check_case" option. * errno.cc (_sys_nerrlist): Add text for ECASECLASH. (strerror): Add case branch for ECASECLASH. * fhandler.cc (fhandler_disk_file::open): Check for case clash. * path.cc: Add global variable `pcheck_case'. (struct symlink_info): Add member `case_clash' and method `case_check'. (path_prefix_p_): Call `pathnmatch' instead of `strncasematch'. (pathnmatch): New funtion. (pathmatch): Ditto. (path_conv::check): Add handling for case checking. (symlink): Check for case clash. (symlink_info::check): Add parameter for case checking. Handle case checking. (symlink_info::case_check): New method. (chdir): Don't use unconverted path if pcheck_case==PCHECK_STRICT. * path.h: Add extern declarations for `pathmatch' and `pathnmatch'. (enum case_checking): New enumeration type describing the case checking behaviour of path conversion routines. (class path_conv): Add member `case_clash'. * syscalls.cc (_link): Check for case clash. --- winsup/cygwin/path.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'winsup/cygwin/path.h') diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index bdca965b4..4f9df23b0 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -25,6 +25,13 @@ enum pathconv_arg PC_NULLEMPTY = 0x0020 }; +enum case_checking +{ + PCHECK_RELAXED = 0, + PCHECK_ADJUST = 1, + PCHECK_STRICT = 2 +}; + #define PC_NONULLEMPTY -1 #include @@ -89,6 +96,8 @@ class path_conv DWORD fileattr; + BOOL case_clash; + void check (const char *src, unsigned opt = PC_SYM_FOLLOW, const suffix_info *suffixes = NULL) __attribute__ ((regparm(3))); @@ -171,3 +180,6 @@ struct cwdstuff }; extern cwdstuff cygcwd; + +extern int pathmatch (const char *path1, const char *path2); +extern int pathnmatch (const char *path1, const char *path2, int len); -- cgit v1.2.3