diff options
author | Erik Andersen <andersen@codepoet.org> | 2000-02-07 05:29:42 +0000 |
---|---|---|
committer | Erik Andersen <andersen@codepoet.org> | 2000-02-07 05:29:42 +0000 |
commit | fac10d7c59f7db0facd5fb94de273310b9ec86e6 (patch) | |
tree | dccf8f905fc5807239883da9fca6597037d487fc /coreutils/mkdir.c | |
parent | 50bc101b7d6e847a9a0621ca3eb28c7117d095e5 (diff) | |
download | busybox-w32-fac10d7c59f7db0facd5fb94de273310b9ec86e6.tar.gz busybox-w32-fac10d7c59f7db0facd5fb94de273310b9ec86e6.tar.bz2 busybox-w32-fac10d7c59f7db0facd5fb94de273310b9ec86e6.zip |
A few minor updates. ;-)
Seriously though, read the Changelog for busybox 0.42,
which this is about to become...
-Erik
Diffstat (limited to 'coreutils/mkdir.c')
-rw-r--r-- | coreutils/mkdir.c | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/coreutils/mkdir.c b/coreutils/mkdir.c index 017ef9b08..8e3f51bfb 100644 --- a/coreutils/mkdir.c +++ b/coreutils/mkdir.c | |||
@@ -22,9 +22,13 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include "internal.h" | 24 | #include "internal.h" |
25 | #define bb_need_name_too_long | ||
26 | #define BB_DECLARE_EXTERN | ||
27 | #include "messages.c" | ||
28 | |||
25 | #include <stdio.h> | 29 | #include <stdio.h> |
26 | #include <errno.h> | 30 | #include <errno.h> |
27 | #include <sys/param.h> | 31 | #include <sys/param.h> /* for PATH_MAX */ |
28 | 32 | ||
29 | static const char mkdir_usage[] = | 33 | static const char mkdir_usage[] = |
30 | "mkdir [OPTION] DIRECTORY...\n\n" | 34 | "mkdir [OPTION] DIRECTORY...\n\n" |
@@ -40,27 +44,27 @@ static mode_t mode = 0777; | |||
40 | 44 | ||
41 | extern int mkdir_main(int argc, char **argv) | 45 | extern int mkdir_main(int argc, char **argv) |
42 | { | 46 | { |
43 | int i=FALSE; | 47 | int i = FALSE; |
44 | argc--; | 48 | argc--; |
45 | argv++; | 49 | argv++; |
46 | 50 | ||
47 | /* Parse any options */ | 51 | /* Parse any options */ |
48 | while (argc > 0 && **argv == '-') { | 52 | while (argc > 0 && **argv == '-') { |
49 | while (i==FALSE && *++(*argv)) { | 53 | while (i == FALSE && *++(*argv)) { |
50 | switch (**argv) { | 54 | switch (**argv) { |
51 | case 'm': | 55 | case 'm': |
52 | if (--argc == 0) | 56 | if (--argc == 0) |
53 | usage( mkdir_usage); | 57 | usage( mkdir_usage); |
54 | /* Find the specified modes */ | 58 | /* Find the specified modes */ |
55 | mode = 0; | 59 | mode = 0; |
56 | if ( parse_mode(*(++argv), &mode) == FALSE ) { | 60 | if (parse_mode(*(++argv), &mode) == FALSE ) { |
57 | fprintf(stderr, "Unknown mode: %s\n", *argv); | 61 | fprintf(stderr, "Unknown mode: %s\n", *argv); |
58 | exit( FALSE); | 62 | exit FALSE; |
59 | } | 63 | } |
60 | /* Set the umask for this process so it doesn't | 64 | /* Set the umask for this process so it doesn't |
61 | * screw up whatever the user just entered. */ | 65 | * screw up whatever the user just entered. */ |
62 | umask(0); | 66 | umask(0); |
63 | i=TRUE; | 67 | i = TRUE; |
64 | break; | 68 | break; |
65 | case 'p': | 69 | case 'p': |
66 | parentFlag = TRUE; | 70 | parentFlag = TRUE; |
@@ -73,7 +77,6 @@ extern int mkdir_main(int argc, char **argv) | |||
73 | argv++; | 77 | argv++; |
74 | } | 78 | } |
75 | 79 | ||
76 | |||
77 | if (argc < 1) { | 80 | if (argc < 1) { |
78 | usage( mkdir_usage); | 81 | usage( mkdir_usage); |
79 | } | 82 | } |
@@ -81,13 +84,16 @@ extern int mkdir_main(int argc, char **argv) | |||
81 | while (argc > 0) { | 84 | while (argc > 0) { |
82 | int status; | 85 | int status; |
83 | struct stat statBuf; | 86 | struct stat statBuf; |
84 | char buf[NAME_MAX]; | 87 | char buf[PATH_MAX + 1]; |
85 | 88 | if (strlen(*argv) > PATH_MAX - 1) { | |
89 | fprintf(stderr, name_too_long, "mkdir"); | ||
90 | exit FALSE; | ||
91 | } | ||
86 | strcpy (buf, *argv); | 92 | strcpy (buf, *argv); |
87 | status=stat(buf, &statBuf); | 93 | status = stat(buf, &statBuf); |
88 | if (parentFlag == FALSE && status != -1 && status != ENOENT ) { | 94 | if (parentFlag == FALSE && status != -1 && errno != ENOENT) { |
89 | fprintf(stderr, "%s: File exists\n", buf); | 95 | fprintf(stderr, "%s: File exists\n", buf); |
90 | exit( FALSE); | 96 | exit FALSE; |
91 | } | 97 | } |
92 | if (parentFlag == TRUE) { | 98 | if (parentFlag == TRUE) { |
93 | strcat( buf, "/"); | 99 | strcat( buf, "/"); |
@@ -96,13 +102,13 @@ extern int mkdir_main(int argc, char **argv) | |||
96 | else { | 102 | else { |
97 | if (mkdir (buf, mode) != 0 && parentFlag == FALSE) { | 103 | if (mkdir (buf, mode) != 0 && parentFlag == FALSE) { |
98 | perror(buf); | 104 | perror(buf); |
99 | exit( FALSE); | 105 | exit FALSE; |
100 | } | 106 | } |
101 | } | 107 | } |
102 | argc--; | 108 | argc--; |
103 | argv++; | 109 | argv++; |
104 | } | 110 | } |
105 | exit( TRUE); | 111 | exit TRUE; |
106 | } | 112 | } |
107 | 113 | ||
108 | 114 | ||