|
|
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.