|
|
1.1 root 1: #include <stdio.h>
2: #include <ctype.h>
3: #include <regexp.h>
4:
5: /* imports */
6: extern int strlen();
7: extern char *strrchr();
8: extern char *strchr();
9:
10: extern int
11: from(addrp, src, sender)
12: char *addrp; /* address to rewrite */
13: char *src; /* where to source machine name */
14: char *sender; /* where to put sender name */
15: {
16: char *nsender, *nsrc, *cp;
17:
18: /* very cruddy algorithm */
19: nsender = strrchr(addrp, '!');
20: if (nsender == NULL) {
21: /* local mail */
22: nsender = addrp;
23: nsrc = "";
24: } else {
25: /* at least one ! */
26: *nsender++ = '\0';
27: nsrc = strrchr(addrp, '!');
28: if (nsrc == NULL)
29: nsrc = addrp;
30: else
31: *nsrc++ = '\0';
32: }
33: /* look for domain address in sender - note precedence of %, @, and . */
34: if ((cp = strchr(nsender, '%'))!=NULL ||
35: (cp = strchr(nsender, '@'))!=NULL ||
36: (cp = strchr(nsender, '.'))!=NULL) {
37: *cp = '\0';
38: nsrc = ++cp;
39: }
40: /* look for domain address in src */
41: if ((cp = strchr(nsrc, '.'))!=NULL)
42: *cp = '\0';
43: (void)strcpy(sender, nsender);
44: (void)strcpy(src, nsrc);
45: return 0;
46: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.