[pacman-dev] [PATCH 1/2] Improve mbasename performance
Dan McGee
dan at archlinux.org
Sat Jan 22 15:42:32 EST 2011
Rather than roll our own, use strrchr() instead, which glibc may have a
better implementation than the simple iteration method we were using.
Signed-off-by: Dan McGee <dan at archlinux.org>
---
src/pacman/query.c | 4 ++--
src/pacman/util.c | 18 +++++-------------
src/pacman/util.h | 2 +-
3 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/src/pacman/query.c b/src/pacman/query.c
index dea309a..f599360 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -109,8 +109,8 @@ static int query_fileowner(alpm_list_t *targets)
for(t = targets; t; t = alpm_list_next(t)) {
int found = 0;
filename = strdup(alpm_list_getdata(t));
- char *bname, *dname, *rpath;
- const char *root;
+ char *dname, *rpath;
+ const char *root, *bname;
struct stat buf;
alpm_list_t *i, *j;
diff --git a/src/pacman/util.c b/src/pacman/util.c
index d91d1d4..0377bf7 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -157,25 +157,17 @@ int rmrf(const char *path)
}
/** Parse the basename of a program from a path.
-* Grabbed from the uClibc source.
* @param path path to parse basename from
*
* @return everything following the final '/'
*/
-char *mbasename(const char *path)
+const char *mbasename(const char *path)
{
- const char *s;
- const char *p;
-
- p = s = path;
-
- while (*s) {
- if (*s++ == '/') {
- p = s;
- }
+ const char *last = strrchr(path, '/');
+ if(last) {
+ return(last + 1);
}
-
- return (char *)p;
+ return(path);
}
/** Parse the dirname of a program from a path.
diff --git a/src/pacman/util.h b/src/pacman/util.h
index a5c382d..78fe5b5 100644
--- a/src/pacman/util.h
+++ b/src/pacman/util.h
@@ -44,7 +44,7 @@ int trans_release(void);
int needs_root(void);
int getcols(void);
int rmrf(const char *path);
-char *mbasename(const char *path);
+const char *mbasename(const char *path);
char *mdirname(const char *path);
void indentprint(const char *str, int indent);
char *strtoupper(char *str);
--
1.7.3.5
More information about the pacman-dev
mailing list