diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libalpm/Makefile.am | 3 | ||||
-rw-r--r-- | lib/libalpm/add.c | 1 | ||||
-rw-r--r-- | lib/libalpm/deps.c | 43 | ||||
-rw-r--r-- | lib/libalpm/package.c | 96 | ||||
-rw-r--r-- | lib/libalpm/package.h | 1 | ||||
-rw-r--r-- | lib/libalpm/po/POTFILES.in | 1 | ||||
-rw-r--r-- | lib/libalpm/remove.c | 1 | ||||
-rw-r--r-- | lib/libalpm/sync.c | 1 | ||||
-rw-r--r-- | lib/libalpm/util.c | 131 | ||||
-rw-r--r-- | lib/libalpm/util.h | 8 | ||||
-rw-r--r-- | lib/libalpm/versioncmp.c | 294 | ||||
-rw-r--r-- | lib/libalpm/versioncmp.h | 33 |
12 files changed, 247 insertions, 366 deletions
diff --git a/lib/libalpm/Makefile.am b/lib/libalpm/Makefile.am index 20e7203d..c5276f95 100644 --- a/lib/libalpm/Makefile.am +++ b/lib/libalpm/Makefile.am @@ -32,8 +32,7 @@ libalpm_la_SOURCES = \ sha1.h sha1.c \ sync.h sync.c \ trans.h trans.c \ - util.h util.c \ - versioncmp.h versioncmp.c + util.h util.c libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO) libalpm_la_LIBADD = -larchive -ldownload diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c index b4345e91..e95e7a44 100644 --- a/lib/libalpm/add.c +++ b/lib/libalpm/add.c @@ -43,7 +43,6 @@ #include "util.h" #include "error.h" #include "cache.h" -#include "versioncmp.h" #include "md5.h" #include "sha1.h" #include "log.h" diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 591e5a87..003f26d4 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -40,7 +40,6 @@ #include "db.h" #include "cache.h" #include "provide.h" -#include "versioncmp.h" #include "handle.h" extern pmhandle_t *handle; @@ -433,6 +432,48 @@ alpm_list_t *_alpm_checkdeps(pmdb_t *db, pmtranstype_t op, return(baddeps); } +int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep) +{ + int equal = 0; + + ALPM_LOG_FUNC; + + if(strcmp(pkg->name, dep->name) == 0 + || alpm_list_find_str(alpm_pkg_get_provides(pkg), dep->name)) { + if(dep->mod == PM_DEP_MOD_ANY) { + equal = 1; + } else { + int cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), dep->version); + switch(dep->mod) { + case PM_DEP_MOD_EQ: equal = (cmp == 0); break; + case PM_DEP_MOD_GE: equal = (cmp >= 0); break; + case PM_DEP_MOD_LE: equal = (cmp <= 0); break; + default: equal = 1; break; + } + } + + char *mod = "~="; + switch(dep->mod) { + case PM_DEP_MOD_EQ: mod = "=="; break; + case PM_DEP_MOD_GE: mod = ">="; break; + case PM_DEP_MOD_LE: mod = "<="; break; + default: break; + } + + if(strlen(dep->version) > 0) { + _alpm_log(PM_LOG_DEBUG, "depcmp: %s-%s %s %s-%s => %s", + alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg), + mod, dep->name, dep->version, (equal ? "match" : "no match")); + } else { + _alpm_log(PM_LOG_DEBUG, "depcmp: %s-%s %s %s => %s", + alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg), + mod, dep->name, (equal ? "match" : "no match")); + } + } + + return equal; +} + pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring) { pmdepend_t *depend; diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index ed6093f3..a18dc1f4 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -48,7 +48,6 @@ #include "cache.h" #include "provide.h" #include "handle.h" -#include "versioncmp.h" #include "alpm.h" /** \addtogroup alpm_packages Package Functions @@ -198,8 +197,103 @@ int alpm_pkg_checkmd5sum(pmpkg_t *pkg) return(retval); } +/* this function was taken from rpm 4.0.4 and rewritten */ +int _alpm_versioncmp(const char *a, const char *b) +{ + char str1[64], str2[64]; + char *ptr1, *ptr2; + char *one, *two; + char *rel1 = NULL, *rel2 = NULL; + char oldch1, oldch2; + int is1num, is2num; + int rc; + + ALPM_LOG_FUNC; + + if(!strcmp(a,b)) { + return(0); + } + + strncpy(str1, a, 64); + str1[63] = 0; + strncpy(str2, b, 64); + str2[63] = 0; + + /* lose the release number */ + for(one = str1; *one && *one != '-'; one++); + if(one) { + *one = '\0'; + rel1 = ++one; + } + for(two = str2; *two && *two != '-'; two++); + if(two) { + *two = '\0'; + rel2 = ++two; + } + + one = str1; + two = str2; + + while(*one || *two) { + while(*one && !isalnum((int)*one)) one++; + while(*two && !isalnum((int)*two)) two++; + + ptr1 = one; + ptr2 = two; + + /* find the next segment for each string */ + if(isdigit((int)*ptr1)) { + is1num = 1; + while(*ptr1 && isdigit((int)*ptr1)) ptr1++; + } else { + is1num = 0; + while(*ptr1 && isalpha((int)*ptr1)) ptr1++; + } + if(isdigit((int)*ptr2)) { + is2num = 1; + while(*ptr2 && isdigit((int)*ptr2)) ptr2++; + } else { + is2num = 0; + while(*ptr2 && isalpha((int)*ptr2)) ptr2++; + } + + oldch1 = *ptr1; + *ptr1 = '\0'; + oldch2 = *ptr2; + *ptr2 = '\0'; + + /* see if we ran out of segments on one string */ + if(one == ptr1 && two != ptr2) { + return(is2num ? -1 : 1); + } + if(one != ptr1 && two == ptr2) { + return(is1num ? 1 : -1); + } + + /* see if we have a type mismatch (ie, one is alpha and one is digits) */ + if(is1num && !is2num) return(1); + if(!is1num && is2num) return(-1); + if(is1num) while(*one == '0') one++; + if(is2num) while(*two == '0') two++; + rc = strverscmp(one, two); + if(rc) return(rc); + + *ptr1 = oldch1; + *ptr2 = oldch2; + one = ptr1; + two = ptr2; + } + + if((!*one) && (!*two)) { + /* compare release numbers */ + if(rel1 && rel2 && strlen(rel1) && strlen(rel2)) return(_alpm_versioncmp(rel1, rel2)); + return(0); + } + + return(*one ? 1 : -1); +} /** Compare versions. * @param ver1 first version diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h index 279e232f..e8e8d37c 100644 --- a/lib/libalpm/package.h +++ b/lib/libalpm/package.h @@ -93,6 +93,7 @@ struct __pmpkg_t { pmdbinfrq_t infolevel; }; +int _alpm_versioncmp(const char *a, const char *b); pmpkg_t* _alpm_pkg_new(const char *name, const char *version); pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg); void _alpm_pkg_free(pmpkg_t *pkg); diff --git a/lib/libalpm/po/POTFILES.in b/lib/libalpm/po/POTFILES.in index e668f661..3764d1de 100644 --- a/lib/libalpm/po/POTFILES.in +++ b/lib/libalpm/po/POTFILES.in @@ -22,4 +22,3 @@ lib/libalpm/sha1.c lib/libalpm/sync.c lib/libalpm/trans.c lib/libalpm/util.c -lib/libalpm/versioncmp.c diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index 57e452d6..31982ea0 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -39,7 +39,6 @@ #include "trans.h" #include "util.h" #include "error.h" -#include "versioncmp.h" #include "md5.h" #include "sha1.h" #include "log.h" diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index e5f00bd6..9c3884f8 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -45,7 +45,6 @@ #include "provide.h" #include "trans.h" #include "util.h" -#include "versioncmp.h" #include "handle.h" #include "alpm.h" #include "md5.h" diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c index 20e2017b..5ead8a26 100644 --- a/lib/libalpm/util.c +++ b/lib/libalpm/util.c @@ -49,7 +49,109 @@ #include "package.h" #include "alpm.h" -#ifdef __sun__ +#ifndef HAVE_STRVERSCMP +/* GNU's strverscmp() function, taken from glibc 2.3.2 sources + */ + +/* Compare strings while treating digits characters numerically. + Copyright (C) 1997, 2002 Free Software Foundation, Inc. + Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. +*/ + +/* states: S_N: normal, S_I: comparing integral part, S_F: comparing + fractionnal parts, S_Z: idem but with leading Zeroes only */ +#define S_N 0x0 +#define S_I 0x4 +#define S_F 0x8 +#define S_Z 0xC + +/* result_type: CMP: return diff; LEN: compare using len_diff/diff */ +#define CMP 2 +#define LEN 3 + +/* Compare S1 and S2 as strings holding indices/version numbers, + returning less than, equal to or greater than zero if S1 is less than, + equal to or greater than S2 (for more info, see the texinfo doc). +*/ + +static int strverscmp (s1, s2) + const char *s1; + const char *s2; +{ + const unsigned char *p1 = (const unsigned char *) s1; + const unsigned char *p2 = (const unsigned char *) s2; + unsigned char c1, c2; + int state; + int diff; + + /* Symbol(s) 0 [1-9] others (padding) + Transition (10) 0 (01) d (00) x (11) - */ + static const unsigned int next_state[] = + { + /* state x d 0 - */ + /* S_N */ S_N, S_I, S_Z, S_N, + /* S_I */ S_N, S_I, S_I, S_I, + /* S_F */ S_N, S_F, S_F, S_F, + /* S_Z */ S_N, S_F, S_Z, S_Z + }; + + static const int result_type[] = + { + /* state x/x x/d x/0 x/- d/x d/d d/0 d/- + 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */ + + /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, + CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, + /* S_I */ CMP, -1, -1, CMP, +1, LEN, LEN, CMP, + +1, LEN, LEN, CMP, CMP, CMP, CMP, CMP, + /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, + CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, + /* S_Z */ CMP, +1, +1, CMP, -1, CMP, CMP, CMP, + -1, CMP, CMP, CMP + }; + + if (p1 == p2) + return 0; + + c1 = *p1++; + c2 = *p2++; + /* Hint: '0' is a digit too. */ + state = S_N | ((c1 == '0') + (isdigit (c1) != 0)); + + while ((diff = c1 - c2) == 0 && c1 != '\0') + { + state = next_state[state]; + c1 = *p1++; + c2 = *p2++; + state |= (c1 == '0') + (isdigit (c1) != 0); + } + + state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))]; + + switch (state) + { + case CMP: + return diff; + + case LEN: + while (isdigit (*p1++)) + if (!isdigit (*p2++)) + return 1; + + return isdigit (*p2) ? -1 : diff; + + default: + return state; + } +} +#endif + +#ifndef HAVE_STRSEP /* This is a replacement for strsep which is not portable (missing on Solaris). * Copyright (c) 2001 by François Gouget <fgouget_at_codeweavers.com> */ char* strsep(char** str, const char* delims) @@ -74,33 +176,6 @@ char* strsep(char** str, const char* delims) *str=NULL; return token; } - -/* Backported from Solaris Express 4/06 - * Copyright (c) 2006 Sun Microsystems, Inc. */ -char *mkdtemp(char *template) -{ - char *t = alloca(strlen(template) + 1); - char *r; - - /* Save template */ - (void) strcpy(t, template); - for (; ; ) { - r = mkstemp(template); - - if (*r == '\0') - return (NULL); - - if (mkdir(template, 0700) == 0) - return (r); - - /* Other errors indicate persistent conditions. */ - if (errno != EEXIST) - return (NULL); - - /* Reset template */ - (void) strcpy(template, t); - } -} #endif /* does the same thing as 'mkdir -p' */ diff --git a/lib/libalpm/util.h b/lib/libalpm/util.h index 5fa8269d..8d84d87f 100644 --- a/lib/libalpm/util.h +++ b/lib/libalpm/util.h @@ -54,9 +54,11 @@ int _alpm_ldconfig(const char *root); void _alpm_time2string(time_t t, char *buffer); int _alpm_str_cmp(const void *s1, const void *s2); -#ifdef __sun__ -char* strsep(char** str, const char* delims); -char* mkdtemp(char *template); +#ifndef HAVE_STRVERSCMP +static int strverscmp(const char *, const char *); +#endif +#ifndef HAVE_STRSEP +char *strsep(char **, const char *); #endif /* check exported library symbols with: nm -C -D <lib> */ diff --git a/lib/libalpm/versioncmp.c b/lib/libalpm/versioncmp.c deleted file mode 100644 index ae9ff90d..00000000 --- a/lib/libalpm/versioncmp.c +++ /dev/null @@ -1,294 +0,0 @@ -/* - * versioncmp.c - * - * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> - * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> - * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.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 - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * 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, - * USA. - */ - -#include "config.h" - -#include <stdlib.h> -#include <stdio.h> -#include <ctype.h> -#include <string.h> - -/* libalpm */ -#include "versioncmp.h" -#include "alpm_list.h" -#include "alpm.h" -#include "log.h" -#include "util.h" - -#ifndef HAVE_STRVERSCMP -/* GNU's strverscmp() function, taken from glibc 2.3.2 sources - */ - -/* Compare strings while treating digits characters numerically. - Copyright (C) 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* states: S_N: normal, S_I: comparing integral part, S_F: comparing - fractionnal parts, S_Z: idem but with leading Zeroes only */ -#define S_N 0x0 -#define S_I 0x4 -#define S_F 0x8 -#define S_Z 0xC - -/* result_type: CMP: return diff; LEN: compare using len_diff/diff */ -#define CMP 2 -#define LEN 3 - -/* Compare S1 and S2 as strings holding indices/version numbers, - returning less than, equal to or greater than zero if S1 is less than, - equal to or greater than S2 (for more info, see the texinfo doc). -*/ - -static int strverscmp (s1, s2) - const char *s1; - const char *s2; -{ - const unsigned char *p1 = (const unsigned char *) s1; - const unsigned char *p2 = (const unsigned char *) s2; - unsigned char c1, c2; - int state; - int diff; - - /* Symbol(s) 0 [1-9] others (padding) - Transition (10) 0 (01) d (00) x (11) - */ - static const unsigned int next_state[] = - { - /* state x d 0 - */ - /* S_N */ S_N, S_I, S_Z, S_N, - /* S_I */ S_N, S_I, S_I, S_I, - /* S_F */ S_N, S_F, S_F, S_F, - /* S_Z */ S_N, S_F, S_Z, S_Z - }; - - static const int result_type[] = - { - /* state x/x x/d x/0 x/- d/x d/d d/0 d/- - 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */ - - /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, - CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, - /* S_I */ CMP, -1, -1, CMP, +1, LEN, LEN, CMP, - +1, LEN, LEN, CMP, CMP, CMP, CMP, CMP, - /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, - CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, - /* S_Z */ CMP, +1, +1, CMP, -1, CMP, CMP, CMP, - -1, CMP, CMP, CMP - }; - - if (p1 == p2) - return 0; - - c1 = *p1++; - c2 = *p2++; - /* Hint: '0' is a digit too. */ - state = S_N | ((c1 == '0') + (isdigit (c1) != 0)); - - while ((diff = c1 - c2) == 0 && c1 != '\0') - { - state = next_state[state]; - c1 = *p1++; - c2 = *p2++; - state |= (c1 == '0') + (isdigit (c1) != 0); - } - - state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))]; - - switch (state) - { - case CMP: - return diff; - - case LEN: - while (isdigit (*p1++)) - if (!isdigit (*p2++)) - return 1; - - return isdigit (*p2) ? -1 : diff; - - default: - return state; - } -} - -#endif - -/* this function was taken from rpm 4.0.4 and rewritten */ -int _alpm_versioncmp(const char *a, const char *b) -{ - char str1[64], str2[64]; - char *ptr1, *ptr2; - char *one, *two; - char *rel1 = NULL, *rel2 = NULL; - char oldch1, oldch2; - int is1num, is2num; - int rc; - - ALPM_LOG_FUNC; - - if(!strcmp(a,b)) { - return(0); - } - - strncpy(str1, a, 64); - str1[63] = 0; - strncpy(str2, b, 64); - str2[63] = 0; - - /* lose the release number */ - for(one = str1; *one && *one != '-'; one++); - if(one) { - *one = '\0'; - rel1 = ++one; - } - for(two = str2; *two && *two != '-'; two++); - if(two) { - *two = '\0'; - rel2 = ++two; - } - - one = str1; - two = str2; - - while(*one || *two) { - while(*one && !isalnum((int)*one)) one++; - while(*two && !isalnum((int)*two)) two++; - - ptr1 = one; - ptr2 = two; - - /* find the next segment for each string */ - if(isdigit((int)*ptr1)) { - is1num = 1; - while(*ptr1 && isdigit((int)*ptr1)) ptr1++; - } else { - is1num = 0; - while(*ptr1 && isalpha((int)*ptr1)) ptr1++; - } - if(isdigit((int)*ptr2)) { - is2num = 1; - while(*ptr2 && isdigit((int)*ptr2)) ptr2++; - } else { - is2num = 0; - while(*ptr2 && isalpha((int)*ptr2)) ptr2++; - } - - oldch1 = *ptr1; - *ptr1 = '\0'; - oldch2 = *ptr2; - *ptr2 = '\0'; - - /* see if we ran out of segments on one string */ - if(one == ptr1 && two != ptr2) { - return(is2num ? -1 : 1); - } - if(one != ptr1 && two == ptr2) { - return(is1num ? 1 : -1); - } - - /* see if we have a type mismatch (ie, one is alpha and one is digits) */ - if(is1num && !is2num) return(1); - if(!is1num && is2num) return(-1); - - if(is1num) while(*one == '0') one++; - if(is2num) while(*two == '0') two++; - - rc = strverscmp(one, two); - if(rc) return(rc); - - *ptr1 = oldch1; - *ptr2 = oldch2; - one = ptr1; - two = ptr2; - } - - if((!*one) && (!*two)) { - /* compare release numbers */ - if(rel1 && rel2 && strlen(rel1) && strlen(rel2)) return(_alpm_versioncmp(rel1, rel2)); - return(0); - } - - return(*one ? 1 : -1); -} - -int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep) -{ - int equal = 0; - - ALPM_LOG_FUNC; - - if(strcmp(pkg->name, dep->name) == 0 - || alpm_list_find_str(alpm_pkg_get_provides(pkg), dep->name)) { - if(dep->mod == PM_DEP_MOD_ANY) { - equal = 1; - } else { - int cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), dep->version); - switch(dep->mod) { - case PM_DEP_MOD_EQ: equal = (cmp == 0); break; - case PM_DEP_MOD_GE: equal = (cmp >= 0); break; - case PM_DEP_MOD_LE: equal = (cmp <= 0); break; - default: equal = 1; break; - } - } - - char *mod = "~="; - switch(dep->mod) { - case PM_DEP_MOD_EQ: mod = "=="; break; - case PM_DEP_MOD_GE: mod = ">="; break; - case PM_DEP_MOD_LE: mod = "<="; break; - default: break; - } - - if(strlen(dep->version) > 0) { - _alpm_log(PM_LOG_DEBUG, "depcmp: %s-%s %s %s-%s => %s", - alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg), - mod, dep->name, dep->version, - (equal ? "match" : "no match")); - } else { - _alpm_log(PM_LOG_DEBUG, "depcmp: %s-%s %s %s => %s", - alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg), - mod, dep->name, - (equal ? "match" : "no match")); - } - } - - return equal; -} - - -/* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libalpm/versioncmp.h b/lib/libalpm/versioncmp.h deleted file mode 100644 index 13a2d5a7..00000000 --- a/lib/libalpm/versioncmp.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * versioncmp.h - * - * Copyright (c) 2005 by Judd Vinet <jvinet@zeroflux.org> - * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> - * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.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 - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * 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, - * USA. - */ -#ifndef _ALPM_VERSIONCMP_H -#define _ALPM_VERSIONCMP_H - -#include "deps.h" -#include "package.h" - -int _alpm_versioncmp(const char *a, const char *b); - -#endif /* _ALPM_VERSIONCMP_H */ - -/* vim: set ts=2 sw=2 noet: */ |