RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmio/ tdir.c tfts.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Fri 08 Feb 2008 - 17:31:45 CET
Message-Id: <20080208163145.3052A348479@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   08-Feb-2008 17:31:45
  Branch: HEAD                             Handle: 2008020816314301

  Modified files:
    rpm                     CHANGES
    rpm/rpmio               tdir.c tfts.c

  Log:
    - jbj: tweak up tdir debugging spew, add a Fts(3) stopwatch, append
    pesky /.

  Summary:
    Revision    Changes     Path
    1.2152      +1  -0      rpm/CHANGES
    2.10        +35 -20     rpm/rpmio/tdir.c
    2.16        +10 -13     rpm/rpmio/tfts.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2151 -r1.2152 CHANGES
  --- rpm/CHANGES	8 Feb 2008 15:08:14 -0000	1.2151
  +++ rpm/CHANGES	8 Feb 2008 16:31:43 -0000	1.2152
  @@ -1,4 +1,5 @@
   5.0.0 -> 5.1a1:
  +    - jbj: tweak up tdir debugging spew, add a Fts(3) stopwatch, append pesky /.
       - jbj: tweak up tfts debugging spew, add a Fts(3) stopwatch, append pesky /.
       - jbj: rpmsw: add rpmswPrint to display stopwtch results.
       - jbj: rpmdav: fix: check the pesky trailing '/' on collections correctly.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/tdir.c
  ============================================================================
  $ cvs diff -u -r2.9 -r2.10 tdir.c
  --- rpm/rpmio/tdir.c	8 Feb 2008 00:02:49 -0000	2.9
  +++ rpm/rpmio/tdir.c	8 Feb 2008 16:31:44 -0000	2.10
  @@ -10,30 +10,43 @@
   
   static int _debug = 0;
   
  -static void printDir(const char * path)
  +static void printDir(struct dirent * dp, int nentry)
   {
  -    struct dirent * dp;
  -    DIR * dir;
  -    int xx;
  -    int i;
  -
  -fprintf(stderr, "===== %s\n", path);
  -    dir = Opendir(path);
  -    i = 0;
  -    while ((dp = Readdir(dir)) != NULL) {
  -fprintf(stderr, "%5d (%x,%x) %x %x %s\n", i++,
  -(unsigned) dp->d_ino,
  +    if (rpmIsDebug()) {
  +	unsigned d_off = 0;
   #if !(defined(hpux) || defined(__hpux) || defined(sun) || defined(RPM_OS_AIX)) && \
       !defined(__APPLE__) && !defined(__FreeBSD_kernel__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__)
  -(unsigned) dp->d_off,
  -#else
  -(unsigned)0,
  +	d_off = (unsigned) dp->d_off,
   #endif
  -(unsigned) dp->d_reclen,
  -(unsigned) dp->d_type,
  -dp->d_name);
  +	fprintf(stderr, "%5d (0x%08x,0x%08x) 0x%04x ", nentry,
  +		(unsigned) dp->d_ino, d_off, (unsigned) dp->d_reclen);
       }
  +    if (rpmIsVerbose()) {
  +	if (!rpmIsDebug())
  +	    fprintf(stderr, "\t");
  +	fprintf(stderr, "%s%s\n", dp->d_name,
  +	    (dp->d_type == 0x04 ? "/" : ""));
  +    }
  +}
  +
  +static void dirWalk(const char * dn)
  +{
  +    rpmop op = memset(alloca(sizeof(*op)), 0, sizeof(*op));
  +    struct dirent * dp;
  +    DIR * dir;
  +    int nentries;
  +    int xx;
  +
  +    xx = rpmswEnter(op, 0);
  +    nentries = 0;
  +    dir = Opendir(dn);
  +    while ((dp = Readdir(dir)) != NULL)
  +	printDir(dp, nentries++);
       xx = Closedir(dir);
  +    xx = rpmswExit(op, nentries);
  +
  +fprintf(stderr, "===== %s: %d entries\n", dn, nentries);
  +    rpmswPrint("opendir:", op);
   }
   
   static struct poptOption optionsTable[] = {
  @@ -90,9 +103,11 @@
   	goto exit;
       }
   
  +    /* XXX Add pesky trailing '/' to http:// URI's */
       while ((dn = *av++) != NULL) {
  -	dn = rpmGetPath(dn, "/", NULL);
  -	printDir(dn);
  +	size_t nb = strlen(dn);
  +	dn = rpmExpand(dn, (dn[nb-1] != '/' ? "/" : NULL), NULL);
  +	dirWalk(dn);
   	dn = _free(dn);
       }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/tfts.c
  ============================================================================
  $ cvs diff -u -r2.15 -r2.16 tfts.c
  --- rpm/rpmio/tfts.c	8 Feb 2008 15:08:14 -0000	2.15
  +++ rpm/rpmio/tfts.c	8 Feb 2008 16:31:44 -0000	2.16
  @@ -135,8 +135,8 @@
       FTSENT * fts;
       int xx;
   
  -    ndirs = nfiles = 0;
       xx = rpmswEnter(op, 0);
  +    ndirs = nfiles = 0;
       ftsp = Fts_open((char *const *)av, ftsOpts, NULL);
       while((fts = Fts_read(ftsp)) != NULL)
   	xx = ftsPrint(ftsp, fts);
  @@ -205,9 +205,9 @@
       ARGV_t av = NULL;
       int ac = 0;
       ARGV_t dav;
  +    const char * dn;
       int rc;
       int xx;
  -    int i;
   
       while ((rc = poptGetNextOpt(optCon)) > 0) {
   	const char * optArg = poptGetOptArg(optCon);
  @@ -241,17 +241,6 @@
   	goto exit;
       }
   
  -    /* XXX Add trailing '/' to http:// URI's */
  -    for (i = 0; i < ac; i++) {
  -	const char * dn = dav[i];
  -	size_t nb = strlen(dn);
  -	const char *nav[2];
  -	nav[0] = rpmExpand(dn, (dn[nb-1] != '/' ? "/" : NULL), NULL);
  -	nav[1] = NULL;
  -	argvAppend(&av, nav);
  -	nav[0] = _free(nav[0]);
  -    }
  -
       if (mirePattern) {
   	mire = mireNew(mireMode, mireTag);
   	if ((xx = mireRegcomp(mire, mirePattern)) != 0)
  @@ -262,6 +251,14 @@
   	mg = rpmmgNew(mgFile, mgFlags);
       }
   
  +    /* XXX Add pesky trailing '/' to http:// URI's */
  +    while ((dn = *dav++) != NULL) {
  +	size_t nb = strlen(dn);
  +	dn = rpmExpand(dn, (dn[nb-1] != '/' ? "/" : NULL), NULL);
  +	argvAdd(&av, dn);
  +	dn = _free(nav[0]);
  +    }
  +
       ftsWalk(av);
   
   exit:
  @@ .
Received on Fri Feb 8 17:31:45 2008
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.