|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.