summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
Diffstat (limited to 'build')
-rw-r--r--build/.splintrc2
-rw-r--r--build/parsePreamble.c2
-rw-r--r--build/rpmfc.c36
-rw-r--r--build/rpmfc.h9
4 files changed, 26 insertions, 23 deletions
diff --git a/build/.splintrc b/build/.splintrc
index 548a24588..0a85588cf 100644
--- a/build/.splintrc
+++ b/build/.splintrc
@@ -1,4 +1,4 @@
--I. -I.. -I../lib -I../rpmdb -I../rpmio -I../beecrypt -I../popt -I../elfutils/libelf -DHAVE_CONFIG_H -D_GNU_SOURCE
+-I. -I.. -I../file/src -I../lib -I../rpmdb -I../rpmio -I../beecrypt -I../popt -I../elfutils/libelf -DHAVE_CONFIG_H -D_GNU_SOURCE
+partial
+forcehints
diff --git a/build/parsePreamble.c b/build/parsePreamble.c
index 00ca9c6b0..b4ff9c683 100644
--- a/build/parsePreamble.c
+++ b/build/parsePreamble.c
@@ -780,7 +780,7 @@ static struct PreambleRec_s preambleList[] = {
{RPMTAG_RHNPLATFORM, 0, 0, 1, "rhnplatform"},
{RPMTAG_DISTTAG, 0, 0, 0, "disttag"},
/*@-nullassign@*/ /* LCL: can't add null annotation */
- {0, 0, 0, 0}
+ {0, 0, 0, 0, 0}
/*@=nullassign@*/
};
diff --git a/build/rpmfc.c b/build/rpmfc.c
index 04e980042..660215c76 100644
--- a/build/rpmfc.c
+++ b/build/rpmfc.c
@@ -16,7 +16,6 @@
#include "debug.h"
-/*@access fmagic @*/
/*@access rpmds @*/
/**
@@ -1151,9 +1150,8 @@ int rpmfcClassify(rpmfc fc, ARGV_t argv)
size_t slen;
int fcolor;
int xx;
-fmagic fm = global_fmagic;
-int action = 0;
-int wid = 0; /* XXX don't prepend filename: */
+ int msflags = 0; /* XXX what MAGIC_FOO flags? */
+ magic_t ms = NULL;
if (fc == NULL || argv == NULL)
return 0;
@@ -1168,27 +1166,30 @@ int wid = 0; /* XXX don't prepend filename: */
xx = argvAdd(&fc->cdict, "");
xx = argvAdd(&fc->cdict, "directory");
-/*@-assignexpose@*/
- fm->magicfile = default_magicfile;
-/*@=assignexpose@*/
- /* XXX TODO fm->flags = ??? */
+ ms = magic_open(msflags);
+ /* XXX check errors. */
+
+ xx = magic_load(ms, "/usr/lib/rpm/magic");
+ /* XXX check errors. */
- xx = fmagicSetup(fm, fm->magicfile, action);
for (fc->ix = 0; fc->ix < fc->nfiles; fc->ix++) {
+ const char * ftype;
+
s = argv[fc->ix];
assert(s != NULL);
slen = strlen(s);
- fm->obp = fm->obuf;
- *fm->obp = '\0';
- fm->nob = sizeof(fm->obuf);
- xx = fmagicProcess(fm, s, wid);
-
/* XXX all files with extension ".pm" are perl modules for now. */
+/*@-branchstate@*/
if (slen >= sizeof(".pm") && !strcmp(s+slen-(sizeof(".pm")-1), ".pm"))
- strcpy(fm->obuf, "Perl5 module source text");
+ ftype = "Perl5 module source text";
+ else {
+ ftype = magic_file(ms, s);
+assert(ftype != NULL);
+ }
+/*@=branchstate@*/
- se = fm->obuf;
+ se = ftype;
rpmMessage(RPMMESS_DEBUG, "%s: %s\n", s, se);
xx = argvAdd(&fc->fn, s);
@@ -1222,7 +1223,8 @@ assert(se != NULL);
fcav = argvFree(fcav);
- /* XXX TODO dump fmagic baggage. */
+ if (ms != NULL)
+ magic_close(ms);
return 0;
}
diff --git a/build/rpmfc.h b/build/rpmfc.h
index 3d5cd97f4..f7dcb8802 100644
--- a/build/rpmfc.h
+++ b/build/rpmfc.h
@@ -1,7 +1,8 @@
#ifndef _H_RPMFC_
#define _H_RPMFC_
-#include "rpmfile.h"
+#undef FILE_RCSID
+#include "magic.h"
/*@-exportlocal@*/
/*@unchecked@*/
@@ -10,7 +11,7 @@ extern int _rpmfc_debug;
/**
*/
-typedef struct rpmfc_s * rpmfc;
+typedef /*@abstract@*/ struct rpmfc_s * rpmfc;
/**
*/
@@ -163,8 +164,8 @@ rpmfc rpmfcNew(void)
*/
/*@-exportlocal@*/
int rpmfcClassify(rpmfc fc, ARGV_t argv)
- /*@globals global_fmagic, fileSystem, internalState @*/
- /*@modifies fc, global_fmagic, fileSystem, internalState @*/;
+ /*@globals fileSystem, internalState @*/
+ /*@modifies fc, fileSystem, internalState @*/;
/*@=exportlocal@*/
/**