113649Ssam #ifndef lint 2*23603Sbloom static char sccsid[] = "@(#)getprm.c 5.3 (Berkeley) 06/19/85"; 313649Ssam #endif 413649Ssam 5*23603Sbloom #include "uucp.h" 613649Ssam 713649Ssam #define LQUOTE '(' 813649Ssam #define RQUOTE ')' 913649Ssam #define NOSYSPART 0 1013649Ssam #define HASSYSPART 1 1113649Ssam 12*23603Sbloom /*LINTLIBRARY*/ 1313649Ssam 1417835Sralph /* 1517835Sralph * get next parameter from s 1613649Ssam * 1713649Ssam * return - pointer to next character in s 1813649Ssam */ 1913649Ssam 2013649Ssam char * 2113649Ssam getprm(s, prm) 2213649Ssam register char *s, *prm; 2313649Ssam { 2413649Ssam register char *c; 2513649Ssam 2613649Ssam while (*s == ' ' || *s == '\t' || *s == '\n') 2713649Ssam s++; 2813649Ssam 2913649Ssam *prm = '\0'; 3013649Ssam if (*s == '\0') 3117835Sralph return NULL; 3213649Ssam 3313649Ssam if (*s == '>' || *s == '<' || *s == '|' 3413649Ssam || *s == ';' || *s == '&') { 3513649Ssam *prm++ = *s++; 3613649Ssam *prm = '\0'; 3717835Sralph return s; 3813649Ssam } 3913649Ssam 4013649Ssam /* look for quoted argument */ 4113649Ssam if (*s == LQUOTE) { 4213649Ssam if ((c = index(s + 1, RQUOTE)) != NULL) { 4313649Ssam c++; 4413649Ssam while (c != s) 4513649Ssam *prm++ = *s++; 4613649Ssam *prm = '\0'; 4717835Sralph return s; 4813649Ssam } 4913649Ssam } 5013649Ssam 5113649Ssam /* look for ` ` string */ 5213649Ssam if (*s == '`') { 5313649Ssam if ((c = index(s + 1, '`')) != NULL) { 5413649Ssam c++; 5513649Ssam while (c != s) 5613649Ssam *prm++ = *s++; 5713649Ssam *prm = '\0'; 5817835Sralph return s; 5913649Ssam } 6013649Ssam } 6113649Ssam 6213649Ssam while (*s != ' ' && *s != '\t' && *s != '<' 6317835Sralph && *s != '>' && *s != '|' && *s != '\0' 6417835Sralph && *s != '&' && *s != ';' && *s != '\n') 6513649Ssam *prm++ = *s++; 6613649Ssam *prm = '\0'; 6713649Ssam 6817835Sralph return s; 6913649Ssam } 7013649Ssam 7117835Sralph /* 7217835Sralph * split into system and file part 7313649Ssam * 7413649Ssam * return codes: 7513649Ssam * NOSYSPART 7613649Ssam * HASSYSPART 7713649Ssam */ 7813649Ssam 7913649Ssam split(name, sys, rest) 8013649Ssam register char *name, *rest; 8113649Ssam char *sys; 8213649Ssam { 8313649Ssam register char *c; 84*23603Sbloom register int i; 8513649Ssam 8613649Ssam if (*name == LQUOTE) { 8713649Ssam if ((c = index(name + 1, RQUOTE)) != NULL) { 8813649Ssam /* strip off quotes */ 8913649Ssam name++; 9013649Ssam while (c != name) 9113649Ssam *rest++ = *name++; 9213649Ssam *rest = '\0'; 9313649Ssam *sys = '\0'; 9417835Sralph return NOSYSPART; 9513649Ssam } 9613649Ssam } 9713649Ssam 9813649Ssam if ((c = index(name, '!')) == NULL) { 9913649Ssam strcpy(rest, name); 10013649Ssam *sys = '\0'; 10117835Sralph return NOSYSPART; 10213649Ssam } 10313649Ssam 104*23603Sbloom *c++ = '\0'; 105*23603Sbloom strncpy(sys, name, MAXBASENAME); 106*23603Sbloom sys[MAXBASENAME] = '\0'; 10713649Ssam 108*23603Sbloom strcpy(rest, c); 10917835Sralph return HASSYSPART; 11013649Ssam } 111