diff options
author | Mystery Man <unknown@mandriva.org> | 2003-08-13 10:49:24 +0000 |
---|---|---|
committer | Mystery Man <unknown@mandriva.org> | 2003-08-13 10:49:24 +0000 |
commit | 563ec40ca81867c0d1cea1ae0f2381bfe832af24 (patch) | |
tree | 0529018e1ea0aadf30e14c9cc0855231420fd566 /mdk-stage1/dietlibc/libshell/fnmatch.c | |
parent | dbb520cae669edc0b61148daf92caf2cfef3cfed (diff) | |
download | drakx-backup-do-not-use-563ec40ca81867c0d1cea1ae0f2381bfe832af24.tar drakx-backup-do-not-use-563ec40ca81867c0d1cea1ae0f2381bfe832af24.tar.gz drakx-backup-do-not-use-563ec40ca81867c0d1cea1ae0f2381bfe832af24.tar.bz2 drakx-backup-do-not-use-563ec40ca81867c0d1cea1ae0f2381bfe832af24.tar.xz drakx-backup-do-not-use-563ec40ca81867c0d1cea1ae0f2381bfe832af24.zip |
This commit was manufactured by cvs2svn to create tag 'V9_2_0_29mdk'.V9_2_0_29mdk
Diffstat (limited to 'mdk-stage1/dietlibc/libshell/fnmatch.c')
-rw-r--r-- | mdk-stage1/dietlibc/libshell/fnmatch.c | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/mdk-stage1/dietlibc/libshell/fnmatch.c b/mdk-stage1/dietlibc/libshell/fnmatch.c deleted file mode 100644 index ef43735f6..000000000 --- a/mdk-stage1/dietlibc/libshell/fnmatch.c +++ /dev/null @@ -1,78 +0,0 @@ -#include <ctype.h> -#include <fnmatch.h> -#include <string.h> - -#define NOTFIRST 128 - -static int match(char c,char d,int flags) { - if (flags&FNM_CASEFOLD) - return (tolower(c)==tolower(d)); - else - return (c==d); -} - -int fnmatch(const char *pattern, const char *string, int flags) { - /*printf("fnmatch(\"%s\",\"%s\")\n",pattern,string);*/ - if (*string==0) { - while (*pattern=='*') ++pattern; - return (!!*pattern); - } - if (*string=='.' && *pattern!='.' && (flags&FNM_PERIOD)) { - /* don't match if FNM_PERIOD and this is the first char */ - if ((flags&FNM_PERIOD) && (!(flags&NOTFIRST))) - return FNM_NOMATCH; - /* don't match if FNM_PERIOD and FNM_FILE_NAME and previous was '/' */ - if ((flags&(FNM_FILE_NAME|FNM_PERIOD)) && string[-1]=='/') - return FNM_NOMATCH; - } - flags|=NOTFIRST; - switch (*pattern) { - case '[': - { - int neg=0; - ++pattern; - if (*string=='/' && flags&FNM_PATHNAME) return FNM_NOMATCH; - if (*pattern=='^') { neg=1; ++pattern; } - while (*pattern && *pattern!=']') { - int res=0; - if (pattern[1]=='-') { - if (*string>=*pattern && *string<=pattern[2]) res=1; - if (flags&FNM_CASEFOLD) { - if (tolower(*string)>=tolower(*pattern) && tolower(*string)<=tolower(pattern[2])) res=1; - } - pattern+=3; - } else { - res=match(*pattern,*string,flags); - ++pattern; - } - if (res ^ neg) { - while (*pattern && *pattern!=']') ++pattern; - return fnmatch(pattern+1,string+1,flags); - } - } - } - break; - case '\\': - if (flags&FNM_NOESCAPE) { - if (*string=='\\') - return fnmatch(pattern+1,string+1,flags); - } else { - if (*string==pattern[1]) - return fnmatch(pattern+2,string+1,flags); - } - break; - case '*': - if ((*string=='/' && flags&FNM_PATHNAME) || fnmatch(pattern,string+1,flags)) - return fnmatch(pattern+1,string,flags); - return 0; - case 0: - if (*string==0 || (*string=='/' && (flags&FNM_LEADING_DIR))) - return 0; - break; - default: - if (match(*pattern,*string,flags)) - return fnmatch(pattern+1,string+1,flags); - break; - } - return FNM_NOMATCH; -} |