summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/file/file/ge-le.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/file/file/ge-le.patch')
-rw-r--r--meta/recipes-devtools/file/file/ge-le.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/meta/recipes-devtools/file/file/ge-le.patch b/meta/recipes-devtools/file/file/ge-le.patch
new file mode 100644
index 0000000000..7b7d8b60a4
--- /dev/null
+++ b/meta/recipes-devtools/file/file/ge-le.patch
@@ -0,0 +1,70 @@
1`>=' and `<=' was silently ignored in previous version,
2but causes an warning in file 5.04. Add support for these
3two operators as a feature extension, however, users should
4not rely on them.
5
68/17/2010 - created by Qing He <qing.he@intel.com>
7
8diff --git a/src/apprentice.c b/src/apprentice.c
9index 3d4c3cf..a2b86ed 100644
10--- a/src/apprentice.c
11+++ b/src/apprentice.c
12@@ -1396,11 +1396,10 @@ parse(struct magic_set *ms, struct magic_entry **mentryp, uint32_t *nmentryp,
13 m->reln = *l;
14 ++l;
15 if (*l == '=') {
16- if (ms->flags & MAGIC_CHECK) {
17- file_magwarn(ms, "%c= not supported",
18- m->reln);
19- return -1;
20- }
21+ if (m->reln == '>')
22+ m->reln = 'g';
23+ else if (m->reln == '<')
24+ m->reln = 'l';
25 ++l;
26 }
27 break;
28diff --git a/src/softmagic.c b/src/softmagic.c
29index d8a5675..1648e43 100644
30--- a/src/softmagic.c
31+++ b/src/softmagic.c
32@@ -1955,6 +1955,38 @@ magiccheck(struct magic_set *ms, struct magic *m)
33 }
34 break;
35
36+ case 'g':
37+ if (m->flag & UNSIGNED) {
38+ matched = v >= l;
39+ if ((ms->flags & MAGIC_DEBUG) != 0)
40+ (void) fprintf(stderr, "%llu >= %llu = %d\n",
41+ (unsigned long long)v,
42+ (unsigned long long)l, matched);
43+ }
44+ else {
45+ matched = (int64_t) v >= (int64_t) l;
46+ if ((ms->flags & MAGIC_DEBUG) != 0)
47+ (void) fprintf(stderr, "%lld >= %lld = %d\n",
48+ (long long)v, (long long)l, matched);
49+ }
50+ break;
51+
52+ case 'l':
53+ if (m->flag & UNSIGNED) {
54+ matched = v <= l;
55+ if ((ms->flags & MAGIC_DEBUG) != 0)
56+ (void) fprintf(stderr, "%llu <= %llu = %d\n",
57+ (unsigned long long)v,
58+ (unsigned long long)l, matched);
59+ }
60+ else {
61+ matched = (int64_t) v <= (int64_t) l;
62+ if ((ms->flags & MAGIC_DEBUG) != 0)
63+ (void) fprintf(stderr, "%lld <= %lld = %d\n",
64+ (long long)v, (long long)l, matched);
65+ }
66+ break;
67+
68 case '&':
69 matched = (v & l) == l;
70 if ((ms->flags & MAGIC_DEBUG) != 0)