add --querybynumber
authorroot <devnull@localhost>
Sun, 2 Jun 1996 18:04:36 +0000 (18:04 +0000)
committerroot <devnull@localhost>
Sun, 2 Jun 1996 18:04:36 +0000 (18:04 +0000)
CVS patchset: 597
CVS date: 1996/06/02 18:04:36

query.c
query.h
rpm.c

diff --git a/query.c b/query.c
index 8a4aa0b..ec76e4a 100644 (file)
--- a/query.c
+++ b/query.c
@@ -513,11 +513,11 @@ int doQuery(char * prefix, enum querysources source, int queryFlags,
 
       case QUERY_SPACKAGE:
       case QUERY_PACKAGE:
-       if (isdigit(arg[0])) {
+       if (queryFlags & QUERY_BY_NUMBER) {
            char *end = NULL;
            recNumber = strtoul(arg, &end, 10);
            if ((*end) || (end == arg) || (recNumber == ULONG_MAX)) {
-               fprintf(stderr, "invalid package name: %s\n", arg);
+               fprintf(stderr, "invalid package number: %s\n", arg);
                return 1;
            }
            message(MESS_DEBUG, "showing package: %d\n", recNumber);
diff --git a/query.h b/query.h
index e4d11a9..a38dc0b 100644 (file)
--- a/query.h
+++ b/query.h
@@ -13,6 +13,7 @@ enum querysources { QUERY_PATH, QUERY_PACKAGE, QUERY_ALL, QUERY_SPATH,
 #define QUERY_FOR_DOCS         (1 << 3)
 #define QUERY_FOR_CONFIG       (1 << 4)
 #define QUERY_FOR_SCRIPTS      (1 << 5)
+#define QUERY_BY_NUMBER         (1 << 6)
 
 int doQuery(char * prefix, enum querysources source, int queryFlags, 
             char * arg, char * queryFormat);
diff --git a/rpm.c b/rpm.c
index d1c12ab..86e119a 100755 (executable)
--- a/rpm.c
+++ b/rpm.c
@@ -268,6 +268,7 @@ int main(int argc, char ** argv) {
            { "package", 0, 0, 'p' },
            { "percent", 0, &showPercents, 0 },
            { "query", 0, 0, 'q' },
+           { "querybynumber", 0, 0, 0 },
            { "queryformat", 1, 0, 0 },
            { "querytags", 0, &queryTags, 0 },
            { "quiet", 0, &quiet, 0 },
@@ -525,6 +526,11 @@ int main(int argc, char ** argv) {
                    argerror(_("only one major mode may be specified"));
                bigMode = MODE_RESIGN;
                signIt = 1;
+           } else if (!strcmp(options[long_index].name, "querybynumber")) {
+               if (bigMode != MODE_UNKNOWN && bigMode != MODE_QUERY)
+                   argerror(_("only one major mode may be specified"));
+               bigMode = MODE_QUERY;
+               queryFor |= QUERY_BY_NUMBER;
            } else if (!strcmp(options[long_index].name, "queryformat")) {
                if (bigMode != MODE_UNKNOWN && bigMode != MODE_QUERY)
                    argerror(_("only one major mode may be specified"));