From: Baptiste Daroussin Date: Thu, 28 Apr 2022 08:23:22 +0000 (+0200) Subject: mybasename: simplify code and avoid allocating memory at all X-Git-Tag: RELEASE_1_4_0a1~79 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27afbe644ee61bd74e4b2b4e3a638d657713bb5f;p=thirdparty%2Fmlmmj.git mybasename: simplify code and avoid allocating memory at all --- diff --git a/include/strgen.h b/include/strgen.h index 1e623d14..32321a3e 100644 --- a/include/strgen.h +++ b/include/strgen.h @@ -32,7 +32,7 @@ char *genlistfqdn(const char *listaddr); char *concatstr(int count, ...); char *hostnamestr(void); char *mydirname(const char *path); -char *mybasename(const char *path); +const char *mybasename(const char *path); char *cleanquotedp(const char *qpstr); char *genmsgid(const char *fqdn); char *gendatestr(void); diff --git a/src/mlmmj-process.c b/src/mlmmj-process.c index 2afc3172..aa9a5b22 100644 --- a/src/mlmmj-process.c +++ b/src/mlmmj-process.c @@ -137,7 +137,7 @@ static void newmoderated(const char *listdir, const char *mailfilename, memory_lines_state *mls; char *queuefilename = NULL; const char *efromismod = NULL; - char *mailbasename = mybasename(mailfilename), *to, *reject; + const char *mailbasename = mybasename(mailfilename), *to, *reject; int notifymod = 0, status; pid_t childpid, pid; #if 0 diff --git a/src/strgen.c b/src/strgen.c index 1be61b35..5ce8cdf9 100644 --- a/src/strgen.c +++ b/src/strgen.c @@ -182,19 +182,14 @@ char *mydirname(const char *path) return ret; } -char *mybasename(const char *path) +const char *mybasename(const char *path) { - char *mypath, *bname, *ret; + const char *r; - mypath = xstrdup(path); - bname = basename(mypath); - ret = xstrdup(bname); - - /* We don't free mypath until we have strdup()'ed bname, because - * basename() returns a pointer into mypath -- mortenp 20040527 */ - free(mypath); - - return ret; + r = strrchr(path, '/'); + if (r == NULL) + return (path); + return (++r); } char *cleanquotedp(const char *qpstr)