cmd                28 user/sh.c        struct cmd *cmd;
cmd                37 user/sh.c        struct cmd *left;
cmd                38 user/sh.c        struct cmd *right;
cmd                43 user/sh.c        struct cmd *left;
cmd                44 user/sh.c        struct cmd *right;
cmd                49 user/sh.c        struct cmd *cmd;
cmd                54 user/sh.c      struct cmd *parsecmd(char*);
cmd                55 user/sh.c      void runcmd(struct cmd*) __attribute__((noreturn));
cmd                59 user/sh.c      runcmd(struct cmd *cmd)
cmd                68 user/sh.c        if(cmd == 0)
cmd                71 user/sh.c        switch(cmd->type){
cmd                76 user/sh.c          ecmd = (struct execcmd*)cmd;
cmd                84 user/sh.c          rcmd = (struct redircmd*)cmd;
cmd                90 user/sh.c          runcmd(rcmd->cmd);
cmd                94 user/sh.c          lcmd = (struct listcmd*)cmd;
cmd               102 user/sh.c          pcmd = (struct pipecmd*)cmd;
cmd               126 user/sh.c          bcmd = (struct backcmd*)cmd;
cmd               128 user/sh.c            runcmd(bcmd->cmd);
cmd               161 user/sh.c          char *cmd = buf;
cmd               162 user/sh.c          while (*cmd == ' ' || *cmd == '\t')
cmd               163 user/sh.c            cmd++;
cmd               164 user/sh.c          if (*cmd == '\n') // is a blank command
cmd               166 user/sh.c          if(cmd[0] == 'c' && cmd[1] == 'd' && cmd[2] == ' '){
cmd               168 user/sh.c            cmd[strlen(cmd)-1] = 0;  // chop \n
cmd               169 user/sh.c            if(chdir(cmd+3) < 0)
cmd               170 user/sh.c              fprintf(2, "cannot cd %s\n", cmd+3);
cmd               173 user/sh.c              runcmd(parsecmd(cmd));
cmd               201 user/sh.c      struct cmd*
cmd               204 user/sh.c        struct execcmd *cmd;
cmd               206 user/sh.c        cmd = malloc(sizeof(*cmd));
cmd               207 user/sh.c        memset(cmd, 0, sizeof(*cmd));
cmd               208 user/sh.c        cmd->type = EXEC;
cmd               209 user/sh.c        return (struct cmd*)cmd;
cmd               212 user/sh.c      struct cmd*
cmd               213 user/sh.c      redircmd(struct cmd *subcmd, char *file, char *efile, int mode, int fd)
cmd               215 user/sh.c        struct redircmd *cmd;
cmd               217 user/sh.c        cmd = malloc(sizeof(*cmd));
cmd               218 user/sh.c        memset(cmd, 0, sizeof(*cmd));
cmd               219 user/sh.c        cmd->type = REDIR;
cmd               220 user/sh.c        cmd->cmd = subcmd;
cmd               221 user/sh.c        cmd->file = file;
cmd               222 user/sh.c        cmd->efile = efile;
cmd               223 user/sh.c        cmd->mode = mode;
cmd               224 user/sh.c        cmd->fd = fd;
cmd               225 user/sh.c        return (struct cmd*)cmd;
cmd               228 user/sh.c      struct cmd*
cmd               229 user/sh.c      pipecmd(struct cmd *left, struct cmd *right)
cmd               231 user/sh.c        struct pipecmd *cmd;
cmd               233 user/sh.c        cmd = malloc(sizeof(*cmd));
cmd               234 user/sh.c        memset(cmd, 0, sizeof(*cmd));
cmd               235 user/sh.c        cmd->type = PIPE;
cmd               236 user/sh.c        cmd->left = left;
cmd               237 user/sh.c        cmd->right = right;
cmd               238 user/sh.c        return (struct cmd*)cmd;
cmd               241 user/sh.c      struct cmd*
cmd               242 user/sh.c      listcmd(struct cmd *left, struct cmd *right)
cmd               244 user/sh.c        struct listcmd *cmd;
cmd               246 user/sh.c        cmd = malloc(sizeof(*cmd));
cmd               247 user/sh.c        memset(cmd, 0, sizeof(*cmd));
cmd               248 user/sh.c        cmd->type = LIST;
cmd               249 user/sh.c        cmd->left = left;
cmd               250 user/sh.c        cmd->right = right;
cmd               251 user/sh.c        return (struct cmd*)cmd;
cmd               254 user/sh.c      struct cmd*
cmd               255 user/sh.c      backcmd(struct cmd *subcmd)
cmd               257 user/sh.c        struct backcmd *cmd;
cmd               259 user/sh.c        cmd = malloc(sizeof(*cmd));
cmd               260 user/sh.c        memset(cmd, 0, sizeof(*cmd));
cmd               261 user/sh.c        cmd->type = BACK;
cmd               262 user/sh.c        cmd->cmd = subcmd;
cmd               263 user/sh.c        return (struct cmd*)cmd;
cmd               328 user/sh.c      struct cmd *parseline(char**, char*);
cmd               329 user/sh.c      struct cmd *parsepipe(char**, char*);
cmd               330 user/sh.c      struct cmd *parseexec(char**, char*);
cmd               331 user/sh.c      struct cmd *nulterminate(struct cmd*);
cmd               333 user/sh.c      struct cmd*
cmd               337 user/sh.c        struct cmd *cmd;
cmd               340 user/sh.c        cmd = parseline(&s, es);
cmd               346 user/sh.c        nulterminate(cmd);
cmd               347 user/sh.c        return cmd;
cmd               350 user/sh.c      struct cmd*
cmd               353 user/sh.c        struct cmd *cmd;
cmd               355 user/sh.c        cmd = parsepipe(ps, es);
cmd               358 user/sh.c          cmd = backcmd(cmd);
cmd               362 user/sh.c          cmd = listcmd(cmd, parseline(ps, es));
cmd               364 user/sh.c        return cmd;
cmd               367 user/sh.c      struct cmd*
cmd               370 user/sh.c        struct cmd *cmd;
cmd               372 user/sh.c        cmd = parseexec(ps, es);
cmd               375 user/sh.c          cmd = pipecmd(cmd, parsepipe(ps, es));
cmd               377 user/sh.c        return cmd;
cmd               380 user/sh.c      struct cmd*
cmd               381 user/sh.c      parseredirs(struct cmd *cmd, char **ps, char *es)
cmd               392 user/sh.c            cmd = redircmd(cmd, q, eq, O_RDONLY, 0);
cmd               395 user/sh.c            cmd = redircmd(cmd, q, eq, O_WRONLY|O_CREATE|O_TRUNC, 1);
cmd               398 user/sh.c            cmd = redircmd(cmd, q, eq, O_WRONLY|O_CREATE, 1);
cmd               402 user/sh.c        return cmd;
cmd               405 user/sh.c      struct cmd*
cmd               408 user/sh.c        struct cmd *cmd;
cmd               413 user/sh.c        cmd = parseline(ps, es);
cmd               417 user/sh.c        cmd = parseredirs(cmd, ps, es);
cmd               418 user/sh.c        return cmd;
cmd               421 user/sh.c      struct cmd*
cmd               426 user/sh.c        struct execcmd *cmd;
cmd               427 user/sh.c        struct cmd *ret;
cmd               433 user/sh.c        cmd = (struct execcmd*)ret;
cmd               442 user/sh.c          cmd->argv[argc] = q;
cmd               443 user/sh.c          cmd->eargv[argc] = eq;
cmd               449 user/sh.c        cmd->argv[argc] = 0;
cmd               450 user/sh.c        cmd->eargv[argc] = 0;
cmd               455 user/sh.c      struct cmd*
cmd               456 user/sh.c      nulterminate(struct cmd *cmd)
cmd               465 user/sh.c        if(cmd == 0)
cmd               468 user/sh.c        switch(cmd->type){
cmd               470 user/sh.c          ecmd = (struct execcmd*)cmd;
cmd               476 user/sh.c          rcmd = (struct redircmd*)cmd;
cmd               477 user/sh.c          nulterminate(rcmd->cmd);
cmd               482 user/sh.c          pcmd = (struct pipecmd*)cmd;
cmd               488 user/sh.c          lcmd = (struct listcmd*)cmd;
cmd               494 user/sh.c          bcmd = (struct backcmd*)cmd;
cmd               495 user/sh.c          nulterminate(bcmd->cmd);
cmd               498 user/sh.c        return cmd;