Annotation of xinu/sys/shell/addarg.c, revision 1.1

1.1     ! root        1: /* addarg.c - addarg */
        !             2: 
        !             3: #include <conf.h>
        !             4: #include <kernel.h>
        !             5: #include <proc.h>
        !             6: #include <shell.h>
        !             7: 
        !             8: /*------------------------------------------------------------------------
        !             9:  *  addarg  -  copy arguments to area reserved on process stack
        !            10:  *------------------------------------------------------------------------
        !            11:  */
        !            12: addarg(pid, nargs, len)
        !            13: int    pid;                            /* process to receive arguments */
        !            14: int    nargs;                          /* number of arguments to copy  */
        !            15: int    len;                            /* size of arg. area (in bytes) */
        !            16: {
        !            17:        struct  pentry  *pptr;
        !            18:        char    **fromarg;
        !            19:        int     *toarg;
        !            20:        char    *to;
        !            21: 
        !            22:        if (isbadpid(pid) || (pptr= &proctab[pid])->pstate != PRSUSP)
        !            23:                return(SYSERR);
        !            24:        toarg = (int *) ( ((unsigned)pptr->pbase) - (unsigned)len );
        !            25:        to = (char *) (toarg + (nargs + 2));
        !            26:        *toarg++ = (int)(toarg + 1);
        !            27:        for (fromarg= Shl.shtok ; nargs > 0 ; nargs--) {
        !            28:                *toarg++ = (int)to;
        !            29:                strcpy(to, *fromarg++);
        !            30:                to += strlen(to) + 1;           
        !            31:        }
        !            32:        *toarg = 0;
        !            33:        return(OK);
        !            34: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.