SysIII/usr/src/cmd/bs/string.c
#define ALLOC 127
#define ESIZE 256
#define PATSIZE 100
char *salloc();
sindex(p, s)
char *p, *s;
{
register i, j;
for(i = 0; p[i]; ++i)
for(j = 0; s[j]; ++j)
if(p[i] == s[j])
return ++i;
return 0;
}
char *trans(s, f, t)
char *s, *f, *t;
{
char *ret;
register char *tmp;
register i, j;
int t_len = strlen(t);
ret = tmp = salloc(strlen(s), 0);
for(i = 0; s[i]; i++) {
for(j = 0; f[j]; ++j) {
if(s[i] == f[j]) {
if(j < t_len)
*tmp++ = t[j];
goto brk;
}
}
*tmp++ = s[i];
brk: ;
}
*tmp = '\0';
return ret;
}
char *substr(s, f, w)
register char *s;
register w;
{
register char *sc;
int sz = strlen(s);
char *sr;
if(f <= 0 || f > sz)
return "\0";
--f;
w = w > (sz - f)? sz - f: w;
s += f;
sr = sc = salloc(w, 0);
do
*sc++ = *s++;
while(--w);
*sc = '\0';
return sr;
}
char *Mstring[10];
extern int nbra;
#define INIT register char *sp = instring;
#define GETC() (*sp++)
#define PEEKC() (*sp)
#define UNGETC(c) (--sp)
#define RETURN(c) return
#define ERROR(c) errxx(c)
char *loc1, *loc2, *locs;
ematch(s, p)
char *s;
register char *p;
{
static char expbuf[ESIZE], last[PATSIZE];
char *compile(), *salloc();
register int i, num;
extern char *braslist[], *braelist[];
if(strcmp(p, last) != 0) {
compile(p, expbuf, &expbuf[512], 0);
strcpy(last, p);
}
if(advance(s, expbuf)) {
for(i = nbra; i-- > 0;) {
p = braslist[i];
num = braelist[i] - p;
strncpy(Mstring[i] = salloc(num + 1, 0), p, num);
Mstring[i][num] = '\0';
}
return(loc2-s);
}
return(0);
}
errxx(c)
{
error("RE error");
}
#include "regexp.h"