summaryrefslogtreecommitdiff
path: root/clients/zpopnotify/zpopnotify.c
blob: b2f79e395d2df203b6d636e683880852433051cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/* This file is part of the Project Athena Zephyr Notification System.
 * It contains code for the "zpopnotify" command.
 *
 *	Created by:	Robert French
 *
 *	$Id$
 *
 *	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$";
#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);
}