VirtualBox

Changeset 1202 in kBuild for trunk/src/kash


Ignore:
Timestamp:
Oct 7, 2007 12:24:15 AM (17 years ago)
Author:
bird
Message:

Added psh parameter to the remaining global functions.

Location:
trunk/src/kash
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kash/bltin/bltin.h

    r1201 r1202  
    7575#define setlocate(l,s) 0
    7676
    77 #define getenv(p) bltinlookup((p),0)
     77#define getenv(p) bltinlookup(psh, (p),0)
    7878
    7979#else
  • trunk/src/kash/bltin/kill.c

    r843 r1202  
    153153        for (errors = 0; argc; argc--, argv++) {
    154154#ifdef SHELL
    155                 extern int getjobpgrp(const char *);
     155                extern int getjobpgrp(shinstance *psh, const char *);
    156156                if (*argv[0] == '%') {
    157                         pid = getjobpgrp(*argv);
     157                        pid = getjobpgrp(psh, *argv);
    158158                        if (pid == 0) {
    159159                                warnx("illegal job id: %s", *argv);
  • trunk/src/kash/exec.c

    r1201 r1202  
    229229                }
    230230#endif
    231                 setparam(argv + 1);
     231                setparam(psh, argv + 1);
    232232                exraise(psh, EXSHELLPROC);
    233233        }
     
    437437
    438438        verbose = 0;
    439         while ((c = nextopt("rv")) != '\0') {
     439        while ((c = nextopt(psh, "rv")) != '\0') {
    440440                if (c == 'r') {
    441441                        clearcmdentry(0);
     
    500500                        struct procstat ps;
    501501                        INTOFF;
    502                         commandtext(&ps, cmdp->param.func);
     502                        commandtext(psh, &ps, cmdp->param.func);
    503503                        INTON;
    504504                        out1str(psh, "() { ");
     
    665665                                goto loop;
    666666                        stalloc(psh, strlen(fullname) + 1);
    667                         readcmdfile(fullname);
     667                        readcmdfile(psh, fullname);
    668668                        if ((cmdp = cmdlookup(name, 0)) == NULL ||
    669669                            cmdp->cmdtype != CMDFUNCTION)
     
    10851085        int p_flag = 0;
    10861086
    1087         while ((c = nextopt("vVp")) != 0) {
     1087        while ((c = nextopt(psh, "vVp")) != 0) {
    10881088                switch (c) {
    10891089                case 'v': v_flag = 1; break;
  • trunk/src/kash/expand.c

    r1201 r1202  
    288288        *p = '\0';
    289289        if (*(startp+1) == '\0') {
    290                 if ((home = lookupvar("HOME")) == NULL)
     290                if ((home = lookupvar(psh, "HOME")) == NULL)
    291291                        goto lose;
    292292        } else {
     
    477477                ckfree(in.buf);
    478478        if (in.jp)
    479                 back_exitstatus = waitforjob(in.jp);
     479                back_exitstatus = waitforjob(psh, in.jp);
    480480        if (quoted == 0)
    481481                recordregion(startloc, dest - stackblock(psh), 0);
     
    512512        switch (subtype) {
    513513        case VSASSIGN:
    514                 setvar(str, startp, 0);
     514                setvar(psh, str, startp, 0);
    515515                amount = startp - expdest;
    516516                STADJUST(psh, amount, expdest);
     
    639639                val = NULL;
    640640        } else {
    641                 val = lookupvar(var);
     641                val = lookupvar(psh, var);
    642642                if (val == NULL || ((varflags & VSNUL) && val[0] == '\0')) {
    643643                        val = NULL;
  • trunk/src/kash/generated/init.c

    r1201 r1202  
    189189              char **envp;
    190190
    191               initvar();
     191              initvar(psh);
    192192              for (envp = environ ; *envp ; envp++) {
    193193                      if (strchr(*envp, '=')) {
    194                               setvareq(*envp, VEXPORT|VTEXTFIXED);
     194                              setvareq(psh, *envp, VEXPORT|VTEXTFIXED);
    195195                      }
    196196              }
     
    241241      {
    242242              while (redirlist)
    243                       popredir();
     243                      popredir(psh);
    244244      }
    245245}
     
    288288              for (i = 0; optlist[i].name; i++)
    289289                      optlist[i].val = 0;
    290               optschanged();
     290              optschanged(psh);
    291291
    292292      }
     
    294294      /* from redir.c: */
    295295      {
    296               clearredir(0);
     296              clearredir(psh, 0);
    297297      }
    298298
     
    301301              char *sm;
    302302
    303               clear_traps(0);
     303              clear_traps(psh, 0);
    304304              for (sm = sigmode ; sm < sigmode + NSIG ; sm++) {
    305305                      if (*sm == S_IGN)
     
    310310      /* from var.c: */
    311311      {
    312               shprocvar();
     312              shprocvar(psh);
    313313      }
    314314}
  • trunk/src/kash/histedit.c

    r1201 r1202  
    125125                                el_err = tracefile;
    126126#endif
    127                         term = lookupvar("TERM");
     127                        term = lookupvar(psh, "TERM");
    128128                        if (term)
    129129                                setenv("TERM", term, 1);
     
    322322                if (sflg == 0) {
    323323                        if (editor == NULL &&
    324                             (editor = bltinlookup("FCEDIT", 1)) == NULL &&
    325                             (editor = bltinlookup("EDITOR", 1)) == NULL)
     324                            (editor = bltinlookup(psh, "FCEDIT", 1)) == NULL &&
     325                            (editor = bltinlookup(psh, "EDITOR", 1)) == NULL)
    326326                                editor = DEFEDITOR;
    327327                        if (editor[0] == '-' && editor[1] == '\0') {
     
    444444                evalstring(psh, editcmd, 0);    /* XXX - should use no JC command */
    445445                INTON;
    446                 readcmdfile(editfile);  /* XXX - should read back - quick tst */
     446                readcmdfile(psh, editfile);     /* XXX - should read back - quick tst */
    447447                unlink(editfile);
    448448        }
  • trunk/src/kash/jobs.c

    r1201 r1202  
    116116
    117117static pid_t
    118 tcgetpgrp(int fd)
     118tcgetpgrp(shinstance *psh, int fd)
    119119{
    120120        pid_t pgrp;
    121         if (ioctl(fd, TIOCGPGRP, (char *)&pgrp) == -1)
     121        if (shfile_ioctl(&psh->fdtab, fd, TIOCGPGRP, (char *)&pgrp) == -1)
    122122                return -1;
    123123        else
     
    126126
    127127static int
    128 tcsetpgrp(int fd, pid_tpgrp)
    129 {
    130         return ioctl(fd, TIOCSPGRP, (char *)&pgrp);
     128tcsetpgrp(shinstance *psh, int fd, pid_tpgrp)
     129{
     130        return shfile_ioctl(&psh->fdtab, fd, TIOCSPGRP, (char *)&pgrp);
    131131}
    132132#endif
     
    212212                }
    213213#endif
    214                 setsignal(SIGTSTP, 0);
    215                 setsignal(SIGTTOU, 0);
    216                 setsignal(SIGTTIN, 0);
     214                setsignal(psh, SIGTSTP, 0);
     215                setsignal(psh, SIGTTOU, 0);
     216                setsignal(psh, SIGTTIN, 0);
    217217                if (getpgid(0) != rootpid && setpgid(0, rootpid) == -1)
    218218                        error(psh, "Cannot set process group (%s) at %d",
     
    230230                close(ttyfd);
    231231                ttyfd = -1;
    232                 setsignal(SIGTSTP, 0);
    233                 setsignal(SIGTTOU, 0);
    234                 setsignal(SIGTTIN, 0);
     232                setsignal(psh, SIGTSTP, 0);
     233                setsignal(psh, SIGTTOU, 0);
     234                setsignal(psh, SIGTTIN, 0);
    235235        }
    236236        jobctl = on;
     
    254254#if JOBS
    255255int
    256 fgcmd(int argc, char **argv)
     256fgcmd(shinstance *psh, int argc, char **argv)
    257257{
    258258        struct job *jp;
     
    260260        int status;
    261261
    262         nextopt("");
    263         jp = getjob(*argptr, 0);
     262        nextopt(psh, "");
     263        jp = getjob(*psh->argptr, 0);
    264264        if (jp->jobctl == 0)
    265265                error(psh, "job not created under job control");
     
    271271
    272272        for (i = 0; i < jp->nprocs; i++)
    273             if (tcsetpgrp(ttyfd, jp->ps[i].pid) != -1)
     273            if (tcsetpgrp(psh, ttyfd, jp->ps[i].pid) != -1)
    274274                    break;
    275275
     
    278278                    strerror(errno), __LINE__);
    279279        }
    280         restartjob(jp);
     280        restartjob(psh, jp);
    281281        INTOFF;
    282         status = waitforjob(jp);
     282        status = waitforjob(psh, jp);
    283283        INTON;
    284284        return status;
     
    338338        int i;
    339339
    340         nextopt("");
     340        nextopt(psh, "");
    341341        do {
    342342                jp = getjob(psh, *psh->argptr, 0);
     
    506506        jobs_invalid = 0;
    507507        mode = 0;
    508         while ((m = nextopt("lp")))
     508        while ((m = nextopt(psh, "lp")))
    509509                if (m == 'l')
    510510                        mode = SHOW_PID;
     
    516516                while (*++argptr);
    517517        else
    518                 showjobs(out1, mode);
     518                showjobs(psh, out1, mode);
    519519        jobs_invalid = sv;
    520520        return 0;
     
    606606        struct job *jp;
    607607
    608         nextopt("");
     608        nextopt(psh, "");
    609609
    610610        if (!*argptr) {
     
    665665        int i;
    666666
    667         nextopt("");
     667        nextopt(psh, "");
    668668        jp = getjob(*argptr, 0);
    669669        for (i = 0 ; i < jp->nprocs ; ) {
     
    858858                break;
    859859        case 0:
    860                 forkchild(jp, n, mode, 0);
     860                forkchild(psh, jp, n, mode, 0);
    861861                return 0;
    862862        default:
    863                 return forkparent(jp, n, mode, pid);
     863                return forkparent(psh, jp, n, mode, pid);
    864864        }
    865865}
     
    886886                ps->cmd[0] = 0;
    887887                if (/* iflag && rootshell && */ n)
    888                         commandtext(ps, n);
     888                        commandtext(psh, ps, n);
    889889        }
    890890        TRACE((psh, "In parent shell:  child = %d\n", pid));
     
    922922                                    strerror(errno), __LINE__);
    923923                }
    924                 setsignal(SIGTSTP, vforked);
    925                 setsignal(SIGTTOU, vforked);
     924                setsignal(psh, SIGTSTP, vforked);
     925                setsignal(psh, SIGTTOU, vforked);
    926926        } else if (mode == FORK_BG) {
    927                 ignoresig(SIGINT, vforked);
    928                 ignoresig(SIGQUIT, vforked);
     927                ignoresig(psh, SIGINT, vforked);
     928                ignoresig(psh, SIGQUIT, vforked);
    929929                if ((jp == NULL || jp->nprocs == 0) &&
    930                     ! fd0_redirected_p ()) {
     930                    ! fd0_redirected_p(psh)) {
    931931                        close(0);
    932932                        if (open(devnull, O_RDONLY) != 0)
     
    936936#else
    937937        if (mode == FORK_BG) {
    938                 ignoresig(SIGINT, vforked);
    939                 ignoresig(SIGQUIT, vforked);
     938                ignoresig(psh, SIGINT, vforked);
     939                ignoresig(psh, SIGQUIT, vforked);
    940940                if ((jp == NULL || jp->nprocs == 0) &&
    941                     ! fd0_redirected_p ()) {
     941                    ! fd0_redirected_p(psh)) {
    942942                        close(0);
    943943                        if (open(devnull, O_RDONLY) != 0)
     
    947947#endif
    948948        if (wasroot && iflag(psh)) {
    949                 setsignal(SIGINT, vforked);
    950                 setsignal(SIGQUIT, vforked);
    951                 setsignal(SIGTERM, vforked);
     949                setsignal(psh, SIGINT, vforked);
     950                setsignal(psh, SIGQUIT, vforked);
     951                setsignal(psh, SIGTERM, vforked);
    952952        }
    953953
  • trunk/src/kash/miscbltin.c

    r1199 r1202  
    105105        rflag = 0;
    106106        prompt = NULL;
    107         while ((i = nextopt("p:r")) != '\0') {
     107        while ((i = nextopt(psh, "p:r")) != '\0') {
    108108                if (i == 'p')
    109109                        prompt = optionarg;
     
    120120                error(psh, "arg count");
    121121
    122         if ((ifs = bltinlookup("IFS", 1)) == NULL)
     122        if ((ifs = bltinlookup(psh, "IFS", 1)) == NULL)
    123123                ifs = " \t\n";
    124124
     
    186186
    187187                STACKSTRNUL(psh, p);
    188                 setvar(*ap, stackblock(psh), 0);
     188                setvar(psh, *ap, stackblock(psh), 0);
    189189                ap++;
    190190                STARTSTACKSTR(psh, p);
     
    203203                        break;
    204204        }
    205         setvar(*ap, stackblock(psh), 0);
     205        setvar(psh, *ap, stackblock(psh), 0);
    206206
    207207        /* Set any remaining args to "" */
    208208        while (*++ap != NULL)
    209                 setvar(*ap, nullstr, 0);
     209                setvar(psh, *ap, nullstr, 0);
    210210        return status;
    211211}
     
    221221        int symbolic_mode = 0;
    222222
    223         while ((i = nextopt("S")) != '\0') {
     223        while ((i = nextopt(psh, "S")) != '\0') {
    224224                symbolic_mode = 1;
    225225        }
     
    366366
    367367        what = 'f';
    368         while ((optc = nextopt("HSabtfdsmcnpl")) != '\0')
     368        while ((optc = nextopt(psh, "HSabtfdsmcnpl")) != '\0')
    369369                switch (optc) {
    370370                case 'H':
  • trunk/src/kash/redir.c

    r1201 r1202  
    225225                                memory[fd] = 1;
    226226                        else
    227                                 copyfd(redir->ndup.dupfd, fd);
     227                                copyfd(psh, redir->ndup.dupfd, fd);
    228228                }
    229229                INTON;
     
    238238
    239239        if (f != fd) {
    240                 copyfd(f, fd);
    241                 close(f);
     240                copyfd(psh, f, fd);
     241                shfile_close(&psh->fdtab, f);
    242242        }
    243243        INTON;
     
    271271                }
    272272        }
    273         if (forkshell((struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) {
     273        if (forkshell(psh, (struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) {
    274274                close(pip[0]);
    275275                signal(SIGINT, SIG_IGN);
     
    307307                        if (i == 0)
    308308                                fd0_redirected--;
    309                         close(i);
     309                        shfile_close(&psh->fdtab, i);
    310310                        if (rp->renamed[i] >= 0) {
    311                                 copyfd(rp->renamed[i], i);
    312                                 close(rp->renamed[i]);
     311                                copyfd(psh, rp->renamed[i], i);
     312                                shfile_close(&psh->fdtab, rp->renamed[i]);
    313313                        }
    314314                }
     
    330330RESET {
    331331        while (redirlist)
    332                 popredir();
     332                popredir(psh);
    333333}
    334334
    335335SHELLPROC {
    336         clearredir(0);
     336        clearredir(psh, 0);
    337337}
    338338
     
    341341/* Return true if fd 0 has already been redirected at least once.  */
    342342int
    343 fd0_redirected_p () {
    344         return fd0_redirected != 0;
     343fd0_redirected_p(shinstance *psh) {
     344        return psh->fd0_redirected != 0;
    345345}
    346346
     
    376376
    377377int
    378 copyfd(int from, int to)
     378copyfd(shinstance *psh, int from, int to)
    379379{
    380380        int newfd;
    381381
    382         newfd = fcntl(from, F_DUPFD, to);
     382        newfd = shfile_fcntl(psh, from, F_DUPFD, to);
    383383        if (newfd < 0) {
    384384                if (errno == EMFILE)
  • trunk/src/kash/trap.c

    r1200 r1202  
    159159                        if (trap[signo] != NULL) {
    160160                                out1fmt(psh, "trap -- ");
    161                                 print_quoted(trap[signo]);
     161                                print_quoted(psh, trap[signo]);
    162162                                out1fmt(psh, " %s\n",
    163163                                    (signo) ? sys_signame[signo] : "EXIT");
     
    207207
    208208                if (signo != 0)
    209                         setsignal(signo, 0);
     209                        setsignal(psh, signo, 0);
    210210                INTON;
    211211                ap++;
     
    235235                        }
    236236                        if (tp != &trap[0])
    237                                 setsignal(tp - trap, vforked);
     237                                setsignal(psh, tp - trap, vforked);
    238238                        INTON;
    239239                }
     
    360360        char *sm;
    361361
    362         clear_traps(0);
     362        clear_traps(psh, s0);
    363363        for (sm = sigmode ; sm < sigmode + NSIG ; sm++) {
    364364                if (*sm == S_IGN)
     
    429429        if (on == is_interactive)
    430430                return;
    431         setsignal(SIGINT, 0);
    432         setsignal(SIGQUIT, 0);
    433         setsignal(SIGTERM, 0);
     431        setsignal(psh, SIGINT, 0);
     432        setsignal(psh, SIGQUIT, 0);
     433        setsignal(psh, SIGTERM, 0);
    434434        is_interactive = on;
    435435}
     
    462462        output_flushall(psh);
    463463#if JOBS
    464         setjobctl(0);
     464        setjobctl(psh, 0);
    465465#endif
    466466l2:   _exit(status);
  • trunk/src/kash/var.c

    r1200 r1202  
    195195        char **envp;
    196196
    197         initvar();
     197        initvar(psh);
    198198        for (envp = environ ; *envp ; envp++) {
    199199                if (strchr(*envp, '=')) {
    200                         setvareq(*envp, VEXPORT|VTEXTFIXED);
     200                        setvareq(psh, *envp, VEXPORT|VTEXTFIXED);
    201201                }
    202202        }
     
    295295        else {
    296296                handler = &jmploc;
    297                 setvar(name, val, flags);
     297                setvar(psh, name, val, flags);
    298298        }
    299299        handler = savehandler;
     
    347347        if (val)
    348348                scopy(val, d);
    349         setvareq(nameeq, flags);
     349        setvareq(psh, nameeq, flags);
    350350}
    351351
     
    394394                 */
    395395                if (vp == &vmpath || (vp == &vmail && ! mpathset()))
    396                         chkmail(1);
     396                        chkmail(psh, 1);
    397397                INTON;
    398398                return;
     
    423423        INTOFF;
    424424        for (lp = list ; lp ; lp = lp->next) {
    425                 setvareq(savestr(lp->text), flags);
     425                setvareq(psh, savestr(lp->text), flags);
    426426        }
    427427        INTON;
     
    434434
    435435        for (lp = list ; lp ; lp = lp->next)
    436                 mklocal(lp->text, flags);
     436                mklocal(psh, lp->text, flags);
    437437}
    438438
     
    528528
    529529#ifdef mkinit
    530 void shprocvar(void);
     530void shprocvar(shinstance *psh);
    531531
    532532SHELLPROC {
    533         shprocvar();
     533        shprocvar(psh);
    534534}
    535535#endif
    536536
    537537void
    538 shprocvar(void)
     538shprocvar(shinstance *psh)
    539539{
    540540        struct var **vpp;
    541541        struct var *vp, **prev;
    542542
    543         for (vpp = vartab ; vpp < vartab + VTABSIZE ; vpp++) {
     543        for (vpp = psh->vartab ; vpp < psh->vartab + VTABSIZE ; vpp++) {
    544544                for (prev = vpp ; (vp = *prev) != NULL ; ) {
    545545                        if ((vp->flags & VEXPORT) == 0) {
     
    558558                }
    559559        }
    560         initvar();
     560        initvar(psh);
    561561}
    562562
     
    675675        int pflag;
    676676
    677         pflag = nextopt("p") == 'p' ? 3 : 0;
     677        pflag = nextopt(psh, "p") == 'p' ? 3 : 0;
    678678        if (argc <= 1 || pflag) {
    679                 showvars( pflag ? argv[0] : 0, flag, pflag );
     679                showvars(psh, pflag ? argv[0] : 0, flag, pflag );
    680680                return 0;
    681681        }
     
    691691                        }
    692692                }
    693                 setvar(name, p, flag);
     693                setvar(psh, name, p, flag);
    694694        }
    695695        return 0;
     
    709709                error(psh, "Not in a function");
    710710        while ((name = *argptr++) != NULL) {
    711                 mklocal(name, 0);
     711                mklocal(psh, name, 0);
    712712        }
    713713        return 0;
     
    740740                if (vp == NULL) {
    741741                        if (strchr(name, '='))
    742                                 setvareq(savestr(name), VSTRFIXED|flags);
     742                                setvareq(psh, savestr(name), VSTRFIXED|flags);
    743743                        else
    744                                 setvar(name, NULL, VSTRFIXED|flags);
     744                                setvar(psh, name, NULL, VSTRFIXED|flags);
    745745                        vp = *vpp;      /* the new variable */
    746746                        lvp->text = NULL;
     
    751751                        vp->flags |= VSTRFIXED|VTEXTFIXED;
    752752                        if (name[vp->name_len] == '=')
    753                                 setvareq(savestr(name), flags);
     753                                setvareq(psh, savestr(name), flags);
    754754                }
    755755        }
     
    779779                        ckfree(lvp->text);
    780780                } else if ((lvp->flags & (VUNSET|VSTRFIXED)) == VUNSET) {
    781                         (void)unsetvar(vp->text, 0);
     781                        (void)unsetvar(psh, vp->text, 0);
    782782                } else {
    783783                        if (vp->func && (vp->flags & VNOFUNC) == 0)
     
    797797{
    798798        if (argc <= 2)
    799                 return unsetcmd(argc, argv);
     799                return unsetcmd(psh, argc, argv);
    800800        else if (argc == 3)
    801                 setvar(argv[1], argv[2], 0);
     801                setvar(psh, argv[1], argv[2], 0);
    802802        else
    803803                error(psh, "List assignment not implemented");
     
    821821        int ret = 0;
    822822
    823         while ((i = nextopt("evf")) != '\0') {
     823        while ((i = nextopt(psh, "evf")) != '\0') {
    824824                if (i == 'f')
    825825                        flg_func = 1;
     
    862862        } else {
    863863                if (vp->text[vp->name_len + 1] != '\0')
    864                         setvar(s, nullstr, 0);
     864                        setvar(psh, s, nullstr, 0);
    865865                vp->flags &= ~VEXPORT;
    866866                vp->flags |= VUNSET;
  • trunk/src/kash/var.h

    r884 r1202  
    8686#ifdef _MSC_VER
    8787extern struct var vpath2;
    88 #endif 
     88#endif
    8989extern struct var vps1;
    9090extern struct var vps2;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette