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, queuefd;
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 = mystrdup(path);
- bname = basename(mypath);
- ret = mystrdup(bname);
-
- /* We don't free mypath until we have strdup()'ed bname, because
- * basename() returns a pointer into mypath -- mortenp 20040527 */
- myfree(mypath);
-
- return ret;
+ r = strrchr(path, '/');
+ if (r == NULL)
+ return (path);
+ return (++r);
}
char *cleanquotedp(const char *qpstr)
ATF_TC(open_text);
ATF_TC(chomp);
ATF_TC(mydirname);
+ATF_TC(mybasename);
ATF_TC_HEAD(random_int, tc) { }
ATF_TC_HEAD(statctrl, tc) { }
ATF_TC_HEAD(open_text, tc) {}
ATF_TC_HEAD(chomp, tc) {}
ATF_TC_HEAD(mydirname, tc) {}
+ATF_TC_HEAD(mybasename, tc) {}
#ifndef NELEM
#define NELEM(array) (sizeof(array) / sizeof((array)[0]))
char plop[] = "/path/to/a/file";
ATF_REQUIRE_STREQ(mydirname(plop), "/path/to/a");
+}
+
+ATF_TC_BODY(mybasename, tc)
+{
+ char plop[] = "/path/to/a/file";
+ char plop1[] = "file";
+ ATF_REQUIRE_STREQ(mybasename(plop), "file");
+ ATF_REQUIRE_STREQ(mybasename(plop1), "file");
}
ATF_TP_ADD_TCS(tp)
ATF_TP_ADD_TC(tp, open_text);
ATF_TP_ADD_TC(tp, chomp);
ATF_TP_ADD_TC(tp, mydirname);
+ ATF_TP_ADD_TC(tp, mybasename);
return (atf_no_error());
}