#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <sys/stat.h>


/* Puffergroesse fuer Mailadresse */
#define MAIL_ADDR_LEN       64

/* Puffergroesse fuer Mail-Quelldateiname */
#define MAIL_FILE_NAME_LEN 256


int main()
{
  int   c;
  char  empfaenger[MAIL_ADDR_LEN];         /* Eingegebene Mail-Adresse */
  char  mail_filename[MAIL_FILE_NAME_LEN]; /* Eingegebener Name der Mail-Quelldatei */
  FILE *cf_fileptr;
  FILE *df_fileptr;
  FILE *mailinhalt;
  int   ret;


  /* "spool"-Verzeichnis anlegen, alle Permission-Bits setzen,
     prozessweite "umask" veraendert diese Bits */
  ret = mkdir("spool", S_IRWXU | S_IRWXG | S_IRWXO);
  if(ret != 0) /* Fehler, ausgenommen "Verzeichnis existiert schon"? */
  {
    if(errno != EEXIST)
    {
      perror("bmail: mkdir");
      return EXIT_FAILURE;
    }
  }


  /* Mail-Adresse einlesen */
  printf("Bitte geben Sie die Mail-Adresse ein:\n");
  scanf("%s", empfaenger);


  /* Mail-Quelldateiname einlesen */
  printf("Bitte geben Sie den Namen der Mail-Datei ein:\n");
  scanf("%s", mail_filename);


  /* Zur Kontrolle */
  printf("Sie haben eingegeben:\n%s\n%s\n", empfaenger, mail_filename);


  /* Mail-Adresse in Datei "spool/cf" ablegen */
  cf_fileptr = fopen("spool/cf", "w");
  if(cf_fileptr == NULL) /* Fehler ? */
  {
    perror("bmail: create cf file");
    return EXIT_FAILURE;
  }

  /* Mail-Adresse in Datei schreiben */
  fprintf(cf_fileptr, empfaenger);
  fclose(cf_fileptr);


  /* Mail-Inhalt in Datei "spool/df" kopieren */

  /* Quelldatei oeffnen */
  mailinhalt = fopen(mail_filename, "r");
  if(mailinhalt == NULL) /* Fehler ? */
  {
    perror("bmail: open mail source file");
    return EXIT_FAILURE;
  }

  /* Zieldatei "spool/df" anlegen */
  df_fileptr = fopen("spool/df", "w");
  if(df_fileptr == NULL) /* Fehler ? */
  {
    perror("bmail: create df file");
    return EXIT_FAILURE;
  }

  /* Mailinhalt zeichenweise kopieren */
  while((c = getc(mailinhalt)) != EOF)
  {
    putc(c, df_fileptr);
  }

  /* Quell- und Zieldatei schliessen */
  fclose(mailinhalt);
  fclose(df_fileptr);

  printf("Auftrag erfolgreich angelegt!\n\n");

  return EXIT_SUCCESS;
}
