mirror of
https://github.com/moparisthebest/pacman
synced 2025-01-10 21:38:19 -05:00
Improve mbasename performance
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@archlinux.org>
This commit is contained in:
parent
d16a5ae7dd
commit
4d291508c2
@ -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;
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user