]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
mybasename: simplify code and avoid allocating memory at all
authorBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 28 Apr 2022 08:23:22 +0000 (10:23 +0200)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 20 Oct 2022 13:50:22 +0000 (15:50 +0200)
include/strgen.h
src/mlmmj-process.c
src/strgen.c

index 1e623d14c5ef1fa0098c30b1de133efd7fae04c4..32321a3ee7c439fa3a1e6231176f6d1bc4402f15 100644 (file)
@@ -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);
index 2afc3172cc34b2357e4c60c7b906bf0b3430347e..aa9a5b2222bc4ea04499c4003b13b43a28ffad34 100644 (file)
@@ -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
index 1be61b35d70117040ee6ad49f4d3033b106ee2b4..5ce8cdf9867abc3507cd9d94241bbc13e4be15d2 100644 (file)
@@ -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)