[CVS] RPM: rpm/rpmio/ rpmpigz.c rpmzq.h

2009-03-09 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   10-Mar-2009 03:26:55
  Branch: HEAD Handle: 2009031002265500

  Modified files:
rpm/rpmio   rpmpigz.c rpmzq.h

  Log:
 - jbj: rpmz: handle job-in from zq->load_pool lazily, eliminate
zq->_job_in.

  Summary:
RevisionChanges Path
1.34+36 -20 rpm/rpmio/rpmpigz.c
1.17+4  -0  rpm/rpmio/rpmzq.h
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpigz.c
  
  $ cvs diff -u -r1.33 -r1.34 rpmpigz.c
  --- rpm/rpmio/rpmpigz.c   9 Mar 2009 21:34:43 -   1.33
  +++ rpm/rpmio/rpmpigz.c   10 Mar 2009 02:26:55 -  1.34
  @@ -1293,9 +1293,7 @@
yarnWaitFor(zq->load_state, TO_BE, 1);
   
   assert(zq->_in_pend == NULL);
  - zq->_in_pend = xcalloc(1, sizeof(*zq->_in_pend));
  - zq->_in_pend->len = zq->_in_buf_allocated;
  - zq->_in_pend->buf = xmalloc(zq->_in_pend->len);
  + zq->_in_pend = rpmzqNewSpace(zq->load_pool);
nread = rpmzRead(zq, zq->_in_pend->buf, zq->_in_pend->len);
zq->_in_pend->len = nread;
   
  @@ -1326,7 +1324,6 @@
return 0;
   }
   
  -assert(job->in != NULL);
   #if 0/* XXX hmmm, the comment above is incorrect. todo++ */
   assert(job->in->len == 0);
   #endif
  @@ -1338,6 +1335,8 @@
