home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / uucp / getprm.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-11  |  1.5 KB  |  98 lines

  1. #include <stdio.h>
  2.  
  3. #define LQUOTE    '('
  4. #define RQUOTE ')'
  5. #define NOSYSPART    0
  6. #define HASSYSPART    1
  7.  
  8. /*******
  9.  *    char *
  10.  *    getprm(s, prm)    get next parameter from s
  11.  *    char *s, *prm;
  12.  *
  13.  *    return - pointer to next character in s
  14.  */
  15.  
  16. char *
  17. getprm(s, prm)
  18. char *s, *prm;
  19. {
  20.     char *c;
  21.  
  22.     while (*s == ' ' || *s == '\t' || *s == '\n')
  23.         s++;
  24.  
  25.     *prm = '\0';
  26.     if (*s == '\0')
  27.         return(NULL);
  28.  
  29.     if (*s == '>' || *s == '<' || *s == '|'
  30.     || *s == ';') {
  31.         *prm++ = *s++;
  32.         *prm = '\0';
  33.         return(s);
  34.     }
  35.  
  36.     /* look for quoted argument */
  37.     if (*s == LQUOTE) {
  38.         if ((c = index(s + 1, RQUOTE)) != NULL) {
  39.             c++;
  40.             while (c != s)
  41.                 *prm++ = *s++;
  42.             *prm = '\0';
  43.             return(s);
  44.         }
  45.     }
  46.  
  47.     while (*s != ' ' && *s != '\t' && *s != '<'
  48.     && *s != '>' && *s != '|' && *s != '\0'
  49.     && *s != ';' && *s != '\n')
  50.         *prm++ = *s++;
  51.     *prm = '\0';
  52.  
  53.     return(s);
  54. }
  55.  
  56. /***
  57.  *    split(name, sys, rest)    split into system and file part
  58.  *    char *name, *sys, *rest;
  59.  
  60.  *
  61.  *    return codes:
  62.  *        NOSYSPART
  63.  *        HASSYSPART
  64.  */
  65.  
  66. split(name, sys, rest)
  67. char *name, *sys, *rest;
  68. {
  69.     char *c;
  70.     int i;
  71.  
  72.     if (*name == LQUOTE) {
  73.         if ((c = index(name + 1, RQUOTE)) != NULL) {
  74.         /* strip off quotes */
  75.             name++;
  76.             while (c != name)
  77.                 *rest++ = *name++;
  78.             *rest = '\0';
  79.             *sys = '\0';
  80.             return(NOSYSPART);
  81.         }
  82.     }
  83.  
  84.     if ((c = index(name, '!')) == NULL) {
  85.         strcpy(rest, name);
  86.         *sys = '\0';
  87.         return(NOSYSPART);
  88.     }
  89.  
  90.     *c = '\0';
  91.     for (i = 0; i < 7; i++)
  92.         if ((*sys++ = *name++) == '\0')
  93.             break;
  94.  
  95.     strcpy(rest, ++c);
  96.     return(HASSYSPART);
  97. }
  98.