diff options
author | Aurelien Foret <aurelien@archlinux.org> | 2005-04-08 22:43:13 +0200 |
---|---|---|
committer | Aurelien Foret <aurelien@archlinux.org> | 2005-04-08 22:43:13 +0200 |
commit | 7775afa59b62ff47fb2bac9f9f10ae8c53cb6eb4 (patch) | |
tree | f3fd8ae2406fc7d5da5dccd175f8efbee6d96dd2 /lib | |
parent | 70481b0ee1e308de56b353b5932556326fa6474e (diff) | |
download | pacman-7775afa59b62ff47fb2bac9f9f10ae8c53cb6eb4.tar.gz pacman-7775afa59b62ff47fb2bac9f9f10ae8c53cb6eb4.tar.xz |
added function pkg_splitname (not used for now)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libalpm/package.c | 43 | ||||
-rw-r--r-- | lib/libalpm/package.h | 1 |
2 files changed, 44 insertions, 0 deletions
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 622fd99b..7e0854de 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -338,4 +338,47 @@ int pkg_isin(pmpkg_t *needle, PMList *haystack) return(0); } +int pkg_splitname(char *target, char *name, char *version) +{ + char tmp[(PKG_NAME_LEN-1)+1+(PKG_VERSION_LEN-1)+7+1]; + 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, (PKG_NAME_LEN-1)+1+(PKG_VERSION_LEN-1)+7+1); + /* trim file extension (if any) */ + if((p = strstr(tmp, PM_EXT_PKG))) { + *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); + } + if(version) { + STRNCPY(version, p+1, PKG_VERSION_LEN); + } + *p = 0; + + if(name) { + STRNCPY(name, tmp, PKG_NAME_LEN); + } + + return(0); +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h index 8c28a06a..aedb9b63 100644 --- a/lib/libalpm/package.h +++ b/lib/libalpm/package.h @@ -84,6 +84,7 @@ void pkg_free(pmpkg_t *pkg); pmpkg_t *pkg_load(char *pkgfile); int pkg_cmp(const void *p1, const void *p2); int pkg_isin(pmpkg_t *needle, PMList *haystack); +int pkg_splitname(char *target, char *name, char *version); #endif /* _ALPM_PACKAGE_H */ |