BSD 3 development
[unix-history] / usr / src / cmd / uucp / getprm.c
index 4cfd8d7..758ee87 100644 (file)
@@ -1,5 +1,9 @@
 #include <stdio.h>
 
 #include <stdio.h>
 
+#define LQUOTE '('
+#define RQUOTE ')'
+#define NOSYSPART      0
+#define HASSYSPART     1
 
 /*******
  *     char *
 
 /*******
  *     char *
@@ -13,6 +17,7 @@ char *
 getprm(s, prm)
 char *s, *prm;
 {
 getprm(s, prm)
 char *s, *prm;
 {
+       char *c;
 
        while (*s == ' ' || *s == '\t' || *s == '\n')
                s++;
 
        while (*s == ' ' || *s == '\t' || *s == '\n')
                s++;
@@ -28,6 +33,17 @@ char *s, *prm;
                return(s);
        }
 
                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')
        while (*s != ' ' && *s != '\t' && *s != '<'
        && *s != '>' && *s != '|' && *s != '\0'
        && *s != ';' && *s != '\n')
@@ -36,3 +52,46 @@ char *s, *prm;
 
        return(s);
 }
 
        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);
+}