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