From: jbj Date: Wed, 8 Jul 1998 17:30:37 +0000 (+0000) Subject: Add {init,add,expand}Macro args everywhere (new macro.c compatibility). X-Git-Tag: tznext/4.11.0.1.tizen20130304~9816 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=209af5b9eb64f5aa35666ad6439c5c3db2f25f1b;p=tools%2Flibrpm-tizen.git Add {init,add,expand}Macro args everywhere (new macro.c compatibility). Create /usr/lib/rpm directory and move rpmrc et al there. CVS patchset: 2168 CVS date: 1998/07/08 17:30:37 --- diff --git a/CHANGES b/CHANGES index c0a6044..14c1616 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +2.5.3 -> 3.0 + - add {init,add,expand}Macro args everywhere (new macro.c compatibility) + - create /usr/lib/rpm directory and move rpmrc et al there + 2.5.2 -> 2.5.3: - allow %define with leading whitespace diff --git a/Makefile.in b/Makefile.in index c06462a..a3d0f85 100644 --- a/Makefile.in +++ b/Makefile.in @@ -115,20 +115,25 @@ install: all [ -d $(installprefix)/$(LIBDIR) ] || mkdir -p $(installprefix)/$(LIBDIR) [ -d $(installprefix)/$(INCDIR) ] || mkdir -p $(installprefix)/$(INCDIR) [ -d $(installprefix)/$(RPMCONFIGDIR) ] || \ - mkdir -p $(installprefix)/$(INCDIR) + mkdir -p $(installprefix)/$(RPMCONFIGDIR) if [ -x ./rpm ]; then \ $(INSTALL_PROGRAM) -s -m 755 rpm $(installprefix)/$(RPMBINDIR); \ else \ $(INSTALL_PROGRAM) -s -m 755 rpm.shared $(installprefix)/$(RPMBINDIR)/rpm; \ fi - $(INSTALL_PROGRAM) -m 755 $(srcdir)/gendiff $(installprefix)/$(BINDIR) + $(INSTALL_PROGRAM) -m 755 $(srcdir)/gendiff $(installprefix)/$(RPMCONFIGDIR) + ln -sf $(RPMCONFIGDIR)/gendiff $(installprefix)/$(BINDIR)/gendiff $(INSTALL_PROGRAM) -m 755 $(topdir)/find-provides.sh $(installprefix)/$(BINDIR)/find-provides - $(INSTALL_PROGRAM) -m 755 $(topdir)/find-requires.sh $(installprefix)/$(BINDIR)/find-requires + ln -sf $(RPMCONFIGDIR)/find-provides $(installprefix)/$(BINDIR)/find-provides + $(INSTALL_PROGRAM) -m 755 $(topdir)/find-requires.sh $(installprefix)/$(RPMCONFIGDIR)/find-requires + ln -sf $(RPMCONFIGDIR)/find-requires $(installprefix)/$(BINDIR)/find-requires $(INSTALL_PROGRAM) -s -m 755 rpm2cpio $(installprefix)/$(BINDIR) $(INSTALL_DATA) -m 644 $(srcdir)/rpm.8 $(installprefix)/$(MANDIR) $(INSTALL_DATA) -m 644 $(srcdir)/rpm2cpio.8 $(installprefix)/$(MANDIR) - $(INSTALL_DATA) -m 644 $(topdir)/lib-rpmrc $(installprefix)/$(LIBDIR)/rpmrc - $(INSTALL_DATA) -m 644 $(srcdir)/rpmpopt $(installprefix)/$(LIBDIR)/rpmpopt + $(INSTALL_DATA) -m 644 $(topdir)/lib-rpmrc $(installprefix)/$(RPMCONFIGDIR)/rpmrc + ln -sf $(RPMCONFIGDIR)/rpmrc $(installprefix)/$(LIBDIR)/rpmrc + $(INSTALL_DATA) -m 644 $(srcdir)/rpmpopt $(installprefix)/$(RPMCONFIGDIR)/rpmpopt + ln -sf $(RPMCONFIGDIR)/rpmpopt $(installprefix)/$(LIBDIR)/rpmpopt (cd lib; $(MAKE) LIBDIR=$(installprefix)/$(LIBDIR) INCDIR=$(installprefix)/$(INCDIR) install) for d in $(INSTSUBDIRS); do \ (cd $$d; $(MAKE) installprefix=$(installprefix) LIBDIR=$(installprefix)/$(LIBDIR) INCDIR=$(installprefix)/$(INCDIR) install) ;\ @@ -193,7 +198,7 @@ archive: @sleep 5 @cvs -Q tag -F $(CVSTAG) . @rm -rf /tmp/rpm-$(VERSION) /tmp/rpm - @cd /tmp; cvs -Q -d $(CVSROOT) export -r$(CVSTAG) rpm || echo GRRRrrrrr -- ignore [export aborted] + @cd /tmp; cvs -Q -d $(CVSROOT) export -r$(CVSTAG) rpm @mv /tmp/rpm /tmp/rpm-$(VERSION) @rm /tmp/rpm-$(VERSION)/popt/popt.spec @cd /tmp/rpm-$(VERSION); ./autogen.sh ; make depend; make distclean diff --git a/Makefile.inc.in b/Makefile.inc.in index 6c1071a..5501f2e 100644 --- a/Makefile.inc.in +++ b/Makefile.inc.in @@ -9,8 +9,11 @@ AR = ar RANLIB = @RANLIB@ OPTS = @DEFS@ RPMCONFIGDIR=@RPMCONFIGDIR@ +FINDPROVIDES=$(RPMCONFIGDIR)/find-provides +FINDREQUIRES=$(RPMCONFIGDIR)/find-requires LIBRPMRC_FILENAME=$(RPMCONFIGDIR)/rpmrc LIBRPMALIAS_FILENAME=$(RPMCONFIGDIR)/rpmpopt +MACROFILE=$(RPMCONFIGDIR)/macros RPMNLSDIR=@datadir@/locale RPMNLSPACKAGE=rpm CFLAGS = -I$(topdir) -I$(topsrcdir) @CFLAGS@ @INCPATH@ $(OPTS) \ diff --git a/autogen.sh b/autogen.sh index 063a13d..88a2073 100755 --- a/autogen.sh +++ b/autogen.sh @@ -8,7 +8,7 @@ if [ "$1" = "--noconfigure" ]; then exit 0; fi -if [ -z "$@" ]; then +if [ X"$@" = X ]; then ./configure --prefix=/usr else ./configure "$@" diff --git a/build/Makefile.in b/build/Makefile.in index c058d31..c5251db 100644 --- a/build/Makefile.in +++ b/build/Makefile.in @@ -33,6 +33,12 @@ $(PROGS): $(LIBOBJECTS) pack.o: pack.c $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -o $@ -c $< +reqprov.o: reqprov.c + $(CC) $(CFLAGS) -DFINDPROVIDES=\"$(FINDPROVIDES)\" -DFINDREQUIRES=\"$(FINDREQUIRES)\" -o $@ -c $< + +spec.o: spec.c + $(CC) $(CFLAGS) -DMACROFILE=\"$(MACROFILE)\" -o $@ -c $< + clean: rm -f *.a *.o *~ $(PROGS) diff --git a/build/files.c b/build/files.c index 205682d..3ac4791 100644 --- a/build/files.c +++ b/build/files.c @@ -329,7 +329,7 @@ static int processPackageFiles(Spec spec, Package pkg, } while (fgets(buf, sizeof(buf), f)) { handleComments(buf); - if (expandMacros(&spec->macros, buf)) { + if (expandMacros(spec, &spec->macros, buf, sizeof(buf))) { rpmError(RPMERR_BADSPEC, "line: %s", buf); return RPMERR_BADSPEC; } diff --git a/build/macro.c b/build/macro.c index baaf366..fb50c70 100644 --- a/build/macro.c +++ b/build/macro.c @@ -6,6 +6,7 @@ #include #include +#include "spec.h" #include "macro.h" #include "misc.h" @@ -19,7 +20,7 @@ static void dumpTable(struct MacroContext *mc); static void expandMacroTable(struct MacroContext *mc); static int compareMacros(const void *ap, const void *bp); -static struct MacroEntry *findEntry(struct MacroContext *mc, char *name); +static struct MacroEntry *findEntry(struct MacroContext *mc, const char *name); static int handleDefine(struct MacroContext *mc, char *buf); static int parseMacro(char *p, char **macro, char **next); @@ -34,7 +35,7 @@ static int parseMacro(char *p, char **macro, char **next); /* */ /*************************************************************************/ -int expandMacros(struct MacroContext *mc, char *buf) +int expandMacros(Spec spec, struct MacroContext *mc, char *buf, size_t buflen) { char bufA[1024]; char *copyTo, *copyFrom; @@ -189,10 +190,12 @@ static int handleDefine(struct MacroContext *mc, char *buf) } } - if (expandMacros(mc, expansion)) { + /* XXX HACK: 1st and last args for compatibility, currently unused*/ + if (expandMacros(NULL, mc, expansion, 0)) { + return 1; } - addMacro(mc, name, expansion); + addMacro(mc, name, NULL, expansion, -1); return 0; } @@ -203,7 +206,7 @@ static int handleDefine(struct MacroContext *mc, char *buf) /* */ /*************************************************************************/ -void initMacros(struct MacroContext *mc) +void initMacros(struct MacroContext *mc, const char *macrofile) { mc->macrosAllocated = 0; mc->firstFree = 0; @@ -222,7 +225,7 @@ void freeMacros(struct MacroContext *mc) FREE(mc->macroTable); } -void addMacro(struct MacroContext *mc, char *name, char *expansion) +void addMacro(struct MacroContext *mc, const char *name, const char *o, const char *expansion, int depth) { struct MacroEntry *p; @@ -245,7 +248,7 @@ void addMacro(struct MacroContext *mc, char *name, char *expansion) compareMacros); } -static struct MacroEntry *findEntry(struct MacroContext *mc, char *name) +static struct MacroEntry *findEntry(struct MacroContext *mc, const char *name) { struct MacroEntry key; diff --git a/build/macro.h b/build/macro.h index 8d3b8d0..85b7968 100644 --- a/build/macro.h +++ b/build/macro.h @@ -14,12 +14,12 @@ struct MacroContext { int firstFree; }; -void initMacros(struct MacroContext *mc); +void initMacros(struct MacroContext *mc, const char *macrofile); void freeMacros(struct MacroContext *mc); -void addMacro(struct MacroContext *mc, char *name, char *expansion); +void addMacro(struct MacroContext *mc, const char *n, const char *o, const char *b, int depth); /* Expand all macros in buf, in place */ -int expandMacros(struct MacroContext *mc, char *buf); +int expandMacros(Spec spec, struct MacroContext *mc, char *sbuf, size_t sbuflen); #endif diff --git a/build/pack.c b/build/pack.c index 0855d17..1953e71 100644 --- a/build/pack.c +++ b/build/pack.c @@ -355,7 +355,7 @@ static StringBuf addFileToTagAux(Spec spec, char *file, StringBuf sb) return NULL; } while (fgets(buf, sizeof(buf), f)) { - if (expandMacros(&spec->macros, buf)) { + if (expandMacros(spec, &spec->macros, buf, sizeof(buf))) { rpmError(RPMERR_BADSPEC, "line: %s", buf); return NULL; } diff --git a/build/parsePreamble.c b/build/parsePreamble.c index eb3c5b3..9a8ab96 100644 --- a/build/parsePreamble.c +++ b/build/parsePreamble.c @@ -344,9 +344,9 @@ static int handlePreambleTag(Spec spec, Package pkg, int tag, char *macro, SINGLE_TOKEN_ONLY; /* These are for backward compatibility */ if (tag == RPMTAG_VERSION) { - addMacro(&spec->macros, "PACKAGE_VERSION", field); + addMacro(&spec->macros, "PACKAGE_VERSION", NULL, field, -1); } else if (tag == RPMTAG_RELEASE) { - addMacro(&spec->macros, "PACKAGE_RELEASE", field); + addMacro(&spec->macros, "PACKAGE_RELEASE", NULL, field, -1); } /* fall through */ case RPMTAG_GROUP: @@ -488,7 +488,7 @@ static int handlePreambleTag(Spec spec, Package pkg, int tag, char *macro, } if (macro) { - addMacro(&spec->macros, macro, field); + addMacro(&spec->macros, macro, NULL, field, -1); } return 0; diff --git a/build/parsePrep.c b/build/parsePrep.c index 0308fed..92ee392 100644 --- a/build/parsePrep.c +++ b/build/parsePrep.c @@ -34,7 +34,7 @@ static int doSetupMacro(Spec spec, char *line); static int doPatchMacro(Spec spec, char *line); static char *doPatch(Spec spec, int c, int strip, char *db, int reverse, int removeEmpties); -static int isCompressed(char *file, int *compressed); + int isCompressed(char *file, int *compressed); static int checkOwners(char *file); static char *doUntar(Spec spec, int c, int quietly); @@ -476,7 +476,7 @@ static int checkOwners(char *file) return 0; } -static int isCompressed(char *file, int *compressed) +int isCompressed(char *file, int *compressed) { int fd; unsigned char magic[4]; diff --git a/build/parseSpec.c b/build/parseSpec.c index 9c7ba5d..569c7e0 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -168,11 +168,11 @@ static void setStandardMacros(Spec spec, char *arch, char *os) char buf[BUFSIZ]; int x; - addMacro(&spec->macros, "sourcedir", rpmGetVar(RPMVAR_SOURCEDIR)); - addMacro(&spec->macros, "builddir", rpmGetVar(RPMVAR_BUILDDIR)); - addMacro(&spec->macros, "optflags", rpmGetVar(RPMVAR_OPTFLAGS)); - addMacro(&spec->macros, "buildarch", arch); - addMacro(&spec->macros, "buildos", os); + addMacro(&spec->macros, "sourcedir", NULL, rpmGetVar(RPMVAR_SOURCEDIR), -1); + addMacro(&spec->macros, "builddir", NULL, rpmGetVar(RPMVAR_BUILDDIR), -1); + addMacro(&spec->macros, "optflags", NULL, rpmGetVar(RPMVAR_OPTFLAGS), -1); + addMacro(&spec->macros, "buildarch", NULL, arch, -1); + addMacro(&spec->macros, "buildos", NULL, os, -1); x = 0; while (arch[x]) { @@ -180,12 +180,12 @@ static void setStandardMacros(Spec spec, char *arch, char *os) x++; } buf[x] = '\0'; - addMacro(&spec->macros, "buildarch_lc", buf); + addMacro(&spec->macros, "buildarch_lc", NULL, buf, -1); x = 0; while (os[x]) { buf[x] = tolower(os[x]); x++; } buf[x] = '\0'; - addMacro(&spec->macros, "buildos_lc", buf); + addMacro(&spec->macros, "buildos_lc", NULL, buf, -1); } diff --git a/build/read.c b/build/read.c index c469e09..20bc65c 100644 --- a/build/read.c +++ b/build/read.c @@ -76,7 +76,7 @@ int readLine(Spec spec, int strip) } if (spec->readStack->reading) { - if (expandMacros(&spec->macros, spec->line)) { + if (expandMacros(spec, &spec->macros, spec->line, sizeof(spec->line))) { rpmError(RPMERR_BADSPEC, "line %d: %s", spec->lineNum, spec->line); return RPMERR_BADSPEC; } diff --git a/build/reqprov.c b/build/reqprov.c index dfb9237..30ff53d 100644 --- a/build/reqprov.c +++ b/build/reqprov.c @@ -128,7 +128,7 @@ int generateAutoReqProv(Spec spec, Package pkg, if (spec->autoProv) { rpmMessage(RPMMESS_NORMAL, "Finding provides...\n"); - argv[0] = "find-provides"; + argv[0] = FINDPROVIDES; argv[1] = NULL; readBuf = getOutputFrom(NULL, argv, getStringBuf(writeBuf), writeBytes, 1); @@ -155,7 +155,7 @@ int generateAutoReqProv(Spec spec, Package pkg, if (spec->autoReq) { rpmMessage(RPMMESS_NORMAL, "Finding requires...\n"); - argv[0] = "find-requires"; + argv[0] = FINDREQUIRES; argv[1] = NULL; readBuf = getOutputFrom(NULL, argv, getStringBuf(writeBuf), writeBytes, 0); diff --git a/build/spec.c b/build/spec.c index ca809c5..f73dc76 100644 --- a/build/spec.c +++ b/build/spec.c @@ -62,7 +62,7 @@ Spec newSpec(void) spec->inBuildArchitectures = 0; spec->buildArchitectureSpecs = NULL; - initMacros(&spec->macros); + initMacros(&spec->macros, MACROFILE); spec->autoReq = 1; spec->autoProv = 1; @@ -127,7 +127,7 @@ int addSource(Spec spec, Package pkg, char *field, int tag) char *name = NULL; char *nump, *fieldp = NULL; char buf[BUFSIZ]; - char expansion[BUFSIZ]; + char body[BUFSIZ]; int num = 0; switch (tag) { @@ -195,13 +195,13 @@ int addSource(Spec spec, Package pkg, char *field, int tag) spec->numSources++; if (tag != RPMTAG_ICON) { - sprintf(expansion, "%s/%s", rpmGetVar(RPMVAR_SOURCEDIR), p->source); + sprintf(body, "%s/%s", rpmGetVar(RPMVAR_SOURCEDIR), p->source); sprintf(buf, "%s%d", (flag & RPMBUILD_ISPATCH) ? "PATCH" : "SOURCE", num); - addMacro(&spec->macros, buf, expansion); + addMacro(&spec->macros, buf, NULL, body, -1); sprintf(buf, "%sURL%d", (flag & RPMBUILD_ISPATCH) ? "PATCH" : "SOURCE", num); - addMacro(&spec->macros, buf, p->fullSource); + addMacro(&spec->macros, buf, NULL, p->fullSource, -1); } return 0; diff --git a/build/spec.h b/build/spec.h index a252f98..6efc706 100644 --- a/build/spec.h +++ b/build/spec.h @@ -3,6 +3,8 @@ #include "header.h" #include "stringbuf.h" + +typedef struct SpecStruct *Spec; #include "macro.h" #if 0 @@ -123,7 +125,6 @@ struct PackageStruct { struct PackageStruct *next; }; -typedef struct SpecStruct *Spec; typedef struct PackageStruct *Package; Spec newSpec(void); diff --git a/configure.in b/configure.in index 61be55b..21e2038 100644 --- a/configure.in +++ b/configure.in @@ -17,7 +17,7 @@ MISCOBJS= AC_CANONICAL_SYSTEM -RPMCONFIGDIR='$(libdir)' +RPMCONFIGDIR='$(libdir)/rpm' dnl Checks for programs. AC_PROG_CC @@ -88,7 +88,7 @@ else RPM=rpm.shared fi -AC_MSG_CHECKING(POSIX chmod...) +AC_MSG_CHECKING(POSIX chmod) touch foo.chmodtest chmod 744 foo.chmodtest chmod +X foo.chmodtest 2>/dev/null @@ -153,7 +153,7 @@ AC_PROG_RANLIB AC_CHECK_TOOL(AR, ar, :) if test "$cross_compiling" != "yes"; then - AC_MSG_CHECKING(GNU gzip...) + AC_MSG_CHECKING(GNU gzip) if test -z "$GZIPBIN"; then oldifs="$IFS" IFS=: @@ -218,42 +218,35 @@ addlib() { esac } -if test $prefix != "/usr" -a $prefix != "/usr/local"; then - AC_MSG_CHECKING("$prefix/lib... $ac_c") - if test -d $prefix/lib ; then - addlib $prefix/lib +localdone= +for dir in $prefix /usr/local +do + case $dir in + NONE|/usr) continue;; + /usr/local) + if test X$localdone != X ; then continue; fi + localdone="$dir" + ;; + esac + + AC_MSG_CHECKING(for $dir/lib in LIBS) + if test -d $dir/lib ; then + addlib $dir/lib AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi - echo $ac_n "checking for $prefix/include... $ac_c" - if test -d $prefix/include ; then - INCPATH="$INCPATH -I$prefix/include" + AC_MSG_CHECKING(for $dir/include in INCPATH) + if test -d $dir/include ; then + INCPATH="$INCPATH -I$dir/include" AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi -fi - -AC_MSG_CHECKING(/usr/local/lib...) -if test -d /usr/local/lib ; then - addlib /usr/local/lib - - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi - -AC_MSG_CHECKING(/usr/local/include...) -if test -d /usr/local/include ; then - INCPATH="$INCPATH -I/usr/local/include" - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi +done -AC_MSG_CHECKING(/usr/ucblib...) +AC_MSG_CHECKING(for /usr/ucblib in LIBS) if test -d /usr/ucblib ; then if test "$build" = "mips-sni-sysv4" ; then addlib /usr/ccs/lib -lc @@ -367,7 +360,7 @@ AC_C_INLINE dnl look for libc features PROVIDES_ERRNO=no -AC_MSG_CHECKING(if defines h_errno...) +AC_MSG_CHECKING(if defines h_errno) AC_TRY_LINK([#include ],printf("%d",h_errno),PROVIDES_ERRNO=yes) AC_MSG_RESULT($PROVIDES_ERRNO) if test $PROVIDES_ERRNO = yes; then @@ -376,7 +369,7 @@ fi dnl If a system doesn't have S_IFSOCK, define it as 0 which will dnl make S_ISSOCK always return false (nice, eh?) -AC_MSG_CHECKING(if defines S_IFSOCK...) +AC_MSG_CHECKING(if defines S_IFSOCK) AC_TRY_LINK([#include ],printf("%d", S_IFSOCK), HAS_S_IFSOCK=yes,HAS_S_IFSOCK=no) AC_MSG_RESULT($HAS_S_IFSOCK) @@ -385,7 +378,7 @@ if test $HAS_S_IFSOCK = yes; then fi dnl Some Unix's are missing S_ISLNK, S_ISSOCK -AC_MSG_CHECKING(if defines S_ISLNK...) +AC_MSG_CHECKING(if defines S_ISLNK) AC_TRY_LINK([#include ],printf("%d", S_ISLNK(0755)), HAS_S_ISLNK=yes,HAS_S_ISLNK=no) AC_MSG_RESULT($HAS_S_ISLNK) @@ -393,7 +386,7 @@ if test $HAS_S_ISLNK = yes; then AC_DEFINE(HAVE_S_ISLNK) fi -AC_MSG_CHECKING(if defines S_ISSOCK...) +AC_MSG_CHECKING(if defines S_ISSOCK) AC_TRY_LINK([#include ],printf("%d", S_ISSOCK(0755)), HAS_S_ISSOCK=yes,HAS_S_ISSOCK=no) AC_MSG_RESULT($HAS_S_ISSOCK) @@ -401,7 +394,7 @@ if test $HAS_S_ISSOCK = yes; then AC_DEFINE(HAVE_S_ISSOCK) fi -AC_MSG_CHECKING(if timezone is defined...) +AC_MSG_CHECKING(if timezone is defined) AC_TRY_LINK([#include ],printf("%ld", timezone), HAS_TIMEZONE=yes,HAS_TIMEZONE=no) AC_MSG_RESULT($HAS_TIMEZONE) @@ -424,7 +417,7 @@ AC_CHECK_FUNC(lchown, [LCHOWN=yes; AC_DEFINE(HAVE_LCHOWN)]) if test "$LCHOWN" = no; then dnl Does chown() follow symlinks? This should be a good enough test. - AC_MSG_CHECKING(whether chown() follows symlinks...) + AC_MSG_CHECKING(whether chown() follows symlinks) AC_ARG_ENABLE([broken-chown], [ --enable-broken-chown this system's chown follows symbolic links], result=$enableval, result=unknown) diff --git a/rpm.spec b/rpm.spec index c4b6bfc..bafa87a 100644 --- a/rpm.spec +++ b/rpm.spec @@ -6,7 +6,7 @@ Release: 1 Group: Utilities/System Source: ftp://ftp.rpm.org/pub/rpm/dist/rpm-2.5.x/rpm-%{version}.tar.gz Copyright: GPL -BuildRoot: /var/tmp/rpm-%{version} +BuildRoot: /var/tmp/rpm-%{version}-root Conflicts: patch < 2.5 %package devel @@ -64,6 +64,7 @@ rm -rf $RPM_BUILD_ROOT /usr/bin/find-requires /usr/man/man8/rpm.8 /usr/man/man8/rpm2cpio.8 +/usr/lib/rpm /usr/lib/rpmrc /usr/lib/rpmpopt %dir /usr/src/redhat