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

  1. #include <stdio.h>
  2. #include "def.h"
  3. #include "1.defs.h"
  4.  
  5. str_copy(s,ptr,length)    /* copy s at ptr, return length of s */
  6. char *s, *ptr;
  7. int length;
  8.     {int i;
  9.     for (i = 0; i < length; i++)
  10.         {
  11.         ptr[i] = s[i];
  12.         if (ptr[i] == '\0')
  13.             return(i + 1);
  14.         }
  15.     faterr("string too long to be copied at given address:\n",s,"");
  16.     }
  17.  
  18.  
  19. find(s,ar,size)
  20. char *s,*ar[];
  21. int size;
  22.     {
  23.     int i;
  24.     for (i=0; i < size; i++)
  25.         {if (str_eq(s, ar[i])) return(i);}
  26.     return(-1);
  27.     }
  28.  
  29.  
  30. str_eq(s,t)
  31. char s[],t[];
  32.     {int j;
  33.     for (j = 0; s[j] == t[j]; j++)
  34.         {if (s[j] == '\0') return(1);}
  35.     return(0);
  36.     }
  37.  
  38.  
  39. classmatch(c,i)
  40. char c;
  41. int i;
  42.     {switch(i)
  43.         {case _digit:
  44.             if ('0' <= c && c <= '9')  return(1);
  45.             else return(0);
  46.  
  47.         case _letter:
  48.             if ( ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))
  49.                 return(1);
  50.             else return(0);
  51.  
  52.         case _diglet:  return(classmatch(c,_digit)||classmatch(c,_letter) );
  53.  
  54.         case _arith:
  55.             if (050 <= c && c<= 057)  return(1);
  56.             else return(0);
  57.         case _nl:
  58.             return(c=='\n');
  59.         case _other:
  60.             return(1);
  61.         }
  62.     }
  63.  
  64.  
  65. copychars(cbeg,target,n)        /* copy n chars from cbeg to target */
  66. char *cbeg, *target;
  67. int n;
  68.     {
  69.     int i;
  70.     for (i = 0; i < n; i++)
  71.         target[i] = cbeg[i];
  72.     }
  73.  
  74.  
  75.  
  76. copycs(cbeg,target,n)            /* copy n chars from cbeg to target, add '\0' */
  77. char *cbeg, *target;
  78. int n;
  79.     {
  80.     copychars(cbeg,target,n);
  81.     target[n] = '\0';
  82.     }
  83.  
  84.  
  85. slength(s)            /* return number of chars in s, not counting '\0' */
  86. char *s;
  87.     {
  88.     int i;
  89.     if (!s) return(-1);
  90.     for (i = 0; s[i] != '\0'; i++);
  91.     return(i);
  92.     }
  93.  
  94.  
  95. concat(x,y)            /* allocate space, return xy */
  96. char *x, *y;
  97.     {
  98.     char *temp;
  99.     int i,j;
  100.     i = slength(x);
  101.     j = slength(y);
  102.     temp = galloc(i + j + 1);
  103.     sprintf(temp,"%s",x);
  104.     sprintf(&temp[i],"%s",y);
  105.     return(temp);
  106.     }
  107.