- }
- else {
- /* Ummm, why do we want to avoid creating directories with the effective
- user ID? None of the nmh tools are installed such that the effective
- should be different from the real, and if some parent process made
- the two be different, I don't see why it should be our job to enforce
- the real UID. Also, why the heck do we call the mkdir executable
- rather than the library function in this case?? If we do want to
- call the mkdir executable, we should at least be giving it -p (and
- change the single chmod() call below) so it can successfully create
- nested directories like the above code can.
-
- -- Dan Harkless <dan-nmh@dilvish.speed.net> */
- switch (pid = vfork()) {
- case -1:
- advise ("fork", "unable to");
- return 0;
-
- case 0:
- setgid (getgid ());
- setuid (getuid ());
-
- execl ("/bin/mkdir", "mkdir", dir, NULL);
- execl ("/usr/bin/mkdir", "mkdir", dir, NULL);
- fprintf (stderr, "unable to exec ");
- perror ("mkdir");
- _exit (-1);
-
- default:
- if (pidXwait(pid, "mkdir"))
- return 0;
- break;
- }
-
- chmod (dir, folder_perms);
- }
-
- umask(saved_umask); /* put the user's umask back */