Annotation of researchv10no/cmd/struct/0.string.c, revision 1.1.1.1

1.1       root        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:        }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.