summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libshell/fnmatch.c
diff options
context:
space:
mode:
authorMystery Man <unknown@mandriva.org>2002-07-23 11:21:56 +0000
committerMystery Man <unknown@mandriva.org>2002-07-23 11:21:56 +0000
commit882ed9f801f347b87e162777b296d5be79b8b7ba (patch)
treeb3ee4e9e881f5bda8d243626aac2bea772f25e68 /mdk-stage1/dietlibc/libshell/fnmatch.c
parent127a73d935d78af53d3dadd05d4636f6b717976d (diff)
downloaddrakx-882ed9f801f347b87e162777b296d5be79b8b7ba.tar
drakx-882ed9f801f347b87e162777b296d5be79b8b7ba.tar.gz
drakx-882ed9f801f347b87e162777b296d5be79b8b7ba.tar.bz2
drakx-882ed9f801f347b87e162777b296d5be79b8b7ba.tar.xz
drakx-882ed9f801f347b87e162777b296d5be79b8b7ba.zip
This commit was manufactured by cvs2svn to create tag 'V1_1_8_9mdk'.V1_1_8_9mdk
Diffstat (limited to 'mdk-stage1/dietlibc/libshell/fnmatch.c')
-rw-r--r--mdk-stage1/dietlibc/libshell/fnmatch.c74
1 files changed, 0 insertions, 74 deletions
diff --git a/mdk-stage1/dietlibc/libshell/fnmatch.c b/mdk-stage1/dietlibc/libshell/fnmatch.c
deleted file mode 100644
index 4e7664510..000000000
--- a/mdk-stage1/dietlibc/libshell/fnmatch.c
+++ /dev/null
@@ -1,74 +0,0 @@
-#include <ctype.h>
-#include <fnmatch.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) {
- 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 1;
- /* don't match if FNM_PERIOD and FNM_FILE_NAME and previous was '/' */
- if ((flags&(FNM_FILE_NAME|FNM_PERIOD)) && string[-1]=='/')
- return 1;
- }
- flags|=NOTFIRST;
- switch (*pattern) {
- case '[':
- ++pattern;
- while (*pattern && *pattern!=']') {
- if (flags&FNM_PATHNAME || *string!='/') {
- 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;
- }
- } else
- res=match(*pattern,*string,flags);
- if (res) {
- while (*pattern && *pattern!=']') ++pattern;
- return fnmatch(pattern+1,string+1,flags);
- }
- }
- ++pattern;
- }
- 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 (!pattern[1] || fnmatch(pattern+1,string,flags)==0)
- return 0;
- else
- if (*string!='/')
- return fnmatch(pattern,string+1,flags);
- break;
- 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 1;
-}