home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
- #define LQUOTE '('
- #define RQUOTE ')'
- #define NOSYSPART 0
- #define HASSYSPART 1
-
- /*******
- * char *
- * getprm(s, prm) get next parameter from s
- * char *s, *prm;
- *
- * return - pointer to next character in s
- */
-
- char *
- getprm(s, prm)
- char *s, *prm;
- {
- char *c;
-
- while (*s == ' ' || *s == '\t' || *s == '\n')
- s++;
-
- *prm = '\0';
- if (*s == '\0')
- return(NULL);
-
- if (*s == '>' || *s == '<' || *s == '|'
- || *s == ';') {
- *prm++ = *s++;
- *prm = '\0';
- return(s);
- }
-
- /* look for quoted argument */
- if (*s == LQUOTE) {
- if ((c = index(s + 1, RQUOTE)) != NULL) {
- c++;
- while (c != s)
- *prm++ = *s++;
- *prm = '\0';
- return(s);
- }
- }
-
- while (*s != ' ' && *s != '\t' && *s != '<'
- && *s != '>' && *s != '|' && *s != '\0'
- && *s != ';' && *s != '\n')
- *prm++ = *s++;
- *prm = '\0';
-
- return(s);
- }
-
- /***
- * split(name, sys, rest) split into system and file part
- * char *name, *sys, *rest;
-
- *
- * return codes:
- * NOSYSPART
- * HASSYSPART
- */
-
- split(name, sys, rest)
- char *name, *sys, *rest;
- {
- char *c;
- int i;
-
- if (*name == LQUOTE) {
- if ((c = index(name + 1, RQUOTE)) != NULL) {
- /* strip off quotes */
- name++;
- while (c != name)
- *rest++ = *name++;
- *rest = '\0';
- *sys = '\0';
- return(NOSYSPART);
- }
- }
-
- if ((c = index(name, '!')) == NULL) {
- strcpy(rest, name);
- *sys = '\0';
- return(NOSYSPART);
- }
-
- *c = '\0';
- for (i = 0; i < 7; i++)
- if ((*sys++ = *name++) == '\0')
- break;
-
- strcpy(rest, ++c);
- return(HASSYSPART);
- }
-