Add macro %isu_package to generate ISU Package
[platform/upstream/rpm.git] / rpmqv.c
diff --git a/rpmqv.c b/rpmqv.c
index 4841cb8..f029d81 100644 (file)
--- a/rpmqv.c
+++ b/rpmqv.c
@@ -1,5 +1,4 @@
 #include "system.h"
-const char *__progname;
 
 #include <rpm/rpmcli.h>
 #include <rpm/rpmlib.h>                        /* RPMSIGTAG, rpmReadPackageFile .. */
@@ -88,12 +87,14 @@ int main(int argc, char *argv[])
     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)
@@ -135,7 +136,8 @@ int main(int argc, char *argv[])
 #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)
@@ -166,13 +168,13 @@ int main(int argc, char *argv[])
     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 "
@@ -310,6 +312,8 @@ int main(int argc, char *argv[])
        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));
@@ -325,7 +329,7 @@ int main(int argc, char *argv[])
     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;
        }
@@ -333,7 +337,8 @@ int main(int argc, char *argv[])
     }
 
     rpmtsFree(ts);
-    finishPipe();
+    if (finishPipe())
+       ec = EXIT_FAILURE;
 
 #ifdef IAM_RPMQV
     free(qva->qva_queryFormat);
@@ -349,5 +354,7 @@ int main(int argc, char *argv[])
 
     rpmcliFini(optCon);
 
+    rpmlog(RPMLOG_DEBUG, "Exit status: %d\n", ec);
+
     return RETVAL(ec);
 }