Changeset 1199 for trunk/src/kash/jobs.c


Ignore:
Timestamp:
Oct 7, 2007, 12:04:05 AM (18 years ago)
Author:
bird
Message:

moving globals into shinstance...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kash/jobs.c

    r1198 r1199  
    186186                }
    187187#else
    188                 out2str("sh: Need FIOCLEX or FD_CLOEXEC to support job control");
     188                out2str(psh, "sh: Need FIOCLEX or FD_CLOEXEC to support job control");
    189189                goto out;
    190190#endif
     
    192192                        if ((initialpgrp = tcgetpgrp(ttyfd)) < 0) {
    193193out:
    194                                 out2str("sh: can't access tty; job control turned off\n");
     194                                out2str(psh, "sh: can't access tty; job control turned off\n");
    195195                                mflag(psh) = 0;
    196196                                return;
     
    207207                if (ioctl(ttyfd, TIOCGETD, (char *)&ldisc) < 0
    208208                    || ldisc != NTTYDISC) {
    209                         out2str("sh: need new tty driver to run job control; job control turned off\n");
     209                        out2str(psh, "sh: need new tty driver to run job control; job control turned off\n");
    210210                        mflag(psh) = 0;
    211211                        return;
     
    216216                setsignal(SIGTTIN, 0);
    217217                if (getpgid(0) != rootpid && setpgid(0, rootpid) == -1)
    218                         error("Cannot set process group (%s) at %d",
     218                        error(psh, "Cannot set process group (%s) at %d",
    219219                            strerror(errno), __LINE__);
    220220                if (tcsetpgrp(ttyfd, rootpid) == -1)
    221                         error("Cannot set tty process group (%s) at %d",
     221                        error(psh, "Cannot set tty process group (%s) at %d",
    222222                            strerror(errno), __LINE__);
    223223        } else { /* turning job control off */
    224224                if (getpgid(0) != initialpgrp && setpgid(0, initialpgrp) == -1)
    225                         error("Cannot set process group (%s) at %d",
     225                        error(psh, "Cannot set process group (%s) at %d",
    226226                            strerror(errno), __LINE__);
    227227                if (tcsetpgrp(ttyfd, initialpgrp) == -1)
    228                         error("Cannot set tty process group (%s) at %d",
     228                        error(psh, "Cannot set tty process group (%s) at %d",
    229229                            strerror(errno), __LINE__);
    230230                close(ttyfd);
     
    263263        jp = getjob(*argptr, 0);
    264264        if (jp->jobctl == 0)
    265                 error("job not created under job control");
    266         out1fmt("%s", jp->ps[0].cmd);
     265                error(psh, "job not created under job control");
     266        out1fmt(psh, "%s", jp->ps[0].cmd);
    267267        for (i = 1; i < jp->nprocs; i++)
    268                 out1fmt(" | %s", jp->ps[i].cmd );
    269         out1c('\n');
    270         output_flushall();
     268                out1fmt(psh, " | %s", jp->ps[i].cmd );
     269        out1c(psh, '\n');
     270        output_flushall(psh);
    271271
    272272        for (i = 0; i < jp->nprocs; i++)
     
    275275
    276276        if (i >= jp->nprocs) {
    277                 error("Cannot set tty process group (%s) at %d",
     277                error(psh, "Cannot set tty process group (%s) at %d",
    278278                    strerror(errno), __LINE__);
    279279        }
     
    340340        nextopt("");
    341341        do {
    342                 jp = getjob(*argptr, 0);
     342                jp = getjob(psh, *psh->argptr, 0);
    343343                if (jp->jobctl == 0)
    344                         error("job not created under job control");
     344                        error(psh, "job not created under job control");
    345345                set_curjob(jp, 1);
    346                 out1fmt("[%ld] %s", (long)(jp - jobtab + 1), jp->ps[0].cmd);
     346                out1fmt(psh, "[%ld] %s", (long)(jp - jobtab + 1), jp->ps[0].cmd);
    347347                for (i = 1; i < jp->nprocs; i++)
    348                         out1fmt(" | %s", jp->ps[i].cmd );
    349                 out1c('\n');
    350                 output_flushall();
     348                        out1fmt(psh, " | %s", jp->ps[i].cmd );
     349                out1c(psh, '\n');
     350                output_flushall(psh);
    351351                restartjob(jp);
    352         } while (*argptr && *++argptr);
     352        } while (*psh->argptr && *++psh->argptr);
    353353        return 0;
    354354}
     
    368368                        break;
    369369        if (i >= jp->nprocs)
    370                 error("Cannot continue job (%s)", strerror(errno));
     370                error(psh, "Cannot continue job (%s)", strerror(errno));
    371371        for (ps = jp->ps, i = jp->nprocs ; --i >= 0 ; ps++) {
    372372                if (WIFSTOPPED(ps->status)) {
     
    425425        if (mode & SHOW_SIGNALLED && !(mode & SHOW_ISSIG)) {
    426426                if (jp->state == JOBDONE && !(mode & SHOW_NO_FREE)) {
    427                         TRACE(("showjob: freeing job %d\n", jp - jobtab + 1));
     427                        TRACE((psh, "showjob: freeing job %d\n", jp - jobtab + 1));
    428428                        freejob(jp);
    429429                }
     
    538538        int silent = 0, gotpid;
    539539
    540         TRACE(("showjobs(%x) called\n", mode));
     540        TRACE((psh, "showjobs(%x) called\n", mode));
    541541
    542542        /* If not even one one job changed, there is nothing to do */
     
    551551        if (mflag(psh) && gotpid != -1 && tcgetpgrp(ttyfd) != getpid()) {
    552552                if (tcsetpgrp(ttyfd, getpid()) == -1)
    553                         error("Cannot set tty process group (%s) at %d",
     553                        error(psh, "Cannot set tty process group (%s) at %d",
    554554                            strerror(errno), __LINE__);
    555                 TRACE(("repaired tty process group\n"));
     555                TRACE((psh, "repaired tty process group\n"));
    556556                silent = 1;
    557557        }
     
    668668        jp = getjob(*argptr, 0);
    669669        for (i = 0 ; i < jp->nprocs ; ) {
    670                 out1fmt("%ld", (long)jp->ps[i].pid);
    671                 out1c(++i < jp->nprocs ? ' ' : '\n');
     670                out1fmt(psh, "%ld", (long)jp->ps[i].pid);
     671                out1c(psh, ++i < jp->nprocs ? ' ' : '\n');
    672672        }
    673673        return 0;
     
    762762        }
    763763        if (!noerror)
    764                 error(err_msg, name);
     764                error(psh, err_msg, name);
    765765        return 0;
    766766}
     
    824824        }
    825825        INTON;
    826         TRACE(("makejob(0x%lx, %d) returns %%%d\n", (long)node, nprocs,
    827             jp - jobtab + 1));
     826        TRACE((psh, "makejob(0x%lx, %d) returns %%%d\n", (long)node, nprocs,
     827               jp - jobtab + 1));
    828828        return jp;
    829829}
     
    850850        int pid;
    851851
    852         TRACE(("forkshell(%%%d, %p, %d) called\n", jp - jobtab, n, mode));
     852        TRACE((psh, "forkshell(%%%d, %p, %d) called\n", jp - jobtab, n, mode));
    853853        switch ((pid = fork())) {
    854854        case -1:
    855                 TRACE(("Fork failed, errno=%d\n", errno));
     855                TRACE((psh, "Fork failed, errno=%d\n", errno));
    856856                INTON;
    857                 error("Cannot fork");
     857                error(psh, "Cannot fork");
    858858                break;
    859859        case 0:
     
    888888                        commandtext(ps, n);
    889889        }
    890         TRACE(("In parent shell:  child = %d\n", pid));
     890        TRACE((psh, "In parent shell:  child = %d\n", pid));
    891891        return pid;
    892892}
     
    901901
    902902        wasroot = rootshell;
    903         TRACE(("Child shell %d\n", getpid()));
     903        TRACE((psh, "Child shell %d\n", getpid()));
    904904        if (!vforked)
    905905                rootshell = 0;
     
    919919                if (mode == FORK_FG) {
    920920                        if (tcsetpgrp(ttyfd, pgrp) == -1)
    921                                 error("Cannot set tty process group (%s) at %d",
     921                                error(psh, "Cannot set tty process group (%s) at %d",
    922922                                    strerror(errno), __LINE__);
    923923                }
     
    931931                        close(0);
    932932                        if (open(devnull, O_RDONLY) != 0)
    933                                 error(nullerr, devnull);
     933                                error(psh, nullerr, devnull);
    934934                }
    935935        }
     
    942942                        close(0);
    943943                        if (open(devnull, O_RDONLY) != 0)
    944                                 error(nullerr, devnull);
     944                                error(psh, nullerr, devnull);
    945945                }
    946946        }
     
    985985
    986986        INTOFF;
    987         TRACE(("waitforjob(%%%d) called\n", jp - jobtab + 1));
     987        TRACE((psh, "waitforjob(%%%d) called\n", jp - jobtab + 1));
    988988        while (jp->state == JOBRUNNING) {
    989989                dowait(1, jp);
     
    992992        if (jp->jobctl) {
    993993                if (tcsetpgrp(ttyfd, mypgrp) == -1)
    994                         error("Cannot set tty process group (%s) at %d",
     994                        error(psh, "Cannot set tty process group (%s) at %d",
    995995                            strerror(errno), __LINE__);
    996996        }
     
    10081008        else
    10091009                st = WTERMSIG(status) + 128;
    1010         TRACE(("waitforjob: job %d, nproc %d, status %x, st %x\n",
     1010        TRACE((psh, "waitforjob: job %d, nproc %d, status %x, st %x\n",
    10111011                jp - jobtab + 1, jp->nprocs, status, st ));
    10121012#if JOBS
     
    10481048        extern volatile char gotsig[];
    10491049
    1050         TRACE(("dowait(%d) called\n", block));
     1050        TRACE((psh, "dowait(%d) called\n", block));
    10511051        do {
    10521052                pid = waitproc(block, job, &status);
    1053                 TRACE(("wait returns pid %d, status %d\n", pid, status));
     1053                TRACE((psh, "wait returns pid %d, status %d\n", pid, status));
    10541054        } while (pid == -1 && errno == EINTR && gotsig[SIGINT - 1] == 0);
    10551055        if (pid <= 0)
     
    10651065                                        continue;
    10661066                                if (sp->pid == pid) {
    1067                                         TRACE(("Job %d: changing status of proc %d from 0x%x to 0x%x\n", jp - jobtab + 1, pid, sp->status, status));
     1067                                        TRACE((psh, "Job %d: changing status of proc %d from 0x%x to 0x%x\n", jp - jobtab + 1, pid, sp->status, status));
    10681068                                        sp->status = status;
    10691069                                        thisjob = jp;
     
    10771077                                int state = done ? JOBDONE : JOBSTOPPED;
    10781078                                if (jp->state != state) {
    1079                                         TRACE(("Job %d: changing state from %d to %d\n", jp - jobtab + 1, jp->state, state));
     1079                                        TRACE((psh, "Job %d: changing state from %d to %d\n", jp - jobtab + 1, jp->state, state));
    10801080                                        jp->state = state;
    10811081#if JOBS
     
    10971097                        showjob(out2, thisjob, mode);
    10981098                else {
    1099                         TRACE(("Not printing status, rootshell=%d, job=%p\n",
     1099                        TRACE((psh, "Not printing status, rootshell=%d, job=%p\n",
    11001100                                rootshell, job));
    11011101                        thisjob->changed = 1;
     
    11961196                        continue;
    11971197                if (jp->state == JOBSTOPPED) {
    1198                         out2str("You have stopped jobs.\n");
     1198                        out2str(psh, "You have stopped jobs.\n");
    11991199                        job_warning = 2;
    12001200                        return (1);
     
    12331233        } else
    12341234                *cmdnextc = '\0';
    1235         TRACE(("commandtext: ps->cmd %x, end %x, left %d\n\t\"%s\"\n",
     1235        TRACE((psh, "commandtext: ps->cmd %x, end %x, left %d\n\t\"%s\"\n",
    12361236                ps->cmd, cmdnextc, cmdnleft, ps->cmd));
    12371237}
Note: See TracChangeset for help on using the changeset viewer.