/*************************************************************************** RMAIL.c by William Loftus Copyright 1988 by William Loftus. All rights reserved. Beta Version 0.31 Changes: 11-Jun-88 by Dan Schein Changed 'junk' mail to 'Mailer-Daemon' Added BETA version number 15-Jun-99 by wpl Added "passthru" (i.e., rmail burdvax!cbmvax!wpl will now mail it to the next machine). ***************************************************************************/ #include #define TRUE 1 #define FALSE 0 char cmd[128]; int is_in_L_sys_file(system_name) char *system_name; { char buf[256]; char system[128]; FILE *fd; if (!(fd = fopen("UUCP:lib/L.sys","r"))) { printf("Couldn't open UUCP:lib/L.sys file\n"); exit(1); } sprintf(system,"%s ", system_name); while (NULL != fgets(buf, sizeof buf, fd)) { if (buf[0] == '#') continue; if (strncmp(buf, system, strlen(system)) == 0) { fclose(fd); return TRUE; } } fclose(fd); return FALSE; } void main (argc, argv) int argc; char **argv; { FILE *fp; char buf[128]; char user[256]; char system_name[32]; int bang; if (argc != 2) { printf("Not enough information? Rmail to who?\n"); strcpy(user,"Mailer-Daemon"); } else { strcpy(user,argv[1]); } if (strchr(argv[1],'!')) { fp = fopen("t:mail.tmp","w"); if (fp == (char *)NULL) { printf("Having problems resending mail for %s\n",user); fp = fopen("UUCP:MAIL/Mailer-Daemon","a"); if (fp == (char *)NULL) { exit(1); } } while (fgets(buf,sizeof buf,stdin) != 0) { fputs(buf,fp); } fclose(fp); bang = (int)strchr(argv[1],'!'); bang = bang - (int)argv[1]; strncpy(system_name,argv[1],bang); system_name[bang] = '\0'; if (!is_in_L_sys_file(system_name)) { printf ("System \"%s\" not in L.sys file.\n", system_name); exit(1); } system_name[7] = '\0'; sprintf(cmd,"uucp:c/uux t:mail.tmp \"%s!rmail %s\"", system_name, (char *)argv[1]+bang+1); if (system(cmd)) printf("Error in rmail -- can't spawn process\n"); } else { chdir("UUCP:mail"); fp = fopen(user,"a"); if (fp == (char *)NULL) { printf("Having problems appending mail for %s\n",user); fp = fopen("UUCP:MAIL/Mailer-Daemon","a"); if (fp == (char *)NULL) { exit(1); } } while (fgets(buf,sizeof buf,stdin) != 0) { fputs(buf,fp); } fclose(fp); } }