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;
}
-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;
}
return 0;
}
-int next_comp(struct ver *v) {
+static int next_comp(struct ver *v) {
char *s;
/* restore over-written character */
/*
* 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;
}