VirtualBox

Changeset 883 in kBuild for trunk


Ignore:
Timestamp:
Apr 21, 2007 8:55:18 PM (18 years ago)
Author:
bird
Message:

hacking...

Location:
trunk/src/ash-messup
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ash-messup/cd.c

    r843 r883  
    6868#include "show.h"
    6969#include "cd.h"
    70 
    71 STATIC int docd(char *, int);
    72 STATIC char *getcomponent(void);
    73 STATIC void updatepwd(char *);
    74 STATIC void find_curdir(int noerror);
    75 
    76 char *curdir = NULL;            /* current working directory */
    77 char *prevdir;                  /* previous working directory */
    78 STATIC char *cdcomppath;
     70#include "shinstance.h"
     71
     72STATIC int docd(shinstance *psh, char *, int);
     73STATIC char *getcomponent(shinstance *psh);
     74STATIC void updatepwd(shinstance *psh, char *);
     75STATIC void find_curdir(shinstance *psh, int noerror);
     76
     77/*char *curdir = NULL;*/                /* current working directory */
     78/*char *prevdir;*/                      /* previous working directory */
     79/*STATIC char *cdcomppath;*/
    7980
    8081int
    81 cdcmd(int argc, char **argv)
     82cdcmd(shinstance *psh, int argc, char **argv)
    8283{
    8384        const char *dest;
     
    8586        char *p, *d;
    8687        struct stat statb;
    87         int print = cdprint;    /* set -cdprint to enable */
    88 
    89         nextopt(nullstr);
     88        int print = psh->cdprint;       /* set -cdprint to enable */
     89
     90        nextopt(psh, nullstr);
    9091
    9192        /*
     
    9394         * it on entry to the shell, but we want 'cd fred; cd -' to work.
    9495         */
    95         getpwd(1);
    96         dest = *argptr;
     96        getpwd(psh, 1);
     97        dest = *psh->argptr;
    9798        if (dest == NULL) {
    98                 dest = bltinlookup("HOME", 1);
     99                dest = bltinlookup(psh, "HOME", 1);
    99100                if (dest == NULL)
    100                         error("HOME not set");
     101                        error(psh, "HOME not set");
    101102        } else {
    102                 if (argptr[1]) {
     103                if (psh->argptr[1]) {
    103104                        /* Do 'ksh' style substitution */
    104                         if (!curdir)
    105                                 error("PWD not set");
    106                         p = strstr(curdir, dest);
     105                        if (!psh->curdir)
     106                                error(psh, "PWD not set");
     107                        p = strstr(psh->curdir, dest);
    107108                        if (!p)
    108                                 error("bad substitution");
    109                         d = stalloc(strlen(curdir) + strlen(argptr[1]) + 1);
    110                         memcpy(d, curdir, p - curdir);
    111                         strcpy(d + (p - curdir), argptr[1]);
     109                                error(psh, "bad substitution");
     110                        d = stalloc(psh, strlen(psh->curdir) + strlen(psh->argptr[1]) + 1);
     111                        memcpy(d, psh->curdir, p - psh->curdir);
     112                        strcpy(d + (p - psh->curdir), psh->argptr[1]);
    112113                        strcat(d, p + strlen(dest));
    113114                        dest = d;
     
    117118
    118119        if (dest[0] == '-' && dest[1] == '\0') {
    119                 dest = prevdir ? prevdir : curdir;
     120                dest = psh->prevdir ? psh->prevdir : psh->curdir;
    120121                print = 1;
    121122        }
    122123        if (*dest == '\0')
    123124                dest = ".";
    124         if (IS_ROOT(dest) || (path = bltinlookup("CDPATH", 1)) == NULL)
     125        if (IS_ROOT(dest) || (path = bltinlookup(psh, "CDPATH", 1)) == NULL)
    125126                path = nullstr;
    126         while ((p = padvance(&path, dest)) != NULL) {
    127                 if (stat(p, &statb) >= 0 && S_ISDIR(statb.st_mode)) {
     127        while ((p = padvance(psh, &path, dest)) != NULL) {
     128                if (shfile_stat(&psh->fdtab, p, &statb) >= 0 && S_ISDIR(statb.st_mode)) {
    128129                        if (!print) {
    129130                                /*
     
    134135                                print = strcmp(p, dest);
    135136                        }
    136                         if (docd(p, print) >= 0)
     137                        if (docd(psh, p, print) >= 0)
    137138                                return 0;
    138139
    139140                }
    140141        }
    141         error("can't cd to %s", dest);
     142        error(psh, "can't cd to %s", dest);
    142143        /* NOTREACHED */
     144        return 1;
    143145}
    144146
     
    150152
    151153STATIC int
    152 docd(char *dest, int print)
     154docd(shinstance *psh, char *dest, int print)
    153155{
    154156        char *p;
     
    167169         */
    168170        badstat = 0;
    169         cdcomppath = stalloc(strlen(dest) + 1);
    170         scopy(dest, cdcomppath);
     171        psh->cdcomppath = stalloc(psh, strlen(dest) + 1);
     172        scopy(dest, psh->cdcomppath);
    171173        STARTSTACKSTR(p);
    172174        if (IS_ROOT(dest)) {
    173175                STPUTC('/', p);
    174                 cdcomppath++;
     176                psh->cdcomppath++;
    175177        }
    176178        first = 1;
    177         while ((q = getcomponent()) != NULL) {
     179        while ((q = getcomponent(psh)) != NULL) {
    178180                if (q[0] == '\0' || (q[0] == '.' && q[1] == '\0'))
    179181                        continue;
     
    187189                        continue;
    188190                STACKSTRNUL(p);
    189                 if ((lstat(stackblock(), &statb) < 0)
     191                if ((shfile_lstat(&psh->fdtab, stackblock(), &statb) < 0)
    190192                    || (S_ISLNK(statb.st_mode)))  {
    191193                        /* print = 1; */
     
    196198
    197199        INTOFF;
    198         if (chdir(dest) < 0) {
     200        if (shfile_chdir(&psh->fdtab, dest) < 0) {
    199201                INTON;
    200202                return -1;
    201203        }
    202         updatepwd(badstat ? NULL : dest);
     204        updatepwd(psh, badstat ? NULL : dest);
    203205        INTON;
    204         if (print && iflag && curdir)
    205                 out1fmt("%s\n", curdir);
     206        if (print && psh->iflag && psh->curdir)
     207                out1fmt(psh, "%s\n", psh->curdir);
    206208        return 0;
    207209}
     
    209211
    210212/*
    211  * Get the next component of the path name pointed to by cdcomppath.
    212  * This routine overwrites the string pointed to by cdcomppath.
     213 * Get the next component of the path name pointed to by psh->cdcomppath.
     214 * This routine overwrites the string pointed to by psh->cdcomppath.
    213215 */
    214216
    215217STATIC char *
    216 getcomponent()
     218getcomponent(shinstance *psh)
    217219{
    218220        char *p;
    219221        char *start;
    220222
    221         if ((p = cdcomppath) == NULL)
     223        if ((p = psh->cdcomppath) == NULL)
    222224                return NULL;
    223         start = cdcomppath;
     225        start = psh->cdcomppath;
    224226        while (*p != '/' && *p != '\0')
    225227                p++;
    226228        if (*p == '\0') {
    227                 cdcomppath = NULL;
     229                psh->cdcomppath = NULL;
    228230        } else {
    229231                *p++ = '\0';
    230                 cdcomppath = p;
     232                psh->cdcomppath = p;
    231233        }
    232234        return start;
     
    242244
    243245STATIC void
    244 updatepwd(char *dir)
     246updatepwd(shinstance *psh, char *dir)
    245247{
    246248        char *new;
    247249        char *p;
    248250
    249         hashcd();                               /* update command hash table */
     251        hashcd(psh);                            /* update command hash table */
    250252
    251253        /*
     
    254256         * we couldn't stat().
    255257         */
    256         if (dir == NULL || curdir == NULL)  {
    257                 if (prevdir)
    258                         ckfree(prevdir);
     258        if (dir == NULL || psh->curdir == NULL)  {
     259                if (psh->prevdir)
     260                        ckfree(psh->prevdir);
    259261                INTOFF;
    260                 prevdir = curdir;
    261                 curdir = NULL;
    262                 getpwd(1);
     262                psh->prevdir = psh->curdir;
     263                psh->curdir = NULL;
     264                getpwd(psh, 1);
    263265                INTON;
    264                 if (curdir)
    265                         setvar("PWD", curdir, VEXPORT);
     266                if (psh->curdir)
     267                        setvar(psh, "PWD", psh->curdir, VEXPORT);
    266268                else
    267                         unsetvar("PWD", 0);
     269                        unsetvar(psh, "PWD", 0);
    268270                return;
    269271        }
    270         cdcomppath = stalloc(strlen(dir) + 1);
    271         scopy(dir, cdcomppath);
     272        psh->cdcomppath = stalloc(psh, strlen(dir) + 1);
     273        scopy(dir, psh->cdcomppath);
    272274        STARTSTACKSTR(new);
    273275        if (!IS_ROOT(dir)) {
    274                 p = curdir;
     276                p = psh->curdir;
    275277                while (*p)
    276278                        STPUTC(*p++, new);
     
    278280                        STUNPUTC(new);
    279281        }
    280         while ((p = getcomponent()) != NULL) {
     282        while ((p = getcomponent(psh)) != NULL) {
    281283                if (equal(p, "..")) {
    282284                        while (new > stackblock() && (STUNPUTC(new), *new) != '/');
     
    291293        STACKSTRNUL(new);
    292294        INTOFF;
    293         if (prevdir)
    294                 ckfree(prevdir);
    295         prevdir = curdir;
    296         curdir = savestr(stackblock());
    297         setvar("PWD", curdir, VEXPORT);
     295        if (psh->prevdir)
     296                ckfree(psh->prevdir);
     297        psh->prevdir = psh->curdir;
     298        psh->curdir = savestr(stackblock());
     299        setvar(psh, "PWD", psh->curdir, VEXPORT);
    298300        INTON;
    299301}
     
    308310
    309311int
    310 pwdcmd(int argc, char **argv)
     312pwdcmd(shinstance *psh, int argc, char **argv)
    311313{
    312314        int i;
    313315        char opt = 'L';
    314316
    315         while ((i = nextopt("LP")) != '\0')
     317        while ((i = nextopt(psh, "LP")) != '\0')
    316318                opt = i;
    317         if (*argptr)
    318                 error("unexpected argument");
     319        if (*psh->argptr)
     320                error(psh, "unexpected argument");
    319321
    320322        if (opt == 'L')
    321                 getpwd(0);
     323                getpwd(psh, 0);
    322324        else
    323                 find_curdir(0);
    324 
    325         setvar("PWD", curdir, VEXPORT);
    326         out1str(curdir);
    327         out1c('\n');
     325                find_curdir(psh, 0);
     326
     327        setvar(psh, "PWD", psh->curdir, VEXPORT);
     328        out1str(psh, psh->curdir);
     329        out1c(psh, '\n');
    328330        return 0;
    329331}
     
    339341 */
    340342void
    341 getpwd(int noerror)
     343getpwd(shinstance *psh, int noerror)
    342344{
    343345        char *pwd;
    344346        struct stat stdot, stpwd;
    345         static int first = 1;
    346 
    347         if (curdir)
     347        /*static int first = 1;*/
     348
     349        if (psh->curdir)
    348350                return;
    349351
    350         if (first) {
    351                 first = 0;
    352                 pwd = getenv("PWD");
    353                 if (pwd && IS_ROOT(pwd) && stat(".", &stdot) != -1 &&
    354                     stat(pwd, &stpwd) != -1 &&
     352        if (psh->getpwd_first) {
     353                psh->getpwd_first = 0;
     354                pwd = sh_getenv(psh, "PWD");
     355                if (pwd && IS_ROOT(pwd) && shfile_stat(&psh->fdtab, ".", &stdot) != -1 &&
     356                    shfile_stat(&psh->fdtab, pwd, &stpwd) != -1 &&
    355357                    stdot.st_dev == stpwd.st_dev &&
    356358                    stdot.st_ino == stpwd.st_ino) {
    357                         curdir = savestr(pwd);
     359                        psh->curdir = savestr(pwd);
    358360                        return;
    359361                }
    360362        }
    361363
    362         find_curdir(noerror);
     364        find_curdir(psh, noerror);
    363365
    364366        return;
     
    366368
    367369STATIC void
    368 find_curdir(int noerror)
     370find_curdir(shinstance *psh, int noerror)
    369371{
    370372        int i;
     
    383385         * /bin/pwd.
    384386         */
    385 #if defined(__NetBSD__) || defined(__SVR4) || defined(__INNOTEK_LIBC__)
     387#if 1 //defined(__NetBSD__) || defined(__SVR4) || defined(__INNOTEK_LIBC__)
    386388
    387389        for (i = MAXPWD;; i *= 2) {
    388                 pwd = stalloc(i);
    389                 if (getcwd(pwd, i) != NULL) {
    390                         curdir = savestr(pwd);
     390                pwd = stalloc(psh, i);
     391                if (shfile_getcwd(&psh->fdtab, pwd, i) != NULL) {
     392                        psh->curdir = savestr(pwd);
    391393                        return;
    392394                }
    393                 stunalloc(pwd);
     395                stunalloc(psh, pwd);
    394396                if (errno == ERANGE)
    395397                        continue;
    396398                if (!noerror)
    397                         error("getcwd() failed: %s", strerror(errno));
     399                        error(psh, "getcwd() failed: %s", strerror(errno));
    398400                return;
    399401        }
     
    405407                int pip[2];
    406408
    407                 pwd = stalloc(MAXPWD);
     409                pwd = stalloc(psh, MAXPWD);
    408410                INTOFF;
    409411                if (pipe(pip) < 0)
     
    442444                p[-1] = '\0';
    443445                INTON;
    444                 curdir = savestr(pwd);
     446                psh->curdir = savestr(pwd);
    445447                return;
    446448        }
  • trunk/src/ash-messup/error.c

    r809 r883  
    6161#include "error.h"
    6262#include "show.h"
     63#include "shinstance.h"
    6364
    6465
     
    6768 */
    6869
    69 struct jmploc *handler;
     70/*struct jmploc *handler;
    7071int exception;
    7172volatile int suppressint;
    7273volatile int intpending;
    73 char *commandname;
    74 
    75 
    76 static void exverror(int, const char *, va_list)
    77     __attribute__((__noreturn__));
     74char *commandname;*/
     75
     76
     77static void exverror(shinstance *psh, int, const char *, va_list)
     78    /*__attribute__((__noreturn__))*/;
    7879
    7980/*
     
    8485
    8586void
    86 exraise(int e)
    87 {
    88         if (handler == NULL)
     87exraise(shinstance *psh, int e)
     88{
     89        if (psh->handler == NULL)
    8990                abort();
    90         exception = e;
    91         longjmp(handler->loc, 1);
     91        psh->exception = e;
     92        longjmp(psh->handler->loc, 1);
    9293}
    9394
     
    104105
    105106void
    106 onint(void)
    107 {
    108         sigset_t nsigset;
    109 
    110         if (suppressint) {
    111                 intpending = 1;
     107onint(shinstance *psh)
     108{
     109        sh_sigset_t nsigset;
     110
     111        if (psh->suppressint) {
     112                psh->intpending = 1;
    112113                return;
    113114        }
    114         intpending = 0;
    115         sigemptyset(&nsigset);
    116         sigprocmask(SIG_SETMASK, &nsigset, NULL);
    117         if (rootshell && iflag)
    118                 exraise(EXINT);
     115        psh->intpending = 0;
     116        sh_sigemptyset(&nsigset);
     117        sh_sigprocmask(psh, SIG_SETMASK, &nsigset, NULL);
     118        if (psh->rootshell && psh->iflag)
     119                exraise(psh, EXINT);
    119120        else {
    120                 signal(SIGINT, SIG_DFL);
    121                 raise(SIGINT);
     121                sh_signal(psh, SIGINT, SIG_DFL);
     122                sh_raise_sigint(psh);/*raise(psh, SIGINT);*/
    122123        }
    123124        /* NOTREACHED */
     
    125126
    126127static void
    127 exvwarning(int sv_errno, const char *msg, va_list ap)
     128exvwarning(shinstance *psh, int sv_errno, const char *msg, va_list ap)
    128129{
    129130        /* Partially emulate line buffered output so that:
     
    133134         * both generate sensible text when stdout and stderr are merged.
    134135         */
    135         if (output.nextc != output.buf && output.nextc[-1] == '\n')
    136                 flushout(&output);
    137         if (commandname)
    138                 outfmt(&errout, "%s: ", commandname);
     136        if (psh->output.nextc != psh->output.buf && psh->output.nextc[-1] == '\n')
     137                flushout(&psh->output);
     138        if (psh->commandname)
     139                outfmt(&psh->errout, "%s: ", psh->commandname);
    139140        if (msg != NULL) {
    140                 doformat(&errout, msg, ap);
     141                doformat(&psh->errout, msg, ap);
    141142                if (sv_errno >= 0)
    142                         outfmt(&errout, ": ");
     143                        outfmt(&psh->errout, ": ");
    143144        }
    144145        if (sv_errno >= 0)
    145                 outfmt(&errout, "%s", strerror(sv_errno));
    146         out2c('\n');
    147         flushout(&errout);
     146                outfmt(&psh->errout, "%s", strerror(sv_errno));
     147        out2c(psh, '\n');
     148        flushout(&psh->errout);
    148149}
    149150
     
    154155 */
    155156static void
    156 exverror(int cond, const char *msg, va_list ap)
     157exverror(shinstance *psh, int cond, const char *msg, va_list ap)
    157158{
    158159        CLEAR_PENDING_INT;
     
    168169#endif
    169170        if (msg)
    170                 exvwarning(-1, msg, ap);
    171 
    172         output_flushall();
    173         exraise(cond);
     171                exvwarning(psh, -1, msg, ap);
     172
     173        output_flushall(psh);
     174        exraise(psh, cond);
    174175        /* NOTREACHED */
    175176}
     
    177178
    178179void
    179 error(const char *msg, ...)
     180error(shinstance *psh, const char *msg, ...)
    180181{
    181182        va_list ap;
    182183
    183184        va_start(ap, msg);
    184         exverror(EXERROR, msg, ap);
     185        exverror(psh, EXERROR, msg, ap);
    185186        /* NOTREACHED */
    186187        va_end(ap);
     
    189190
    190191void
    191 exerror(int cond, const char *msg, ...)
     192exerror(shinstance *psh, int cond, const char *msg, ...)
    192193{
    193194        va_list ap;
    194195
    195196        va_start(ap, msg);
    196         exverror(cond, msg, ap);
     197        exverror(psh, cond, msg, ap);
    197198        /* NOTREACHED */
    198199        va_end(ap);
     
    204205
    205206void
    206 sh_exit(int rval)
    207 {
    208         exerrno = rval & 255;
    209         exraise(EXEXEC);
    210 }
    211 
    212 void
    213 sh_err(int status, const char *fmt, ...)
     207sh_exit(shinstance *psh, int rval)
     208{
     209        psh->exerrno = rval & 255;
     210        exraise(psh, EXEXEC);
     211}
     212
     213void
     214sh_err(shinstance *psh, int status, const char *fmt, ...)
    214215{
    215216        va_list ap;
    216217
    217218        va_start(ap, fmt);
    218         exvwarning(errno, fmt, ap);
    219         va_end(ap);
    220         sh_exit(status);
    221 }
    222 
    223 void
    224 sh_verr(int status, const char *fmt, va_list ap)
    225 {
    226         exvwarning(errno, fmt, ap);
    227         sh_exit(status);
    228 }
    229 
    230 void
    231 sh_errx(int status, const char *fmt, ...)
     219        exvwarning(psh, errno, fmt, ap);
     220        va_end(ap);
     221        sh_exit(psh, status);
     222}
     223
     224void
     225sh_verr(shinstance *psh, int status, const char *fmt, va_list ap)
     226{
     227        exvwarning(psh, errno, fmt, ap);
     228        sh_exit(psh, status);
     229}
     230
     231void
     232sh_errx(shinstance *psh, int status, const char *fmt, ...)
    232233{
    233234        va_list ap;
    234235
    235236        va_start(ap, fmt);
    236         exvwarning(-1, fmt, ap);
    237         va_end(ap);
    238         sh_exit(status);
    239 }
    240 
    241 void
    242 sh_verrx(int status, const char *fmt, va_list ap)
    243 {
    244         exvwarning(-1, fmt, ap);
    245         sh_exit(status);
    246 }
    247 
    248 void
    249 sh_warn(const char *fmt, ...)
     237        exvwarning(psh, -1, fmt, ap);
     238        va_end(ap);
     239        sh_exit(psh, status);
     240}
     241
     242void
     243sh_verrx(shinstance *psh, int status, const char *fmt, va_list ap)
     244{
     245        exvwarning(psh, -1, fmt, ap);
     246        sh_exit(psh, status);
     247}
     248
     249void
     250sh_warn(shinstance *psh, const char *fmt, ...)
    250251{
    251252        va_list ap;
    252253
    253254        va_start(ap, fmt);
    254         exvwarning(errno, fmt, ap);
    255         va_end(ap);
    256 }
    257 
    258 void
    259 sh_vwarn(const char *fmt, va_list ap)
    260 {
    261         exvwarning(errno, fmt, ap);
    262 }
    263 
    264 void
    265 sh_warnx(const char *fmt, ...)
     255        exvwarning(psh, errno, fmt, ap);
     256        va_end(ap);
     257}
     258
     259void
     260sh_vwarn(shinstance *psh, const char *fmt, va_list ap)
     261{
     262        exvwarning(psh, errno, fmt, ap);
     263}
     264
     265void
     266sh_warnx(shinstance *psh, const char *fmt, ...)
    266267{
    267268        va_list ap;
    268269
    269270        va_start(ap, fmt);
    270         exvwarning(-1, fmt, ap);
    271         va_end(ap);
    272 }
    273 
    274 void
    275 sh_vwarnx(const char *fmt, va_list ap)
    276 {
    277         exvwarning(-1, fmt, ap);
     271        exvwarning(psh, -1, fmt, ap);
     272        va_end(ap);
     273}
     274
     275void
     276sh_vwarnx(shinstance *psh, const char *fmt, va_list ap)
     277{
     278        exvwarning(psh, -1, fmt, ap);
    278279}
    279280
     
    357358
    358359const char *
    359 errmsg(int e, int action)
     360errmsg(shinstance *psh, int e, int action)
    360361{
    361362        struct errname const *ep;
    362         static char buf[12];
     363        /*static char buf[12];*/
    363364
    364365        for (ep = errormsg ; ep->errcode ; ep++) {
     
    366367                        return ep->msg;
    367368        }
    368         fmtstr(buf, sizeof buf, "error %d", e);
    369         return buf;
    370 }
     369        fmtstr(psh->errmsg_buf, sizeof psh->errmsg_buf, "error %d", e);
     370        return psh->errmsg_buf;
     371}
  • trunk/src/ash-messup/eval.c

    r809 r883  
    100100
    101101
    102 char *commandname;
     102/*char *commandname;*/
    103103struct strlist *cmdenviron;
    104104int exitstatus;                 /* exit status of last command */
  • trunk/src/ash-messup/jobs.c

    r809 r883  
    10211021                 */
    10221022                if (WIFSIGNALED(status) && WTERMSIG(status) == SIGINT)
    1023                         raise(SIGINT);
     1023                        sh_raise_sigint(psh);/*raise(SIGINT);*/
    10241024        }
    10251025#endif
  • trunk/src/ash-messup/main.c

    r882 r883  
    118118         * Create the root shell instance.
    119119         */
    120         psh = create_root_shell(NULL, argc, argv);
     120        psh = sh_create_root_shell(NULL, argc, argv);
    121121        if (!psh)
    122122                return 2;
  • trunk/src/ash-messup/output.c

    r809 r883  
    253253        strout.fd = BLOCK_OUT;
    254254        strout.flags = 0;
     255        strout.psh = NULL;
    255256        doformat(&strout, fmt, ap);
    256257        outc('\0', &strout);
  • trunk/src/ash-messup/output.h

    r880 r883  
    6969void dprintf(struct shinstance *, const char *, ...)
    7070    __attribute__((__format__(__printf__,2,3)));
    71 void fmtstr(struct shinstance *, char *, size_t, const char *, ...)
    72     __attribute__((__format__(__printf__,4,5)));
     71void fmtstr(char *, size_t, const char *, ...)
     72    __attribute__((__format__(__printf__,3,4)));
    7373void doformat(struct output *, const char *, va_list);
    7474int xwrite(int, char *, int);
  • trunk/src/ash-messup/shfile.h

    r882 r883  
    4646{
    4747    shmtx               mtx;            /**< Mutex protecting any operations on the table and it's handles. */
     48    char               *cwd;            /**< The current directory for this shell instance. */
    4849    unsigned            size;           /**< The size of the table (number of entries). */
    4950    shfile             *tab;            /**< Pointer to the table. */
     
    5253
    5354int shfile_open(shfdtab *, const char *, unsigned);
    54 int shfile_close(shfdtab *pfdtab, unsigned fd);
     55int shfile_close(shfdtab *, unsigned);
    5556
     57int shfile_stat(shfdtab *, const char *, struct stat *);
     58int shfile_lstat(shfdtab *, const char *, struct stat *);
     59int shfile_chdir(shfdtab *, const char *);
     60char *shfile_getcwd(shfdtab *, char *, int);
     61         
    5662#endif
    5763
  • trunk/src/ash-messup/shinstance.c

    r879 r883  
    3737 * @returns pointer to root shell on success, NULL on failure.
    3838 */
    39 shinstance *create_root_shell(shinstance *inherit, int argc, char **argv)
     39shinstance *sh_create_root_shell(shinstance *inherit, int argc, char **argv)
    4040{
    4141    shinstance *psh;
  • trunk/src/ash-messup/shinstance.h

    r882 r883  
    2525 */
    2626
     27#ifndef ___shinstance_h___
     28#define ___shinstance_h___
     29
    2730#include "shtypes.h"
    2831#include "shthread.h"
    2932#include "shfile.h"
     33
     34#include "var.h"
     35
    3036
    3137/**
     
    141147    struct alias       *atab[ATABSIZE];
    142148
     149    /* cd.c */
     150    char               *curdir;         /**< current working directory */
     151    char               *prevdir;        /**< previous working directory */
     152    char               *cdcomppath;
     153    int                 getpwd_first;   /**< static in getpwd. (initialized to 1!) */
     154
     155    /* error.c */
     156    char                errmsg_buf[16]; /**< static in errmsg. (bss) */
     157
    143158} shinstance;
    144159
    145160
    146 extern shinstance *create_root_shell(shinstance *inherit, int argc, char **argv);
     161extern shinstance *sh_create_root_shell(shinstance *inherit, int argc, char **argv);
     162char *sh_getenv(shinstance *, const char *);
    147163
     164/* signals */
     165#include <signal.h>
     166#ifdef _MSC_VER
     167typedef uint32_t sh_sigset_t;
     168#else
     169typedef sigset_t sh_sigset_t;
     170#endif
     171
     172typedef void (*sh_handler)(int);
     173sh_handler sh_signal(shinstance *, int, sh_handler handler);
     174void sh_raise_sigint(shinstance *);
     175void sh_sigemptyset(sh_sigset_t *set);
     176int sh_sigprocmask(shinstance *, int op, sh_sigset_t const *new, sh_sigset_t *old);
     177
     178#endif
  • trunk/src/ash-messup/shthread.h

    r882 r883  
    2828#define ___shthread_h___
    2929
    30 #include <sys/types.h>
     30#include "shtypes.h"
    3131
    3232typedef struct shmtx
Note: See TracChangeset for help on using the changeset viewer.

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