Unix/Linux Go Back    

RedHat 9 (Linux i386) - man page for dirname (redhat section 3)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)

DIRNAME(3)			    Linux Programmer's Manual			       DIRNAME(3)

       dirname, basename - Parse pathname components

       #include <libgen.h>

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

       The  functions 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  base-
       name 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  be  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"
       "/"	      "/"	     "/"
       "."	      "."	     "."
       ".."	      "."	     ".."

       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);

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

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


       dirname(1), basename(1),

GNU					    2000-12-14				       DIRNAME(3)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 10:30 AM.