Annotation of 42BSD/usr.bin/uucp/getprm.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)getprm.c   5.1 (Berkeley) 7/2/83";
                      3: #endif
                      4: 
                      5: #include <stdio.h>
                      6: 
                      7: #define LQUOTE '('
                      8: #define RQUOTE ')'
                      9: #define NOSYSPART      0
                     10: #define HASSYSPART     1
                     11: 
                     12: 
                     13: /*******
                     14:  *     char *
                     15:  *     getprm(s, prm)  get next parameter from s
                     16:  *     char *s, *prm;
                     17:  *
                     18:  *     return - pointer to next character in s
                     19:  */
                     20: 
                     21: char *
                     22: getprm(s, prm)
                     23: register char *s, *prm;
                     24: {
                     25:        register char *c;
                     26:        char *index();
                     27: 
                     28:        while (*s == ' ' || *s == '\t' || *s == '\n')
                     29:                s++;
                     30: 
                     31:        *prm = '\0';
                     32:        if (*s == '\0')
                     33:                return(NULL);
                     34: 
                     35:        if (*s == '>' || *s == '<' || *s == '|'
                     36:          || *s == ';' || *s == '&') {
                     37:                *prm++ = *s++;
                     38:                *prm = '\0';
                     39:                return(s);
                     40:        }
                     41: 
                     42:        /* look for quoted argument */
                     43:        if (*s == LQUOTE) {
                     44:                if ((c = index(s + 1, RQUOTE)) != NULL) {
                     45:                        c++;
                     46:                        while (c != s)
                     47:                                *prm++ = *s++;
                     48:                        *prm = '\0';
                     49:                        return(s);
                     50:                }
                     51:        }
                     52: 
                     53:        /* look for `  ` string */
                     54:        if (*s == '`') {
                     55:                if ((c = index(s + 1, '`')) != NULL) {
                     56:                        c++;
                     57:                        while (c != s)
                     58:                                *prm++ = *s++;
                     59:                        *prm = '\0';
                     60:                        return(s);
                     61:                }
                     62:        }
                     63: 
                     64:        while (*s != ' ' && *s != '\t' && *s != '<'
                     65:        && *s != '>' && *s != '|' && *s != '\0'
                     66:        && *s != '&' && *s != ';' && *s != '\n')
                     67:                *prm++ = *s++;
                     68:        *prm = '\0';
                     69: 
                     70:        return(s);
                     71: }
                     72: 
                     73: /***
                     74:  *     split(name, sys, rest)  split into system and file part
                     75:  *     char *name, *sys, *rest;
                     76:  *
                     77:  *     return codes:
                     78:  *             NOSYSPART
                     79:  *             HASSYSPART
                     80:  */
                     81: 
                     82: split(name, sys, rest)
                     83: register char *name, *rest;
                     84: char *sys;
                     85: {
                     86:        register char *c;
                     87:        char *index(), *strcpy();
                     88:        int i;
                     89: 
                     90:        if (*name == LQUOTE) {
                     91:                if ((c = index(name + 1, RQUOTE)) != NULL) {
                     92:                /* strip off quotes */
                     93:                        name++;
                     94:                        while (c != name)
                     95:                                *rest++ = *name++;
                     96:                        *rest = '\0';
                     97:                        *sys = '\0';
                     98:                        return(NOSYSPART);
                     99:                }
                    100:        }
                    101: 
                    102:        if ((c = index(name, '!')) == NULL) {
                    103:                strcpy(rest, name);
                    104:                *sys = '\0';
                    105:                return(NOSYSPART);
                    106:        }
                    107: 
                    108:        *c = '\0';
                    109:        for (i = 0; i < 7; i++)
                    110:                if ((*sys++ = *name++) == '\0')
                    111:                        break;
                    112: 
                    113:        strcpy(rest, ++c);
                    114:        return(HASSYSPART);
                    115: }

unix.superglobalmegacorp.com

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