RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: [EMAIL PROTECTED]
Module: rpm Date: 01-Aug-2007 21:35:05
Branch: HEAD Handle: 2007080120350401
Modified files:
rpm CHANGES
rpm/lib rpmfc.c
rpm/rpmio rpmmg.c rpmmg.h
Log:
- use rpmmg magic wrapper.
Summary:
Revision Changes Path
1.1540 +1 -0 rpm/CHANGES
1.15 +15 -49 rpm/lib/rpmfc.c
2.2 +18 -2 rpm/rpmio/rpmmg.c
2.2 +1 -2 rpm/rpmio/rpmmg.h
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1539 -r1.1540 CHANGES
--- rpm/CHANGES 1 Aug 2007 19:03:01 -0000 1.1539
+++ rpm/CHANGES 1 Aug 2007 19:35:04 -0000 1.1540
@@ -1,4 +1,5 @@
4.5 -> 5.0:
+ - jbj: use rpmmg magic wrapper.
- jbj: add rpmmg magic wrapper.
- jbj: unsnarl __FUNCTION__ from system.h AutoFu.
- rse: make sure RPM is also linked against libm if external Lua is used
(as liblua required libm)
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/rpmfc.c
============================================================================
$ cvs diff -u -r1.14 -r1.15 rpmfc.c
--- rpm/lib/rpmfc.c 1 Aug 2007 17:58:35 -0000 1.14
+++ rpm/lib/rpmfc.c 1 Aug 2007 19:35:04 -0000 1.15
@@ -2,15 +2,11 @@
#include <signal.h> /* getOutputFrom() */
-#ifdef HAVE_MAGIC_H
-#undef FILE_RCSID
-#include "magic.h"
-#endif
-
#include <rpmio.h>
#define _RPMEVR_INTERNAL
#include <rpmbuild.h>
#include <argv.h>
+#include <rpmmg.h>
#define _RPMFC_INTERNAL
#include <rpmfc.h>
@@ -987,24 +983,20 @@
{
ARGV_t fcav = NULL;
ARGV_t dav;
+ rpmmg mg = NULL;
const char * s, * se;
size_t slen;
int fcolor;
int xx;
-#ifdef HAVE_MAGIC_H
- const char * magicfile;
- int msflags = MAGIC_CHECK; /* XXX MAGIC_COMPRESS flag? */
- magic_t ms = NULL;
-#endif
+ const char * magicfile = NULL;
if (fc == NULL || argv == NULL)
return 0;
-#ifdef HAVE_MAGIC_H
magicfile = rpmExpand("%{?_rpmfc_magic_path}", NULL);
if (magicfile == NULL || *magicfile == '\0')
magicfile = _free(magicfile);
-#endif
+ mg = rpmmgNew(magicfile, 0);
fc->nfiles = argvCount(argv);
@@ -1016,32 +1008,16 @@
xx = argvAdd(&fc->cdict, "");
xx = argvAdd(&fc->cdict, "directory");
-#ifdef HAVE_MAGIC_H
- if (magicfile) {
- ms = magic_open(msflags);
- if (ms == NULL) {
- xx = RPMERR_EXEC;
- rpmError(xx, _("magic_open(0x%x) failed: %s\n"),
- msflags, strerror(errno));
-assert(ms != NULL); /* XXX figger a proper return path. */
- }
-
- xx = magic_load(ms, magicfile);
- if (xx == -1) {
- xx = RPMERR_EXEC;
- rpmError(xx, _("magic_load(ms, \"%s\") failed: %s\n"),
- magicfile, magic_error(ms));
-assert(xx != -1); /* XXX figger a proper return path. */
- }
- }
-#endif
+ mg = rpmmgNew(magicfile, 0);
+assert(mg); /* XXX figger a proper return path. */
for (fc->ix = 0; fc->ix < fc->nfiles; fc->ix++) {
const char * ftype;
+ int freeftype;
int_16 mode = (fmode ? fmode[fc->ix] : 0);
int urltype;
- ftype = "";
+ ftype = ""; freeftype = 0;
urltype = urlPath(argv[fc->ix], &s);
assert(s != NULL && *s == '/');
slen = strlen(s);
@@ -1093,18 +1069,11 @@
/* XXX skip all files in /dev/ which are (or should be) %dev
dummies. */
else if (slen >= fc->brlen+sizeof("/dev/") && !strncmp(s+fc->brlen,
"/dev/", sizeof("/dev/")-1))
ftype = "";
-#ifdef HAVE_MAGIC_H
else if (magicfile) {
- ftype = magic_file(ms, s);
-
- if (ftype == NULL) {
- xx = RPMERR_EXEC;
- rpmError(xx, _("magic_file(ms, \"%s\") failed: mode %06o
%s\n"),
- s, mode, magic_error(ms));
-assert(ftype != NULL); /* XXX figger a proper return path. */
- }
+ ftype = rpmmgFile(mg, s);
+assert(ftype); /* XXX never happens, rpmmgFile() returns "" */
+ freeftype = 1;
}
-#endif
/[EMAIL PROTECTED]@*/ break;
}
/[EMAIL PROTECTED]@*/
@@ -1126,6 +1095,9 @@
if (fcolor != RPMFC_WHITE && (fcolor & RPMFC_INCLUDE))
xx = rpmfcSaveArg(&fc->cdict, se);
/[EMAIL PROTECTED]@*/
+
+ if (freeftype)
+ ftype = _free(ftype);
}
/* Build per-file class index array. */
@@ -1146,14 +1118,8 @@
fcav = argvFree(fcav);
-#ifdef HAVE_MAGIC_H
- if (ms != NULL)
- magic_close(ms);
-#endif
-
-#ifdef HAVE_MAGIC_H
+ mg = rpmmgFree(mg);
magicfile = _free(magicfile);
-#endif
return 0;
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmmg.c
============================================================================
$ cvs diff -u -r2.1 -r2.2 rpmmg.c
--- rpm/rpmio/rpmmg.c 1 Aug 2007 19:03:01 -0000 2.1
+++ rpm/rpmio/rpmmg.c 1 Aug 2007 19:35:05 -0000 2.2
@@ -4,7 +4,9 @@
#include "system.h"
+#if defined(HAVE_MAGIC_H)
#include "magic.h"
+#endif
#include <rpmio.h>
#include <rpmerr.h>
@@ -21,10 +23,12 @@
if (_rpmmg_debug)
fprintf(stderr, "--> rpmmgFree(%p)\n", mg);
if (mg) {
+#if defined(HAVE_MAGIC_H)
if (mg->ms) {
magic_close(mg->ms);
mg->ms = NULL;
}
+#endif
mg->fn = _free(mg->fn);
mg = _free(mg);
}
@@ -38,7 +42,8 @@
if (fn)
mg->fn = xstrdup(fn);
- mg->flags = (flags ? flags : MAGIC_CHECK);
+#if defined(HAVE_MAGIC_H)
+ mg->flags = (flags ? flags : MAGIC_CHECK);/* XXX MAGIC_COMPRESS flag? */
mg->ms = magic_open(flags);
if (mg->ms == NULL) {
rpmError(RPMERR_EXEC, _("magic_open(0x%x) failed: %s\n"),
@@ -51,6 +56,7 @@
fn, magic_error(mg->ms));
return rpmmgFree(mg);
}
+#endif
if (_rpmmg_debug)
fprintf(stderr, "--> rpmmgNew(%s, 0x%x) mg %p\n", fn, flags, mg);
@@ -61,8 +67,15 @@
{
const char * t = NULL;
- if (mg->ms)
+#if defined(HAVE_MAGIC_H)
+ if (mg->ms) {
t = magic_file(mg->ms, fn);
+ if (t == NULL)
+ rpmError(RPMERR_EXEC, _("magic_file(ms, \"%s\") failed: %s\n"),
+ fn, magic_error(mg->ms));
+ }
+#endif
+
t = xstrdup((t ? t : ""));
if (_rpmmg_debug)
@@ -74,8 +87,11 @@
{
const char * t = NULL;
+#if defined(HAVE_MAGIC_H)
if (mg->ms)
t = magic_buffer(mg->ms, b, nb);
+#endif
+
t = xstrdup((t ? t : ""));
if (_rpmmg_debug)
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmmg.h
============================================================================
$ cvs diff -u -r2.1 -r2.2 rpmmg.h
--- rpm/rpmio/rpmmg.h 1 Aug 2007 19:03:01 -0000 2.1
+++ rpm/rpmio/rpmmg.h 1 Aug 2007 19:35:05 -0000 2.2
@@ -16,13 +16,12 @@
typedef struct rpmmg_s * rpmmg;
#if defined(_RPMMG_INTERNAL)
-#include "magic.h"
/** \ingroup rpmio
*/
struct rpmmg_s {
const char * fn;
int flags;
- magic_t ms;
+ void * ms;
};
#endif /* _RPMMG_INTERNAL */
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]