Lines Matching refs:child
199 struct child_prog *child; member
395 static int builtin_cd(struct child_prog *child);
396 static int builtin_env(struct child_prog *child);
397 static int builtin_eval(struct child_prog *child);
398 static int builtin_exec(struct child_prog *child);
399 static int builtin_exit(struct child_prog *child);
400 static int builtin_export(struct child_prog *child);
401 static int builtin_fg_bg(struct child_prog *child);
402 static int builtin_help(struct child_prog *child);
403 static int builtin_jobs(struct child_prog *child);
404 static int builtin_pwd(struct child_prog *child);
405 static int builtin_read(struct child_prog *child);
406 static int builtin_set(struct child_prog *child);
407 static int builtin_shift(struct child_prog *child);
408 static int builtin_source(struct child_prog *child);
409 static int builtin_umask(struct child_prog *child);
410 static int builtin_unset(struct child_prog *child);
411 static int builtin_not_written(struct child_prog *child);
448 static void pseudo_exec(struct child_prog *child) __attribute__ ((noreturn));
543 static int builtin_eval(struct child_prog *child) in builtin_eval() argument
548 if (child->argv[1]) { in builtin_eval()
549 str = make_string(child->argv + 1); in builtin_eval()
559 static int builtin_cd(struct child_prog *child) in builtin_cd() argument
562 if (child->argv[1] == NULL) in builtin_cd()
565 newdir = child->argv[1]; in builtin_cd()
586 static int builtin_exec(struct child_prog *child) in builtin_exec() argument
588 if (child->argv[1] == NULL) in builtin_exec()
590 child->argv++; in builtin_exec()
591 pseudo_exec(child); in builtin_exec()
596 static int builtin_exit(struct child_prog *child) in builtin_exit() argument
598 if (child->argv[1] == NULL) in builtin_exit()
600 exit (atoi(child->argv[1])); in builtin_exit()
604 static int builtin_export(struct child_prog *child) in builtin_export() argument
607 char *name = child->argv[1]; in builtin_export()
610 return (builtin_env(child)); in builtin_export()
651 static int builtin_fg_bg(struct child_prog *child) in builtin_fg_bg() argument
659 if (!child->argv[1]) { in builtin_fg_bg()
666 error_msg("%s: no current job", child->argv[0]); in builtin_fg_bg()
670 if (sscanf(child->argv[1], "%%%d", &jobnum) != 1) { in builtin_fg_bg()
671 error_msg("%s: bad argument '%s'", child->argv[0], child->argv[1]); in builtin_fg_bg()
680 error_msg("%s: %d: no such job", child->argv[0], jobnum); in builtin_fg_bg()
685 if (*child->argv[0] == 'f') { in builtin_fg_bg()
723 static int builtin_jobs(struct child_prog *child) in builtin_jobs() argument
748 static int builtin_read(struct child_prog *child) in builtin_read() argument
752 if (child->argv[1]) { in builtin_read()
760 var = malloc(strlen(child->argv[1])+strlen(string)+2); in builtin_read()
762 sprintf(var, "%s=%s", child->argv[1], string); in builtin_read()
777 static int builtin_set(struct child_prog *child) in builtin_set() argument
779 char *temp = child->argv[1]; in builtin_set()
793 static int builtin_shift(struct child_prog *child) in builtin_shift() argument
796 if (child->argv[1]) { in builtin_shift()
797 n=atoi(child->argv[1]); in builtin_shift()
810 static int builtin_source(struct child_prog *child) in builtin_source() argument
815 if (child->argv[1] == NULL) in builtin_source()
819 input = fopen(child->argv[1], "r"); in builtin_source()
821 error_msg("Couldn't open file '%s'", child->argv[1]); in builtin_source()
836 static int builtin_umask(struct child_prog *child) in builtin_umask() argument
839 const char *arg = child->argv[1]; in builtin_umask()
854 static int builtin_unset(struct child_prog *child) in builtin_unset() argument
857 unset_local_var(child->argv[1]); in builtin_unset()
861 static int builtin_not_written(struct child_prog *child) in builtin_not_written() argument
863 printf("builtin_%s not written\n",child->argv[0]); in builtin_not_written()
1264 static void pseudo_exec(struct child_prog *child) argument
1269 if (child->argv) {
1270 for (i=0; is_assignment(child->argv[i]); i++) {
1271 debug_printf("pid %d environment modification: %s\n",getpid(),child->argv[i]);
1272 p = insert_var_value(child->argv[i]);
1274 if (p != child->argv[i]) free(p);
1276 child->argv+=i; /* XXX this hack isn't so horrible, since we are about
1282 if (child->argv[0] == NULL) {
1293 if (strcmp(child->argv[0], x->cmd) == 0 ) {
1294 debug_printf("builtin exec %s\n", child->argv[0]);
1295 rcode = x->function(child);
1313 char** argv_l=child->argv;
1314 char *name = child->argv[0];
1332 run_applet_by_name(name, argc_l, child->argv);
1335 debug_printf("exec of %s\n",child->argv[0]);
1336 execvp(child->argv[0],child->argv);
1337 perror_msg("couldn't exec: %s",child->argv[0]);
1339 } else if (child->group) {
1342 rcode = run_list_real(child->group);
1541 struct child_prog *child; local
1549 (void) &child;
1554 struct child_prog *child; local
1560 (void) &child;
1573 if (pi->num_progs == 1) child = & (pi->progs[0]);
1575 if (pi->num_progs == 1 && child->group && child->subshell == 0) {
1579 setup_redirects(child, squirrel);
1582 rcode = run_list_real(child->group);
1585 if (pi->num_progs == 1 && child->group) {
1588 rcode = run_list_real(child->group);
1592 for (i=0; is_assignment(child->argv[i]); i++) { /* nothing */ }
1593 if (i!=0 && child->argv[i]==NULL) {
1595 for (i=0; child->argv[i]!=NULL; i++) {
1605 name = xstrdup(child->argv[i]);
1616 p = insert_var_value(child->argv[i]);
1618 if (p != child->argv[i]) free(p);
1622 for (i = 0; is_assignment(child->argv[i]); i++) {
1623 p = insert_var_value(child->argv[i]);
1629 if (p != child->argv[i]) {
1630 child->sp--;
1634 if (child->sp) {
1637 str = make_string(child->argv + i,
1638 child->argv_nonnull + i);
1645 if (strcmp(child->argv[i], x->cmd) == 0 ) {
1648 if (x->function == builtin_exec && child->argv[i+1]==NULL) {
1650 setup_redirects(child,NULL);
1653 debug_printf("builtin inline %s\n", child->argv[0]);
1658 setup_redirects(child, squirrel);
1660 child->argv += i; /* XXX horrible hack */
1661 rcode = x->function(child);
1663 child->argv -= i;
1672 if (strchr(child->argv[i], ';')) {
1674 "'run' command\n", child->argv[i]);
1678 return cmd_process(flag, child->argc, child->argv,
1685 child = & (pi->progs[i]);
1697 if (!(child->pid = fork())) {
1723 setup_redirects(child,NULL);
1736 pseudo_exec(child);
1743 pi->pgrp = child->pid;
1747 setpgid(child->pid, pi->pgrp);
1940 struct child_prog *child; local
1953 child = &pi->progs[i];
1955 if (child->argv) {
1956 for (a=0,p=child->argv; *p; a++,p++) {
1960 globfree(&child->glob_result);
1962 for (a = 0; a < child->argc; a++) {
1963 free(child->argv[a]);
1965 free(child->argv);
1966 free(child->argv_nonnull);
1967 child->argc = 0;
1969 child->argv=NULL;
1970 } else if (child->group) {
1972 final_printf("%s begin group (subshell:%d)\n",ind, child->subshell);
1974 ret_code = free_pipe_list(child->group,indent+3);
1980 for (r=child->redirects; r; r=rnext) {
1994 child->redirects=NULL;
2300 struct child_prog *child=ctx->child; local
2301 struct redir_struct *redir = child->redirects;
2315 child->redirects=redir;
2361 ctx->child=NULL;
2435 old->child->group = ctx->list_head;
2437 old->child->subshell = 0;
2453 struct child_prog *child=ctx->child; local
2462 debug_printf("done_word: %s %p\n", dest->data, child);
2472 if (child->group) {
2476 if (!child->argv && (ctx->type & FLAG_PARSE_SEMICOLON)) {
2481 glob_target = &child->glob_result;
2482 if (child->argv) flags |= GLOB_APPEND;
2490 if ( child->argv == NULL) {
2491 child->argc=0;
2493 argc = ++child->argc;
2494 child->argv = realloc(child->argv, (argc+1)*sizeof(*child->argv));
2495 if (child->argv == NULL) {
2499 child->argv_nonnull = realloc(child->argv_nonnull,
2500 (argc+1)*sizeof(*child->argv_nonnull));
2501 if (child->argv_nonnull == NULL) {
2505 child->argv[argc-1]=str;
2506 child->argv_nonnull[argc-1] = dest->nonnull;
2507 child->argv[argc]=NULL;
2508 child->argv_nonnull[argc] = 0;
2530 child->argv = glob_target->gl_pathv;
2550 struct child_prog *prog=ctx->child;
2584 ctx->child = prog;
2601 ctx->child = NULL;
2747 struct child_prog *child = ctx->child; local
2748 if (child->argv) {
2754 case '(': endch=')'; child->subshell=1; break;
2761 child->group = sub.list_head;
2852 ctx->child->sp++;
2881 ctx->child->sp++;
2897 ctx->child->sp++;