#include #include extern char *re_comp(); extern re_exec(); int mailhim(); void tolow(); main(argc,argv) char *argv[]; { char str[512],*newarg; FILE *f; register int n; register char *p; char *tmp1,*tmp2,user[80]; int found=0,i; if (argc < 2) error("usage: sendid pat [file]"); /* if ((newarg=(char *)malloc(sizeof(argv[1])))==NULL) perror("malloc"); */ strcpy(newarg,argv[1]); tolow(argv[1],newarg); if ((p = re_comp(newarg)) != 0) { printf("\t%s: %s\n", p, newarg); exit(1); } if (p = argv[2]) { if ((f = fopen(p, "r")) == NULL) { printf("cannot open %s\n", argv[2]); exit(1); } while ((n = load(str, f)) != EOF) if (re_exec(str)) { found++; tmp1=strstr(str,"\t5:"); sscanf(tmp1,"%*c%*c%*c%d",&i); /*Get Id*/ tmp2=strstr(str,"\t2:"); /*Get E-mail*/ sscanf(tmp2,"%*c%*c%*c%s",user); } } if (found==1) {printf("Found 1 occurence of User:%s Id:%d\n",user,i);mailhim();} else {printf("Found %d occurences of %s\n",found,argv[1]);exit(1);} exit(0); } load (s, f) char *s; FILE *f; { int c; static int lineno = 0; /* BAD: you don't know which is computed first */ while ((c = getc(f)) != '\n' && c != EOF) { *s++ = tolower(c); } if (c == EOF) return (EOF); *s = (char) 0; return (++lineno); } error(s) char *s ; { fprintf(stderr,"%s\n",s); exit(1); } void tolow(f,t) char *f,*t; { while (*f) if (*f) *t++=tolower(*f++); *t=0; } mailhim() {}