*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> basename (3)              



NAME    [Toc]    [Back]

       dirname, basename - Parse pathname components

SYNOPSIS    [Toc]    [Back]

       #include <libgen.h>

       char *dirname(char *path);
       char *basename(char *path);

DESCRIPTION    [Toc]    [Back]

       dirname	and  basename  break  a  null-terminated  pathname string into
       directory and filename components.  In the usual case, dirname  returns
       the  string  up	to,  but  not  including,  the final '/', and basename
       returns the component following the final '/'.  Trailing '/' characters
       are not counted as part of the pathname.

       If  path does not contain a slash, dirname returns the string "." while
       basename returns a copy of path.  If path is the string "/", then  both
       dirname	and basename return the string "/".  If path is a NULL pointer
       or points to an empty string, then both dirname and basename return the
       string ".".

       Concatenating  the  string  returned  by dirname, a "/", and the string
       returned by basename yields a complete pathname.

       Both dirname and basename may modify the contents of path,  so  if  you
       need  to preserve the pathname string, copies should be passed to these
       functions.  Furthermore, dirname and basename may  return  pointers  to
       statically  allocated memory which may overwritten by subsequent calls.

       The following list of examples (taken from  SUSv2)  shows  the  strings
       returned by dirname and basename for different paths:

       path	      dirname	     basename
       "/usr/lib"     "/usr"	     "lib"
       "/usr/"	      "/"	     "usr"
       "usr"	      "."	     "usr"
       "/"	      "/"	     "/"
       "."	      "."	     "."
       ".."	      "."	     ".."

EXAMPLE    [Toc]    [Back]

       char *dirc, *basec, *bname, *dname;
       char *path = "/etc/passwd";

       dirc = strdup(path);
       basec = strdup(path);
       dname = dirname(dirc);
       bname = basename(basec);
       printf("dirname=%s, basename=%s\n", dname, bname);

RETURN VALUE    [Toc]    [Back]

       Both dirname and basename return pointers to null-terminated strings.

BUGS    [Toc]    [Back]

       In  versions  of glibc up to and including 2.2.1, dirname does not correctly
 handle pathnames with trailing '/' characters, and  generates  a
       segmentation violation if given a NULL argument.

CONFORMING TO    [Toc]    [Back]


SEE ALSO    [Toc]    [Back]

       dirname(1), basename(1),

GNU				  2000-12-14			    DIRNAME(3)
[ Back ]
 Similar pages
Name OS Title
pxfintset IRIX Allows components of a structure to be set or modified
DXmSvnSetEntryNumComponents Tru64 Provides the SVN widget with the number of components for an entry.
dce_version HP-UX print version information for HP DCE/9000 components
VkComponent IRIX Abstract base class for all ViewKit components
pxfstrset IRIX Allows values stored in individual components of a structure to be set
XmStringComponentType HP-UX Data type for compound string components
XmDirection HP-UX Data type for the direction of widget components
sphcolor IRIX set the diffuse r, g, b color components of bitmapped spheres.
backslash IRIX parse a backslash sequence
getopt IRIX parse command options
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service