- execl ("/bin/mkdir", "mkdir", dir, NULL);
- execl ("/usr/bin/mkdir", "mkdir", dir, NULL);
- fprintf (stderr, "unable to exec ");
- perror ("mkdir");
- _exit (-1);
+ if (!had_an_error) {
+ /* Create the innermost nested subdirectory of the path we're being
+ asked to create. */
+ if (mkdir (dir, folder_perms) == -1) {
+ advise (dir, "unable to create directory");
+ had_an_error = 1;
+ }
+ }
+ }
+ 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.