--- /dev/null
+Index: softmagic.c
+===================================================================
+RCS file: /p/file/cvsroot/file/src/softmagic.c,v
+retrieving revision 1.91
+retrieving revision 1.95
+diff -u -r1.91 -r1.95
+--- softmagic.c 18 Jan 2007 05:29:33 -0000 1.91
++++ softmagic.c 3 Mar 2007 19:09:25 -0000 1.95
+@@ -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.95 2007/03/03 19:09:25 christos Exp $")
+ #endif /* lint */
+
+ private int match(struct magic_set *, struct magic *, uint32_t,
+@@ -1523,10 +1523,20 @@
+ }
+ else {
+ regmatch_t pmatch[1];
++#ifndef REG_STARTEND
++#define REG_STARTEND 0
++ size_t l = ms->search.s_len - 1;
++ char c = ms->search.s[l];
++ ((char *)(intptr_t)ms->search.s)[l] = '\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
++ ((char *)(intptr_t)ms->search.s)[l] = c;
++#endif
+ switch (rc) {
+ case 0:
+ ms->search.s += (int)pmatch[0].rm_so;