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 *)¬ice, 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(¬ice,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);
}
|