- while ((c = strchr((c + 1), '/')) != NULL) {
- *c = (char)0;
- if (access(path, X_OK)) {
- if (errno != ENOENT){
- advise (dir, "unable to create directory");
- return 0;
- }
- if (mkdir(path, 0775)) {
- advise (dir, "unable to create directory");
- return 0;
- }
- }
- *c = '/';
- }
-
- if (mkdir (dir, 0755) == -1) {
- advise (dir, "unable to create directory");
- return 0;
- }
- } else {
- switch (pid = vfork()) {
- case -1:
- advise ("fork", "unable to");
- return 0;
+ /*
+ ** Folders have definite desired permissions that are set -- we
+ ** don't want to interact with the umask. Clear it temporarily.
+ */
+ saved_umask = umask(0);