/***************************************************************************

   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 <stdio.h>
#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);
  }
}
