BSD 3 development
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 27 May 1979 10:58:48 +0000 (02:58 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 27 May 1979 10:58:48 +0000 (02:58 -0800)
Work on file usr/src/cmd/uucp/getprm.c

Synthesized-from: 3bsd

usr/src/cmd/uucp/getprm.c [new file with mode: 0644]

diff --git a/usr/src/cmd/uucp/getprm.c b/usr/src/cmd/uucp/getprm.c
new file mode 100644 (file)
index 0000000..758ee87
--- /dev/null
@@ -0,0 +1,97 @@
+#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);
+}