diff options
Diffstat (limited to 'meta/recipes-devtools/file/file/ge-le.patch')
-rw-r--r-- | meta/recipes-devtools/file/file/ge-le.patch | 70 |
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, | ||
2 | but causes an warning in file 5.04. Add support for these | ||
3 | two operators as a feature extension, however, users should | ||
4 | not rely on them. | ||
5 | |||
6 | 8/17/2010 - created by Qing He <qing.he@intel.com> | ||
7 | |||
8 | diff --git a/src/apprentice.c b/src/apprentice.c | ||
9 | index 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; | ||
28 | diff --git a/src/softmagic.c b/src/softmagic.c | ||
29 | index 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) | ||