Added CONFIG_CLEAR and CONFIG_RESET to config.maemo
[busybox4maemo] / shell / hush_doc.txt
1         This is how hush runs commands:
2
3 /* callsite: process_command_subs */
4 generate_stream_from_list(struct pipe *head) - handles `cmds`
5   create UNIX pipe
6   [v]fork
7   child:
8   redirect pipe output to stdout
9   _exit(run_list(head));   /* leaks memory */
10   parent:
11   return UNIX pipe's output fd
12   /* head is freed by the caller */
13
14 /* callsite: parse_and_run_stream */
15 run_and_free_list(struct pipe *)
16   run_list(struct pipe *)
17   free_pipe_list(struct pipe *)
18
19 /* callsites: generate_stream_from_list, run_and_free_list, pseudo_exec, run_pipe */
20 run_list(struct pipe *) - handles "cmd; cmd2 && cmd3", while/for/do loops
21   run_pipe - for every pipe in list
22
23 /* callsite: run_list */
24 run_pipe - runs "cmd1 | cmd2 | cmd3 [&]"
25   run_list - used if only one cmd and it is of the form "{cmds;}"
26   forks for every cmd if more than one cmd or if & is there
27   pseudo_exec - runs each "cmdN" (handles builtins etc)
28
29 /* callsite: run_pipe */
30 pseudo_exec - runs "cmd" (handles builtins etc)
31   exec - execs external programs
32   run_list - used if cmdN is "(cmds)" or "{cmds;}"
33   /* problem: putenv's malloced strings into environ -
34   ** with vfork they will leak into parent process
35   */
36   /* problem with ENABLE_FEATURE_SH_STANDALONE:
37   ** run_applet_no_and_exit(a, argv) uses exit - this can interfere
38   ** with vfork - switch to _exit there?
39   */