|
|
1.1 root 1: /* makedir.c - make a directory */
2:
3: #include "../h/mh.h"
4: #include <stdio.h>
5:
6:
7: makedir (dir)
8: register char *dir;
9: {
10: int pid;
11: register char *cp;
12:
13: m_update ();
14: (void) fflush (stdout);
15:
16: #ifdef BSD42
17: if (getuid () == geteuid ()) {
18: if (mkdir (dir, 0755) == NOTOK) {
19: advise (dir, "unable to create directory");
20: return 0;
21: }
22: }
23: else
24: #endif BSD42
25: switch (pid = vfork ()) {
26: case NOTOK:
27: advise ("fork", "unable to");
28: return 0;
29:
30: case OK:
31: (void) setgid (getgid ());
32: (void) setuid (getuid ());
33:
34: execl ("/bin/mkdir", "mkdir", dir, NULLCP);
35: execl ("/usr/bin/mkdir", "mkdir", dir, NULLCP);
36: fprintf (stderr, "unable to exec ");
37: perror ("mkdir");
38: _exit (-1);
39:
40: default:
41: if (pidXwait (pid, "mkdir"))
42: return 0;
43: break;
44: }
45:
46: if ((cp = m_find ("folder-protect")) == NULL)
47: cp = foldprot;
48: (void) chmod (dir, atooi (cp));
49: return 1;
50: }
51:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.