Annotation of 40BSD/cmd/uucp/getprm.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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