aboutsummaryrefslogtreecommitdiff
path: root/toys/mkdir.c
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2012-08-25 14:25:22 -0500
committerRob Landley <rob@landley.net>2012-08-25 14:25:22 -0500
commit3a9241add947cb6d24b5de7a8927517426a78795 (patch)
treed122ab6570439cd6b17c7d73ed8d4e085e0b8a95 /toys/mkdir.c
parent689f095bc976417bf50810fe59a3b3ac32b21105 (diff)
downloadtoybox-3a9241add947cb6d24b5de7a8927517426a78795.tar.gz
Move commands into "posix", "lsb", and "other" menus/directories.
Diffstat (limited to 'toys/mkdir.c')
-rw-r--r--toys/mkdir.c76
1 files changed, 0 insertions, 76 deletions
diff --git a/toys/mkdir.c b/toys/mkdir.c
deleted file mode 100644
index 90329019..00000000
--- a/toys/mkdir.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* vi: set sw=4 ts=4:
- *
- * mkdir.c - Make directories
- *
- * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org>
- *
- * See http://pubs.opengroup.org/onlinepubs/009695399/utilities/mkdir.html
- *
- * TODO: Add -m
-
-USE_MKDIR(NEWTOY(mkdir, "<1p", TOYFLAG_BIN))
-
-config MKDIR
- bool "mkdir"
- default y
- help
- usage: mkdir [-p] [dirname...]
- Create one or more directories.
-
- -p make parent directories as needed.
-*/
-
-#include "toys.h"
-
-DEFINE_GLOBALS(
- long mode;
-)
-
-#define TT this.mkdir
-
-static int do_mkdir(char *dir)
-{
- struct stat buf;
- char *s;
-
- // mkdir -p one/two/three is not an error if the path already exists,
- // but is if "three" is a file. The others we dereference and catch
- // not-a-directory along the way, but the last one we must explicitly
- // test for. Might as well do it up front.
-
- if (!stat(dir, &buf) && !S_ISDIR(buf.st_mode)) {
- errno = EEXIST;
- return 1;
- }
-
- for (s=dir; ; s++) {
- char save=0;
-
- // Skip leading / of absolute paths.
- if (s!=dir && *s == '/' && toys.optflags) {
- save = *s;
- *s = 0;
- } else if (*s) continue;
-
- if (mkdir(dir, TT.mode)<0 && (!toys.optflags || errno != EEXIST))
- return 1;
-
- if (!(*s = save)) break;
- }
-
- return 0;
-}
-
-void mkdir_main(void)
-{
- char **s;
-
- TT.mode = 0777;
-
- for (s=toys.optargs; *s; s++) {
- if (do_mkdir(*s)) {
- perror_msg("cannot create directory '%s'", *s);
- toys.exitval = 1;
- }
- }
-}