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]

Reply via email to