/* if first time, fire up the read thread, ask for a read */
if (zq->_in_which == -1) {
zq->_in_which = 1;
  +assert(zq->load_pool == NULL);
  + zq->load_pool = rpmzqNewPool(zq->_in_buf_allocated, (zq->threads << 
1) + 2);
   /*...@-mustfreeonly@*/
zq->load_state = yarnNewLock(1);
zq->load_thread = yarnLaunch(load_read_thread, zq);
  @@ -1350,9 +1349,10 @@
yarnRelease(zq->load_state);
   
/* set up input buffer with the data just read */
  - zq->_in_prev = _free(zq->_in_prev);
  - if (job->in != &zq->_job_in)
  - job->in = _free(job->in);
  + if (job->in != NULL) {
  + job->in->buf = zq->_in_prev;
  + job->in = rpmzqDropSpace(job->in);
  + }
job->in = zq->_in_pend;
zq->_in_prev = job->in->buf;
zq->_in_pend = NULL;
  @@ -1385,8 +1385,7 @@
zq->_in_pend->len = nread;
   
zq->_in_prev = _free(zq->_in_prev);
  - if (job->in != &zq->_job_in)
  - job->in = _free(job->in);
  + job->in = _free(job->in);
job->in = zq->_in_pend;
zq->_in_prev = job->in->buf;
zq->_in_pend = NULL;
  @@ -1416,10 +1415,14 @@
   rpmzJob job = &zq->_job;
   job->seq = 0;
   job->more = 1;
  -job->in->len = 0;
  -job->in->buf = NULL;
  -job->out->len = 0;
  -job->out->buf = NULL;
  +if (job->in != NULL) {
  + job->in->len = 0;
  + job->in->buf = NULL;
  +}
  +if (job->out != NULL) {
  + job->out->len = 0;
  + job->out->buf = NULL;
  +}
   job->check = 0;
   job->calc = NULL;
   job->next = NULL;
  @@ -1431,7 +1434,7 @@
   /*...@=mustmod@*/
   
   /* buffered reading macros for decompression and listing */
  -#define GET() ((!job->more) || (job->in->len == 0 && load(zq) == 0) ? EOF : \
  +#define GET() ((!job->more) || (!(job->in && job->in->len) && load(zq) == 0) 
? EOF : \
  (job->in->len--, *job->in->buf++))
   #define GET2() (tmp2 = GET(), tmp2 + (GET() << 8))
   #define GET4() (tmp4 = GET2(), tmp4 + ((unsigned long)(GET2()) << 16))
  @@ -2194,10 +2197,6 @@
   } while ((zq->format == RPMZ_FORMAT_GZIP || zq->format == 
RPMZ_FORMAT_ZLIB) && (ret = rpmzGetHeader(zq, 0)) == 8);
   if (ret != -1 && (zq->format == RPMZ_FORMAT_GZIP || zq->format == 
RPMZ_FORMAT_ZLIB))
fprintf(stderr, "%s OK, has trailing junk which was ignored\n", 
zq->ifn);
  -
  -zq->_in_prev = _free(zq->_in_prev);
  -zq->_in_pend = _free(zq->_in_pend);
  -job->in = _free(job->in);
   }
   /*...@=nullstate@*/
   
  @@ -2919,6 +2918,7 @@
   {
   rpmz z = _rpmz;
   rpmzQueue zq = _rpmzq;
  +rpmzJob job = &zq->_job;
   poptContext optCon;
   int ac;
   int rc = 1;  /* assume failure */
  @@ -2928,7 +2928,6 @@
   /*...@-observertrans -readonlytrans @*/
   __progname = "rpmpigz";
   /*...@=observertrans =readonlytrans @*/
  -zq->_job.in = &zq->_job_in;
   zq->_job.out = &zq->_job_out;
   z->zq = zq;  /* XXX initialize rpmzq */
   
  @@ -2998,8 +2997,25 @@
   
   rc = 0;
   
  -/* done -- release resources, show log */
   exit:
  +/* done -- release resources, show log */
  +if 

[CVS] RPM: rpm/lib/ rpmrc.c

2009-03-09 Thread Per �yvind Karlsen
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Per Øyvind Karlsen
  Root:   /v/rpm/cvs   Email:  pkarl...@rpm5.org
  Module: rpm  Date:   10-Mar-2009 01:10:21
  Branch: HEAD Handle: 2009031000102100

  Modified files:
rpm/lib rpmrc.c

  Log:
fix so that first platform in list will be used rather than last now that
ordering has been fixed..

  Summary:
RevisionChanges Path
2.253   +1  -1  rpm/lib/rpmrc.c
  

  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmrc.c
  
  $ cvs diff -u -r2.252 -r2.253 rpmrc.c
  --- rpm/lib/rpmrc.c   9 Mar 2009 23:39:10 -   2.252
  +++ rpm/lib/rpmrc.c   10 Mar 2009 00:10:21 -  2.253
  @@ -572,7 +572,7 @@
   
   cpuinfo_destroy(cip);
   
  -cpu = mi_re[mi_nre-1].pattern;
  +cpu = mi_re[0].pattern;
   if(cpu != NULL)
   {
if (!parseCVOG(cpu, &cvog) && cvog != NULL) {
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmrc.c

2009-03-09 Thread Per �yvind Karlsen
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Per Øyvind Karlsen
  Root:   /v/rpm/cvs   Email:  pkarl...@rpm5.org
  Module: rpm  Date:   10-Mar-2009 00:39:10
  Branch: HEAD Handle: 2009030923390901

  Modified files:
rpm CHANGES
rpm/lib rpmrc.c

  Log:
fix order of archs added throuh libcpuinfo so that rpmPlatformScore() will
return correct value.

  Summary:
RevisionChanges Path
1.2810  +2  -0  rpm/CHANGES
2.252   +27 -23 rpm/lib/rpmrc.c
  

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.2809 -r1.2810 CHANGES
  --- rpm/CHANGES   7 Mar 2009 14:00:46 -   1.2809
  +++ rpm/CHANGES   9 Mar 2009 23:39:09 -   1.2810
  @@ -1,5 +1,7 @@
   
   5.2a3 -> 5.2a4:
  +- proyvind: fix order of archs added throuh libcpuinfo so that
  + rpmPlatformScore() will return correct value.
   
   5.2a2 -> 5.2a3:
   - rse: use Pthreads under --with-pthreads controlled WITH_PTHREADS and 
not  existance-derived HAVE_PTHREADS_H 
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmrc.c
  
  $ cvs diff -u -r2.251 -r2.252 rpmrc.c
  --- rpm/lib/rpmrc.c   17 Feb 2009 21:25:06 -  2.251
  +++ rpm/lib/rpmrc.c   9 Mar 2009 23:39:10 -   2.252
  @@ -515,36 +515,38 @@
   uname(&un);
   cpuinfo_t *cip = cpuinfo_new();
   
  -xx = mireAppend(RPMMIRE_REGEX, 0, "noarch", NULL, &mi_re, &mi_nre);
  -
   #if defined(__i386__) || defined(__x86_64__)
  -if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86))
  - xx = mireAppend(RPMMIRE_REGEX, 0, "i386", NULL, &mi_re, &mi_nre);
  -if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_AC))
  - xx = mireAppend(RPMMIRE_REGEX, 0, "i486", NULL, &mi_re, &mi_nre);
  -if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_TSC))
  - xx = mireAppend(RPMMIRE_REGEX, 0, "i586", NULL, &mi_re, &mi_nre);
  -if(cpuinfo_get_vendor(cip) == CPUINFO_VENDOR_NSC)
  - xx = mireAppend(RPMMIRE_REGEX, 0, "geode", NULL, &mi_re, &mi_nre);
  +if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_64BIT) && strcmp(un.machine, 
"x86_64") == 0)
  + xx = mireAppend(RPMMIRE_REGEX, 0, "x86_64", NULL, &mi_re, &mi_nre);
  +if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_SSE2))
  + xx = mireAppend(RPMMIRE_REGEX, 0, "pentium4", NULL, &mi_re, &mi_nre);
  +if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_SSE))
  + xx = mireAppend(RPMMIRE_REGEX, 0, "pentium3", NULL, &mi_re, &mi_nre);
  +if(cpuinfo_get_vendor(cip) == CPUINFO_FEATURE_X86_3DNOW_PLUS)
  + xx = mireAppend(RPMMIRE_REGEX, 0, "athlon", NULL, &mi_re, &mi_nre);
   if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_CMOV))
  - xx = mireAppend(RPMMIRE_REGEX, 0, "i686", NULL, &mi_re, &mi_nre);
  +{
if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_MMX))
xx = mireAppend(RPMMIRE_REGEX, 0, "pentium2", NULL, &mi_re, 
&mi_nre);
  -if(cpuinfo_get_vendor(cip) == CPUINFO_VENDOR_AMD && 
cpuinfo_get_vendor(cip) == CPUINFO_FEATURE_X86_3DNOW_PLUS)
  - xx = mireAppend(RPMMIRE_REGEX, 0, "athlon", NULL, &mi_re, &mi_nre);
  -if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_SSE))
  - xx = mireAppend(RPMMIRE_REGEX, 0, "pentium3", NULL, &mi_re, &mi_nre);
  -if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_SSE2))
  - xx = mireAppend(RPMMIRE_REGEX, 0, "pentium4", NULL, &mi_re, &mi_nre);
  -if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_64BIT) && strcmp(un.machine, 
"x86_64") == 0)
  - xx = mireAppend(RPMMIRE_REGEX, 0, "x86_64", NULL, &mi_re, &mi_nre);
  + xx = mireAppend(RPMMIRE_REGEX, 0, "i686", NULL, &mi_re, &mi_nre);
  +}
  +if(cpuinfo_get_vendor(cip) == CPUINFO_FEATURE_X86_3DNOW)
  + xx = mireAppend(RPMMIRE_REGEX, 0, "k6", NULL, &mi_re, &mi_nre);
  +if(cpuinfo_get_vendor(cip) == CPUINFO_VENDOR_NSC)
  + xx = mireAppend(RPMMIRE_REGEX, 0, "geode", NULL, &mi_re, &mi_nre);
  +if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_TSC))
  + xx = mireAppend(RPMMIRE_REGEX, 0, "i586", NULL, &mi_re, &mi_nre);
  +if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86_AC))
  + xx = mireAppend(RPMMIRE_REGEX, 0, "i486", NULL, &mi_re, &mi_nre);
  +if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_X86))
  + xx = mireAppend(RPMMIRE_REGEX, 0, "i386", NULL, &mi_re, &mi_nre);
   #endif
   
   #if defined(__powerpc__)
  +if(cpuinfo_has_feature(cip, CPUINFO_FEATURE_64BIT) && strcmp(un.machine, 
"ppc64") == 0)
  + xx = mireAppend(RPMMIRE_REGEX, 0, "ppc64", NULL, &mi_re, &mi_nre);
   if(cpuinfo_has_feature(

[CVS] RPM: rpm/ devtool.conf

2009-03-09 Thread Per �yvind Karlsen
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Per Øyvind Karlsen
  Root:   /v/rpm/cvs   Email:  pkarl...@rpm5.org
  Module: rpm  Date:   10-Mar-2009 00:09:40
  Branch: HEAD Handle: 2009030923094000

  Modified files:
rpm devtool.conf

  Log:
replace tarball.lzma with tarball.xz now that xz format is stable

  Summary:
RevisionChanges Path
2.265   +2  -2  rpm/devtool.conf
  

  patch -p0 <<'@@ .'
  Index: rpm/devtool.conf
  
  $ cvs diff -u -r2.264 -r2.265 devtool.conf
  --- rpm/devtool.conf  7 Mar 2009 16:42:58 -   2.264
  +++ rpm/devtool.conf  9 Mar 2009 23:09:40 -   2.265
  @@ -1874,7 +1874,7 @@
   %prepare
   make dist
   
  -%tarball.lzma
  +%tarball.xz
   %prepare
  - make dist-lzma
  + make dist-xz
   
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmio/ rpmpigz.c rpmzq.h

2009-03-09 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   09-Mar-2009 22:34:43
  Branch: HEAD Handle: 2009030921344300

  Modified files:
rpm/rpmio   rpmpigz.c rpmzq.h

  Log:
- jbj: rpmz: replace in_buf/in_buf2 with a lazy garbage collector.
wotta pita.

  Summary:
RevisionChanges Path
1.33+43 -20 rpm/rpmio/rpmpigz.c
1.16+2  -4  rpm/rpmio/rpmzq.h
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpigz.c
  
  $ cvs diff -u -r1.32 -r1.33 rpmpigz.c
  --- rpm/rpmio/rpmpigz.c   9 Mar 2009 18:00:06 -   1.32
  +++ rpm/rpmio/rpmpigz.c   9 Mar 2009 21:34:43 -   1.33
  @@ -1291,12 +1291,13 @@
   do {
yarnPossess(zq->load_state);
yarnWaitFor(zq->load_state, TO_BE, 1);
  -assert(zq->_in_pend == 0);
  -assert(zq->_in_next == NULL);
  - zq->_in_pend = zq->_in_buf_allocated;
  - zq->_in_next = zq->_in_which ? zq->_in_buf : zq->_in_buf2;
  - nread = rpmzRead(zq, zq->_in_next, zq->_in_pend);
  - zq->_in_pend = nread;
  +
  +assert(zq->_in_pend == NULL);
  + zq->_in_pend = xcalloc(1, sizeof(*zq->_in_pend));
  + zq->_in_pend->len = zq->_in_buf_allocated;
  + zq->_in_pend->buf = xmalloc(zq->_in_pend->len);
  + nread = rpmzRead(zq, zq->_in_pend->buf, zq->_in_pend->len);
  + zq->_in_pend->len = nread;
   
Trace((zlog, "-- decompress read thread read %lu bytes", nread));
yarnTwist(zq->load_state, TO, 0);
  @@ -1317,6 +1318,8 @@
   {
   rpmzJob job = &zq->_job;
   
  +if (_debug)
  +fprintf(stderr, "--- %s(%p)\tjob %p[%u]: %p[%u] -> %p[%u]\n", __FUNCTION__, 
zq, job, (unsigned)job->seq, job->in->buf, (unsigned)job->in->len, 
job->out->buf, (unsigned)job->out->len);
   /* if already detected end of file, do nothing */
   if (job->more < 0) {
job->more = 0;
  @@ -1347,10 +1350,12 @@
yarnRelease(zq->load_state);
   
/* set up input buffer with the data just read */
  - job->in->len = zq->_in_pend;
  - job->in->buf = zq->_in_next;
  - zq->_in_pend = 0;
  - zq->_in_next = NULL;
  + zq->_in_prev = _free(zq->_in_prev);
  + if (job->in != &zq->_job_in)
  + job->in = _free(job->in);
  + job->in = zq->_in_pend;
  + zq->_in_prev = job->in->buf;
  + zq->_in_pend = NULL;
   
/* if not at end of file, alert read thread to load next buffer,
 * alternate between in_buf and in_buf2 */
  @@ -1371,16 +1376,20 @@
   #endif
   {size_t nread;
/* don't use threads -- simply read a buffer into zq->_in_buf */
  -assert(zq->_in_pend == 0);
  -assert(zq->_in_next == NULL);
  - zq->_in_pend = zq->_in_buf_allocated;
  - zq->_in_next = zq->_in_buf;
  - nread = rpmzRead(zq, zq->_in_next, zq->_in_pend);
  - zq->_in_pend = nread;
  - job->in->len = zq->_in_pend;
  - job->in->buf = zq->_in_next;
  - zq->_in_pend = 0;
  - zq->_in_next = NULL;
  +assert(zq->_in_pend == NULL);
  + zq->_in_pend = xcalloc(1, sizeof(*zq->_in_pend));
  + zq->_in_pend->len = zq->_in_buf_allocated;
  + zq->_in_pend->buf = xmalloc(zq->_in_pend->len);
  +
  + nread = rpmzRead(zq, zq->_in_pend->buf, zq->_in_pend->len);
  + zq->_in_pend->len = nread;
  +
  + zq->_in_prev = _free(zq->_in_prev);
  + if (job->in != &zq->_job_in)
  + job->in = _free(job->in);
  + job->in = zq->_in_pend;
  + zq->_in_prev = job->in->buf;
  + zq->_in_pend = NULL;
   }
   
   /* note end of file */
  @@ -1931,6 +1940,8 @@
   {
   rpmzQueue zq = _zq;
   rpmzJob job = &zq->_job;
  +if (_debug)
  +fprintf(stderr, "--- %s(%p)\tjob %p[%u]: %p[%u] -> %p[%u]\n", __FUNCTION__, 
zq, job, (unsigned)job->seq, job->in->buf, (unsigned)job->in->len, 
job->out->buf, (unsigned)job->out->len);
   load(zq);
   *buf = job->in->buf;
   return job->in->len;
  @@ -2074,6 +2085,9 @@
   unsigned long tmp4;
   off_t clen;
   
  +if (_debug)
  +fprintf(stderr, "--- %s(%p)\tjob %p[%u]: %p[%u] -> %p[%u]\n", __FUNCTION__, 
zq, job, (unsigned)job->seq, job->in->buf, (unsigned)job->in->len, 
job->out->buf, (unsigned)job->out->len);
  +
   cont = 0;
   do {
/* header already read -- set up for decompression */
  @@ -2180,6 +2194,10 @@
   } while ((zq->format == RPMZ_FORMAT_GZIP || zq->format == 
RPMZ_FORMAT_ZLIB) && (ret = rpmzGetHeader(zq, 0)) == 8);
   if (ret != -1 && (zq->format == RPMZ_FORMAT_GZIP || zq->format == 
RPMZ_FORMAT_ZLIB))
fprintf(stderr, "%s OK, has trailing junk which was ignored

[CVS] RPM: rpm/rpmio/ rpmpigz.c

2009-03-09 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   09-Mar-2009 19:00:07
  Branch: HEAD Handle: 2009030918000600

  Modified files:
rpm/rpmio   rpmpigz.c

  Log:
- jbj: rpmz: leave reminders why job->{in,out} should not be trashed on 
drop.
- jbj: rpmz: initialize zq->omode switch for now, use zq->mode eventually.
- jbj: rpmz: fix: rpmzqAddWJob already did the release.

  Summary:
RevisionChanges Path
1.32+12 -49 rpm/rpmio/rpmpigz.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpigz.c
  
  $ cvs diff -u -r1.31 -r1.32 rpmpigz.c
  --- rpm/rpmio/rpmpigz.c   9 Mar 2009 15:53:53 -   1.31
  +++ rpm/rpmio/rpmpigz.c   9 Mar 2009 18:00:06 -   1.32
  @@ -454,8 +454,7 @@
   /*...@-noeffect@*/
deflateSetDictionary(sp, buf, _PIGZDICT);
   /*...@=noeffect@*/
  - rpmzqDropSpace(job->out);
  - job->out = NULL;
  + (void) rpmzqDropSpace(job->out);/* XXX don't reset job->out */
   }
   }
   /*...@=mustmod@*/
  @@ -517,12 +516,11 @@
/*...@modifies *buf, fileSystem, internalState @*/
   {
   int fdno = zq->ifdno;
  -ssize_t ret;
  -size_t got;
  +size_t got = 0;
   
   got = 0;
   while (len) {
  - ret = read(fdno, buf, len);
  + ssize_t ret = read(fdno, buf, len);
if (ret < 0)
bail("read error on ", zq->ifn);
if (ret == 0)
  @@ -531,7 +529,7 @@
len -= ret;
got += ret;
   }
  -return got;
  +return got;  /* XXX never returns < 0 */
   }
   
   /* write len bytes, repeating write() calls as needed */
  @@ -540,16 +538,17 @@
/*...@modifies fileSystem, internalState @*/
   {
   int fdno = zq->ofdno;
  -ssize_t ret;
  +size_t put = 0;
   
   while (len) {
  - ret = write(fdno, buf, len);
  + ssize_t ret = write(fdno, buf, len);
if (ret < 1)
fprintf(stderr, "write error code %d\n", errno);
if (ret < 1)
bail("write error on ", zq->ofn);
buf += ret;
len -= ret;
  + put += ret;
   }
   }
   
  @@ -936,8 +935,6 @@
   rpmzLog zlog = zq->zlog;
   
   rpmzJob job;/* job pulled and working on */ 
  -rpmzJob here;   /* pointers for inserting in write list 
*/ 
  -rpmzJob * prior;/* pointers for inserting in write list 
*/ 
   unsigned long check;/* check value of input */
   unsigned char *next;/* pointer for check value data */
   size_t len; /* remaining bytes to compress/check */
  @@ -945,28 +942,14 @@
   
   /* initialize the deflate stream for this thread */
   gz = rpmgzCompressInit(zq->level, O_WRONLY);
  +zq->omode = O_WRONLY;/* XXX eliminate */
   
   /* keep looking for work */
   for (;;) {
/* get a job (like I tell my son) */
  -#ifndef  DYING   /* XXX something buggy here */
  - yarnPossess(zq->compress_have);
  - yarnWaitFor(zq->compress_have, NOT_TO_BE, 0);
  - job = zq->compress_head;
  -assert(job != NULL);
  - if (job->seq == -1)
  - break;
  -/*...@-dependenttrans@*/
  - zq->compress_head = job->next;
  -/*...@=dependenttrans@*/
  - if (job->next == NULL)
  - zq->compress_tail = &zq->compress_head;
  - yarnTwist(zq->compress_have, BY, -1);
  -#else
job = rpmzqDelCJob(zq);
if (job == NULL)
break;
  -#endif
   
/* got a job -- initialize and set the compression level. */
Trace((zlog, "-- compressing #%ld", job->seq));
  @@ -982,28 +965,11 @@
/* Compress the job. */
rpmgzCompress(gz, job);
   
  -#ifndef  DYING   /* XXX eliminate zq->omode first */
  - Trace((zlog, "-- compressed #%ld%s", job->seq, job->more ? "" : " 
(last)"));
  -#endif
  -
/* reserve input buffer until check value has been calculated */
rpmzqUseSpace(job->in);
   
/* insert write job in list in sorted order, alert write thread */
  -#ifndef  DYING   /* XXX eliminate zq->omode first */
  - yarnPossess(zq->write_first);
  - prior = &zq->write_head;
  - while ((here = *prior) != NULL) {
  - if (here->seq > job->seq)
  - break;
  - prior = &(here->next);
  - }
  - job->next = here;
  - *prior = job;
  - yarnTwist(zq->write_first, TO, zq->write_head->seq);
  -#else
rpmzqAddWJob(zq, job);
  -#endif
   
/* calculate the check value in parallel 

[CVS] RPM: rpm/rpmio/ .splintrc_rpmpigz rpmpigz.c rpmz.h rpmzq.h

2009-03-09 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   09-Mar-2009 16:53:53
  Branch: HEAD Handle: 2009030915535300

  Modified files:
rpm/rpmio   .splintrc_rpmpigz rpmpigz.c rpmz.h rpmzq.h

  Log:
-jbj: rpmz: splint fiddles.

  Summary:
RevisionChanges Path
1.2 +5  -0  rpm/rpmio/.splintrc_rpmpigz
1.31+58 -27 rpm/rpmio/rpmpigz.c
1.18+5  -4  rpm/rpmio/rpmz.h
1.15+15 -17 rpm/rpmio/rpmzq.h
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/.splintrc_rpmpigz
  
  $ cvs diff -u -r1.1 -r1.2 .splintrc_rpmpigz
  --- rpm/rpmio/.splintrc_rpmpigz   23 Feb 2009 18:33:31 -  1.1
  +++ rpm/rpmio/.splintrc_rpmpigz   9 Mar 2009 15:53:53 -   1.2
  @@ -19,13 +19,18 @@
   -boolops # 135
   -branchstate
   -compdef # 34
  +-compdestroy
   -compmempass # 6
   -enummemuse  # 2
   -evalorder   # 14
   -fixedformalarray
   -formatconst # 3
  +-incondefs
  +-matchfields
   -modobserver # 4
  +-mustfreeonly
   -mustfreefresh   # 1 splint on crack?
  +-mutrep
   -nullpass# 31
   -predboolint # 91
   -predboolothers  # 6
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpigz.c
  
  $ cvs diff -u -r1.30 -r1.31 rpmpigz.c
  --- rpm/rpmio/rpmpigz.c   9 Mar 2009 14:18:28 -   1.30
  +++ rpm/rpmio/rpmpigz.c   9 Mar 2009 15:53:53 -   1.31
  @@ -304,10 +304,13 @@
   /*...@=fullinitblock@*/
   
   /* set option defaults */
  +/*...@-mustmod@*/
   static void rpmzDefaults(rpmzQueue zq)
/*...@modifies zq @*/
   {
  +/*...@-observertrans -readonlytr...@*/
   zq->suffix = ".gz";   /* compressed file suffix */
  +/*...@=observertrans =readonlytr...@*/
   zq->ifn = _rpmz->_ifn;
   zq->ifdno = -1;
   zq->ofn = NULL;
  @@ -333,6 +336,7 @@
   zq->flags &= ~RPMZ_FLAGS_RECURSE;/* don't go into directories */
   zq->format = RPMZ_FORMAT_GZIP;   /* use gzip format */
   }
  +/*...@=mustmod@*/
   
   /*...@unchecked@*/
   rpmz _rpmz = &__rpmz;
  @@ -375,6 +379,7 @@
   #define _PIGZMAX unsigned)0 - 1) >> 1) + 1)
   
   typedef /*...@abstract@*/ struct rpmgz_s * rpmgz;
  +/*...@access rpmgz @*/
   
   struct rpmgz_s {
   z_stream strm;
  @@ -385,15 +390,17 @@
   
   /*...@only@*/ /*...@null@*/
   static rpmgz rpmgzFini(/*...@only@*/ rpmgz gz)
  -/*...@modifies gz @*/
  + /*...@modifies gz @*/
   {
  +/*...@-compdestroy@*/
   gz = _free(gz);
  +/*...@=compdestroy@*/
   return NULL;
   }
   
   /*...@only@*/
   static rpmgz rpmgzInit(int level, mode_t omode)
  -/*...@*/
  + /*...@*/
   {
   rpmgz gz = xcalloc(1, sizeof(*gz));
   
  @@ -405,21 +412,26 @@
   
   /*...@only@*/
   static rpmgz rpmgzCompressInit(int level, mode_t omode)
  -/*...@modifies gz @*/
  + /*...@globals fileSystem, internalState @*/
  + /*...@modifies fileSystem, internalState @*/
   {
   rpmgz gz = rpmgzInit(level, omode);
   z_stream * sp = &gz->strm;
   
  +/*...@-nullstate -nullret @*/
   sp->zfree = Z_NULL;
   sp->zalloc = Z_NULL;
   sp->opaque = Z_NULL;
   if (deflateInit2(sp, gz->level, Z_DEFLATED, -15, 8, gz->strategy) != 
Z_OK)
bail("not enough memory", "deflateInit2");
   return gz;
  +/*...@=nullstate =nullret @*/
   }
   
  +/*...@-mustmod@*/
   static void rpmgzCompressReset(rpmgz gz, rpmzJob job)
  -/*...@modifies gz, job @*/
  + /*...@globals fileSystem, internalState @*/
  + /*...@modifies gz, job, fileSystem, internalState @*/
   {
   z_stream * sp = &gz->strm;
   
  @@ -446,9 +458,11 @@
job->out = NULL;
   }
   }
  +/*...@=mustmod@*/
   
  +/*...@-mustmod@*/
   static void rpmgzCompress(rpmgz gz, rpmzJob job)
  -/*...@modifies gz, job @*/
  + /*...@modifies gz, job->out @*/
   {
   z_stream * sp = &gz->strm;
   unsigned char * out_buf = job->out->buf;
  @@ -479,10 +493,12 @@
   assert(sp->avail_in == 0 && sp->avail_out != 0);
   job->out->len = sp->next_out - out_buf;
   }
  +/*...@=mustmod@*/
   
  +/*...@-mustmod@*/
   /*...@only@*/ /*...@null@*/
   static rpmgz rpmgzCompressFini(/*...@only@*/ rpmgz gz)
  -/*...@modifies gz @*/
  + /*...@modifies gz @*/
   {
   z_stream * sp = &gz->strm;
   
  @@ -491,6 +507,7 @@
   /*...@=noeffect@*/
   return rpmgzFini(gz);
   }
  +/*...@=mustmod@*/
   
   /*==

[CVS] RPM: rpm/rpmio/ rpmpigz.c

2009-03-09 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   09-Mar-2009 15:18:29
  Branch: HEAD Handle: 2009030914182800

  Modified files:
rpm/rpmio   rpmpigz.c

  Log:
- jbj: rpmz: pass zq (not z) everywhere consistent with rpmzq.c

  Summary:
RevisionChanges Path
1.30+143 -164   rpm/rpmio/rpmpigz.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpigz.c
  
  $ cvs diff -u -r1.29 -r1.30 rpmpigz.c
  --- rpm/rpmio/rpmpigz.c   9 Mar 2009 12:00:43 -   1.29
  +++ rpm/rpmio/rpmpigz.c   9 Mar 2009 14:18:28 -   1.30
  @@ -160,7 +160,7 @@
  which the last 32K will be used as a dictionary (unless -i is specified).
  This sets a lower limit of 32K on 'size'.
   
  -   pigz launches up to 'z->threads' compression threads (see --threads).  
Each compression
  +   pigz launches up to 'zq->threads' compression threads (see --threads).  
Each compression
  thread continues to look for jobs in the compression list and perform 
those
  jobs until instructed to return.  When a job is pulled, the dictionary, if
  provided, will be loaded into the deflate engine and then that input 
buffer
  @@ -300,17 +300,15 @@
   struct rpmz_s __rpmz = {
   .stdin_fn= "",
   .stdout_fn   = "",
  -
  -
   };
   /*...@=fullinitblock@*/
   
   /* set option defaults */
   static void rpmzDefaults(rpmzQueue zq)
  - /*...@modifies z @*/
  + /*...@modifies zq @*/
   {
   zq->suffix = ".gz";   /* compressed file suffix */
  -zq->ifn = NULL;
  +zq->ifn = _rpmz->_ifn;
   zq->ifdno = -1;
   zq->ofn = NULL;
   zq->ofdno = -1;
  @@ -913,11 +911,11 @@
  sequence number of -1 (leave that job in the list for other incarnations 
to
  find) */
   /*...@-nullstate@*/
  -static void compress_thread(void *_z)
  +static void compress_thread(void *_zq)
/*...@globals fileSystem, internalState @*/
  - /*...@modifies _z, fileSystem, internalState @*/
  + /*...@modifies _zq, fileSystem, internalState @*/
   {
  -rpmzQueue zq = ((rpmz)_z)->zq;
  +rpmzQueue zq = _zq;
   rpmzLog zlog = zq->zlog;
   
   rpmzJob job;/* job pulled and working on */ 
  @@ -1026,12 +1024,11 @@
   /* collect the write jobs off of the list in sequence order and write out the
  compressed data until the last chunk is written -- also write the header 
and
  trailer and combine the individual check values of the input buffers */
  -static void write_thread(void *_z)
  +static void write_thread(void *_zq)
/*...@globals fileSystem, internalState @*/
  - /*...@modifies _z, fileSystem, internalState @*/
  + /*...@modifies _zq, fileSystem, internalState @*/
   {
  -rpmz z = _z;
  -rpmzQueue zq = z->zq;
  +rpmzQueue zq = _zq;
   rpmzLog zlog = zq->zlog;
   rpmzh zh = &zq->_zh;
   
  @@ -1095,11 +1092,10 @@
  value calculations and one other thread for writing the output -- compress
  threads will be launched and left running (waiting actually) to support
  subsequent calls of rpmzParallelCompress() */
  -static void rpmzParallelCompress(rpmz z)
  +static void rpmzParallelCompress(rpmzQueue zq)
/*...@globals fileSystem, internalState @*/
  - /*...@modifies z, fileSystem, internalState @*/
  + /*...@modifies zq, fileSystem, internalState @*/
   {
  -rpmzQueue zq = z->zq;
   rpmzLog zlog = zq->zlog;
   
   long seq;   /* sequence number */
  @@ -1113,7 +1109,7 @@
   
   /* start write thread */
   /*...@-mustfreeonly@*/
  -zq->writeth = yarnLaunch(write_thread, z);
  +zq->writeth = yarnLaunch(write_thread, zq);
   /*...@=mustfreeonly@*/
   
   /* read from input and start compress threads (write thread will pick up
  @@ -1151,7 +1147,7 @@
   
/* start another compress thread if needed */
if (zq->cthreads < (int)seq && zq->cthreads < (int)zq->threads) {
  - (void)yarnLaunch(compress_thread, z);
  + (void)yarnLaunch(compress_thread, zq);
zq->cthreads++;
}
   
  @@ -1173,11 +1169,10 @@
  true, instead free the memory that was allocated and retained for input,
  output, and deflate */
   /*...@-nullstate@*/
  -static void rpmzSingleCompress(rpmz z, int reset)
  +static void rpmzSingleCompress(rpmzQueue zq, int reset)
/*...@globals fileSystem, internalState @*/
/*...@modifies fileSystem, internalState @*/
   {
  -rpmzQueue zq = z->zq;
   rpmzh zh = &zq->_zh;
   
  

[CVS] RPM: rpm/rpmio/ rpmpigz.c

2009-03-09 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   09-Mar-2009 13:00:43
  Branch: HEAD Handle: 2009030912004300

  Modified files:
rpm/rpmio   rpmpigz.c

  Log:
- jbj: rpmz: start hiding zlib internals.

  Summary:
RevisionChanges Path
1.29+155 -85rpm/rpmio/rpmpigz.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpigz.c
  
  $ cvs diff -u -r1.28 -r1.29 rpmpigz.c
  --- rpm/rpmio/rpmpigz.c   9 Mar 2009 00:18:45 -   1.28
  +++ rpm/rpmio/rpmpigz.c   9 Mar 2009 12:00:43 -   1.29
  @@ -358,7 +358,7 @@
   rpmzQueue zq = _rpmz->zq;
   
   /*...@-globs@*/
  -if (zq->ofdno != -1 && zq->ofn != NULL)
  +if (zq->ofdno > STDOUT_FILENO && zq->ofn != NULL)
Unlink(zq->ofn);
   /*...@=globs@*/
   if (zq->verbosity > 0)
  @@ -369,6 +369,132 @@
   }
   
   /*==*/
  +/* sliding dictionary size for deflate */
  +#define _PIGZDICT 32768U
  +
  +/* largest power of 2 that fits in an unsigned int -- used to limit requests
  +   to zlib functions that use unsigned int lengths */
  +#define _PIGZMAX unsigned)0 - 1) >> 1) + 1)
  +
  +typedef /*...@abstract@*/ struct rpmgz_s * rpmgz;
  +
  +struct rpmgz_s {
  +z_stream strm;
  +int strategy;
  +int level;
  +int omode;   /*!< open mode: O_RDONLY | O_WRONLY */
  +};
  +
  +/*...@only@*/ /*...@null@*/
  +static rpmgz rpmgzFini(/*...@only@*/ rpmgz gz)
  +/*...@modifies gz @*/
  +{
  +gz = _free(gz);
  +return NULL;
  +}
  +
  +/*...@only@*/
  +static rpmgz rpmgzInit(int level, mode_t omode)
  +/*...@*/
  +{
  +rpmgz gz = xcalloc(1, sizeof(*gz));
  +
  +gz->strategy = Z_DEFAULT_STRATEGY;
  +gz->level = (level >= 1 && level <= 9) ? level : Z_DEFAULT_COMPRESSION;
  +gz->omode = omode;
  +return gz;
  +}
  +
  +/*...@only@*/
  +static rpmgz rpmgzCompressInit(int level, mode_t omode)
  +/*...@modifies gz @*/
  +{
  +rpmgz gz = rpmgzInit(level, omode);
  +z_stream * sp = &gz->strm;
  +
  +sp->zfree = Z_NULL;
  +sp->zalloc = Z_NULL;
  +sp->opaque = Z_NULL;
  +if (deflateInit2(sp, gz->level, Z_DEFLATED, -15, 8, gz->strategy) != 
Z_OK)
  + bail("not enough memory", "deflateInit2");
  +return gz;
  +}
  +
  +static void rpmgzCompressReset(rpmgz gz, rpmzJob job)
  +/*...@modifies gz, job @*/
  +{
  +z_stream * sp = &gz->strm;
  +
  +/* got a job -- initialize and set the compression level (note that if
  + * deflateParams() is called immediately after deflateReset(), there is
  + * no need to initialize the input/output for the stream) */
  +/*...@-noeffect@*/
  +(void)deflateReset(sp);
  +(void)deflateParams(sp, gz->level, gz->strategy);
  +/*...@=noeffect@*/
  +
  +/* set dictionary if provided, release that input buffer (only provided
  + * if F_ISSET(zq->flags, INDEPENDENT) is true and if this is not the
  + * first work unit) */
  +if (job->out != NULL) {
  + unsigned char * buf = job->out->buf;
  +assert(job->out->len >= _PIGZDICT);
  + buf += job->out->len;
  + buf -= _PIGZDICT;
  +/*...@-noeffect@*/
  + deflateSetDictionary(sp, buf, _PIGZDICT);
  +/*...@=noeffect@*/
  + rpmzqDropSpace(job->out);
  + job->out = NULL;
  +}
  +}
  +
  +static void rpmgzCompress(rpmgz gz, rpmzJob job)
  +/*...@modifies gz, job @*/
  +{
  +z_stream * sp = &gz->strm;
  +unsigned char * out_buf = job->out->buf;
  +size_t len;
  +
  +sp->next_in = job->in->buf;
  +sp->next_out = job->out->buf;
  +
  +/* run _PIGZMAX-sized amounts of input through deflate -- this loop is
  + * needed for those cases where the integer type is smaller than the
  + * size_t type, or when len is close to the limit of the size_t type */
  +for (len = job->in->len; len > _PIGZMAX; len -= _PIGZMAX) {
  + sp->avail_in = _PIGZMAX;
  + sp->avail_out = (unsigned)-1;
  +/*...@-noeffect@*/
  + (void)deflate(sp, Z_NO_FLUSH);
  +/*...@=noeffect@*/
  +assert(sp->avail_in == 0 && sp->avail_out != 0);
  +}
  +
  +/* run the last piece through deflate -- terminate with a sync marker,
  + * or finish deflate stream if this is the last block */
  +sp->avail_in = (unsigned)len;
  +sp->avail_out = (unsigned)-1;
  +/*...@-noeffect@*/
  +(void)deflate(sp, job->more ? Z_SYNC_FLUSH :  Z_FINISH);
  +/*...@=noeffect@*/
  +assert(sp->avail_in == 0 && sp->avail_out != 0);
  +job->out->len =