From c6f56aee57a6f85843b218ace485b5702ba5a7ea Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Wed, 17 Jan 2007 05:25:32 +0000 Subject: Dan McGee * fix for -Qii regression * package.c cleanup * some refactoring changes Moved split_pkgname as per Dan's suggestion --- src/pacman/sync.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src/pacman/sync.c') diff --git a/src/pacman/sync.c b/src/pacman/sync.c index 8208157a..c6eb603d 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -52,6 +52,51 @@ extern config_t *config; extern list_t *pmc_syncs; + +/* splits package name into its respective parts */ +static int split_pkgname(char *target, char *name, char *version) +{ + char tmp[512]; + char *p, *q; + + if(target == NULL) { + return(-1); + } + + /* trim path name (if any) */ + if((p = strrchr(target, '/')) == NULL) { + p = target; + } else { + p++; + } + strncpy(tmp, p, 512); + /* trim file extension (if any) */ + if((p = strstr(tmp, PM_EXT_PKG))) { + *p = '\0'; + } + /* trim architecture */ + if((p = alpm_pkg_name_hasarch(tmp))) { + *p = '\0'; + } + + p = tmp + strlen(tmp); + + for(q = --p; *q && *q != '-'; q--); + if(*q != '-' || q == tmp) { + return(-1); + } + for(p = --q; *p && *p != '-'; p--); + if(*p != '-' || p == tmp) { + return(-1); + } + strncpy(version, p+1, 64); + *p = '\0'; + + strncpy(name, tmp, 256); + + return(0); +} + static int sync_cleancache(int level) { const char *root, *cachedir; -- cgit v1.2.3