annotate zotnet/mts/mts.c @ 12:441a2190cfae

Lion fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 21 Apr 2012 13:10:49 +0900
parents a6481689f99c
children 07f8972434be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 /* mts.c - definitions for the mail transport system */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 #ifndef lint
12
441a2190cfae Lion fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
3 static char ident[] = "@(#)$Id: mts.c,v 1.3 2006/12/05 18:18:14 kono Exp $";
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 #endif /* lint */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 /* LINTLIBRARY */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 #undef NETWORK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 #if defined(BSD41A) || defined(BSD42) || defined(SOCKETS)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 #define NETWORK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 #include "../h/strings.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 #include <ctype.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 #include <stdio.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 #include "mts.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 #ifdef NETWORK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 #if defined(BSD42) || defined(SOCKETS)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 #include <netdb.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 #else /* NETWORK */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 #ifndef SYS5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 #include <whoami.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 #else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 #include <sys/utsname.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 #endif /* SYS5 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 #endif /* NETWORK */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 #include <pwd.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 #define NOTOK (-1)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 #define OK 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 #define NULLCP ((char *) 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 #include <errno.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 static char *tailor_value ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 #if defined(SYS5) && !defined(_AIX)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 #define index strchr
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43 #define rindex strrchr
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 #endif /* SYS5 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 #if !defined(__STDC__) && !defined(_AIX) && !defined(_POSIX_SOURCE)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 char *index (), *malloc (), *mktemp (), *rindex (), *strcpy ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 #ifdef SYS5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 struct passwd *getpwuid ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 #endif /* !__STDC__ */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57 *mmdfldir and *uucpldir are the maildrop directories. If maildrops
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58 are kept in the user's home directory, then these should be empty
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 strings. In this case, the appropriate ...lfil array should contain
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60 the name of the file in the user's home directory. Usually, this is
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61 something like ".mail".
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63
10
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
64 static char *mtstailor = "/usr/local/lib/mh/mtstailor";
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66 static char *localname = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67 static char *localdomain = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68 static char *systemname = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 #ifdef MF
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70 static char *UUCPchan = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71 #endif /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72 char *mmdfldir = "/var/mail";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 char *mmdflfil = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74 #ifdef MF
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75 char *uucpldir = "/usr/spool/mail";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 #else /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77 char *uucpldir = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78 #endif /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 char *uucplfil = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82 char *mmdlm1 = "\001\001\001\001\n";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 char *mmdlm2 = "\001\001\001\001\n";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 static int MMailids = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87 static char *mmailid = "0";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 #ifdef MF
10
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
91 char *umincproc = "/usr/local/lib/mh/uminc";
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92 #else /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 char *umincproc = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
94 #endif /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
95
bce86c4163a3 Initial revision
kono
parents:
diff changeset
96
bce86c4163a3 Initial revision
kono
parents:
diff changeset
97 int lockstyle = LOK_UNIX;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
98 static char *lkstyle = "0";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
99 char *lockldir = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
100
bce86c4163a3 Initial revision
kono
parents:
diff changeset
101 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
102
bce86c4163a3 Initial revision
kono
parents:
diff changeset
103 /* MTS specific variables */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
104
bce86c4163a3 Initial revision
kono
parents:
diff changeset
105 #ifdef MHMTS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
106 char *Mailqdir = "/usr/spool/netmail";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
107 char *TMailqdir = "/usr/tmp";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
108 int Syscpy = 1;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
109 static char *syscpy = "1";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
110 char *Overseer = "root";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
111 char *Mailer = "root";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
112 char *Fromtmp = "/tmp/rml.f.XXXXXX";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
113 char *Msgtmp = "/tmp/rml.m.XXXXXX";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
114 char *Errtmp = "/tmp/rml.e.XXXXXX";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
115 int Tmpmode = 0600;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
116 static char *tmpmode = "0600";
10
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
117 char *Okhosts = "/usr/local/lib/mh/Rmail.OkHosts";
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
118 char *Okdests = "/usr/local/lib/mh/Rmail.OkDests";
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
119 #endif /* MHMTS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
120
bce86c4163a3 Initial revision
kono
parents:
diff changeset
121 #ifdef MMDFMTS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
122 #endif /* MMDFMTS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
123
bce86c4163a3 Initial revision
kono
parents:
diff changeset
124 #ifdef SENDMTS
10
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
125 char *hostable = "/usr/local/lib/mh/hosts";
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
126 char *sendmail = "/usr/lib/sendmail";
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
127 #endif /* SENDMTS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
128
bce86c4163a3 Initial revision
kono
parents:
diff changeset
129
bce86c4163a3 Initial revision
kono
parents:
diff changeset
130 /* SMTP/POP stuff */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
131
bce86c4163a3 Initial revision
kono
parents:
diff changeset
132 char *clientname = (char *)0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
133 char *servers = "localhost \01localnet";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
134 char *pophost = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
135 #ifdef MH_PLUS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
136 char *rpop_default = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
137 #endif /* MH_PLUS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
138
bce86c4163a3 Initial revision
kono
parents:
diff changeset
139
bce86c4163a3 Initial revision
kono
parents:
diff changeset
140 /* BBoards-specific variables */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
141
bce86c4163a3 Initial revision
kono
parents:
diff changeset
142 char *bb_domain = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
143
bce86c4163a3 Initial revision
kono
parents:
diff changeset
144
bce86c4163a3 Initial revision
kono
parents:
diff changeset
145 /* POP BBoards-specific variables */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
146
bce86c4163a3 Initial revision
kono
parents:
diff changeset
147 #if defined(BPOP) || defined(NNTP)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
148 char *popbbhost = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
149 #endif /* BPOP || NNTP */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
150 #ifdef BPOP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
151 char *popbbuser = "";
10
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
152 char *popbblist = "/usr/local/lib/mh/hosts.popbb";
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
153 #endif /* BPOP */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
154
bce86c4163a3 Initial revision
kono
parents:
diff changeset
155
bce86c4163a3 Initial revision
kono
parents:
diff changeset
156 /* MailDelivery */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
157
10
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
158 char *maildelivery = "/usr/local/lib/mh/maildelivery";
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
159
bce86c4163a3 Initial revision
kono
parents:
diff changeset
160
bce86c4163a3 Initial revision
kono
parents:
diff changeset
161 /* Aliasing Facility (doesn't belong here) */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
162
bce86c4163a3 Initial revision
kono
parents:
diff changeset
163 int Everyone = NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
164 static char *everyone = "-1";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
165 char *NoShell = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
166
bce86c4163a3 Initial revision
kono
parents:
diff changeset
167 #ifdef MH_PLUS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
168 int LocalUser = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
169 static char *localuser = "0";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
170 #endif /* MH_PLUS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
171
bce86c4163a3 Initial revision
kono
parents:
diff changeset
172 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
173
10
a6481689f99c *** empty log message ***
kono
parents: 0
diff changeset
174 /* customize the MTS settings for MH by reading /usr/local/lib/mh/mtstailor */
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
175
bce86c4163a3 Initial revision
kono
parents:
diff changeset
176 static struct bind {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
177 char *keyword;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
178 char **value;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
179 } binds[] = {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
180 "localname", &localname,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
181 "localdomain", &localdomain,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
182 "systemname", &systemname,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
183 #ifdef MF
bce86c4163a3 Initial revision
kono
parents:
diff changeset
184 "uucpchan", &UUCPchan,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
185 #endif /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
186 "mmdfldir", &mmdfldir,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
187 "mmdflfil", &mmdflfil,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
188 "uucpldir", &uucpldir,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
189 "uucplfil", &uucplfil,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
190 "mmdelim1", &mmdlm1,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
191 "mmdelim2", &mmdlm2,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
192 "mmailid", &mmailid,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
193 "umincproc", &umincproc,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
194 "lockstyle", &lkstyle,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
195 "lockldir", &lockldir,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
196
bce86c4163a3 Initial revision
kono
parents:
diff changeset
197 #ifdef MHMTS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
198 "mailqdir", &Mailqdir,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
199 "tmailqdir", &TMailqdir,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
200 "syscpy", &syscpy,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
201 "overseer", &Overseer,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
202 "mailer", &Mailer,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
203 "fromtmp", &Fromtmp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
204 "msgtmp", &Msgtmp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
205 "errtmp", &Errtmp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
206 "tmpmode", &tmpmode,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
207 "okhosts", &Okhosts,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
208 "okdests", &Okdests,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
209 #endif /* MHMTS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
210
bce86c4163a3 Initial revision
kono
parents:
diff changeset
211 #ifdef MMDFMTS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
212 #endif /* MMDFMTS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
213
bce86c4163a3 Initial revision
kono
parents:
diff changeset
214 #ifdef SENDMTS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
215 "hostable", &hostable,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
216 "sendmail", &sendmail,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
217 #endif /* SENDMTS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
218
bce86c4163a3 Initial revision
kono
parents:
diff changeset
219 "clientname", &clientname,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
220 "servers", &servers,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
221 "pophost", &pophost,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
222 #ifdef MH_PLUS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
223 "rpop", &rpop_default,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
224 #endif /* MH_PLUS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
225
bce86c4163a3 Initial revision
kono
parents:
diff changeset
226 "bbdomain", &bb_domain,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
227
bce86c4163a3 Initial revision
kono
parents:
diff changeset
228 #ifdef BPOP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
229 "popbbhost", &popbbhost,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
230 "popbbuser", &popbbuser,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
231 "popbblist", &popbblist,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
232 #endif /* BPOP */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
233 #ifdef NNTP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
234 "nntphost", &popbbhost,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
235 #endif /* NNTP */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
236
bce86c4163a3 Initial revision
kono
parents:
diff changeset
237 "maildelivery", &maildelivery,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
238
bce86c4163a3 Initial revision
kono
parents:
diff changeset
239 "everyone", &everyone,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
240 "noshell", &NoShell,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
241
bce86c4163a3 Initial revision
kono
parents:
diff changeset
242 #ifdef MH_PLUS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
243 "localuser", &localuser,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
244 #endif /* MH_PLUS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
245
bce86c4163a3 Initial revision
kono
parents:
diff changeset
246 NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
247 };
bce86c4163a3 Initial revision
kono
parents:
diff changeset
248
bce86c4163a3 Initial revision
kono
parents:
diff changeset
249 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
250
bce86c4163a3 Initial revision
kono
parents:
diff changeset
251 /* I'd like to use m_getfld() here, but not all programs loading mts.o may be
bce86c4163a3 Initial revision
kono
parents:
diff changeset
252 MH-style programs... */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
253
bce86c4163a3 Initial revision
kono
parents:
diff changeset
254 /* ARGSUSED */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
255
bce86c4163a3 Initial revision
kono
parents:
diff changeset
256 mts_init (name)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
257 char *name;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
258 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
259 register char *bp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
260 *cp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
261 char buffer[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
262 register struct bind *b;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
263 register FILE *fp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
264 static int inited = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
265
bce86c4163a3 Initial revision
kono
parents:
diff changeset
266 if (inited++ || (fp = fopen (mtstailor, "r")) == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
267 return;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
268
bce86c4163a3 Initial revision
kono
parents:
diff changeset
269 while (fgets (buffer, sizeof buffer, fp)) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
270 if ((cp = index (buffer, '\n')) == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
271 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
272 *cp = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
273 if (*buffer == '#' || *buffer == '\0')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
274 continue;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
275 if ((bp = index (buffer, ':')) == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
276 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
277 *bp++ = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
278 while (isspace (*bp))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
279 *bp++ = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
280
bce86c4163a3 Initial revision
kono
parents:
diff changeset
281 for (b = binds; b -> keyword; b++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
282 if (strcmp (buffer, b -> keyword) == 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
283 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
284 if (b -> keyword && (cp = tailor_value (bp)))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
285 *b -> value = cp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
286 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
287
bce86c4163a3 Initial revision
kono
parents:
diff changeset
288 (void) fclose (fp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
289
bce86c4163a3 Initial revision
kono
parents:
diff changeset
290 MMailids = atoi (mmailid);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
291 if ((lockstyle = atoi (lkstyle)) < LOK_UNIX || lockstyle > LOK_MMDF)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
292 lockstyle = LOK_UNIX;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
293 #ifdef MHMTS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
294 Syscpy = atoi (syscpy);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
295 (void) sscanf (tmpmode, "0%o", &Tmpmode);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
296 #endif /* MHMTS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
297 Everyone = atoi (everyone);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
298 #ifdef MH_PLUS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
299 LocalUser = atoi (localuser);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
300 #endif /* MH_PLUS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
301 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
302
bce86c4163a3 Initial revision
kono
parents:
diff changeset
303 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
304
bce86c4163a3 Initial revision
kono
parents:
diff changeset
305 #define QUOTE '\\'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
306
bce86c4163a3 Initial revision
kono
parents:
diff changeset
307 static char *tailor_value (s)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
308 register char *s;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
309 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
310 register int i,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
311 r;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
312 register char *bp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
313 char buffer[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
314
bce86c4163a3 Initial revision
kono
parents:
diff changeset
315 for (bp = buffer; *s; bp++, s++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
316 if (*s != QUOTE)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
317 *bp = *s;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
318 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
319 switch (*++s) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
320 #define grot(y,z) case y: *bp = z; break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
321 grot ('b', '\b');
bce86c4163a3 Initial revision
kono
parents:
diff changeset
322 grot ('f', '\f');
bce86c4163a3 Initial revision
kono
parents:
diff changeset
323 grot ('n', '\n');
bce86c4163a3 Initial revision
kono
parents:
diff changeset
324 grot ('t', '\t');
bce86c4163a3 Initial revision
kono
parents:
diff changeset
325 #undef grot
bce86c4163a3 Initial revision
kono
parents:
diff changeset
326
bce86c4163a3 Initial revision
kono
parents:
diff changeset
327 case 0: s--;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
328 case QUOTE:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
329 *bp = QUOTE;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
330 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
331
bce86c4163a3 Initial revision
kono
parents:
diff changeset
332 default:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
333 if (!isdigit (*s)) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
334 *bp++ = QUOTE;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
335 *bp = *s;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
336 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
337 r = *s != '0' ? 10 : 8;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
338 for (i = 0; isdigit (*s); s++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
339 i = i * r + *s - '0';
bce86c4163a3 Initial revision
kono
parents:
diff changeset
340 s--;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
341 *bp = toascii (i);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
342 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
343 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
344 *bp = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
345
bce86c4163a3 Initial revision
kono
parents:
diff changeset
346 bp = malloc ((unsigned) (strlen (buffer) + 1));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
347 if (bp != NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
348 (void) strcpy (bp, buffer);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
349
bce86c4163a3 Initial revision
kono
parents:
diff changeset
350 return bp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
351 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
352
bce86c4163a3 Initial revision
kono
parents:
diff changeset
353 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
354
bce86c4163a3 Initial revision
kono
parents:
diff changeset
355 struct hostent *mh_gethostbyname();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
356
bce86c4163a3 Initial revision
kono
parents:
diff changeset
357 char *LocalName () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
358 #ifdef BSD41A
bce86c4163a3 Initial revision
kono
parents:
diff changeset
359 char *myname;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
360 #endif /* BSD41A */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
361 #if defined(BSD42) || defined(SOCKETS)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
362 register struct hostent *hp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
363 #endif /* BSD42 or SOCKETS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
364 #if defined(SYS5) && !defined(NETWORK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
365 struct utsname name;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
366 #endif /* SYS5 and not NETWORK */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
367 static char buffer[BUFSIZ] = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
368
bce86c4163a3 Initial revision
kono
parents:
diff changeset
369 if (buffer[0])
bce86c4163a3 Initial revision
kono
parents:
diff changeset
370 return buffer;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
371
bce86c4163a3 Initial revision
kono
parents:
diff changeset
372 mts_init ("mts");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
373 if (*localname)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
374 strcpy (buffer, localname);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
375 else {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
376
bce86c4163a3 Initial revision
kono
parents:
diff changeset
377 #ifdef locname
bce86c4163a3 Initial revision
kono
parents:
diff changeset
378 (void) strcpy (buffer, locname);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
379 #else /* not locname */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
380 #ifdef NETWORK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
381 #ifdef BSD41A
bce86c4163a3 Initial revision
kono
parents:
diff changeset
382 myname = "myname";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
383 if (rhost (&myname) == -1)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
384 (void) gethostname (buffer, sizeof buffer);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
385 else {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
386 (void) strcpy (buffer, myname);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
387 free (myname);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
388 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
389 #endif /* BSD41A */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
390 #if defined(BSD42) || defined(SOCKETS)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
391 (void) gethostname (buffer, sizeof buffer);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
392 #ifndef BIND
bce86c4163a3 Initial revision
kono
parents:
diff changeset
393 sethostent (1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
394 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
395 if (hp = mh_gethostbyname (buffer))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
396 (void) strcpy (buffer, hp -> h_name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
397 #endif /* BSD42 or SOCKETS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
398 #else /* not NETWORK */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
399 #ifndef SYS5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
400 (void) strcpy (buffer, SystemName ());
bce86c4163a3 Initial revision
kono
parents:
diff changeset
401 #else /* SYS5 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
402 (void) uname (&name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
403 (void) strcpy (buffer, name.nodename);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
404 #endif /* SYS5 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
405 #endif /* not NETWORK */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
406 #endif /* not locname */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
407 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
408 if (*localdomain) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
409 strcat (buffer, ".");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
410 strcat (buffer, localdomain);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
411 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
412 return buffer;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
413 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
414
bce86c4163a3 Initial revision
kono
parents:
diff changeset
415 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
416
bce86c4163a3 Initial revision
kono
parents:
diff changeset
417 char *SystemName () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
418 #if defined(SYS5) && !defined(NETWORK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
419 struct utsname name;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
420 #endif /* SYS5 and not NETWORK */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
421 static char buffer[BUFSIZ] = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
422
bce86c4163a3 Initial revision
kono
parents:
diff changeset
423 if (buffer[0])
bce86c4163a3 Initial revision
kono
parents:
diff changeset
424 return buffer;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
425
bce86c4163a3 Initial revision
kono
parents:
diff changeset
426 mts_init ("mts");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
427 if (*systemname)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
428 return strcpy (buffer, systemname);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
429
bce86c4163a3 Initial revision
kono
parents:
diff changeset
430 #ifdef sysname
bce86c4163a3 Initial revision
kono
parents:
diff changeset
431 (void) strcpy (buffer, sysname);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
432 #else /* sysname */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
433 #if !defined(SYS5) || defined(NETWORK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
434 (void) gethostname (buffer, sizeof buffer);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
435 #else /* SYS5 and not NETWORK */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
436 #ifdef SYS5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
437 (void) uname (&name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
438 (void) strcpy (buffer, name.nodename);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
439 #endif /* SYS5 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
440 #endif /* SYS5 and not NETWORK */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
441 #endif /* sysname */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
442
bce86c4163a3 Initial revision
kono
parents:
diff changeset
443 return buffer;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
444 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
445
bce86c4163a3 Initial revision
kono
parents:
diff changeset
446 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
447
bce86c4163a3 Initial revision
kono
parents:
diff changeset
448 char *UucpChan () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
449 #ifdef MF
bce86c4163a3 Initial revision
kono
parents:
diff changeset
450 static char buffer[BUFSIZ] = "";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
451 #endif /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
452
bce86c4163a3 Initial revision
kono
parents:
diff changeset
453 #ifndef MF
bce86c4163a3 Initial revision
kono
parents:
diff changeset
454 return NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
455 #else /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
456 if (buffer[0])
bce86c4163a3 Initial revision
kono
parents:
diff changeset
457 return buffer;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
458
bce86c4163a3 Initial revision
kono
parents:
diff changeset
459 mts_init ("mts");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
460 if (*UUCPchan)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
461 return strcpy (buffer, UUCPchan);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
462
bce86c4163a3 Initial revision
kono
parents:
diff changeset
463 #ifdef uucpchan
bce86c4163a3 Initial revision
kono
parents:
diff changeset
464 (void) strcpy (buffer, uucpchan);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
465 #else /* uucpchan */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
466 (void) strcpy (buffer, "uucp");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
467 #endif /* uucpchan */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
468 return buffer;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
469 #endif /* MF */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
470 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
471
bce86c4163a3 Initial revision
kono
parents:
diff changeset
472 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
473
bce86c4163a3 Initial revision
kono
parents:
diff changeset
474 #ifdef ALTOS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
475 gethostname (name, len)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
476 register char *name;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
477 register int len;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
478 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
479 register char *cp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
480 register FILE *fp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
481
bce86c4163a3 Initial revision
kono
parents:
diff changeset
482 if (fp = fopen ("/etc/systemid", "r")) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
483 if (fgets (name, len, fp)) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
484 if (cp = index (name, '\n'))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
485 *cp = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
486 (void) fclose (fp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
487 return OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
488 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
489 (void) fclose (fp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
490 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
491 (void) strncpy (name, "altos", len);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
492
bce86c4163a3 Initial revision
kono
parents:
diff changeset
493 return OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
494 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
495 #endif /* ALTOS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
496
bce86c4163a3 Initial revision
kono
parents:
diff changeset
497 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
498
bce86c4163a3 Initial revision
kono
parents:
diff changeset
499 static char username[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
500 static char fullname[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
501
bce86c4163a3 Initial revision
kono
parents:
diff changeset
502
bce86c4163a3 Initial revision
kono
parents:
diff changeset
503 char *getusr () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
504 register char *cp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
505 *np;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
506 #ifdef KPOP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
507 int uid;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
508 #endif /* KPOP */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
509 register struct passwd *pw;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
510
bce86c4163a3 Initial revision
kono
parents:
diff changeset
511 if (username[0])
bce86c4163a3 Initial revision
kono
parents:
diff changeset
512 return username;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
513
bce86c4163a3 Initial revision
kono
parents:
diff changeset
514 #ifndef KPOP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
515 #ifdef __CYGWIN32__
bce86c4163a3 Initial revision
kono
parents:
diff changeset
516 if ((cp = getenv ("USERNAME")) != NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
517 && (pw = getpwnam (cp)) != NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
518 strcpy (username, cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
519 else if ((pw = getpwuid (getuid ())) == NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
520 || pw -> pw_name == NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
521 || *pw -> pw_name == '\0') {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
522 #else /* __CYGWIN32__ */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
523 if ((pw = getpwuid (getuid ())) == NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
524 || pw -> pw_name == NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
525 || *pw -> pw_name == '\0') {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
526 #endif /* __CYGWIN32__ */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
527 #else /* KPOP */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
528 uid = getuid ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
529 if (uid == geteuid () && (cp = getenv ("USER")) != NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
530 && (pw = getpwnam (cp)) != NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
531 strcpy (username, cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
532 else if ((pw = getpwuid (uid)) == NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
533 || pw -> pw_name == NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
534 || *pw -> pw_name == '\0') {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
535 #endif /* KPOP */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
536 (void) strcpy (username, "unknown");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
537 (void) sprintf (fullname, "The Unknown User-ID (%d)", getuid ());
bce86c4163a3 Initial revision
kono
parents:
diff changeset
538 return username;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
539 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
540
bce86c4163a3 Initial revision
kono
parents:
diff changeset
541 np = pw -> pw_gecos;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
542 #ifndef GCOS_HACK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
543 for (cp = fullname; *np && *np != (MMailids ? '<' : ','); *cp++ = *np++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
544 continue;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
545 #else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
546 for (cp = fullname; *np && *np != (MMailids ? '<' : ','); )
bce86c4163a3 Initial revision
kono
parents:
diff changeset
547 if (*np == '&') { /* blech! */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
548 (void) strcpy(cp, pw -> pw_name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
549 *cp = toupper(*cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
550 while (*cp)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
551 cp++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
552 np++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
553 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
554 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
555 *cp++ = *np++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
556 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
557 *cp = '\0';
bce86c4163a3 Initial revision
kono
parents:
diff changeset
558 if (MMailids) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
559 if (*np)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
560 np++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
561 for (cp = username; *np && *np != '>'; *cp++ = *np++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
562 continue;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
563 *cp = '\0';
bce86c4163a3 Initial revision
kono
parents:
diff changeset
564 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
565 if (MMailids == 0 || *np == '\0')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
566 (void) strcpy (username, pw -> pw_name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
567
bce86c4163a3 Initial revision
kono
parents:
diff changeset
568 if ((cp = getenv ("SIGNATURE")) && *cp) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
569 if (strlen(cp) > BUFSIZ / 4) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
570 fprintf(stderr, "SIGNATURE envariable too long\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
571 exit(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
572 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
573 (void) strcpy (fullname, cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
574 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
575 if (index(fullname, '.')) { /* quote any .'s */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
576 char tmp[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
577 sprintf (tmp, "\"%s\"", fullname);/* should quote "'s too */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
578 strcpy (fullname, tmp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
579 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
580
bce86c4163a3 Initial revision
kono
parents:
diff changeset
581 return username;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
582 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
583
bce86c4163a3 Initial revision
kono
parents:
diff changeset
584
bce86c4163a3 Initial revision
kono
parents:
diff changeset
585 char *getfullname () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
586 if (username[0] == '\0')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
587 (void) getusr ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
588
bce86c4163a3 Initial revision
kono
parents:
diff changeset
589 return fullname;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
590 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
591
bce86c4163a3 Initial revision
kono
parents:
diff changeset
592 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
593
bce86c4163a3 Initial revision
kono
parents:
diff changeset
594 #ifdef SYS5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
595 #ifndef notdef /* Supposedly this works, I prefer the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
596 recursive solution... */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
597
bce86c4163a3 Initial revision
kono
parents:
diff changeset
598 #include <fcntl.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
599
bce86c4163a3 Initial revision
kono
parents:
diff changeset
600 int dup2 (d1, d2)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
601 register int d1,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
602 d2;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
603 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
604 int d;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
605
bce86c4163a3 Initial revision
kono
parents:
diff changeset
606 if (d1 == d2)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
607 return OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
608
bce86c4163a3 Initial revision
kono
parents:
diff changeset
609 (void) close (d2);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
610 if ((d = fcntl (d1, F_DUPFD, d2)) == NOTOK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
611 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
612 if (d == d2)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
613 return OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
614
bce86c4163a3 Initial revision
kono
parents:
diff changeset
615 errno = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
616 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
617 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
618
bce86c4163a3 Initial revision
kono
parents:
diff changeset
619 #else /* notdef */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
620 int dup2 (d1, d2)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
621 register int d1,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
622 d2;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
623 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
624 if (d1 == d2)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
625 return OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
626
bce86c4163a3 Initial revision
kono
parents:
diff changeset
627 (void) close (d2);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
628 return dup2aux (d1, d2);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
629 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
630
bce86c4163a3 Initial revision
kono
parents:
diff changeset
631
bce86c4163a3 Initial revision
kono
parents:
diff changeset
632 static int dup2aux (d1, d2)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
633 register int d1,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
634 d2;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
635 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
636 int d,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
637 i,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
638 eindex;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
639
bce86c4163a3 Initial revision
kono
parents:
diff changeset
640 if ((d = dup (d1)) == NOTOK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
641 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
642 if (d == d2)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
643 return OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
644
bce86c4163a3 Initial revision
kono
parents:
diff changeset
645 i = dup2aux (d1, d2);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
646 eindex = errno;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
647 (void) close (d);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
648 errno = eindex;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
649 return i;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
650 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
651 #endif /* notdef */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
652 #endif /* SYS5 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
653
bce86c4163a3 Initial revision
kono
parents:
diff changeset
654 struct hostent *
bce86c4163a3 Initial revision
kono
parents:
diff changeset
655 mh_gethostbyname(name)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
656 char *name;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
657 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
658 struct hostent *xx;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
659 #if (defined(SOLARIS) && SOLARIS < 20400) || (defined(sony_news) && defined(__svr4))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
660 # if SOLARIS == 20300
bce86c4163a3 Initial revision
kono
parents:
diff changeset
661 static struct hostent hp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
662 static char buf[1000];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
663 extern struct hostent *_switch_gethostbyname_r();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
664
bce86c4163a3 Initial revision
kono
parents:
diff changeset
665 xx = _switch_gethostbyname_r(name, &hp, buf, sizeof(buf), &h_errno);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
666 # else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
667 extern struct hostent *__switch_gethostbyname();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
668
bce86c4163a3 Initial revision
kono
parents:
diff changeset
669 xx = __switch_gethostbyname(name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
670 # endif /* Solaris 2.3 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
671 #else /* SOLARIS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
672
bce86c4163a3 Initial revision
kono
parents:
diff changeset
673 xx = gethostbyname(name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
674 #endif /* SOLARIS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
675
bce86c4163a3 Initial revision
kono
parents:
diff changeset
676 return xx;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
677 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
678
bce86c4163a3 Initial revision
kono
parents:
diff changeset
679 #ifdef __CYGWIN32__
bce86c4163a3 Initial revision
kono
parents:
diff changeset
680 void sethostent(x)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
681 int x;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
682 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
683 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
684 #endif