#include "system.h"
-const char *__progname;
#include <rpm/rpmcli.h>
#include <rpm/rpmlib.h> /* RPMSIGTAG, rpmReadPackageFile .. */
-#include <rpm/rpmbuild.h>
#include <rpm/rpmlog.h>
-#include <rpm/rpmdb.h>
#include <rpm/rpmps.h>
#include <rpm/rpmts.h>
MODE_UNKNOWN = 0
};
-#define MODES_FOR_DBPATH (MODES_IE | MODES_QV)
#define MODES_FOR_NODEPS (MODES_IE | MODE_VERIFY)
#define MODES_FOR_TEST (MODES_IE)
-#define MODES_FOR_ROOT (MODES_IE | MODES_QV)
static int quiet;
int i;
#endif
+ xsetprogname(argv[0]); /* Portability call -- see system.h */
+
optCon = rpmcliInit(argc, argv, optionsTable);
/* Set the major mode based on argv[0] */
#ifdef IAM_RPMQV
- if (rstreq(__progname, "rpmquery")) bigMode = MODE_QUERY;
- if (rstreq(__progname, "rpmverify")) bigMode = MODE_VERIFY;
+ if (rstreq(xgetprogname(), "rpmquery")) bigMode = MODE_QUERY;
+ if (rstreq(xgetprogname(), "rpmverify")) bigMode = MODE_VERIFY;
#endif
#if defined(IAM_RPMQV)
}
if (qva->qva_sourceCount) {
- if (qva->qva_sourceCount > 2)
+ if (qva->qva_sourceCount > 1)
argerror(_("one type of query/verify may be performed at a "
"time"));
}
#ifdef IAM_RPMEIU
if (bigMode == MODE_UNKNOWN || (bigMode & MODES_IE))
{ int iflags = (ia->installInterfaceFlags &
- (INSTALL_UPGRADE|INSTALL_FRESHEN|INSTALL_INSTALL));
+ (INSTALL_UPGRADE|INSTALL_FRESHEN|
+ INSTALL_INSTALL|INSTALL_REINSTALL));
int eflags = (ia->installInterfaceFlags & INSTALL_ERASE);
if (iflags & eflags)
#if defined(IAM_RPMEIU)
if (!( bigMode == MODE_INSTALL ) &&
(ia->probFilter & (RPMPROB_FILTER_REPLACEPKG | RPMPROB_FILTER_OLDPACKAGE)))
- argerror(_("only installation, upgrading, rmsource and rmspec may be forced"));
+ argerror(_("only installation and upgrading may be forced"));
if (bigMode != MODE_INSTALL && (ia->probFilter & RPMPROB_FILTER_FORCERELOCATE))
argerror(_("files may only be relocated during package installation"));
if (ia->prefix && ia->prefix[0] != '/')
argerror(_("arguments to --prefix must begin with a /"));
- if (bigMode != MODE_INSTALL && (ia->installInterfaceFlags & INSTALL_HASH))
+ if (!(bigMode & MODES_IE) && (ia->installInterfaceFlags & INSTALL_HASH))
argerror(_("--hash (-h) may only be specified during package "
- "installation"));
+ "installation and erasure"));
- if (bigMode != MODE_INSTALL && (ia->installInterfaceFlags & INSTALL_PERCENT))
+ if (!(bigMode & MODES_IE) && (ia->installInterfaceFlags & INSTALL_PERCENT))
argerror(_("--percent may only be specified during package "
- "installation"));
+ "installation and erasure"));
if (bigMode != MODE_INSTALL && (ia->probFilter & RPMPROB_FILTER_REPLACEPKG))
argerror(_("--replacepkgs may only be specified during package "
if (ia->noDeps & (bigMode & ~MODES_FOR_NODEPS))
argerror(_("--nodeps may only be specified during package "
- "building, rebuilding, recompilation, installation,"
- "erasure, and verification"));
+ "installation, erasure, and verification"));
if ((ia->transFlags & RPMTRANS_FLAG_TEST) && (bigMode & ~MODES_FOR_TEST))
- argerror(_("--test may only be specified during package installation, "
- "erasure, and building"));
+ argerror(_("--test may only be specified during package installation "
+ "and erasure"));
#endif /* IAM_RPMEIU */
- if (rpmcliRootDir && rpmcliRootDir[1] && (bigMode & ~MODES_FOR_ROOT))
- argerror(_("--root (-r) may only be specified during "
- "installation, erasure, querying, and "
- "database rebuilds"));
-
if (rpmcliRootDir && rpmcliRootDir[0] != '/') {
argerror(_("arguments to --root (-r) must begin with a /"));
}
verifyFlags &= ~qva->qva_flags;
qva->qva_flags = (rpmQueryFlags) verifyFlags;
+ rpmtsSetFlags(ts, rpmtsFlags(ts) | (ia->transFlags & RPMTRANS_FLAG_NOPLUGINS));
+
if (!poptPeekArg(optCon) && !(qva->qva_source == RPMQV_ALL))
argerror(_("no arguments given for verify"));
ec = rpmcliVerify(ts, qva, (ARGV_const_t) poptGetArgs(optCon));
case MODE_ERASE:
#endif
case MODE_UNKNOWN:
- if (poptPeekArg(optCon) != NULL || argc <= 1 || rpmIsVerbose()) {
+ if (poptPeekArg(optCon) != NULL || argc <= 1) {
printUsage(optCon, stderr, 0);
ec = argc;
}
break;
}
- ts = rpmtsFree(ts);
- finishPipe();
+ rpmtsFree(ts);
+ if (finishPipe())
+ ec = EXIT_FAILURE;
#ifdef IAM_RPMQV
- qva->qva_queryFormat = _free(qva->qva_queryFormat);
+ free(qva->qva_queryFormat);
#endif
#ifdef IAM_RPMEIU
- if (ia->relocations != NULL)
- for (i = 0; i < ia->numRelocations; i++)
- ia->relocations[i].oldPath = _free(ia->relocations[i].oldPath);
- ia->relocations = _free(ia->relocations);
+ if (ia->relocations != NULL) {
+ for (i = 0; i < ia->numRelocations; i++)
+ free(ia->relocations[i].oldPath);
+ free(ia->relocations);
+ }
#endif
rpmcliFini(optCon);
+ rpmlog(RPMLOG_DEBUG, "Exit status: %d\n", ec);
+
return RETVAL(ec);
}