From 00ce9ea7394e6e21010d3758e5d949e2b449f64d Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Wed, 15 Nov 2006 07:50:37 +0000 Subject: * Initial changes to gensync - makepkg changes were not checked in from another machine - still pending * Addition of _alpm_pkg_makefilename to simplify the with/without -ARCH prefix scheme we're going with for the interim --- lib/libalpm/alpm.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'lib/libalpm/alpm.c') diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c index 77f3632e..b642501b 100644 --- a/lib/libalpm/alpm.c +++ b/lib/libalpm/alpm.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -705,6 +706,44 @@ int alpm_pkg_vercmp(const char *ver1, const char *ver2) return(_alpm_versioncmp(ver1, ver2)); } +/* internal */ +char *_supported_archs[] = { + "i586", + "i686", + "ppc", + "x86_64", +}; + +char *alpm_pkg_name_hasarch(char *pkgname) +{ + /* TODO remove this when we transfer everything over to -ARCH + * + * this parsing sucks... it's done to support + * two package formats for the time being: + * package-name-foo-1.0.0-1-i686 + * and + * package-name-bar-1.2.3-1 + */ + int i = 0; + char *arch, *cmp, *p; + + if((p = strrchr(pkgname, '-'))) { + for(i=0; i < sizeof(_supported_archs)/sizeof(char*); ++i) { + cmp = p+1; + arch = _supported_archs[i]; + + /* whee, case insensitive compare */ + + while(*arch && *cmp && tolower(*arch++) == tolower(*cmp++)) ; + if(*arch || *cmp) continue; + + return p; + } + } + return NULL; +} + + /** @} */ /** @defgroup alpm_groups Group Functions -- cgit v1.2.3-24-g4f1b