diff options
Diffstat (limited to 'src/util/vercmp.c')
-rw-r--r-- | src/util/vercmp.c | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/src/util/vercmp.c b/src/util/vercmp.c index cc951988..29ab121d 100644 --- a/src/util/vercmp.c +++ b/src/util/vercmp.c @@ -1,8 +1,8 @@ /* * vercmp.c - * + * * Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org> - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -15,40 +15,58 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. */ #include "config.h" -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <unistd.h> -#include <limits.h> -/* TODO this is probably not the best way to do this */ -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif +#include <stdio.h> /* printf */ +#include <string.h> /* strncpy */ #include <alpm.h> +#define BASENAME "vercmp" + +#define MAX_LEN 255 + +static void usage() +{ + fprintf(stderr, "usage: %s <ver1> <ver2>\n\n", BASENAME); + fprintf(stderr, "return values:\n"); + fprintf(stderr, " < 0 : if ver1 < ver2\n"); + fprintf(stderr, " 0 : if ver1 == ver2\n"); + fprintf(stderr, " > 0 : if ver1 > ver2\n"); +} + int main(int argc, char *argv[]) { - char s1[255] = ""; - char s2[255] = ""; + char s1[MAX_LEN] = ""; + char s2[MAX_LEN] = ""; int ret; + if(argc == 1) { + usage(); + return(2); + } + if(argc > 1 && + (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0 + || strcmp(argv[1], "--usage") == 0)) { + usage(); + return(0); + } if(argc > 1) { - strncpy(s1, argv[1], 255); + strncpy(s1, argv[1], MAX_LEN); + s1[MAX_LEN -1] = '\0'; } if(argc > 2) { - strncpy(s2, argv[2], 255); + strncpy(s2, argv[2], MAX_LEN); + s2[MAX_LEN -1] = '\0'; } else { printf("0\n"); return(0); } - + ret = alpm_pkg_vercmp(s1, s2); printf("%d\n", ret); return(ret); |