Initial import of xbps-cmpver

--HG--
extra : convert_revision : 57260b5d7bfc45cb2e2c877fad2fdcae155c0a75
This commit is contained in:
pancake 2008-10-28 16:51:58 +01:00
parent b011885995
commit a4f4fde9cf
2 changed files with 22 additions and 18 deletions

View file

@ -3,8 +3,11 @@ PREFIX ?= /usr/local
PKGDB_CFLAGS += -Wall -Werror -I$(PREFIX)/include PKGDB_CFLAGS += -Wall -Werror -I$(PREFIX)/include
PKGDB_LDFLAGS += -lprop PKGDB_LDFLAGS += -lprop
all: xbps-digest xbps-pkgdb all: xbps-digest xbps-pkgdb xbps-cmpver
xbps-cmpver: xbps-cmpver.o
$(CC) $(CFLAGS) $< -o $@
xbps-digest: xbps-digest.o xbps-digest: xbps-digest.o
$(CC) $(CFLAGS) $< -o $@ $(CC) $(CFLAGS) $< -o $@
@ -15,5 +18,4 @@ clean_objs:
-rm -f *.o -rm -f *.o
clean: clean_objs clean: clean_objs
-rm -f xbps-digest xbps-pkgdb -rm -f xbps-digest xbps-pkgdb xbps-cmpver

View file

@ -1,12 +1,12 @@
/* /*
* Compare package and version strings * Compare package and version strings
* * @ 2008
* Author: pancake <youterm.com> * Author: pancake <youterm.com>
*/ */
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
static int chkchr(char *ch) static int chkchr(const char *ch)
{ {
if (*ch>='0' && *ch<='9') if (*ch>='0' && *ch<='9')
return *ch-'0'; return *ch-'0';
@ -54,26 +54,28 @@ int chkpkg(const char *a0, const char *b0)
char *b = strchr(b0, '-'); char *b = strchr(b0, '-');
if (a == NULL || b== NULL) { if (a == NULL || b== NULL) {
eprintf("Invalid package names\n"); fprintf(stderr, "Invalid package names\n");
return 0; return 0;
} }
return chkver(a+1, b+1); return chkver(a+1, b+1);
} }
#if UNIT_TEST #if UNIT_TEST
printf("1.2 2.2 = %d\n", chkver("1.2", "2.2"));
printf("1.0 10.3 = %d\n", chkver("1.0", "10.3"));
printf("1.0 1.0 = %d\n", chkver("1.0", "1.0"));
printf("1.0 1.2 = %d\n", chkver("1.0", "1.2"));
printf("1.0.1 1.0.2 = %d\n", chkver("1.0.1", "1.0.2"));
printf("1.0beta 1.0rc1 = %d\n", chkver("1.0beta", "1.0rc1"));
#endif
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
if (argc>2) { if (argc<3) {
printf("%s %s = %d\n", printf("Usage: ./xbps-cmpver [old] [new]\n");
argv[1], argv[2], printf(" ./xbpks-cmpver foo-1.2 foo-2.2 # $? = 1\n");
chkver(argv[1], argv[2])); printf(" ./xbpks-cmpver foo-1.2 foo-1.2 # $? = 0\n");
} else { return 1;
printf("1.2 2.2 = %d\n", chkver("1.2", "2.2"));
printf("1.0 10.3 = %d\n", chkver("1.0", "10.3"));
printf("1.0 1.0 = %d\n", chkver("1.0", "1.0"));
printf("1.0 1.2 = %d\n", chkver("1.0", "1.2"));
printf("1.0.1 1.0.2 = %d\n", chkver("1.0.1", "1.0.2"));
printf("1.0beta 1.0rc1 = %d\n", chkver("1.0beta", "1.0rc1"));
} }
return (chkpkg(argv[1], argv[2]) > 0)?1:0;
} }
#endif