|
|
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.