idirt-1.82d/
idirt-1.82d/bin/
idirt-1.82d/data/LOGS/
idirt-1.82d/data/POLICY/
idirt-1.82d/data/WIZ_ZONES/
idirt-1.82d/doc/
idirt-1.82d/doc/info/
idirt-1.82d/doc/manual/
idirt-1.82d/src/Ident/
idirt-1.82d/src/utils/
idirt-1.82d/utils/
/*
 * MUD writer
 * 
 * Note that the mud writer is reentrant, you may start one writer
 * while another is active, the writer will save the previous writer's 
 * state prompt et.c the writer tries to save all info about the previous
 * input handler, cprompt is also saved.
 * 
 * This means that for example while doing 'mail xyzzy' in mud
 * you may do '*mail zyxxy' inside there, to mail another person.
 * by typing '**' you will then terminate the last mail and you will
 * get back to the previous mail and yet another ** will terminate your
 * mail to xyzzy and get you back to whereever you were when you did
 * mail xyzzy.
 * 
 * Also note that it is not an editor, you may write text and the text
 * can replace old text or may be appended to old text, but you don't have
 * the old text available while inside the writer.
 * 
 * The MUD writer is used like this:
 * 
 * Example: A simple mail writer for the MUD.
 */

void
mailcom (void)
{
  if (brkword () != -1) {	/* send mail */
    start_writer ("Write your mail, terminate with '**'",
		  "MAIL>",
		  wordbuf,	/* The name who we want to send mail to */
		  strlen (wordbuf) + 1,		/* length of argument */
		  mail_handler,
		  WR_CMD | '*',	/* allow commands */
		  500);		/* Max 500 lines */

    return;
  } else {			/* read mail */
    read_mail ();
  }
}

void
mail_handler (void *w, void *ad, int adlen)
{
  FILE *f;
  char b[100];
  char a[100];

  strcpy (b, "MAIL/");
  strcpy (a, ad);		/* save the address, wgets will destroy ad */
  strcat (b, a);
  if ((f = fopen (b, "a")) == NULL) {
    progerror (b);
    terminate_writer (w);
    return;
  } else {
    while (wgets (b, sizeof (b), w) != NULL) {
      fputs (b, f);
    }
    /* notify the person he has mail */
    notify_mail (a);		/* can't use ad here as it is destroyed by wgets */
  }
}