]> granicus.if.org Git - file/commitdiff
patch for systems that don't support REG_STARTEND
authorChristos Zoulas <christos@zoulas.com>
Fri, 2 Mar 2007 17:50:06 +0000 (17:50 +0000)
committerChristos Zoulas <christos@zoulas.com>
Fri, 2 Mar 2007 17:50:06 +0000 (17:50 +0000)
src/softmagic.c

index 6e191fe56f316946ab4f6ecb9d3584f3487f5b9c..821a698afa88b8cfe895ce66508f72e6106a6f21 100644 (file)
@@ -38,7 +38,7 @@
 
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: softmagic.c,v 1.91 2007/01/18 05:29:33 ljt Exp $")
+FILE_RCSID("@(#)$File: softmagic.c,v 1.92 2007/03/02 17:50:06 christos Exp $")
 #endif /* lint */
 
 private int match(struct magic_set *, struct magic *, uint32_t,
@@ -1523,10 +1523,19 @@ magiccheck(struct magic_set *ms, struct magic *m)
                }
                else {
                        regmatch_t pmatch[1];
+#ifndef REG_STARTEND
+#define        REG_STARTEND    0
+                       char c = ms->search.s[ms->search.s_len - 1];
+                       ms->search.s[ms->search.s_len - 1] = '\0';
+#else
                        pmatch[0].rm_so = 0;
                        pmatch[0].rm_eo = ms->search.s_len;
+#endif
                        rc = regexec(&rx, (const char *)ms->search.s,
                            1, pmatch, REG_STARTEND);
+#if REG_STARTEND == 0
+                       ms->search.s[ms->search.s_len - 1] = c;
+#endif
                        switch (rc) {
                        case 0:
                                ms->search.s += (int)pmatch[0].rm_so;