[CVS] RPM: rpm/rpmio/ .cvsignore Makefile.am ar.c ar.h tdeb.c
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: 29-Feb-2008 20:25:37 Branch: HEAD Handle: 2008022919253700 Added files: rpm/rpmio ar.c ar.h tdeb.c Modified files: rpm/rpmio .cvsignore Makefile.am Log: - jbj: read ar(1) archives (only GNU with <16 char names atm). Summary: RevisionChanges Path 1.21+5 -2 rpm/rpmio/.cvsignore 1.141 +11 -8 rpm/rpmio/Makefile.am 1.1 +220 -0 rpm/rpmio/ar.c 1.1 +74 -0 rpm/rpmio/ar.h 1.1 +158 -0 rpm/rpmio/tdeb.c patch -p0 <<'@@ .' Index: rpm/rpmio/.cvsignore $ cvs diff -u -r1.20 -r1.21 .cvsignore --- rpm/rpmio/.cvsignore 11 Feb 2008 22:11:39 - 1.20 +++ rpm/rpmio/.cvsignore 29 Feb 2008 19:25:37 - 1.21 @@ -8,11 +8,15 @@ *.la *.lcd *.lo +dumpasn1 gengpg.h +lookup3 +rpmdigest rpmgrep teststderr testtry tdigest +tdeb tdir tfts tget @@ -27,6 +31,5 @@ tput tring trpmio -dumpasn1 -lookup3 tsw +ttar @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/Makefile.am $ cvs diff -u -r1.140 -r1.141 Makefile.am --- rpm/rpmio/Makefile.am 27 Feb 2008 20:26:00 - 1.140 +++ rpm/rpmio/Makefile.am 29 Feb 2008 19:25:37 - 1.141 @@ -4,9 +4,9 @@ LINT = splint -EXTRA_DIST = tdir.c tfts.c tget.c tglob.c thkp.c thtml.c tinv.c tkey.c tmire.c tput.c trpmio.c tsw.c ttar.c lookup3.c tpw.c librpmio.vers testit.sh rpmgrep.1 +EXTRA_DIST = ar.c tdeb.c tdir.c tfts.c tget.c tglob.c thkp.c thtml.c tinv.c tkey.c tmire.c tput.c trpmio.c tsw.c ttar.c lookup3.c tpw.c librpmio.vers testit.sh rpmgrep.1 -EXTRA_PROGRAMS = tdir tfts tget tglob thkp thtml tinv tkey tmacro tmagic tmire tput tpw trpmio tsw ttar dumpasn1 lookup3 +EXTRA_PROGRAMS = tdeb tdir tfts tget tglob thkp thtml tinv tkey tmacro tmagic tmire tput tpw trpmio tsw ttar dumpasn1 lookup3 bin_PROGRAMS = rpmdigest man_MANS = @@ -35,11 +35,11 @@ $(top_builddir)/misc/librpmmisc.la \ @LTLIBINTL@ -#RPM_LDADD = \ -#$(top_builddir)/build/librpmbuild.la \ -#$(top_builddir)/lib/librpm.la \ -#$(top_builddir)/rpmdb/librpmdb.la \ -#$(RPMIO_LDADD) +RPM_LDADD = \ + $(top_builddir)/build/librpmbuild.la \ + $(top_builddir)/lib/librpm.la \ + $(top_builddir)/rpmdb/librpmdb.la \ + $(RPMIO_LDADD) pkgincdir = $(pkgincludedir)$(WITH_PATH_VERSIONED_SUFFIX) pkginc_HEADERS = \ @@ -48,7 +48,7 @@ rpmnss.h rpmpgp.h rpmsq.h rpmssl.h rpmsw.h rpmurl.h rpmxar.h \ stringbuf.h ugid.h rpmuuid.h noinst_HEADERS = \ - md2.h md4.h poptIO.h rmd128.h rmd160.h rmd256.h rmd320.h sha224.h \ + ar.h md2.h md4.h poptIO.h rmd128.h rmd160.h rmd256.h rmd320.h sha224.h \ salsa10.h salsa20.h tiger.h \ LzmaDecode.h rpmhook.h rpmio_internal.h rpmlua.h @@ -154,6 +154,9 @@ rpmdigest_SOURCES = rpmdigest.c rpmdigest_LDADD = $(RPMIO_LDADD) +tdeb_SOURCES = tdeb.c ar.c +tdeb_LDFLAGS = $(RPM_LDADD) + tdir_SOURCES = tdir.c tdir_LDADD = $(RPMIO_LDADD) @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/ar.c $ cvs diff -u -r0 -r1.1 ar.c --- /dev/null 2008-02-29 20:22:00 +0100 +++ ar.c 2008-02-29 20:25:37 +0100 @@ -0,0 +1,220 @@ +/** \ingroup payload + * \file rpmio/ar.c + * Handle ar(1) archives. + */ + +#include "system.h" + +#include +#include + +#include "ar.h" +#include "fsm.h" +#include "ugid.h" + +#include "debug.h" + +/[EMAIL PROTECTED] FSM_t @*/ + +/[EMAIL PROTECTED]@*/ +int _ar_debug = 0; + +/** + * * Vector to fsmNext. + * */ +int (*_fsmNext) (void * _fsm, int nstage) +/[EMAIL PROTECTED] _fsm @*/; + +/** + * Convert string to unsigned integer (with buffer size check). + * @param strinput string + * @retval endptraddress of 1st character not processed + * @param base numerical conversion base + * @param nummax no. of bytes to read + * @return converted integer + */ +static int strntoul(const char *str, /[EMAIL PROTECTED]@*/char **endptr, int base, int num) + /[EMAIL PROTECTED] *endptr @*/ +{ +char * buf, * end; +unsigned long ret; + +buf = alloca(num + 1); +
[CVS] RPM: rpm/ CHANGES rpm/rpmio/ rpmmg.c
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: 29-Feb-2008 21:38:56 Branch: HEAD Handle: 2008022920385501 Modified files: rpm CHANGES rpm/rpmio rpmmg.c Log: - jbj: rpmmg: fix: avoid false failure using . Summary: RevisionChanges Path 1.2212 +1 -0 rpm/CHANGES 2.7 +10 -4 rpm/rpmio/rpmmg.c patch -p0 <<'@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2211 -r1.2212 CHANGES --- rpm/CHANGES 27 Feb 2008 20:26:00 - 1.2211 +++ rpm/CHANGES 29 Feb 2008 20:38:55 - 1.2212 @@ -1,4 +1,5 @@ 5.0.0 -> 5.1a1: +- jbj: rpmmg: fix: avoid false failure using . - jbj: macro: use popt rather than getopt(3), get rid of POSIXLY_CORRECT. - jbj: rpmio: splint fiddles. - rpm.org: Rip ancient, unused setperms + unsetgid make targets. @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmmg.c $ cvs diff -u -r2.6 -r2.7 rpmmg.c --- rpm/rpmio/rpmmg.c 19 Nov 2007 17:07:48 - 2.6 +++ rpm/rpmio/rpmmg.c 29 Feb 2008 20:38:56 - 2.7 @@ -70,9 +70,12 @@ #if defined(HAVE_MAGIC_H) if (mg->ms) { t = magic_file(mg->ms, fn); + /* XXX HACK: libmagic compiled without spews here. */ if (t == NULL) { - rpmlog(RPMLOG_ERR, _("magic_file(ms, %s) failed: %s\n"), - (fn ? fn : "(nil)"), magic_error(mg->ms)); + const char * msg = magic_error(mg->ms); + if (strstr(msg, "regexec error 17, (match failed)") == NULL) + rpmlog(RPMLOG_ERR, _("magic_file(ms, %s) failed: %s\n"), + (fn ? fn : "(nil)"), msg); } } #endif @@ -92,9 +95,12 @@ #if defined(HAVE_MAGIC_H) if (mg->ms) { t = magic_buffer(mg->ms, b, nb); + /* XXX HACK: libmagic compiled without spews here. */ if (t == NULL) { - rpmlog(RPMLOG_ERR, _("magic_buffer(ms, %p[%u]) failed: %s\n"), - b, (unsigned)nb, magic_error(mg->ms)); + const char * msg = magic_error(mg->ms); + if (strstr(msg, "regexec error 17, (match failed)") == NULL) + rpmlog(RPMLOG_ERR, _("magic_buffer(ms, %p[%u]) failed: %s\n"), + b, (unsigned)nb, msg); } } #endif @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ devtool.conf
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jason Corley Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 29-Feb-2008 21:21:18 Branch: HEAD Handle: 2008022920211800 Modified files: rpm devtool.conf Log: it builds, ship it! inclusion of uuid in %macosx target fix librpmmisc missing -lpcre Summary: RevisionChanges Path 2.188 +24 -1 rpm/devtool.conf patch -p0 <<'@@ .' Index: rpm/devtool.conf $ cvs diff -u -r2.187 -r2.188 devtool.conf --- rpm/devtool.conf 27 Feb 2008 13:22:53 - 2.187 +++ rpm/devtool.conf 29 Feb 2008 20:21:18 - 2.188 @@ -1420,6 +1420,28 @@ ) || exit $? ) || exit $? fi + +# OSSP uuid (uninstalled third-party library) +if [ ! -d "$basemac/bin/uuid-${v_uuid}" ]; then +echo "++ building third-party library uuid-${v_uuid}" +( cd $basemac/bin +rm -rf uuid-${v_uuid} +gzip -d -c ../src/uuid-${v_uuid}.tar.gz | gnutar xf - +( cd uuid-${v_uuid} +$SHTOOL subst \ +-e '/LINENO: error: C[+]* preprocessor/{N;N;N;N;s/.*/:/;}' \ +configure +CC="$UNIVERSAL_CC" \ +CPPFLAGS="$UNIVERSAL_CPPFLAGS" \ +CFLAGS="-O2 -g $UNIVERSAL_CFLAGS" \ +LDFLAGS="$UNIVERSAL_LDFLAGS" \ +GREP="grep" \ +./configure $UNIVERSAL_TARGET \ +--disable-shared +make +) || exit $? +) || exit $? +fi } # configure build environment @@ -1468,6 +1490,7 @@ --with-sqlite="$basemac/bin/sqlite-${v_sqlite}" \ --with-popt="$basemac/bin/popt-${v_popt}" \ --with-pcre="$basemac/bin/pcre-${v_pcre}" \ +--with-uuid="$basemac/bin/uuid-${v_uuid}" \ --with-perl \ --with-python \ --with-apidocs=auto \ @@ -1491,7 +1514,7 @@ make -C perl LD="ld -search_paths_first" MACOSX_DEPLOYMENT_TARGET="10.3" clean all # python complains about missing symbols from all over when using librpm*, relink: -make -C misc LIBS="-lz -lxml2 $LIBS" clean all +make -C misc LIBS="-lz -lxml2 -lpcre $LIBS" clean all make -C rpmio LIBS="-lsqlite3 -lpopt -lneon -lexpat -lbeecrypt -lxar -lbz2 $LIBS" clean all # install into a temporary destroot, instead of to system @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/build/ pack.c rpm/lib/ fsm.c psm.c rpmds.c...
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-Mar-2008 00:59:43 Branch: HEAD Handle: 2008022923594201 Modified files: rpm CHANGES rpm/build pack.c rpm/lib fsm.c psm.c rpmds.c rpm/rpmio Makefile.am ar.c librpmio.vers tdeb.c Log: - jbj: permit ar(1) payloads (file names are truncated atm). Summary: RevisionChanges Path 1.2213 +1 -0 rpm/CHANGES 2.286 +5 -0 rpm/build/pack.c 2.145 +16 -2 rpm/lib/fsm.c 2.289 +3 -1 rpm/lib/psm.c 2.91+3 -0 rpm/lib/rpmds.c 1.142 +5 -5 rpm/rpmio/Makefile.am 1.2 +29 -12 rpm/rpmio/ar.c 2.53+5 -0 rpm/rpmio/librpmio.vers 1.2 +0 -7 rpm/rpmio/tdeb.c patch -p0 <<'@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2212 -r1.2213 CHANGES --- rpm/CHANGES 29 Feb 2008 20:38:55 - 1.2212 +++ rpm/CHANGES 29 Feb 2008 23:59:42 - 1.2213 @@ -1,4 +1,5 @@ 5.0.0 -> 5.1a1: +- jbj: permit ar(1) payloads (file names are truncated atm). - jbj: rpmmg: fix: avoid false failure using . - jbj: macro: use popt rather than getopt(3), get rid of POSIXLY_CORRECT. - jbj: rpmio: splint fiddles. @@ . patch -p0 <<'@@ .' Index: rpm/build/pack.c $ cvs diff -u -r2.285 -r2.286 pack.c --- rpm/build/pack.c 17 Feb 2008 02:52:11 - 2.285 +++ rpm/build/pack.c 29 Feb 2008 23:59:42 - 2.286 @@ -644,6 +644,11 @@ /* XXX addition to header is too late to be displayed/sorted. */ /* Add prereq on rpm version that understands tar payloads */ (void) rpmlibNeedsFeature(h, "PayloadIsUstar", "4.4.4-1"); + } else + if (!strcmp(payload_format, "ar")) { + /* XXX addition to header is too late to be displayed/sorted. */ + /* Add prereq on rpm version that understands tar payloads */ + (void) rpmlibNeedsFeature(h, "PayloadIsAr", "5.1-1"); } he->tag = RPMTAG_PAYLOADFORMAT; @@ . patch -p0 <<'@@ .' Index: rpm/lib/fsm.c $ cvs diff -u -r2.144 -r2.145 fsm.c --- rpm/lib/fsm.c 5 Feb 2008 08:11:18 - 2.144 +++ rpm/lib/fsm.c 29 Feb 2008 23:59:43 - 2.145 @@ -12,6 +12,7 @@ #include "cpio.h" #include "tar.h" +#include "ar.h" #define _RPMFI_INTERNAL #include "fsm.h" @@ -549,7 +550,17 @@ fsm->headerWrite = &tarHeaderWrite; fsm->trailerWrite = &tarTrailerWrite; fsm->blksize = TAR_BLOCK_SIZE; - } else { + } else + if (afmt != NULL && !strcmp(afmt, "ar")) { +if (_fsm_debug < 0) +fprintf(stderr, "\tar vectors set\n"); + _fsmNext = &fsmNext; + fsm->headerRead = &arHeaderRead; + fsm->headerWrite = &arHeaderWrite; + fsm->trailerWrite = &arTrailerWrite; + fsm->blksize = 2; + } else + { if (_fsm_debug < 0) fprintf(stderr, "\tcpio vectors set\n"); fsm->headerRead = &cpioHeaderRead; @@ -2372,7 +2383,10 @@ case FSM_PAD: left = (fsm->blksize - (fdGetCpioPos(fsm->cfd) % fsm->blksize)) % fsm->blksize; if (left) { - memset(fsm->rdbuf, 0, left); + if (fsm->blksize == 2) + fsm->rdbuf[0] = '\n'; /* XXX ar(1) pads with '\n' */ + else + memset(fsm->rdbuf, 0, left); /* XXX DWRITE uses rdnb for I/O length. */ fsm->rdnb = left; (void) fsmNext(fsm, FSM_DWRITE); @@ . patch -p0 <<'@@ .' Index: rpm/lib/psm.c $ cvs diff -u -r2.288 -r2.289 psm.c --- rpm/lib/psm.c 17 Feb 2008 18:24:16 - 2.288 +++ rpm/lib/psm.c 29 Feb 2008 23:59:43 - 2.289 @@ -2449,7 +2449,9 @@ xx = headerGet(fi->h, he, 0); payload_format = he->p.str; if (!xx || payload_format == NULL - || !(!strcmp(payload_format, "tar") || !strcmp(payload_format, "ustar"))) { + || !(!strcmp(payload_format, "tar") || !strcmp(payload_format, "ustar")) + || !(!strcmp(payload_format, "ar"))) + { payload_format = _free(payload_format);
[CVS] RPM: rpm/lib/ fsm.c fsm.h rpm/rpmio/ ar.c
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-Mar-2008 05:13:23 Branch: HEAD Handle: 2008030104132300 Modified files: rpm/lib fsm.c fsm.h rpm/rpmio ar.c Log: - jbj: fsm: permit long names installing ar(1) payloads. Summary: RevisionChanges Path 2.146 +1 -0 rpm/lib/fsm.c 2.34+10 -3 rpm/lib/fsm.h 1.3 +40 -11 rpm/rpmio/ar.c patch -p0 <<'@@ .' Index: rpm/lib/fsm.c $ cvs diff -u -r2.145 -r2.146 fsm.c --- rpm/lib/fsm.c 29 Feb 2008 23:59:43 - 2.145 +++ rpm/lib/fsm.c 1 Mar 2008 04:13:23 - 2.146 @@ -624,6 +624,7 @@ if (!rc) rc = fsmUNSAFE(fsm, FSM_DESTROY); +fsm->lmtab = _free(fsm->lmtab); fsm->iter = mapFreeIterator(fsm->iter); if (fsm->cfd != NULL) { fsm->cfd = fdFree(fsm->cfd, "persist (fsm)"); @@ . patch -p0 <<'@@ .' Index: rpm/lib/fsm.h $ cvs diff -u -r2.33 -r2.34 fsm.h --- rpm/lib/fsm.h 3 Dec 2007 18:11:09 - 2.33 +++ rpm/lib/fsm.h 1 Mar 2008 04:13:23 - 2.34 @@ -207,9 +207,16 @@ struct stat osb; /*!< Original file stat(2) info. */ unsigned blksize;/*!< Archive block size. */ -int (*headerRead) (FSM_t fsm, struct stat *st); -int (*headerWrite) (FSM_t fsm, struct stat *st); -int (*trailerWrite) (FSM_t fsm); +int (*headerRead) (FSM_t fsm, struct stat *st) + /[EMAIL PROTECTED] fsm, st @*/; +int (*headerWrite) (FSM_t fsm, struct stat *st) + /[EMAIL PROTECTED] fsm, st @*/; +int (*trailerWrite) (FSM_t fsm) + /[EMAIL PROTECTED] fsm, st @*/; + +char * lmtab;/*!< ar(1) long member name table. */ +size_t lmtablen; /*!< ar(1) no. bytes in lmtab. */ +size_t lmtaboff; /*!< ar(1) current offset in lmtab. */ }; #ifdef __cplusplus @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/ar.c $ cvs diff -u -r1.2 -r1.3 ar.c --- rpm/rpmio/ar.c29 Feb 2008 23:59:43 - 1.2 +++ rpm/rpmio/ar.c1 Mar 2008 04:13:23 - 1.3 @@ -111,16 +111,45 @@ st->st_size = strntoul(hdr->filesize, NULL, 10, sizeof(hdr->filesize)); -/* GNU: on "//": Ignore long file names for now. */ -/* GNU: on "/": Skip symbols (if any) */ -if (hdr->name[0] == '/' && (hdr->name[1] == '/' || hdr->name[1] == ' ')) { - rc = arRead(fsm, fsm->wrbuf, st->st_size); - if (rc <= 0)return -rc; - goto top; -} - -/* Read file name. */ -if (fsm->path == NULL && hdr->name[0] != ' ') { +/* Special ar(1) members. */ +if (hdr->name[0] == '/') { + /* GNU: on "//":Save long member names. */ + if (hdr->name[1] == '/' && hdr->name[2] == ' ') { + char * t; + int i; + + rc = arRead(fsm, fsm->wrbuf, st->st_size); + if (rc <= 0)return -rc; + + fsm->wrbuf[rc] = '\0'; + fsm->lmtab = t = xstrdup(fsm->wrbuf); + fsm->lmtablen = rc; + fsm->lmtaboff = 0; + + for (i = 1; i < fsm->lmtablen; i++) { + t++; + if (t[0] != '\n') continue; + t[0] = '\0'; + /* GNU: trailing '/' to permit file names with trailing ' '. */ + if (t[-1] == '/') t[-1] = '\0'; + } + goto top; + } + /* GNU: on "/": Skip symbols (if any) */ + if (hdr->name[1] == ' ') { + rc = arRead(fsm, fsm->wrbuf, st->st_size); + if (rc <= 0)return -rc; + goto top; + } + /* GNU: on "/123": Substitute long member name. */ + if (xisdigit(hdr->name[1])) { + char * te = NULL; + int i = strntoul(&hdr->name[1], &te, 10, sizeof(hdr->name)-2); + if (*te == ' ' && fsm->lmtab != NULL && i < fsm->lmtablen) + fsm->path = xstrdup(fsm->lmtab + i); + } +} else +if (hdr->name[0] != ' ') { /* Short member name. */ size_t nb = sizeof(hdr->name); char t[sizeof(hdr->name)+1]; memcpy(t, hdr->name, nb); @@ -231,7 +260,7 @@ if (_ar_debug) fprintf(stderr, "arTrailerWrite(%p)\n", fsm); -rc = _fsmNext(fsm, FSM_PAD); +rc = _fsmNext(fsm, FSM_PAD); /* XXX likely