X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhl.c;fp=uip%2Fmhl.c;h=76d23358588480cd0c6b24ee2b8b83355176a0bc;hp=b8213b048820f5f2c3c32a91732c8f4bac3cc488;hb=c89293b617b20e1bdceeed290941c45acc457b15;hpb=24d23e290e7b1320eca49cfd2ea0ca0af3e761e0 diff --git a/uip/mhl.c b/uip/mhl.c index b8213b0..76d2335 100644 --- a/uip/mhl.c +++ b/uip/mhl.c @@ -598,6 +598,34 @@ process(char *fname, int ofilen, int ofilec) c1->c_flags &= ~HDROUTPUT; } +static boolean +simplematch(char *pattern, char *b) +{ + char *match = strrchr(pattern, '*'); + char repl; + boolean ret; + + /* check if pattern ends with a * and is not escaped witch a \ */ + if (!match || match[1] || (match > pattern && match[-1] == '\\')) { + if (!match || match[1]) { + return mh_strcasecmp(pattern, b) == 0; + } + match[0] = '\0'; + match[-1] = '*'; + ret = mh_strcasecmp(pattern, b)==0; + match[-1] = '\\'; + match[0] = '*'; + return ret; + } + + repl = b[match-pattern]; + b[match-pattern] = '\0'; + *match = '\0'; + ret = (mh_strcasecmp(pattern, b) == 0); + b[match-pattern] = repl; + *match = '*'; + return ret; +} static void mhlfile(FILE *fp, char *mname, int ofilen, int ofilec) @@ -626,7 +654,7 @@ mhlfile(FILE *fp, char *mname, int ofilen, int ofilec) switch (state = m_getfld2(state, &f, fp)) { case FLD2: for (ip = ignores; *ip; ip++) - if (mh_strcasecmp(f.name, *ip)==0) { + if (simplematch(*ip, f.name)) { break; } if (*ip) {