Index: version/main.c =================================================================== --- version/main.c (revision 179652) +++ version/main.c (working copy) @@ -38,8 +38,9 @@ static void usage(void); -static char opts[] = "dIhl:L:qs:XtTO:ov"; +static char opts[] = "cdIhl:L:qs:XtTO:ov"; static struct option longopts[] = { + { "compare", required_argument, NULL, 'c' }, { "extended", no_argument, NULL, 'X' }, { "help", no_argument, NULL, 'h' }, { "match", required_argument, NULL, 's' }, @@ -56,7 +57,8 @@ int main(int argc, char **argv) { - int ch, cmp = 0; + int ch, cmp = 42; + char *v1 = NULL, *v2 = NULL; if (argc == 4 && !strcmp(argv[1], "-t")) { cmp = version_cmp(argv[2], argv[3]); @@ -69,6 +71,16 @@ } else while ((ch = getopt_long(argc, argv, opts, longopts, NULL)) != -1) { switch(ch) { + case 'c': + v1 = v2 = optarg; + v2 = strchr(v2, ' '); + *v2++ = '\0'; + cmp = version_cmp(v1, v2); + if (!Quiet) + printf("%s ? %s : ", v1, v2); + printf(cmp > 0 ? ">\n" : (cmp < 0 ? "<\n" : "=\n")); + break; + case 'v': Verbose++; break; @@ -123,6 +135,9 @@ argc -= optind; argv += optind; + if (cmp != 42) + exit(0); + return pkg_perform(argv); } @@ -131,6 +146,7 @@ { fprintf(stderr, "%s\n%s\n%s\n", "usage: pkg_version [-hIoqv] [-l limchar] [-L limchar] [[-X] -s string] [-O origin] [index]", + " pkg_version -c \"v1 v2\"", " pkg_version -t v1 v2", " pkg_version -T name pattern"); exit(1);