+ exit(exitval);
+}
+
+build(path)
+ char *path;
+{
+ register char *p;
+ struct stat sb;
+ int create, ch;
+
+ for (create = 0, p = path;; ++p)
+ if (!*p || *p == '/') {
+ ch = *p;
+ *p = '\0';
+ if (stat(path, &sb)) {
+ if (errno != ENOENT || mkdir(path, 0777) < 0) {
+ (void)fprintf(stderr, "mkdir: %s: %s\n",
+ path, strerror(errno));
+ return(1);
+ }
+ create = 1;
+ }
+ if (!(*p = ch))
+ break;
+ }
+ if (!create) {
+ (void)fprintf(stderr, "mkdir: %s: %s\n", path,
+ strerror(EEXIST));
+ return(1);
+ }
+ return(0);
+}
+
+usage()
+{
+ (void)fprintf(stderr, "usage: mkdir [-p] dirname ...\n");
+ exit(1);