X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=lib%2Fvercmp.c;fp=vercmp.c;h=8cbad7354ec92035ab0264c9ebc4b35018b48b34;hb=ea8f3e12fe9fc4b4ff43c21505cb36f36a0a52e4;hp=58053d9f46b68341accb86674ea2adb83396cc97;hpb=cc86639ed2cb9237b75ddb603b101929a3ee71d6;p=zpackage diff --git a/vercmp.c b/lib/vercmp.c similarity index 83% rename from vercmp.c rename to lib/vercmp.c index 58053d9..8cbad73 100644 --- a/vercmp.c +++ b/lib/vercmp.c @@ -17,7 +17,7 @@ struct ver { char *relstr; }; -void init_ver(struct ver *v, char *s) { +static void init_ver(struct ver *v, char *s) { strncpy(v->str, s, 1023); v->str[1023] = 0; v->s = 0; @@ -43,7 +43,7 @@ void init_ver(struct ver *v, char *s) { } -int ver_cmp(struct ver *a, struct ver *b) { +static int ver_cmp(struct ver *a, struct ver *b) { if (a->type == 0 && b->type == 0) { return 0; } @@ -65,7 +65,7 @@ int ver_cmp(struct ver *a, struct ver *b) { return 0; } -int next_comp(struct ver *v) { +static int next_comp(struct ver *v) { char *s; /* restore over-written character */ @@ -109,41 +109,34 @@ int next_comp(struct ver *v) { /* * alphabetic less than numeric */ -int main(int ac, char *av[]) { +int zpm_vercmp(char *vsa, char *vsb) { struct ver a, b; int an, bn; int cmp; - if (ac < 2) return 1; - - init_ver(&a, av[1]); - init_ver(&b, av[2]); + init_ver(&a, vsa); + init_ver(&b, vsb); do { an = next_comp(&a); bn = next_comp(&b); if (an != bn) { if (an == 0 && a.type == 2 && b.sep == 0 && b.type == 1) { - printf("1\n"); + return 1; } else if (bn == 0 && b.type == 2 && a.sep == 0 && a.type == 1) { - printf("-1\n"); - } else { - printf("%s\n", an < bn ? "-1" : "1"); + return -1; } - exit(0); + return an < bn ? -1 : 1; } cmp = ver_cmp(&a, &b); if (cmp != 0) { - printf("%d\n", cmp); - exit(0); + return cmp; } } while (an && bn); /* if we've gotten here, and both have releases, check those */ if (a.relstr && b.relstr && a.release != b.release) { - printf("%s\n", a.release < b.release ? "-1" : "1"); - exit(0); + return a.release < b.release ? -1 : 1; } - printf("0\n"); return 0; }