Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BASENAME(3)		 BSD 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	con-
     sists entirely of `/' characters, a pointer to the	string "/" is re-
     turned.  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 allo-
     cated 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.	 Fu-
     ture 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 writ-
     ing code which calls this function	if portability is desired.

BSD				 July 29, 2016				   BSD

NAME | SYNOPSIS | DESCRIPTION | IMPLEMENTATION NOTES | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY | AUTHORS | CAVEATS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=basename&sektion=3&manpath=FreeBSD+11.0-RELEASE>

home | help