From 5c28a3c5416dd27a186f9838028f4f4917287ffe Mon Sep 17 00:00:00 2001 From: ewt Date: Wed, 14 May 1997 18:39:43 +0000 Subject: [PATCH] Made some missing rpmrc entries a fatal error CVS patchset: 1622 CVS date: 1997/05/14 18:39:43 --- CHANGES | 2 ++ lib/rpmrc.c | 75 ++++++++++++++++++++++++++++++++++--------------------------- 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/CHANGES b/CHANGES index e33098e..4f682d4 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,8 @@ - fixed bug which affected dependencies on the Alpha - made '=' work for long arguments (the switch to popt broke this) - handle solaris systems better + - complain if critical rpmrc variables (cpiobin, gzipbin, etc) aren't + set anywhere 2.3.10 -> 2.3.11: - fixed newlines in --scripts output diff --git a/lib/rpmrc.c b/lib/rpmrc.c index e00488e..76f4130 100644 --- a/lib/rpmrc.c +++ b/lib/rpmrc.c @@ -15,7 +15,7 @@ struct rpmoption { char * name; int var; - int archSpecific; + int archSpecific, required; }; struct archosCacheEntry { @@ -70,36 +70,36 @@ static struct archosEquivInfo * archosEquivSearch( /* this *must* be kept in alphabetical order */ struct rpmoption optionTable[] = { - { "builddir", RPMVAR_BUILDDIR, 0 }, - { "buildroot", RPMVAR_BUILDROOT, 0 }, - { "cpiobin", RPMVAR_CPIOBIN, 0 }, - { "dbpath", RPMVAR_DBPATH, 0 }, - { "defaultdocdir", RPMVAR_DEFAULTDOCDIR, 0 }, - { "distribution", RPMVAR_DISTRIBUTION, 0 }, - { "excludedocs", RPMVAR_EXCLUDEDOCS, 0 }, - { "fixperms", RPMVAR_FIXPERMS, 0 }, - { "ftpport", RPMVAR_FTPPORT, 0 }, - { "ftpproxy", RPMVAR_FTPPROXY, 0 }, - { "gzipbin", RPMVAR_GZIPBIN, 0 }, - { "messagelevel", RPMVAR_MESSAGELEVEL, 0 }, - { "netsharedpath", RPMVAR_NETSHAREDPATH, 0 }, - { "optflags", RPMVAR_OPTFLAGS, 1 }, - { "packager", RPMVAR_PACKAGER, 0 }, - { "pgp_name", RPMVAR_PGP_NAME, 0 }, - { "pgp_path", RPMVAR_PGP_PATH, 0 }, - { "require_distribution", RPMVAR_REQUIREDISTRIBUTION, 0 }, - { "require_icon", RPMVAR_REQUIREICON, 0 }, - { "require_vendor", RPMVAR_REQUIREVENDOR, 0 }, - { "root", RPMVAR_ROOT, 0 }, - { "rpmdir", RPMVAR_RPMDIR, 0 }, - { "signature", RPMVAR_SIGTYPE, 0 }, - { "sourcedir", RPMVAR_SOURCEDIR, 0 }, - { "specdir", RPMVAR_SPECDIR, 0 }, - { "srcrpmdir", RPMVAR_SRPMDIR, 0 }, - { "timecheck", RPMVAR_TIMECHECK, 0 }, - { "tmppath", RPMVAR_TMPPATH, 0 }, - { "topdir", RPMVAR_TOPDIR, 0 }, - { "vendor", RPMVAR_VENDOR, 0 }, + { "builddir", RPMVAR_BUILDDIR, 0, 0 }, + { "buildroot", RPMVAR_BUILDROOT, 0, 0 }, + { "cpiobin", RPMVAR_CPIOBIN, 0, 1 }, + { "dbpath", RPMVAR_DBPATH, 0, 1 }, + { "defaultdocdir", RPMVAR_DEFAULTDOCDIR, 0, 0 }, + { "distribution", RPMVAR_DISTRIBUTION, 0, 0 }, + { "excludedocs", RPMVAR_EXCLUDEDOCS, 0, 0 }, + { "fixperms", RPMVAR_FIXPERMS, 0, 1 }, + { "ftpport", RPMVAR_FTPPORT, 0, 0 }, + { "ftpproxy", RPMVAR_FTPPROXY, 0, 0 }, + { "gzipbin", RPMVAR_GZIPBIN, 0, 1 }, + { "messagelevel", RPMVAR_MESSAGELEVEL, 0, 0 }, + { "netsharedpath", RPMVAR_NETSHAREDPATH, 0, 0 }, + { "optflags", RPMVAR_OPTFLAGS, 1, 0 }, + { "packager", RPMVAR_PACKAGER, 0, 0 }, + { "pgp_name", RPMVAR_PGP_NAME, 0, 0 }, + { "pgp_path", RPMVAR_PGP_PATH, 0, 0 }, + { "require_distribution", RPMVAR_REQUIREDISTRIBUTION, 0, 0 }, + { "require_icon", RPMVAR_REQUIREICON, 0, 0 }, + { "require_vendor", RPMVAR_REQUIREVENDOR, 0, 0 }, + { "root", RPMVAR_ROOT, 0, 0 }, + { "rpmdir", RPMVAR_RPMDIR, 0, 0 }, + { "signature", RPMVAR_SIGTYPE, 0, 0 }, + { "sourcedir", RPMVAR_SOURCEDIR, 0, 0 }, + { "specdir", RPMVAR_SPECDIR, 0, 0 }, + { "srcrpmdir", RPMVAR_SRPMDIR, 0, 0 }, + { "timecheck", RPMVAR_TIMECHECK, 0, 0 }, + { "tmppath", RPMVAR_TMPPATH, 0, 1 }, + { "topdir", RPMVAR_TOPDIR, 0, 0 }, + { "vendor", RPMVAR_VENDOR, 0, 0 }, }; static int optionTableSize = sizeof(optionTable) / sizeof(struct rpmoption); @@ -620,6 +620,7 @@ int rpmReadConfigFiles(char * file, char * arch, char * os, int building) int tc; char *tcs, *tcse; static int alreadyInit = 0; + int i; if (alreadyInit) return 1; @@ -657,11 +658,19 @@ int rpmReadConfigFiles(char * file, char * arch, char * os, int building) tc = strtoul(tcs, &tcse, 10); if ((*tcse) || (tcse == tcs) || (tc == ULONG_MAX)) { rpmError(RPMERR_RPMRC, "Bad arg to timecheck: %s", tcs); - return(RPMERR_RPMRC); + return 1; + } + } + + for (i = 0; i < optionTableSize; i++) { + if (optionTable[i].required && !rpmGetVar(optionTable[i].var)) { + rpmError(RPMERR_RPMRC, "Missing definition of %s in rc files.", + optionTable[i].name); + rc = 1; } } - return 0; + return rc; } static void setPathDefault(int var, char * s) { -- 2.7.4