[CVS] RPM: rpm/rpmio/ rpmpigz.c rpmzq.h
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
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
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
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
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
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
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
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
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 =