Annotation of tftpd/src/exec.c, revision 1.1.2.5

1.1.2.1   misho       1: #include "global.h"
1.1.2.2   misho       2: #include "exec.h"
1.1.2.1   misho       3: 
                      4: 
1.1.2.3   misho       5: void *
                      6: execProg(sched_task_t *task)
                      7: {
1.1.2.4   misho       8:        pid_t pid, res;
1.1.2.5 ! misho       9:        const char *str, *addr;
1.1.2.4   misho      10:        char port[STRSIZ] = { [0 ... STRSIZ - 1] = 0 }, 
                     11:             opc[STRSIZ] = { [0 ... STRSIZ - 1] = 0 };
                     12:        ait_val_t v = AIT_VAL_INITIALIZER(v);
                     13:        int stat;
                     14: 
1.1.2.3   misho      15:        ETRACE();
                     16: 
1.1.2.4   misho      17:        str = cfg_getAttribute(&cfg, "exec_on", TASK_ARG(task));
                     18:        if (!str)
                     19:                taskExit(task, NULL);
                     20: 
                     21:        switch (pid = vfork()) {
                     22:                case -1:
                     23:                        ESYSERR(0);
                     24:                        break;
                     25:                case 0:
                     26:                        snprintf(opc, STRSIZ, "%hu", (u_short) TASK_DATLEN(task));
                     27:                        snprintf(port, STRSIZ, "%hu", (u_short) e_n2port(&cli.addr));
1.1.2.5 ! misho      28:                        addr = e_n2addr(&cli.addr, &v);
        !            29:                        EVERBOSE(1, "Execute %s %s %s %s %s %s %s", str, TASK_ARG(task), opc, 
        !            30:                                        cli.file, cli.mode, addr, port);
        !            31:                        execl(_PATH_BSHELL, _PATH_BSHELL, str, TASK_ARG(task), opc, 
        !            32:                                        cli.file, cli.mode, addr, port, NULL);
1.1.2.4   misho      33:                        AIT_FREE_VAL(&v);
                     34:                        _exit(127);
                     35:                        break;
                     36:                default:
1.1.2.5 ! misho      37:                        EVERBOSE(2, "Wait to finish executed program %s", str);
1.1.2.4   misho      38:                        do {
                     39:                                res = waitpid(pid, &stat, 0);
                     40:                        } while (res == -1 && errno == EINTR);
                     41:                        break;
                     42:        }
                     43: 
1.1.2.3   misho      44:        taskExit(task, NULL);
                     45: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>