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:   31-Jul-2007 21:11:00
  Branch: HEAD                             Handle: 2007073120105900

  Modified files:
    rpm/rpmio               tmagic.c

  Log:
    retrieve file magic from buffer.

  Summary:
    Revision    Changes     Path
    1.2         +23 -14     rpm/rpmio/tmagic.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/tmagic.c
  ============================================================================
  $ cvs diff -u -r1.1 -r1.2 tmagic.c
  --- rpm/rpmio/tmagic.c        31 Jul 2007 18:25:33 -0000      1.1
  +++ rpm/rpmio/tmagic.c        31 Jul 2007 19:10:59 -0000      1.2
  @@ -11,9 +11,26 @@
   
   static int _debug = 0;
   
  -#define      FNPATH          "tmagic.test"
  +#define      FNPATH          "tmagic"
   static char * fnpath = FNPATH;
   
  +static const char * Fmagic(const char * buffer, size_t length)
  +{
  +    int msflags = MAGIC_CHECK;
  +    const char * magicfile = NULL;
  +    magic_t ms = magic_open(msflags);
  +    const char * t = NULL;
  +
  +    if (ms) {
  +     (void) magic_load(ms, magicfile);
  +     t = magic_buffer(ms, buffer, length);
  +     t = xstrdup((t ? t : ""));
  +     magic_close(ms);
  +    }
  +
  +    return t;
  +}
  +
   static void readFile(const char * path)
   {
       FD_t fd;
  @@ -23,11 +40,12 @@
       if (fd != NULL) {
        char buf[BUFSIZ];
        size_t len = Fread(buf, 1, sizeof(buf), fd);
  -     int xx;
  -        xx = Fclose(fd);
  +     (void) Fclose(fd);
   
  -     if (len > 0)
  -         fwrite(buf, 1, len, stderr);
  +     if (len > 0) {
  +         const char * magic = Fmagic(buf, len);
  +         fprintf(stderr, "==> magic \"%s\"\n", magic);
  +     }
       }
   }
   
  @@ -48,11 +66,7 @@
   main(int argc, const char *argv[])
   {
       poptContext optCon = poptGetContext(argv[0], argc, argv, optionsTable, 
0);
  -    int msflags = MAGIC_CHECK;
  -    magic_t ms = NULL;
  -    const char * magicfile = NULL;
       int rc;
  -    int xx;
   
       while ((rc = poptGetNextOpt(optCon)) > 0) {
        switch (rc) {
  @@ -64,9 +78,6 @@
        }
       }
   
  -    ms = magic_open(msflags);
  -assert(ms);
  -    xx = magic_load(ms, magicfile);
   
       if (_debug) {
        rpmIncreaseVerbosity();
  @@ -75,8 +86,6 @@
   
       readFile(fnpath);
   
  -    if (ms)
  -     magic_close(ms);
   /[EMAIL PROTECTED]@*/ urlFreeCache();
   
       return 0;
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to