summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/basename.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2009-10-06 14:05:57 +0000
committerrwatson <rwatson@FreeBSD.org>2009-10-06 14:05:57 +0000
commitfd2a94971be3ae7d27b361e6a81e7dea97a15966 (patch)
treea93ad50032ecad21316acf5415e575f4f5e2fc27 /lib/libc/gen/basename.c
parentb1ce942125b70ba14ecffee512770eea9eb85b0f (diff)
downloadFreeBSD-src-fd2a94971be3ae7d27b361e6a81e7dea97a15966.zip
FreeBSD-src-fd2a94971be3ae7d27b361e6a81e7dea97a15966.tar.gz
Add basename_r(3) to complement basename(3). basename_r(3) which accepts
a caller-allocated buffer of at least MAXPATHLEN, rather than using a global buffer. MFC after: 1 month Sponsored by: Google
Diffstat (limited to 'lib/libc/gen/basename.c')
-rw-r--r--lib/libc/gen/basename.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/lib/libc/gen/basename.c b/lib/libc/gen/basename.c
index 9552ab3..9588c28 100644
--- a/lib/libc/gen/basename.c
+++ b/lib/libc/gen/basename.c
@@ -40,18 +40,12 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
char *
-basename(path)
+basename_r(path, bname)
const char *path;
+ char *bname;
{
- static char *bname = NULL;
const char *endp, *startp;
- if (bname == NULL) {
- bname = (char *)malloc(MAXPATHLEN);
- if (bname == NULL)
- return(NULL);
- }
-
/* Empty or NULL string gets treated as "." */
if (path == NULL || *path == '\0') {
(void)strcpy(bname, ".");
@@ -82,3 +76,17 @@ basename(path)
bname[endp - startp + 1] = '\0';
return(bname);
}
+
+char *
+basename(path)
+ const char *path;
+{
+ static char *bname = NULL;
+
+ if (bname == NULL) {
+ bname = (char *)malloc(MAXPATHLEN);
+ if (bname == NULL)
+ return (NULL);
+ }
+ return (basename_r(path, bname));
+}
OpenPOWER on IntegriCloud