annotate zotnet/mts/mts.c @ 17:76d91e545ea8 default tip

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