Man

Command Section
BASENAME(3)            FreeBSD Library Functions Manual            BASENAME(3)

NAME
     basename - extract the base portion of a pathname

SYNOPSIS
     #include <libgen.h>

     char *
     basename(const char *path);

     char *
     basename_r(const char *path, char *bname);

DESCRIPTION
     The basename() function returns the last component from the pathname
     pointed to by path, deleting any trailing `/' characters.  If path
     consists entirely of `/' characters, a pointer to the string "/" is
     returned.  If path is a null pointer or the empty string, a pointer to
     the string "." is returned.

     The basename_r() variation accepts a buffer of at least MAXPATHLEN bytes
     in which to store the resulting component.

IMPLEMENTATION NOTES
     The basename() function returns a pointer to internal storage space
     allocated on the first call that will be overwritten by subsequent calls.

     Other vendor implementations of basename() may store their result in the
     input buffer, making it safe to use in multithreaded applications.
     Future versions of FreeBSD will follow this approach as well.
     basename_r() will then become obsolete.

RETURN VALUES
     On successful completion, basename() and basename_r() return pointers to
     the last component of path.

     If they fail, a null pointer is returned and the global variable errno is
     set to indicate the error.

ERRORS
     The following error codes may be set in errno:

     [ENAMETOOLONG]     The path component to be returned was larger than
                        MAXPATHLEN.

SEE ALSO
     basename(1), dirname(1), dirname(3)

STANDARDS
     The basename() function conforms to X/Open Portability Guide Issue 4,
     Version 2 (``XPG4.2'').

HISTORY
     The basename() function first appeared in OpenBSD 2.2 and FreeBSD 4.2.

AUTHORS
     Todd C. Miller

CAVEATS
     basename() returns a pointer to internal static storage space that will
     be overwritten by subsequent calls.

     Other vendor implementations of basename() may modify the contents of the
     string passed to basename(); this should be taken into account when
     writing code which calls this function if portability is desired.

FreeBSD 11.1-RELEASE-p4          July 29, 2016         FreeBSD 11.1-RELEASE-p4
Command Section