file: reinstate 5.04 upgrades with modifications

reinstate the patch since rpm recipe has been upgraded

> commit 21d586b47c
> Author: Qing He <qing.he@intel.com>
> Date:   Tue Jul 6 13:19:10 2010 +0800
>
>     file: upgrade to version 5.04
>
>     from 4.18
>
>     changes:
>       - remove native-fix.patch and sed line in do_configure_prepend,
>         AM_CONDITIONAL(IS_CROSS_COMPILE, ...) works well
>       - fix the bug of not packaging ${datadir}/misc/magic.mgc,
>         without this file, this utility isn't very useful
>       - add zlib as explicit build dependency
>
>     Signed-off-by: Qing He <qing.he@intel.com>

new changes:
  - string/B is not supported in file 5.04, add an alias to string/W
  - '>=' and '<=' was not supported, add an extension for existing
    usage

Signed-off-by: Qing He <qing.he@intel.com>
This commit is contained in:
Qing He 2010-08-17 10:58:15 +08:00 committed by Richard Purdie
parent 6b039d0bb7
commit 9a60cbcf48
4 changed files with 107 additions and 17 deletions

View File

@ -0,0 +1,70 @@
`>=' 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)

View File

@ -1,13 +0,0 @@
Index: file-4.16/magic/Makefile.am
===================================================================
--- file-4.16.orig/magic/Makefile.am 2005-08-18 17:20:49.000000000 +0200
+++ file-4.16/magic/Makefile.am 2006-03-08 17:01:13.000000000 +0100
@@ -18,7 +18,7 @@
if IS_CROSS_COMPILE
FILE_COMPILE = file
else
-FILE_COMPILE = $(top_builddir)/src/file
+FILE_COMPILE = ../src/file
endif
magic.mgc: magic

View File

@ -0,0 +1,29 @@
`B' in file 4.x has the same meaning with `W' in file 5,
let `B' be an alias of `W'.
8/17/2010 - created by Qing He <qing.he@intel.com>
diff --git a/src/apprentice.c b/src/apprentice.c
index 58826c3..3d4c3cf 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -1340,6 +1340,7 @@ parse(struct magic_set *ms, struct magic_entry **mentryp, uint32_t *nmentryp,
"zero range");
l = t - 1;
break;
+ case CHAR_COMPACT_BLANK:
case CHAR_COMPACT_WHITESPACE:
m->str_flags |= STRING_COMPACT_WHITESPACE;
break;
diff --git a/src/file.h b/src/file.h
index c07f2d4..42cf416 100644
--- a/src/file.h
+++ b/src/file.h
@@ -282,6 +282,7 @@ struct magic {
#define STRING_TEXTTEST BIT(5)
#define STRING_BINTEST BIT(6)
#define CHAR_COMPACT_WHITESPACE 'W'
+#define CHAR_COMPACT_BLANK 'B'
#define CHAR_COMPACT_OPTIONAL_WHITESPACE 'w'
#define CHAR_IGNORE_LOWERCASE 'c'
#define CHAR_IGNORE_UPPERCASE 'C'

View File

@ -5,21 +5,25 @@ SECTION = "console/utils"
# two clause BSD
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=6a7382872edb68d33e1a9398b6e03188"
DEPENDS = "file-native"
DEPENDS_virtclass-native = ""
DEPENDS = "zlib file-native"
DEPENDS_virtclass-native = "zlib-native"
PR = "r1"
SRC_URI = "ftp://ftp.astron.com/pub/file/file-${PV}.tar.gz \
file://stringb-compat.patch \
file://ge-le.patch \
file://dump \
file://filesystems"
SRC_URI_append_virtclass-native = " file://native-fix.diff;patch=1"
inherit autotools
do_configure_prepend() {
sed -i -e 's,$(top_builddir)/src/file,file,' ${S}/magic/Makefile.am
cp ${WORKDIR}/dump ${S}/magic/Magdir/
cp ${WORKDIR}/filesystems ${S}/magic/Magdir/
}
FILES_${PN} += "${datadir}/misc/*.mgc"
BBCLASSEXTEND = "native"