Logo Search packages:      
Sourcecode: zephyr version File versions  Download package

zpopnotify.c

/* This file is part of the Project Athena Zephyr Notification System.
 * It contains code for the "zpopnotify" command.
 *
 *    Created by: Robert French
 *
 *    $Id: zpopnotify.c,v 1.13 1999/08/13 00:19:41 danw Exp $
 *
 *    Copyright (c) 1987,1988 by the Massachusetts Institute of Technology.
 *    For copying and distribution information, see the file
 *    "mit-copyright.h". 
 */


#include <sysdep.h>
#include <zephyr/mit-copyright.h>
#include <zephyr/zephyr.h>
#include <stdio.h>
#include <netdb.h>
#include <string.h>
#include <sys/param.h>              /* for MAXHOSTNAMELEN */
#include <com_err.h>
#include <errno.h>

#ifndef lint
static char rcsid_zpopnotify_c[] = "$Id: zpopnotify.c,v 1.13 1999/08/13 00:19:41 danw Exp $";
#endif /* lint */

#define MAIL_CLASS "MAIL"
#define MAIL_INSTANCE "POP"

void usage();

main(argc,argv)
      int argc;
      char *argv[];
{
      ZNotice_t notice;
      struct hostent *hent;
      int retval;
      register int i;
      char *whoami,myhost[MAXHOSTNAMELEN],mysender[BUFSIZ];
      char *lines[2];
      
      whoami = argv[0];

      if ((retval = ZInitialize()) != ZERR_NONE) {
            com_err(whoami,retval,"while initializing");
            exit(1);
      } 

      if (argc < 2) {
            usage(whoami);
            exit(1);
      }

      if (gethostname(myhost,MAXHOSTNAMELEN) == -1) {
            com_err(whoami,errno,"Can't get hostname");
            exit(1);
      }
      myhost[MAXHOSTNAMELEN-1] = '\0';

      if (!(hent = gethostbyname(myhost))) {
            com_err(whoami,errno,"Can't get canonical hostname");
            exit(1);
      }

      (void) strncpy(myhost,hent->h_name,MAXHOSTNAMELEN);
      myhost[MAXHOSTNAMELEN-1] = '\0';

      lines[0] = myhost;
      lines[1] = "You have new mail.";
      
      (void) strcpy(mysender,"pop@");
      (void) strcat(mysender,ZGetRealm());

      for (i = 1; i < argc; i++) {
          (void) memset((char *)&notice, 0, sizeof(notice));
          notice.z_kind = UNSAFE;
          notice.z_class = MAIL_CLASS;
          notice.z_class_inst = MAIL_INSTANCE;
          notice.z_opcode = "";
          notice.z_sender = mysender;
          notice.z_default_format = "From Post Office $1:\n$2";

          /* in case it's a mailbox name (pathname), strip to username */
          notice.z_recipient = (char *)strrchr(argv[i],'/');
          if (notice.z_recipient)
            notice.z_recipient++;
          else
            notice.z_recipient = argv[i];

          if ((retval = ZSendList(&notice,lines,2,ZNOAUTH)) != ZERR_NONE) {
            com_err(whoami,retval,"while sending notice");
            exit(1);
          } 
      }
}

void
usage(whoami)
      char *whoami;
{
      printf("Usage: %s username [ username ... ]\n",whoami);
}

Generated by  Doxygen 1.6.0   Back to index