NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | ATTRIBUTES | SEE ALSO | NOTES
cc [ flag ... ] file ... -lgen [ library ... ] #include <libgen.h>int mkdirp(const char *path, mode_t mode);
mkdirp() creates all the missing directories in the given path with the given mode. See chmod(2) for the values of mode.
rmdirp() removes directories in path dir. This removal starts at the end of the path and moves back toward the root as far as possible. If an error occurs, the remaining path is stored in dir1. rmdirp() returns a 0 only if it is able to remove every directory in the path.
If a needed directory cannot be created, mkdirp() returns -1 and sets errno to one of the mkdir() error numbers. If all the directories are created, or existed to begin with, it returns zero.
/* create scratch directories */ if(mkdirp("/tmp/sub1/sub2/sub3", 0755) == -1) { fprintf(stderr, "cannot create directory"); exit(1); } chdir("/tmp/sub1/sub2/sub3"); . . . /* cleanup */ chdir("/tmp"); rmdirp("sub1/sub2/sub3");
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
MT-Level | MT-Safe |
mkdirp() uses malloc(3C) to allocate temporary space for the string.
rmdirp() returns -2 if a ``.'' or ``..'' is in the path and -3 if an attempt is made to remove the current directory. If an error occurs other than one of the above, -1 is returned.
When compiling multithreaded applications, the _REENTRANT flag must be defined on the compile line. This flag should only be used in multithreaded applications.
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | ATTRIBUTES | SEE ALSO | NOTES