generic-poky/meta/recipes-devtools/file/file/ge-le.patch

73 lines
1.9 KiB
Diff

Upstream-Status: Pending
`>=' and `<=' was silently ignored in previous version,
but causes an warning in file 5.04. Add support for these
two operators as a feature extension, however, users should
not rely on them.
8/17/2010 - created by Qing He <qing.he@intel.com>
diff --git a/src/apprentice.c b/src/apprentice.c
index 3d4c3cf..a2b86ed 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -1396,11 +1396,10 @@ parse(struct magic_set *ms, struct magic_entry **mentryp, uint32_t *nmentryp,
m->reln = *l;
++l;
if (*l == '=') {
- if (ms->flags & MAGIC_CHECK) {
- file_magwarn(ms, "%c= not supported",
- m->reln);
- return -1;
- }
+ if (m->reln == '>')
+ m->reln = 'g';
+ else if (m->reln == '<')
+ m->reln = 'l';
++l;
}
break;
diff --git a/src/softmagic.c b/src/softmagic.c
index d8a5675..1648e43 100644
--- a/src/softmagic.c
+++ b/src/softmagic.c
@@ -1955,6 +1955,38 @@ magiccheck(struct magic_set *ms, struct magic *m)
}
break;
+ case 'g':
+ if (m->flag & UNSIGNED) {
+ matched = v >= l;
+ if ((ms->flags & MAGIC_DEBUG) != 0)
+ (void) fprintf(stderr, "%llu >= %llu = %d\n",
+ (unsigned long long)v,
+ (unsigned long long)l, matched);
+ }
+ else {
+ matched = (int64_t) v >= (int64_t) l;
+ if ((ms->flags & MAGIC_DEBUG) != 0)
+ (void) fprintf(stderr, "%lld >= %lld = %d\n",
+ (long long)v, (long long)l, matched);
+ }
+ break;
+
+ case 'l':
+ if (m->flag & UNSIGNED) {
+ matched = v <= l;
+ if ((ms->flags & MAGIC_DEBUG) != 0)
+ (void) fprintf(stderr, "%llu <= %llu = %d\n",
+ (unsigned long long)v,
+ (unsigned long long)l, matched);
+ }
+ else {
+ matched = (int64_t) v <= (int64_t) l;
+ if ((ms->flags & MAGIC_DEBUG) != 0)
+ (void) fprintf(stderr, "%lld <= %lld = %d\n",
+ (long long)v, (long long)l, matched);
+ }
+ break;
+
case '&':
matched = (v & l) == l;
if ((ms->flags & MAGIC_DEBUG) != 0)