]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/busybox/busybox-1.00/celf-ash-builtins.patch
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / busybox / busybox-1.00 / celf-ash-builtins.patch
1 diff -Naur busybox-1.00-pre3.orig/coreutils/echo.c busybox-1.00-pre3/coreutils/echo.c
2 --- busybox-1.00-pre3.orig/coreutils/echo.c     2003-03-19 12:11:33.000000000 +0300
3 +++ busybox-1.00-pre3/coreutils/echo.c  2003-11-07 17:47:35.000000000 +0300
4 @@ -122,7 +122,11 @@
5  #endif
6  
7  DONE:
8 -       bb_fflush_stdout_and_exit(EXIT_SUCCESS);
9 +#ifdef CONFIG_FEATURE_BUILTIN_ECHO
10 +        return EXIT_SUCCESS;
11 +#else
12 +        bb_fflush_stdout_and_exit(EXIT_SUCCESS);
13 +#endif
14  }
15  
16  /*-
17 diff -Naur busybox-1.00-pre3.orig/coreutils/test.c busybox-1.00-pre3/coreutils/test.c
18 --- busybox-1.00-pre3.orig/coreutils/test.c     2003-07-15 01:20:45.000000000 +0400
19 +++ busybox-1.00-pre3/coreutils/test.c  2003-11-07 17:47:35.000000000 +0300
20 @@ -188,19 +188,19 @@
21         /* Implement special cases from POSIX.2, section 4.62.4 */
22         switch (argc) {
23         case 1:
24 -               exit(1);
25 +               return (1);
26         case 2:
27 -               exit(*argv[1] == '\0');
28 +               return (*argv[1] == '\0');
29         case 3:
30                 if (argv[1][0] == '!' && argv[1][1] == '\0') {
31 -                       exit(!(*argv[2] == '\0'));
32 +                       return (!(*argv[2] == '\0'));
33                 }
34                 break;
35         case 4:
36                 if (argv[1][0] != '!' || argv[1][1] != '\0') {
37                         if (t_lex(argv[2]), t_wp_op && t_wp_op->op_type == BINOP) {
38                                 t_wp = &argv[1];
39 -                               exit(binop() == 0);
40 +                               return (binop() == 0);
41                         }
42                 }
43                 break;
44 @@ -208,7 +208,7 @@
45                 if (argv[1][0] == '!' && argv[1][1] == '\0') {
46                         if (t_lex(argv[3]), t_wp_op && t_wp_op->op_type == BINOP) {
47                                 t_wp = &argv[2];
48 -                               exit(!(binop() == 0));
49 +                               return (!(binop() == 0));
50                         }
51                 }
52                 break;
53 diff -Naur busybox-1.00-pre3.orig/include/usage.h busybox-1.00-pre3/include/usage.h
54 --- busybox-1.00-pre3.orig/include/usage.h      2003-08-29 18:18:26.000000000 +0400
55 +++ busybox-1.00-pre3/include/usage.h   2003-11-07 17:47:59.000000000 +0300
56 @@ -1760,6 +1760,13 @@
57         "quit\n" \
58         "221 foobar closing connection\n" 
59  
60 +#define nice_trivial_usage \
61 +       "[OPTION] [COMMAND [ARG]...]"
62 +#define nice_full_usage \
63 +       "Run  COMMAND with an adjusted scheduling priority."
64 +#define nice_example_usage \
65 +       "$ nice -n 0 /tmp/foo \n"
66 +
67  #define netstat_trivial_usage \
68         "[-laenrtuwx]"
69  #define netstat_full_usage \
70 diff -Naur busybox-1.00-pre3.orig/shell/Config.in busybox-1.00-pre3/shell/Config.in
71 --- busybox-1.00-pre3.orig/shell/Config.in      2003-09-12 08:51:25.000000000 +0400
72 +++ busybox-1.00-pre3/shell/Config.in   2003-11-07 17:47:59.000000000 +0300
73 @@ -53,6 +53,34 @@
74         help
75           Enable job control in the ash shell.
76  
77 +config CONFIG_ASH_PIPE_OPTIMIZATION
78 +        bool "  Enable ash pipe optimization "
79 +        default y
80 +        depends on CONFIG_ASH
81 +        help
82 +          Eliminate cat at the beginning of the pipe.
83 +
84 +config CONFIG_FEATURE_BUILTIN_TEST
85 +       bool "  Builtin test command"
86 +       default y
87 +       depends on CONFIG_ASH
88 +       help
89 +         Builtin test command"
90 +
91 +config CONFIG_FEATURE_BUILTIN_ECHO
92 +        bool "  Builtin echo command"
93 +        default y
94 +        depends on CONFIG_ASH
95 +        help
96 +          Builtin echo command"
97 +
98 +config CONFIG_FEATURE_BUILTIN_PIDOF
99 +        bool "  Builtin pidof command"
100 +        default y
101 +        depends on CONFIG_ASH && CONFIG_PIDOF
102 +        help
103 +          Builtin pidof command"
104 +
105  config CONFIG_ASH_ALIAS
106         bool "  Enable alias support"
107         default y
108 diff -Naur busybox-1.00-pre3.orig/shell/ash.c busybox-1.00-pre3/shell/ash.c
109 --- busybox-1.00-pre3.orig/shell/ash.c  2003-09-02 06:36:17.000000000 +0400
110 +++ busybox-1.00-pre3/shell/ash.c       2003-11-07 17:47:59.000000000 +0300
111 @@ -1259,6 +1259,16 @@
112  #ifdef JOBS
113  static int killcmd(int, char **);
114  #endif
115 +#ifdef CONFIG_FEATURE_BUILTIN_TEST
116 +static int testcmd(int, char **);
117 +#endif
118 +#ifdef CONFIG_FEATURE_BUILTIN_ECHO
119 +static int echocmd(int, char**);
120 +#endif
121 +#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
122 +static int pidofcmd(int, char **); 
123 +#endif
124 +
125  
126  /*      $NetBSD: mail.h,v 1.9 2002/11/24 22:35:40 christos Exp $        */
127  
128 @@ -1281,39 +1291,6 @@
129         /* unsigned flags; */
130  };
131  
132 -#ifdef CONFIG_ASH_CMDCMD
133 -# ifdef JOBS
134 -#  ifdef CONFIG_ASH_ALIAS
135 -#    define COMMANDCMD (builtincmd + 7)
136 -#    define EXECCMD (builtincmd + 10)
137 -#  else
138 -#    define COMMANDCMD (builtincmd + 6)
139 -#    define EXECCMD (builtincmd + 9)
140 -#  endif
141 -# else /* ! JOBS */
142 -#  ifdef CONFIG_ASH_ALIAS
143 -#    define COMMANDCMD (builtincmd + 6)
144 -#    define EXECCMD (builtincmd + 9)
145 -#  else
146 -#    define COMMANDCMD (builtincmd + 5)
147 -#    define EXECCMD (builtincmd + 8)
148 -#  endif
149 -# endif /* JOBS */
150 -#else   /* ! CONFIG_ASH_CMDCMD */
151 -# ifdef JOBS
152 -#  ifdef CONFIG_ASH_ALIAS
153 -#    define EXECCMD (builtincmd + 9)
154 -#  else
155 -#    define EXECCMD (builtincmd + 8)
156 -#  endif
157 -# else /* ! JOBS */
158 -#  ifdef CONFIG_ASH_ALIAS
159 -#    define EXECCMD (builtincmd + 8)
160 -#  else
161 -#    define EXECCMD (builtincmd + 7)
162 -#  endif
163 -# endif /* JOBS */
164 -#endif /* CONFIG_ASH_CMDCMD */
165  
166  #define BUILTIN_NOSPEC  "0"
167  #define BUILTIN_SPECIAL "1"
168 @@ -1328,65 +1305,21 @@
169  #define IS_BUILTIN_REGULAR(builtincmd) ((builtincmd)->name[0] & 2)
170  
171  static const struct builtincmd builtincmd[] = {
172 -       { BUILTIN_SPEC_REG      ".", dotcmd },
173 -       { BUILTIN_SPEC_REG      ":", truecmd },
174 -#ifdef CONFIG_ASH_ALIAS
175 -       { BUILTIN_REG_ASSG      "alias", aliascmd },
176 -#endif
177 -#ifdef JOBS
178 -       { BUILTIN_REGULAR       "bg", bgcmd },
179 -#endif
180 -       { BUILTIN_SPEC_REG      "break", breakcmd },
181 -       { BUILTIN_REGULAR       "cd", cdcmd },
182 -       { BUILTIN_NOSPEC        "chdir", cdcmd },
183 -#ifdef CONFIG_ASH_CMDCMD
184 -       { BUILTIN_REGULAR       "command", commandcmd },
185 -#endif
186 -       { BUILTIN_SPEC_REG      "continue", breakcmd },
187 -       { BUILTIN_SPEC_REG      "eval", evalcmd },
188 -       { BUILTIN_SPEC_REG      "exec", execcmd },
189 -       { BUILTIN_SPEC_REG      "exit", exitcmd },
190 -       { BUILTIN_SPEC_REG_ASSG "export", exportcmd },
191 -       { BUILTIN_REGULAR       "false", falsecmd },
192 -#ifdef JOBS
193 -       { BUILTIN_REGULAR       "fg", fgcmd },
194 -#endif
195 -#ifdef CONFIG_ASH_GETOPTS
196 -       { BUILTIN_REGULAR       "getopts", getoptscmd },
197 -#endif
198 -       { BUILTIN_NOSPEC        "hash", hashcmd },
199 -#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
200 -       { BUILTIN_NOSPEC        "help", helpcmd },
201 -#endif
202 -#ifdef JOBS
203 -       { BUILTIN_REGULAR       "jobs", jobscmd },
204 -       { BUILTIN_REGULAR       "kill", killcmd },
205 -#endif
206 -#ifdef CONFIG_ASH_MATH_SUPPORT
207 -       { BUILTIN_NOSPEC        "let", letcmd },
208 -#endif
209 -       { BUILTIN_ASSIGN        "local", localcmd },
210 -       { BUILTIN_NOSPEC        "pwd", pwdcmd },
211 -       { BUILTIN_REGULAR       "read", readcmd },
212 -       { BUILTIN_SPEC_REG_ASSG "readonly", exportcmd },
213 -       { BUILTIN_SPEC_REG      "return", returncmd },
214 -       { BUILTIN_SPEC_REG      "set", setcmd },
215 -       { BUILTIN_SPEC_REG      "shift", shiftcmd },
216 -       { BUILTIN_SPEC_REG      "times", timescmd },
217 -       { BUILTIN_SPEC_REG      "trap", trapcmd },
218 -       { BUILTIN_REGULAR       "true", truecmd },
219 -       { BUILTIN_NOSPEC        "type", typecmd },
220 -       { BUILTIN_NOSPEC        "ulimit", ulimitcmd },
221 -       { BUILTIN_REGULAR       "umask", umaskcmd },
222 -#ifdef CONFIG_ASH_ALIAS
223 -       { BUILTIN_REGULAR       "unalias", unaliascmd },
224 -#endif
225 -       { BUILTIN_SPEC_REG      "unset", unsetcmd },
226 -       { BUILTIN_REGULAR       "wait", waitcmd },
227 +#define BUILTIN_COMMAND_SPEC(code, str, func) {str, func},
228 +#include "ash.d"
229 +{}
230  };
231  
232 -#define NUMBUILTINS  (sizeof (builtincmd) / sizeof (struct builtincmd) )
233 +enum {
234 +#define BUILTIN_COMMAND_SPEC(code, str, func) code,
235 +#include "ash.d"
236 +NUMBUILTINS
237 +};
238  
239 +#ifdef CONFIG_ASH_CMDCMD
240 +#define COMMANDCMD (builtincmd + COMMAND_CMD)
241 +#endif
242 +#define EXECCMD (builtincmd + EXEC_CMD)
243  
244  
245  struct cmdentry {
246 @@ -1678,7 +1611,8 @@
247  
248        /* from input.c: */
249        {
250 -             basepf.nextc = basepf.buf = basebuf;
251 +             struct parsefile* pf = &basepf;
252 +             pf->nextc = pf->buf = basebuf;
253        }
254  
255        /* from trap.c: */
256 @@ -2678,6 +2612,14 @@
257   * Called to reset things after an exception.
258   */
259  
260 +#ifdef CONFIG_FEATURE_BUILTIN_ECHO
261 +static int
262 +echocmd(int argc, char **argv)
263 +{
264 +        return echo_main(argc, argv);
265 +}
266 +#endif
267 +
268  /*
269   * The eval commmand.
270   */
271 @@ -3028,6 +2970,23 @@
272  }
273  
274  
275 +static int
276 +cat_file(union node *n)
277 +{
278 +#ifdef CONFIG_ASH_PIPE_OPTIMIZATION
279 +  if (n->type == NCMD
280 +            && n->ncmd.args != NULL
281 +      && strcmp(n->ncmd.args->narg.text, "cat") == 0
282 +            && n->ncmd.args->narg.next != NULL
283 +            && *n->ncmd.args->narg.next->narg.text != '-'
284 +      && n->ncmd.args->narg.next->narg.next == NULL)
285 +    {
286 +      return open(n->ncmd.args->narg.next->narg.text, O_RDONLY);
287 +    }
288 +#endif
289 +  return -1;
290 +}
291 +
292  
293  /*
294   * Evaluate a pipeline.  All the processes in the pipeline are children
295 @@ -3057,7 +3016,11 @@
296                 prehash(lp->n);
297                 pip[1] = -1;
298                 if (lp->next) {
299 -                       if (pipe(pip) < 0) {
300 +                        if (prevfd < 0 && (prevfd = cat_file(lp->n)) >= 0) {
301 +                               // it is cat at the beginning of the pipe                           
302 +                                continue;
303 +                        }
304 +                       if (pipe(pip) < 0) {
305                                 close(prevfd);
306                                 error("Pipe call failed");
307                         }
308 @@ -3104,11 +3067,11 @@
309  {
310         int saveherefd;
311  
312 -       result->fd = -1;
313 +       result->fd = cat_file(n);
314         result->buf = NULL;
315         result->nleft = 0;
316         result->jp = NULL;
317 -       if (n == NULL) {
318 +       if (n == NULL || result->fd >= 0) {
319                 goto out;
320         }
321  
322 @@ -3562,6 +3525,24 @@
323         }
324  }
325  
326 +#ifdef CONFIG_FEATURE_BUILTIN_TEST
327 +static int
328 +testcmd(int argc, char** argv)
329 +{
330 +  bb_applet_name = argv[0];
331 +  return test_main(argc, argv);
332 +}
333 +#endif
334 +
335 +#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
336 +static int
337 +pidofcmd(int argc, char** argv)
338 +{
339 +  bb_applet_name = argv[0];
340 +  return pidof_main(argc, argv);
341 +}
342 +#endif
343 +
344  
345  static int
346  falsecmd(int argc, char **argv)
347 @@ -4943,7 +4924,9 @@
348                 ckfree(in.buf);
349         if (in.fd >= 0) {
350                 close(in.fd);
351 -               back_exitstatus = waitforjob(in.jp);
352 +               if (in.jp != NULL) { 
353 +                       back_exitstatus = waitforjob(in.jp);
354 +               }
355         }
356         INTON;
357  
358 diff -Naur busybox-1.00-pre3.orig/shell/ash.d busybox-1.00-pre3/shell/ash.d
359 --- busybox-1.00-pre3.orig/shell/ash.d  1970-01-01 03:00:00.000000000 +0300
360 +++ busybox-1.00-pre3/shell/ash.d       2003-11-07 17:47:59.000000000 +0300
361 @@ -0,0 +1,70 @@
362 +BUILTIN_COMMAND_SPEC(DOT_CMD,     BUILTIN_SPEC_REG      ".", dotcmd)
363 +BUILTIN_COMMAND_SPEC(COMMA_CMD,   BUILTIN_SPEC_REG      ":", truecmd)
364 +#ifdef CONFIG_FEATURE_BUILTIN_TEST
365 +BUILTIN_COMMAND_SPEC(RPAR_CMD,    BUILTIN_REGULAR       "[", testcmd)
366 +#endif
367 +#ifdef CONFIG_ASH_ALIAS
368 +BUILTIN_COMMAND_SPEC(ALIAS_CMD,   BUILTIN_REG_ASSG      "alias", aliascmd)
369 +#endif
370 +#ifdef JOBS
371 +BUILTIN_COMMAND_SPEC(BG_CMD,      BUILTIN_REGULAR       "bg", bgcmd)
372 +#endif
373 +BUILTIN_COMMAND_SPEC(BREAK_CMD,   BUILTIN_SPEC_REG      "break", breakcmd)
374 +BUILTIN_COMMAND_SPEC(CD_CMD,      BUILTIN_REGULAR       "cd", cdcmd)
375 +BUILTIN_COMMAND_SPEC(CHDIR_CMD,   BUILTIN_NOSPEC        "chdir", cdcmd)
376 +#ifdef CONFIG_ASH__CMD_CMD
377 +BUILTIN_COMMAND_SPEC(COMMAND_CMD, BUILTIN_REGULAR       "command", commandcmd)
378 +#endif
379 +BUILTIN_COMMAND_SPEC(CONTINUE_CMD,BUILTIN_SPEC_REG      "continue", breakcmd)
380 +#ifdef CONFIG_FEATURE_BUILTIN_ECHO
381 +BUILTIN_COMMAND_SPEC(ECHO_CMD,    BUILTIN_REGULAR       "echo", echocmd)
382 +#endif
383 +BUILTIN_COMMAND_SPEC(EVAL_CMD,    BUILTIN_SPEC_REG      "eval", evalcmd)
384 +BUILTIN_COMMAND_SPEC(EXEC_CMD,    BUILTIN_SPEC_REG      "exec", execcmd)
385 +BUILTIN_COMMAND_SPEC(EXIT_CMD,    BUILTIN_SPEC_REG      "exit", exitcmd)
386 +BUILTIN_COMMAND_SPEC(EXPORT_CMD,  BUILTIN_SPEC_REG_ASSG "export", exportcmd)
387 +BUILTIN_COMMAND_SPEC(FALSE_CMD,   BUILTIN_REGULAR       "false", falsecmd)
388 +#ifdef JOBS
389 +BUILTIN_COMMAND_SPEC(FG_CMD,      BUILTIN_REGULAR       "fg", fgcmd)
390 +#endif
391 +#ifdef CONFIG_ASH_GETOPTS
392 +BUILTIN_COMMAND_SPEC(GETOPTS_CMD, BUILTIN_REGULAR       "getopts", getoptscmd)
393 +#endif
394 +BUILTIN_COMMAND_SPEC(HASH_CMD,    BUILTIN_NOSPEC        "hash", hashcmd)
395 +#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
396 +BUILTIN_COMMAND_SPEC(HELP_CMD,    BUILTIN_NOSPEC        "help", helpcmd)
397 +#endif
398 +#ifdef JOBS
399 +BUILTIN_COMMAND_SPEC(JOBS_CMD,    BUILTIN_REGULAR       "jobs", jobscmd)
400 +BUILTIN_COMMAND_SPEC(KILL_CMD,    BUILTIN_REGULAR       "kill", killcmd)
401 +#endif
402 +#ifdef CONFIG_ASH_MATH_SUPPORT
403 +BUILTIN_COMMAND_SPEC(LET_CMD,     BUILTIN_NOSPEC        "let", letcmd)
404 +#endif
405 +BUILTIN_COMMAND_SPEC(LOCAL_CMD,   BUILTIN_ASSIGN        "local", localcmd)
406 +#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
407 +BUILTIN_COMMAND_SPEC(PIDOF_CMD,   BUILTIN_REGULAR       "pidof", pidofcmd)
408 +#endif
409 +BUILTIN_COMMAND_SPEC(PWD_CMD,     BUILTIN_NOSPEC        "pwd", pwdcmd)
410 +BUILTIN_COMMAND_SPEC(READ_CMD,    BUILTIN_REGULAR       "read", readcmd)
411 +BUILTIN_COMMAND_SPEC(READONLY_CMD,BUILTIN_SPEC_REG_ASSG "readonly", exportcmd)
412 +BUILTIN_COMMAND_SPEC(RETURN_CMD,  BUILTIN_SPEC_REG      "return", returncmd)
413 +BUILTIN_COMMAND_SPEC(SET_CMD,     BUILTIN_SPEC_REG      "set", setcmd)
414 +BUILTIN_COMMAND_SPEC(SHIFT_CMD,   BUILTIN_SPEC_REG      "shift", shiftcmd)
415 +#ifdef CONFIG_FEATURE_BUILTIN_TEST
416 +BUILTIN_COMMAND_SPEC(TEST_CMD,    BUILTIN_REGULAR       "test", testcmd)
417 +#endif
418 +BUILTIN_COMMAND_SPEC(TIMES_CMD,   BUILTIN_SPEC_REG      "times", timescmd)
419 +BUILTIN_COMMAND_SPEC(TRAP_CMD,    BUILTIN_SPEC_REG      "trap", trapcmd)
420 +BUILTIN_COMMAND_SPEC(TRUE_CMD,    BUILTIN_REGULAR       "true", truecmd)
421 +BUILTIN_COMMAND_SPEC(TYPE_CMD,    BUILTIN_NOSPEC        "type", typecmd)
422 +BUILTIN_COMMAND_SPEC(ULIMIT_CMD,  BUILTIN_NOSPEC        "ulimit", ulimitcmd)
423 +BUILTIN_COMMAND_SPEC(UMASK_CMD,   BUILTIN_REGULAR       "umask", umaskcmd)
424 +#ifdef CONFIG_ASH_ALIAS
425 +BUILTIN_COMMAND_SPEC(UNALIAS_CMD, BUILTIN_REGULAR       "unalias", unaliascmd)
426 +#endif
427 +BUILTIN_COMMAND_SPEC(UNSET_CMD,   BUILTIN_SPEC_REG      "unset", unsetcmd)
428 +BUILTIN_COMMAND_SPEC(WAIT_CMD,    BUILTIN_REGULAR       "wait", waitcmd)
429 +
430 +
431 +#undef BUILTIN_COMMAND_SPEC