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);
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
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)