|
|
1.1 root 1: #include <stdio.h>
2: #include <string.h>
3: #include "misc.h"
4:
5: void
6: addsub(struct sub **sublistp, char *ostr, char *nstr)
7: {
8: struct sub *nsub;
9:
10: nsub = xmalloc(sizeof (struct sub));
11: nsub->ostr = xstrdup(ostr);
12: nsub->nstr = xstrdup(nstr);
13: nsub->next = *sublistp;
14: *sublistp = nsub;
15: }
16:
17: int
18: sub(struct sub **sublistp, int prefix, char str[], int maxlen)
19: {
20: struct sub *sub;
21: int olen, nlen;
22:
23: for (sub = *sublistp; sub; sub = sub->next) {
24: olen = strlen(sub->ostr);
25: if (prefix && strncmp(str, sub->ostr, olen) == 0)
26: break;
27: else if (!prefix && strcmp(str, sub->ostr))
28: break;
29: }
30: if (!sub)
31: return 1;
32: nlen = strlen(sub->nstr);
33: if (strlen(str) + nlen - olen > maxlen)
34: return 0;
35: memmove(str + nlen, str + olen, strlen(str + olen) + 1);
36: strncpy(str, sub->nstr, nlen);
37: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.