VirtualBox

Changeset 882 in kBuild for trunk


Ignore:
Timestamp:
Apr 21, 2007 6:22:16 PM (18 years ago)
Author:
bird
Message:

hacking...

Location:
trunk/src/ash-messup
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ash-messup/Makefile.kmk

    r881 r882  
    5959        $(PATH_TARGET)/builtins.c \
    6060        $(PATH_TARGET)/init.c \
    61         $(PATH_TARGET)/nodes.c
     61        $(PATH_TARGET)/nodes.c \
     62        \
     63        shinstance.c \
     64        shthread.c \
     65        shfile.c
    6266kmk_ash_SOURCES.linux = \
    6367        sys_signame.c \
     
    114118#$(eval $(def_copy_generated)))
    115119
    116 kmk_ash_INCS += generated
     120kmk_ash_INCS += generated
     121kmk_ash_DEFS += HAVE_SYS_CDEFS_H
    117122
    118123include $(PATH_KBUILD)/footer.kmk
  • trunk/src/ash-messup/alias.c

    r809 r882  
    5454#include "options.h"    /* XXX for argptr (should remove?) */
    5555#include "var.h"
    56 
    57 #define ATABSIZE 39
    58 
    59 struct alias *atab[ATABSIZE];
    60 
    61 STATIC void setalias(char *, char *);
    62 STATIC int unalias(char *);
    63 STATIC struct alias **hashalias(char *);
     56#include "shinstance.h"
     57
     58/*#define ATABSIZE 39
     59
     60struct alias *atab[ATABSIZE];*/
     61
     62STATIC void setalias(shinstance *, char *, char *);
     63STATIC int unalias(shinstance *, char *);
     64STATIC struct alias **hashalias(shinstance *, char *);
    6465
    6566STATIC
    6667void
    67 setalias(char *name, char *val)
     68setalias(shinstance *psh, char *name, char *val)
    6869{
    6970        struct alias *ap, **app;
    7071
    71         app = hashalias(name);
     72        app = hashalias(psh, name);
    7273        for (ap = *app; ap; ap = ap->next) {
    7374                if (equal(name, ap->name)) {
     
    117118
    118119STATIC int
    119 unalias(char *name)
     120unalias(shinstance *psh, char *name)
    120121{
    121122        struct alias *ap, **app;
    122123
    123         app = hashalias(name);
     124        app = hashalias(psh, name);
    124125
    125126        for (ap = *app; ap; app = &(ap->next), ap = ap->next) {
     
    150151
    151152#ifdef mkinit
    152 MKINIT void rmaliases(void);
     153MKINIT void rmaliases(shinstance *psh);
    153154
    154155SHELLPROC {
    155         rmaliases();
     156        rmaliases(psh);
    156157}
    157158#endif
    158159
    159160void
    160 rmaliases(void)
     161rmaliases(shinstance *psh)
    161162{
    162163        struct alias *ap, *tmp;
     
    165166        INTOFF;
    166167        for (i = 0; i < ATABSIZE; i++) {
    167                 ap = atab[i];
    168                 atab[i] = NULL;
     168                ap = psh->atab[i];
     169                psh->atab[i] = NULL;
    169170                while (ap) {
    170171                        ckfree(ap->name);
     
    179180
    180181struct alias *
    181 lookupalias(char *name, int check)
    182 {
    183         struct alias *ap = *hashalias(name);
     182lookupalias(shinstance *psh, char *name, int check)
     183{
     184        struct alias *ap = *hashalias(psh, name);
    184185
    185186        for (; ap; ap = ap->next) {
     
    195196
    196197char *
    197 get_alias_text(char *name)
     198get_alias_text(shinstance *psh, char *name)
    198199{
    199200        struct alias *ap;
    200201
    201         ap = lookupalias(name, 0);
     202        ap = lookupalias(psh, name, 0);
    202203        if (ap == NULL)
    203204                return NULL;
     
    209210 */
    210211int
    211 aliascmd(int argc, char **argv)
     212aliascmd(shinstance *psh, int argc, char **argv)
    212213{
    213214        char *n, *v;
     
    219220
    220221                for (i = 0; i < ATABSIZE; i++)
    221                         for (ap = atab[i]; ap; ap = ap->next) {
     222                        for (ap = psh->atab[i]; ap; ap = ap->next) {
    222223                                if (*ap->name != '\0') {
    223                                         out1fmt("alias %s=", ap->name);
    224                                         print_quoted(ap->val);
    225                                         out1c('\n');
     224                                        out1fmt(psh, "alias %s=", ap->name);
     225                                        print_quoted(psh, ap->val);
     226                                        out1c(psh, '\n');
    226227                                }
    227228                        }
     
    230231        while ((n = *++argv) != NULL) {
    231232                if ((v = strchr(n+1, '=')) == NULL) { /* n+1: funny ksh stuff */
    232                         if ((ap = lookupalias(n, 0)) == NULL) {
    233                                 outfmt(out2, "alias: %s not found\n", n);
     233                        if ((ap = lookupalias(psh, n, 0)) == NULL) {
     234                                outfmt(psh->out2, "alias: %s not found\n", n);
    234235                                ret = 1;
    235236                        } else {
    236                                 out1fmt("alias %s=", n);
    237                                 print_quoted(ap->val);
    238                                 out1c('\n');
     237                                out1fmt(psh, "alias %s=", n);
     238                                print_quoted(psh, ap->val);
     239                                out1c(psh, '\n');
    239240                        }
    240241                } else {
    241242                        *v++ = '\0';
    242                         setalias(n, v);
     243                        setalias(psh, n, v);
    243244                }
    244245        }
     
    248249
    249250int
    250 unaliascmd(int argc, char **argv)
     251unaliascmd(shinstance *psh, int argc, char **argv)
    251252{
    252253        int i;
    253254
    254         while ((i = nextopt("a")) != '\0') {
     255        while ((i = nextopt(psh, "a")) != '\0') {
    255256                if (i == 'a') {
    256                         rmaliases();
     257                        rmaliases(psh);
    257258                        return (0);
    258259                }
    259260        }
    260         for (i = 0; *argptr; argptr++)
    261                 i = unalias(*argptr);
     261        for (i = 0; *psh->argptr; psh->argptr++)
     262                i = unalias(psh, *psh->argptr);
    262263
    263264        return (i);
     
    265266
    266267STATIC struct alias **
    267 hashalias(char *p)
     268hashalias(shinstance *psh, char *p)
    268269{
    269270        unsigned int hashval;
     
    272273        while (*p)
    273274                hashval+= *p++;
    274         return &atab[hashval % ATABSIZE];
    275 }
     275        return &psh->atab[hashval % ATABSIZE];
     276}
  • trunk/src/ash-messup/main.c

    r881 r882  
    308308
    309309        INTOFF;
    310         if ((fd = shfile_open(psh, name, O_RDONLY)) >= 0)
     310        if ((fd = shfile_open(&psh->fdtab, name, O_RDONLY)) >= 0)
    311311                setinputfd(psh, fd, 1);
    312312        INTON;
  • trunk/src/ash-messup/shfile.h

    r881 r882  
    2525 */
    2626
     27#ifndef ___shfile_h___
     28#define ___shfile_h___
    2729
    2830#include "shtypes.h"
     
    4951
    5052
    51 int shfile_open(shinstance *, const char *, unsigned);
     53int shfile_open(shfdtab *, const char *, unsigned);
     54int shfile_close(shfdtab *pfdtab, unsigned fd);
    5255
     56#endif
     57
  • trunk/src/ash-messup/shinstance.h

    r881 r882  
    137137    /* builtins.h */
    138138
     139    /* alias.c */
     140#define ATABSIZE 39
     141    struct alias       *atab[ATABSIZE];
     142
    139143} shinstance;
    140144
  • trunk/src/ash-messup/shthread.h

    r881 r882  
    2525 */
    2626
     27#ifndef ___shthread_h___
     28#define ___shthread_h___
    2729
    2830#include <sys/types.h>
     
    3739void shthread_set_shell(struct shinstance *);
    3840struct shinstance *shthread_get_shell(void);
     41
     42#endif
     43
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