X-Git-Url: https://pd.if.org/git/?p=zpackage;a=blobdiff_plain;f=src%2Fvercmp.c;h=340d80fbd013b4df2cc02bf0ba04fcfaf9406be5;hp=b0e5117b8e703384f89f65dee630ca7dea8e2566;hb=b0c5db32f5f53b5d43170756668e0c0387a88f13;hpb=e0214f50fcf9ed0fdcdca444986fc998db5d0dee diff --git a/src/vercmp.c b/src/vercmp.c index b0e5117..340d80f 100644 --- a/src/vercmp.c +++ b/src/vercmp.c @@ -19,30 +19,23 @@ int main(int ac, char *av[]) { int cmp; char *a = 0, *b = 0; int print = 1; - int argn, opt, pass, failed = 0; - - /* 0x1 = less than, 0x2 = equal, 0x4 = greater */ - unsigned testmask = 0; - unsigned testcases = 0; + int argn, opt = 0; + int inorder = 1, equal = 1; char *greatest = 0; char *least = 0; - if (ac < 2) return 1; - - while ((opt = getopt(ac, av, "qgleLG")) != -1) { + while ((opt = getopt(ac, av, "qLG")) != -1) { switch (opt) { case 'q': print = 0; break; - case 'l': testmask |= 0x1; break; - case 'e': testmask |= 0x2; break; - case 'g': testmask |= 0x4; break; - case 'L': print = 2; break; - case 'G': print = 3; break; + case 'G': print = 2; break; + case 'L': print = 3; break; default: exit(EXIT_FAILURE); break; } } + argn = optind; if (ac > argn) { @@ -54,43 +47,44 @@ int main(int ac, char *av[]) { while (ac > argn) { b = av[argn++]; - cmp = zpm_vercmp(a, b) + 1; - testcases |= (1< 0) { greatest = b; } - cmp = zpm_vercmp(least, b); + cmp = zpm_vercmp(b, least); if (cmp < 0) { least = b; } + a = b; } - switch (testcases) { - case 0: /* no tests */ - cmp = 0; break; - case 1: /* only less than */ - cmp = 2; break; - case 2: /* only equal */ - cmp = 0; break; - case 4: /* only greater than */ - cmp = 1; break; - default: /* mixed */ - cmp = 3; break; + if (equal) { + cmp = 0; + } else if (inorder) { + cmp = -1; + } else { + cmp = 1; } switch (print) { case 1: - printf("%d\n", cmp == 2 ? -1 : cmp); + printf("%d\n", cmp); break; case 2: if (greatest) printf("%s\n", greatest); @@ -101,11 +95,6 @@ int main(int ac, char *av[]) { default: break; } - fflush(stdout); - if (testmask == 0) { - return cmp; - } else { - return failed ? 1 : 0; - } + return cmp == -1 ? 2 : cmp; }