SOURCES: rpm-file-update.patch - more
qboosh
qboosh at pld-linux.org
Tue Jul 19 21:03:44 CEST 2005
Author: qboosh Date: Tue Jul 19 19:03:44 2005 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- more
---- Files affected:
SOURCES:
rpm-file-update.patch (1.1 -> 1.2)
---- Diffs:
================================================================
Index: SOURCES/rpm-file-update.patch
diff -u SOURCES/rpm-file-update.patch:1.1 SOURCES/rpm-file-update.patch:1.2
--- SOURCES/rpm-file-update.patch:1.1 Tue Jul 19 19:18:15 2005
+++ SOURCES/rpm-file-update.patch Tue Jul 19 21:03:38 2005
@@ -1,3 +1,179 @@
+--- rpm-4.4.1/file/src/apprentice.c.orig 2005-01-26 04:39:56.000000000 +0100
++++ rpm-4.4.1/file/src/apprentice.c 2005-07-19 20:52:58.981441608 +0200
+@@ -45,7 +45,7 @@
+ #endif
+
+ #ifndef lint
+-FILE_RCSID("@(#)$Id$")
++FILE_RCSID("@(#)$Id$")
+ #endif /* lint */
+
+ #define EATAB {while (isascii((unsigned char) *l) && \
+@@ -74,13 +74,11 @@
+ #define MAXPATHLEN 1024
+ #endif
+
+-#define IS_STRING(t) ((t) == FILE_STRING || (t) == FILE_PSTRING || \
++#define IS_PLAINSTRING(t) ((t) == FILE_STRING || (t) == FILE_PSTRING || \
+ (t) == FILE_BESTRING16 || (t) == FILE_LESTRING16)
+-
+-/*@unchecked@*/
+-private size_t maxmagic = 0;
+-/*@unchecked@*/
+-private size_t magicsize = sizeof(struct magic);
++
++#define IS_STRING(t) (IS_PLAINSTRING(t) || (t) == FILE_REGEX || \
++ (t) == FILE_SEARCH)
+
+ private int getvalue(struct magic_set *ms, struct magic *m, char **p)
+ /*@globals fileSystem @*/
+@@ -124,6 +122,12 @@
+ /*@globals fileSystem @*/
+ /*@modifies fileSystem @*/;
+
++
++/*@unchecked@*/
++private size_t maxmagic = 0;
++/*@unchecked@*/
++private size_t magicsize = sizeof(struct magic);
++
+ #ifdef COMPILE_ONLY
+
+ int main(int, char *[]);
+@@ -400,8 +404,8 @@
+ case FILE_PSTRING:
+ case FILE_BESTRING16:
+ case FILE_LESTRING16:
+- break;
+ case FILE_REGEX:
++ case FILE_SEARCH:
+ break;
+ default:
+ if (ms->flags & MAGIC_CHECK)
+@@ -451,9 +455,15 @@
+ m->cont_level++;
+ }
+
++ if (m->cont_level != 0 && *l == '&') {
++ ++l; /* step over */
++ m->flag |= OFFADD;
++ }
+ if (m->cont_level != 0 && *l == '(') {
+ ++l; /* step over */
+ m->flag |= INDIR;
++ if (m->flag & OFFADD)
++ m->flag = (m->flag & ~OFFADD) | INDIROFFADD;
+ }
+ if (m->cont_level != 0 && *l == '&') {
+ ++l; /* step over */
+@@ -506,7 +516,7 @@
+ l++;
+ }
+ if (*l == '~') {
+- m->in_op = FILE_OPINVERSE;
++ m->in_op |= FILE_OPINVERSE;
+ l++;
+ }
+ switch (*l) {
+@@ -543,11 +553,16 @@
+ l++;
+ break;
+ }
+- if (isdigit((unsigned char)*l))
+- m->in_offset = (uint32_t)strtoul(l, &t, 0);
++ if (*l == '(') {
++ m->in_op |= FILE_OPINDIRECT;
++ l++;
++ }
++ if (isdigit((unsigned char)*l) || *l == '-')
++ m->in_offset = (int32_t)strtol(l, &t, 0);
+ else
+ t = l;
+- if (*t++ != ')')
++ if (*t++ != ')' ||
++ ((m->in_op & FILE_OPINDIRECT) && *t++ != ')'))
+ if (ms->flags & MAGIC_CHECK)
+ file_magwarn(ms,
+ "missing ')' in indirect offset");
+@@ -577,6 +592,7 @@
+ #define NREGEX 5
+ #define NBESTRING16 10
+ #define NLESTRING16 10
++#define NSEARCH 6
+
+ if (*l == 'u') {
+ ++l;
+@@ -641,6 +657,9 @@
+ } else if (strncmp(l, "lestring16", NLESTRING16)==0) {
+ m->type = FILE_LESTRING16;
+ l += NLESTRING16;
++ } else if (strncmp(l, "search", NSEARCH)==0) {
++ m->type = FILE_SEARCH;
++ l += NSEARCH;
+ } else {
+ if (ms->flags & MAGIC_CHECK)
+ file_magwarn(ms, "type `%s' invalid", l);
+@@ -650,12 +669,12 @@
+ /* New and improved: ~ & | ^ + - * / % -- exciting, isn't it? */
+ if (*l == '~') {
+ if (!IS_STRING(m->type))
+- m->mask_op = FILE_OPINVERSE;
++ m->mask_op |= FILE_OPINVERSE;
+ ++l;
+ }
+ if ((t = strchr(fops, *l)) != NULL) {
+ uint32_t op = (uint32_t)(t - fops);
+- if (op != FILE_OPDIVIDE || !IS_STRING(m->type)) {
++ if (op != FILE_OPDIVIDE || !IS_PLAINSTRING(m->type)) {
+ ++l;
+ m->mask_op |= op;
+ val = (uint32_t)strtoul(l, &l, 0);
+@@ -683,6 +702,7 @@
+ return -1;
+ }
+ }
++ ++l;
+ }
+ }
+ /*
+@@ -706,15 +726,12 @@
+ }
+ break;
+ case '!':
+- if (!IS_STRING(m->type)) {
+- m->reln = *l;
+- ++l;
+- break;
+- }
+- /*@fallthrough@*/
++ m->reln = *l;
++ ++l;
++ break;
+ default:
+- if (*l == 'x' && isascii((unsigned char)l[1]) &&
+- isspace((unsigned char)l[1])) {
++ if (*l == 'x' && ((isascii((unsigned char)l[1]) &&
++ isspace((unsigned char)l[1])) || !l[1])) {
+ m->reln = *l;
+ ++l;
+ goto GetDesc; /* Bill The Cat */
+@@ -833,6 +850,7 @@
+ case FILE_STRING:
+ case FILE_PSTRING:
+ case FILE_REGEX:
++ case FILE_SEARCH:
+ *p = getstr(ms, *p, m->value.s, sizeof(m->value.s), &slen);
+ if (*p == NULL) {
+ if (ms->flags & MAGIC_CHECK)
+@@ -1259,7 +1277,7 @@
+ m->cont_level = swap2(m->cont_level);
+ m->offset = swap4((uint32_t)m->offset);
+ m->in_offset = swap4((uint32_t)m->in_offset);
+- if (IS_STRING(m->type))
++ if (!IS_STRING(m->type))
+ m->value.l = swap4(m->value.l);
+ m->mask = swap4(m->mask);
+ }
--- rpm-4.4.1/file/src/file.h.orig 2005-01-03 00:11:30.000000000 +0100
+++ rpm-4.4.1/file/src/file.h 2005-07-19 19:22:21.264100296 +0200
@@ -27,7 +27,7 @@
================================================================
---- CVS-web:
http://cvs.pld-linux.org/SOURCES/rpm-file-update.patch?r1=1.1&r2=1.2&f=u
More information about the pld-cvs-commit
mailing list