aboutsummaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2009-04-22 13:41:59 +1000
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2009-04-23 04:44:26 +1000
commit37ec9a93b0d1ba7d3252f36842155194c7f0c4c0 (patch)
treefc9373551e8e39d8528910dc0192a2333926c86b /coreutils
parent95a9140eceb43d5dba205e171d7a5e09f67331ff (diff)
downloadbusybox-w32-37ec9a93b0d1ba7d3252f36842155194c7f0c4c0.tar.gz
busybox-w32-37ec9a93b0d1ba7d3252f36842155194c7f0c4c0.tar.bz2
busybox-w32-37ec9a93b0d1ba7d3252f36842155194c7f0c4c0.zip
fixes up to 1.6.1
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/echo.c6
-rw-r--r--coreutils/test.c40
2 files changed, 27 insertions, 19 deletions
diff --git a/coreutils/echo.c b/coreutils/echo.c
index 9aad2c2ba..085e8516c 100644
--- a/coreutils/echo.c
+++ b/coreutils/echo.c
@@ -33,7 +33,9 @@ int bb_echo(char **argv)
33 eflag = '\\', 33 eflag = '\\',
34 nflag = 1, /* 1 -- print '\n' */ 34 nflag = 1, /* 1 -- print '\n' */
35 }; 35 };
36 ++argv; 36 arg = *++argv;
37 if (!arg)
38 goto newline_ret;
37#else 39#else
38 const char *p; 40 const char *p;
39 char nflag = 1; 41 char nflag = 1;
@@ -107,9 +109,7 @@ int bb_echo(char **argv)
107 putchar(' '); 109 putchar(' ');
108 } 110 }
109 111
110#if ENABLE_FEATURE_FANCY_ECHO
111 newline_ret: 112 newline_ret:
112#endif
113 if (nflag) { 113 if (nflag) {
114 putchar('\n'); 114 putchar('\n');
115 } 115 }
diff --git a/coreutils/test.c b/coreutils/test.c
index fd10e6845..c26e7e572 100644
--- a/coreutils/test.c
+++ b/coreutils/test.c
@@ -182,19 +182,23 @@ static void initialize_group_array(void);
182int bb_test(int argc, char **argv) 182int bb_test(int argc, char **argv)
183{ 183{
184 int res; 184 int res;
185 char *arg0;
186 bool _off;
185 187
186 if (LONE_CHAR(argv[0], '[')) { 188 arg0 = strrchr(argv[0], '/');
189 if (!arg0++) arg0 = argv[0];
190 if (arg0[0] == '[') {
187 --argc; 191 --argc;
188 if (NOT_LONE_CHAR(argv[argc], ']')) { 192 if (!arg0[1]) { /* "[" ? */
189 bb_error_msg("missing ]"); 193 if (NOT_LONE_CHAR(argv[argc], ']')) {
190 return 2; 194 bb_error_msg("missing ]");
191 } 195 return 2;
192 argv[argc] = NULL; 196 }
193 } else if (strcmp(argv[0], "[[") == 0) { 197 } else { /* assuming "[[" */
194 --argc; 198 if (strcmp(argv[argc], "]]") != 0) {
195 if (strcmp(argv[argc], "]]")) { 199 bb_error_msg("missing ]]");
196 bb_error_msg("missing ]]"); 200 return 2;
197 return 2; 201 }
198 } 202 }
199 argv[argc] = NULL; 203 argv[argc] = NULL;
200 } 204 }
@@ -219,15 +223,19 @@ int bb_test(int argc, char **argv)
219 if (argc == 2) 223 if (argc == 2)
220 return *argv[1] == '\0'; 224 return *argv[1] == '\0';
221//assert(argc); 225//assert(argc);
222 if (LONE_CHAR(argv[1], '!')) { 226 /* remember if we saw argc==4 which wants *no* '!' test */
223 bool _off; 227 _off = argc - 4;
228 if (_off ?
229 (LONE_CHAR(argv[1], '!'))
230 : (argv[1][0] != '!' || argv[1][1] != '\0'))
231 {
224 if (argc == 3) 232 if (argc == 3)
225 return *argv[2] != '\0'; 233 return *argv[2] != '\0';
226 _off = argc - 4; 234
227 t_lex(argv[2 + _off]); 235 t_lex(argv[2 + _off]);
228 if (t_wp_op && t_wp_op->op_type == BINOP) { 236 if (t_wp_op && t_wp_op->op_type == BINOP) {
229 t_wp = &argv[1 + _off]; 237 t_wp = &argv[1 + _off];
230 return binop() == 0; 238 return binop() == _off;
231 } 239 }
232 } 240 }
233 t_wp = &argv[1]; 241 t_wp = &argv[1];
@@ -378,7 +386,7 @@ static int binop(void)
378static int filstat(char *nm, enum token mode) 386static int filstat(char *nm, enum token mode)
379{ 387{
380 struct stat s; 388 struct stat s;
381 int i; 389 int i = i; /* gcc 3.x thinks it can be used uninitialized */
382 390
383 if (mode == FILSYM) { 391 if (mode == FILSYM) {
384#ifdef S_IFLNK 392#ifdef S_IFLNK