xref: /titanic_53/usr/src/cmd/ttymon/uucp.h (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
23*7c478bd9Sstevel@tonic-gate /*	  All Rights Reserved  	*/
24*7c478bd9Sstevel@tonic-gate 
25*7c478bd9Sstevel@tonic-gate 
26*7c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
27*7c478bd9Sstevel@tonic-gate 
28*7c478bd9Sstevel@tonic-gate #ifndef _UUCP_H
29*7c478bd9Sstevel@tonic-gate #define _UUCP_H
30*7c478bd9Sstevel@tonic-gate 
31*7c478bd9Sstevel@tonic-gate #include <unistd.h>
32*7c478bd9Sstevel@tonic-gate #include <stdlib.h>
33*7c478bd9Sstevel@tonic-gate #include <string.h>
34*7c478bd9Sstevel@tonic-gate #include "parms.h"
35*7c478bd9Sstevel@tonic-gate 
36*7c478bd9Sstevel@tonic-gate #ifdef DIAL
37*7c478bd9Sstevel@tonic-gate #define EXTERN static
38*7c478bd9Sstevel@tonic-gate #define GLOBAL static
39*7c478bd9Sstevel@tonic-gate #else
40*7c478bd9Sstevel@tonic-gate #define EXTERN extern
41*7c478bd9Sstevel@tonic-gate #define GLOBAL
42*7c478bd9Sstevel@tonic-gate #endif
43*7c478bd9Sstevel@tonic-gate 
44*7c478bd9Sstevel@tonic-gate #ifdef BSD4_2
45*7c478bd9Sstevel@tonic-gate #define V7
46*7c478bd9Sstevel@tonic-gate #undef NONAP
47*7c478bd9Sstevel@tonic-gate #undef FASTTIMER
48*7c478bd9Sstevel@tonic-gate #endif /* BSD4_2 */
49*7c478bd9Sstevel@tonic-gate 
50*7c478bd9Sstevel@tonic-gate #ifdef FASTTIMER
51*7c478bd9Sstevel@tonic-gate #undef NONAP
52*7c478bd9Sstevel@tonic-gate #endif
53*7c478bd9Sstevel@tonic-gate 
54*7c478bd9Sstevel@tonic-gate #ifdef V8
55*7c478bd9Sstevel@tonic-gate #define V7
56*7c478bd9Sstevel@tonic-gate #endif /* V8 */
57*7c478bd9Sstevel@tonic-gate 
58*7c478bd9Sstevel@tonic-gate #include <stdio.h>
59*7c478bd9Sstevel@tonic-gate #include <ctype.h>
60*7c478bd9Sstevel@tonic-gate #include <setjmp.h>
61*7c478bd9Sstevel@tonic-gate #include <sys/param.h>
62*7c478bd9Sstevel@tonic-gate 
63*7c478bd9Sstevel@tonic-gate /*
64*7c478bd9Sstevel@tonic-gate  * param.h includes types.h and signal.h in 4bsd
65*7c478bd9Sstevel@tonic-gate  */
66*7c478bd9Sstevel@tonic-gate #ifdef V7
67*7c478bd9Sstevel@tonic-gate #include <sgtty.h>
68*7c478bd9Sstevel@tonic-gate #include <sys/timeb.h>
69*7c478bd9Sstevel@tonic-gate #else /* !V7 */
70*7c478bd9Sstevel@tonic-gate #include <termio.h>
71*7c478bd9Sstevel@tonic-gate #include <sys/types.h>
72*7c478bd9Sstevel@tonic-gate #include <signal.h>
73*7c478bd9Sstevel@tonic-gate #include <fcntl.h>
74*7c478bd9Sstevel@tonic-gate #endif
75*7c478bd9Sstevel@tonic-gate 
76*7c478bd9Sstevel@tonic-gate #include <sys/stat.h>
77*7c478bd9Sstevel@tonic-gate #include <utime.h>
78*7c478bd9Sstevel@tonic-gate #include <dirent.h>
79*7c478bd9Sstevel@tonic-gate 
80*7c478bd9Sstevel@tonic-gate #ifdef BSD4_2
81*7c478bd9Sstevel@tonic-gate #include <sys/time.h>
82*7c478bd9Sstevel@tonic-gate #else /* !BSD4_2 */
83*7c478bd9Sstevel@tonic-gate #include <time.h>
84*7c478bd9Sstevel@tonic-gate #endif
85*7c478bd9Sstevel@tonic-gate 
86*7c478bd9Sstevel@tonic-gate #include <sys/times.h>
87*7c478bd9Sstevel@tonic-gate #include <errno.h>
88*7c478bd9Sstevel@tonic-gate 
89*7c478bd9Sstevel@tonic-gate #ifdef ATTSV
90*7c478bd9Sstevel@tonic-gate #include <sys/mkdev.h>
91*7c478bd9Sstevel@tonic-gate #endif /* ATTSV */
92*7c478bd9Sstevel@tonic-gate 
93*7c478bd9Sstevel@tonic-gate #ifdef	RT
94*7c478bd9Sstevel@tonic-gate #include "rt/types.h"
95*7c478bd9Sstevel@tonic-gate #include "rt/unix/param.h"
96*7c478bd9Sstevel@tonic-gate #include "rt/stat.h"
97*7c478bd9Sstevel@tonic-gate #include <sys/ustat.h>
98*7c478bd9Sstevel@tonic-gate #endif /* RT */
99*7c478bd9Sstevel@tonic-gate 
100*7c478bd9Sstevel@tonic-gate /* what mode should user files be allowed to have upon creation? */
101*7c478bd9Sstevel@tonic-gate /* NOTE: This does not allow setuid or execute bits on transfer. */
102*7c478bd9Sstevel@tonic-gate #define LEGALMODE (mode_t) 0666
103*7c478bd9Sstevel@tonic-gate 
104*7c478bd9Sstevel@tonic-gate /* what mode should public files have upon creation? */
105*7c478bd9Sstevel@tonic-gate #define PUB_FILEMODE (mode_t) 0666
106*7c478bd9Sstevel@tonic-gate 
107*7c478bd9Sstevel@tonic-gate /* what mode should log files have upon creation? */
108*7c478bd9Sstevel@tonic-gate #define LOGFILEMODE (mode_t) 0644
109*7c478bd9Sstevel@tonic-gate 
110*7c478bd9Sstevel@tonic-gate /* what mode should C. files have upon creation? */
111*7c478bd9Sstevel@tonic-gate #define CFILEMODE (mode_t) 0644
112*7c478bd9Sstevel@tonic-gate 
113*7c478bd9Sstevel@tonic-gate /* what mode should D. files have upon creation? */
114*7c478bd9Sstevel@tonic-gate #define DFILEMODE (mode_t) 0600
115*7c478bd9Sstevel@tonic-gate 
116*7c478bd9Sstevel@tonic-gate /* define the value of PUBMASK, used for creating "public" directories */
117*7c478bd9Sstevel@tonic-gate #define PUBMASK (mode_t) 0000
118*7c478bd9Sstevel@tonic-gate 
119*7c478bd9Sstevel@tonic-gate /* what mode should public directories have upon creation? */
120*7c478bd9Sstevel@tonic-gate #define PUB_DIRMODE (mode_t) 0777
121*7c478bd9Sstevel@tonic-gate 
122*7c478bd9Sstevel@tonic-gate /* define the value of DIRMASK, used for creating "system" subdirectories */
123*7c478bd9Sstevel@tonic-gate #define DIRMASK (mode_t) 0022
124*7c478bd9Sstevel@tonic-gate 
125*7c478bd9Sstevel@tonic-gate #define MAXSTART	300	/* how long to wait on startup */
126*7c478bd9Sstevel@tonic-gate 
127*7c478bd9Sstevel@tonic-gate /* define the last characters for ACU  (used for 801/212 dialers) */
128*7c478bd9Sstevel@tonic-gate #define ACULAST "<"
129*7c478bd9Sstevel@tonic-gate 
130*7c478bd9Sstevel@tonic-gate /*  caution - the fillowing names are also in Makefile
131*7c478bd9Sstevel@tonic-gate  *    any changes here have to also be made there
132*7c478bd9Sstevel@tonic-gate  *
133*7c478bd9Sstevel@tonic-gate  * it's a good idea to make directories .foo, since this ensures
134*7c478bd9Sstevel@tonic-gate  * that they'll be ignored by processes that search subdirectories in SPOOL
135*7c478bd9Sstevel@tonic-gate  *
136*7c478bd9Sstevel@tonic-gate  *  XQTDIR=/var/uucp/.Xqtdir
137*7c478bd9Sstevel@tonic-gate  *  CORRUPT=/var/uucp/.Corrupt
138*7c478bd9Sstevel@tonic-gate  *  LOGDIR=/var/uucp/.Log
139*7c478bd9Sstevel@tonic-gate  *  SEQDIR=/var/uucp/.Sequence
140*7c478bd9Sstevel@tonic-gate  *  STATDIR=/var/uucp/.Status
141*7c478bd9Sstevel@tonic-gate  *
142*7c478bd9Sstevel@tonic-gate  */
143*7c478bd9Sstevel@tonic-gate 
144*7c478bd9Sstevel@tonic-gate /* where to put the STST. files? */
145*7c478bd9Sstevel@tonic-gate #define STATDIR		"/var/uucp/.Status"
146*7c478bd9Sstevel@tonic-gate 
147*7c478bd9Sstevel@tonic-gate /* where should logfiles be kept? */
148*7c478bd9Sstevel@tonic-gate #define LOGUUX		"/var/uucp/.Log/uux"
149*7c478bd9Sstevel@tonic-gate #define LOGUUXQT	"/var/uucp/.Log/uuxqt"
150*7c478bd9Sstevel@tonic-gate #define LOGUUCP		"/var/uucp/.Log/uucp"
151*7c478bd9Sstevel@tonic-gate #define LOGCICO		"/var/uucp/.Log/uucico"
152*7c478bd9Sstevel@tonic-gate #define CORRUPTDIR	"/var/uucp/.Corrupt"
153*7c478bd9Sstevel@tonic-gate 
154*7c478bd9Sstevel@tonic-gate /* some sites use /var/uucp/.XQTDIR here */
155*7c478bd9Sstevel@tonic-gate /* use caution since things are linked into there */
156*7c478bd9Sstevel@tonic-gate #define XQTDIR		"/var/uucp/.Xqtdir"
157*7c478bd9Sstevel@tonic-gate 
158*7c478bd9Sstevel@tonic-gate /* how much of a system name can we print in a [CX]. file? */
159*7c478bd9Sstevel@tonic-gate /* MAXBASENAME - 1 (pre) - 1 ('.') - 1 (grade) - 4 (sequence number) */
160*7c478bd9Sstevel@tonic-gate #define SYSNSIZE (MAXBASENAME - 7)
161*7c478bd9Sstevel@tonic-gate 
162*7c478bd9Sstevel@tonic-gate #ifdef USRSPOOLLOCKS
163*7c478bd9Sstevel@tonic-gate #define LOCKPRE		"/var/spool/locks/LCK."
164*7c478bd9Sstevel@tonic-gate #else
165*7c478bd9Sstevel@tonic-gate #define LOCKPRE		"/var/spool/uucp/LCK."
166*7c478bd9Sstevel@tonic-gate #endif /* USRSPOOLLOCKS */
167*7c478bd9Sstevel@tonic-gate 
168*7c478bd9Sstevel@tonic-gate #define SQFILE		"/etc/uucp/SQFILE"
169*7c478bd9Sstevel@tonic-gate #define SQTMP		"/etc/uucp/SQTMP"
170*7c478bd9Sstevel@tonic-gate #define SLCKTIME	5400	/* system/device timeout (LCK.. files) */
171*7c478bd9Sstevel@tonic-gate #define DIALCODES	"/etc/uucp/Dialcodes"
172*7c478bd9Sstevel@tonic-gate #define PERMISSIONS	"/etc/uucp/Permissions"
173*7c478bd9Sstevel@tonic-gate 
174*7c478bd9Sstevel@tonic-gate #define SPOOL		"/var/spool/uucp"
175*7c478bd9Sstevel@tonic-gate #define SEQDIR		"/var/uucp/.Sequence"
176*7c478bd9Sstevel@tonic-gate 
177*7c478bd9Sstevel@tonic-gate #define X_LOCKTIME	3600
178*7c478bd9Sstevel@tonic-gate #ifdef USRSPOOLLOCKS
179*7c478bd9Sstevel@tonic-gate #define SEQLOCK		"/var/spool/locks/LCK.SQ."
180*7c478bd9Sstevel@tonic-gate #define SQLOCK		"/var/spool/locks/LCK.SQ"
181*7c478bd9Sstevel@tonic-gate #define X_LOCK		"/var/spool/locks/LCK.X"
182*7c478bd9Sstevel@tonic-gate #define S_LOCK		"/var/spool/locks/LCK.S"
183*7c478bd9Sstevel@tonic-gate #define L_LOCK		"/var/spool/locks/LK"
184*7c478bd9Sstevel@tonic-gate #define X_LOCKDIR	"/var/spool/locks"	/* must be dir part of above */
185*7c478bd9Sstevel@tonic-gate #else
186*7c478bd9Sstevel@tonic-gate #define SEQLOCK		"/var/spool/uucp/LCK.SQ."
187*7c478bd9Sstevel@tonic-gate #define SQLOCK		"/var/spool/uucp/LCK.SQ"
188*7c478bd9Sstevel@tonic-gate #define X_LOCK		"/var/spool/uucp/LCK.X"
189*7c478bd9Sstevel@tonic-gate #define S_LOCK		"/var/spool/uucp/LCK.S"
190*7c478bd9Sstevel@tonic-gate #define L_LOCK		"/var/spool/uucp/LK"
191*7c478bd9Sstevel@tonic-gate #define X_LOCKDIR	"/var/spool/uucp"	/* must be dir part of above */
192*7c478bd9Sstevel@tonic-gate #endif /* USRSPOOLLOCKS */
193*7c478bd9Sstevel@tonic-gate #define X_LOCKPRE	"LCK.X"		/* must be last part of above */
194*7c478bd9Sstevel@tonic-gate 
195*7c478bd9Sstevel@tonic-gate #define PUBDIR		"/var/spool/uucppublic"
196*7c478bd9Sstevel@tonic-gate #define ADMIN		"/var/uucp/.Admin"
197*7c478bd9Sstevel@tonic-gate #define ERRLOG		"/var/uucp/.Admin/errors"
198*7c478bd9Sstevel@tonic-gate #define SYSLOG		"/var/uucp/.Admin/xferstats"
199*7c478bd9Sstevel@tonic-gate #define RMTDEBUG	"/var/uucp/.Admin/audit"
200*7c478bd9Sstevel@tonic-gate #define CLEANUPLOGFILE	"/var/uucp/.Admin/uucleanup"
201*7c478bd9Sstevel@tonic-gate #define CMDLOG		"/var/uucp/.Admin/command"
202*7c478bd9Sstevel@tonic-gate #define PERFLOG		"/var/uucp/.Admin/perflog"
203*7c478bd9Sstevel@tonic-gate #define ACCOUNT		"/var/uucp/.Admin/account"
204*7c478bd9Sstevel@tonic-gate #define SECURITY	"/var/uucp/.Admin/security"
205*7c478bd9Sstevel@tonic-gate 
206*7c478bd9Sstevel@tonic-gate #define	WORKSPACE	"/var/uucp/.Workspace"
207*7c478bd9Sstevel@tonic-gate 
208*7c478bd9Sstevel@tonic-gate #define SQTIME		60
209*7c478bd9Sstevel@tonic-gate #define TRYCALLS	2	/* number of tries to dial call */
210*7c478bd9Sstevel@tonic-gate #define MINULIMIT	(1L<<11)	/* minimum reasonable ulimit */
211*7c478bd9Sstevel@tonic-gate #define	MAX_LOCKTRY	5	/* number of attempts to lock device */
212*7c478bd9Sstevel@tonic-gate 
213*7c478bd9Sstevel@tonic-gate /*
214*7c478bd9Sstevel@tonic-gate  * CDEBUG is for communication line debugging
215*7c478bd9Sstevel@tonic-gate  * DEBUG is for program debugging
216*7c478bd9Sstevel@tonic-gate  * #define SMALL to compile without the DEBUG code
217*7c478bd9Sstevel@tonic-gate  */
218*7c478bd9Sstevel@tonic-gate 
219*7c478bd9Sstevel@tonic-gate #ifndef DIAL
220*7c478bd9Sstevel@tonic-gate #define CDEBUG(l, f, s) if (Debug >= l) (void)fprintf(stderr, f, s)
221*7c478bd9Sstevel@tonic-gate #else
222*7c478bd9Sstevel@tonic-gate #define CDEBUG(l, f, s)
223*7c478bd9Sstevel@tonic-gate #define SMALL
224*7c478bd9Sstevel@tonic-gate #endif
225*7c478bd9Sstevel@tonic-gate 
226*7c478bd9Sstevel@tonic-gate #ifndef SMALL
227*7c478bd9Sstevel@tonic-gate #define DEBUG(l, f, s) if (Debug >= l) (void)fprintf(stderr, f, s)
228*7c478bd9Sstevel@tonic-gate #else
229*7c478bd9Sstevel@tonic-gate #define DEBUG(l, f, s)
230*7c478bd9Sstevel@tonic-gate #endif /* SMALL */
231*7c478bd9Sstevel@tonic-gate 
232*7c478bd9Sstevel@tonic-gate /*
233*7c478bd9Sstevel@tonic-gate  * VERBOSE is used by cu and ct to inform the user of progress
234*7c478bd9Sstevel@tonic-gate  * In other programs, the Value of Verbose is always 0.
235*7c478bd9Sstevel@tonic-gate  */
236*7c478bd9Sstevel@tonic-gate #define VERBOSE(f, s) { if (Verbose > 0) (void)fprintf(stderr, f, s); }
237*7c478bd9Sstevel@tonic-gate 
238*7c478bd9Sstevel@tonic-gate #define PREFIX(pre, str)	(strncmp((pre), (str), strlen(pre)) == SAME)
239*7c478bd9Sstevel@tonic-gate #define BASENAME(str, c) ((Bnptr = strrchr((str), c)) ? (Bnptr + 1) : (str))
240*7c478bd9Sstevel@tonic-gate #define EQUALS(a,b)	((a != CNULL) && (b != CNULL) && (strcmp((a),(b))==SAME))
241*7c478bd9Sstevel@tonic-gate #define EQUALSN(a,b,n)	((a != CNULL) && (b != CNULL) && (strncmp((a),(b),(n))==SAME))
242*7c478bd9Sstevel@tonic-gate #define LASTCHAR(s)	(s+strlen(s)-1)
243*7c478bd9Sstevel@tonic-gate 
244*7c478bd9Sstevel@tonic-gate #define SAME 0
245*7c478bd9Sstevel@tonic-gate #define ANYREAD 04
246*7c478bd9Sstevel@tonic-gate #define ANYWRITE 02
247*7c478bd9Sstevel@tonic-gate #define FAIL -1
248*7c478bd9Sstevel@tonic-gate #define SUCCESS 0
249*7c478bd9Sstevel@tonic-gate #define NULLCHAR	'\0'
250*7c478bd9Sstevel@tonic-gate #define CNULL (char *) 0
251*7c478bd9Sstevel@tonic-gate #define STBNULL (struct sgttyb *) 0
252*7c478bd9Sstevel@tonic-gate #define MASTER 1
253*7c478bd9Sstevel@tonic-gate #define SLAVE 0
254*7c478bd9Sstevel@tonic-gate #define MAXBASENAME 14 /* should be DIRSIZ but that is now fs dependent */
255*7c478bd9Sstevel@tonic-gate #define MAXFULLNAME BUFSIZ
256*7c478bd9Sstevel@tonic-gate #define MAXNAMESIZE	64	/* /var/spool/uucp/<14 chars>/<14 chars>+slop */
257*7c478bd9Sstevel@tonic-gate #define CONNECTTIME 30
258*7c478bd9Sstevel@tonic-gate #define EXPECTTIME 45
259*7c478bd9Sstevel@tonic-gate #define MSGTIME 60
260*7c478bd9Sstevel@tonic-gate #define NAMESIZE MAXBASENAME+1
261*7c478bd9Sstevel@tonic-gate #define	SIZEOFPID	10		/* maximum number of digits in a pid */
262*7c478bd9Sstevel@tonic-gate #define EOTMSG "\004\n\004\n"
263*7c478bd9Sstevel@tonic-gate #define CALLBACK 1
264*7c478bd9Sstevel@tonic-gate 
265*7c478bd9Sstevel@tonic-gate /* manifests for sysfiles.c's sysaccess()	*/
266*7c478bd9Sstevel@tonic-gate /* check file access for REAL user id */
267*7c478bd9Sstevel@tonic-gate #define	ACCESS_SYSTEMS	1
268*7c478bd9Sstevel@tonic-gate #define	ACCESS_DEVICES	2
269*7c478bd9Sstevel@tonic-gate #define	ACCESS_DIALERS	3
270*7c478bd9Sstevel@tonic-gate /* check file access for EFFECTIVE user id */
271*7c478bd9Sstevel@tonic-gate #define	EACCESS_SYSTEMS	4
272*7c478bd9Sstevel@tonic-gate #define	EACCESS_DEVICES	5
273*7c478bd9Sstevel@tonic-gate #define	EACCESS_DIALERS	6
274*7c478bd9Sstevel@tonic-gate 
275*7c478bd9Sstevel@tonic-gate /* manifest for chkpth flag */
276*7c478bd9Sstevel@tonic-gate #define CK_READ		0
277*7c478bd9Sstevel@tonic-gate #define CK_WRITE	1
278*7c478bd9Sstevel@tonic-gate 
279*7c478bd9Sstevel@tonic-gate /*
280*7c478bd9Sstevel@tonic-gate  * commands
281*7c478bd9Sstevel@tonic-gate  */
282*7c478bd9Sstevel@tonic-gate #define SHELL		"/usr/bin/sh"
283*7c478bd9Sstevel@tonic-gate #define MAIL		"mail"
284*7c478bd9Sstevel@tonic-gate #define UUCICO		"/usr/lib/uucp/uucico"
285*7c478bd9Sstevel@tonic-gate #define UUXQT		"/usr/lib/uucp/uuxqt"
286*7c478bd9Sstevel@tonic-gate #define UUX		"/usr/bin/uux"
287*7c478bd9Sstevel@tonic-gate #define UUCP		"/usr/bin/uucp"
288*7c478bd9Sstevel@tonic-gate 
289*7c478bd9Sstevel@tonic-gate 
290*7c478bd9Sstevel@tonic-gate /* system status stuff */
291*7c478bd9Sstevel@tonic-gate #define SS_OK			0
292*7c478bd9Sstevel@tonic-gate #define SS_NO_DEVICE		1
293*7c478bd9Sstevel@tonic-gate #define SS_TIME_WRONG		2
294*7c478bd9Sstevel@tonic-gate #define SS_INPROGRESS		3
295*7c478bd9Sstevel@tonic-gate #define SS_CONVERSATION		4
296*7c478bd9Sstevel@tonic-gate #define SS_SEQBAD		5
297*7c478bd9Sstevel@tonic-gate #define SS_LOGIN_FAILED		6
298*7c478bd9Sstevel@tonic-gate #define SS_DIAL_FAILED		7
299*7c478bd9Sstevel@tonic-gate #define SS_BAD_LOG_MCH		8
300*7c478bd9Sstevel@tonic-gate #define SS_LOCKED_DEVICE	9
301*7c478bd9Sstevel@tonic-gate #define SS_ASSERT_ERROR		10
302*7c478bd9Sstevel@tonic-gate #define SS_BADSYSTEM		11
303*7c478bd9Sstevel@tonic-gate #define SS_CANT_ACCESS_DEVICE	12
304*7c478bd9Sstevel@tonic-gate #define SS_DEVICE_FAILED	13	/* used for interface failure */
305*7c478bd9Sstevel@tonic-gate #define SS_WRONG_MCH		14
306*7c478bd9Sstevel@tonic-gate #define SS_CALLBACK		15
307*7c478bd9Sstevel@tonic-gate #define SS_RLOCKED		16
308*7c478bd9Sstevel@tonic-gate #define SS_RUNKNOWN		17
309*7c478bd9Sstevel@tonic-gate #define SS_RLOGIN		18
310*7c478bd9Sstevel@tonic-gate #define SS_UNKNOWN_RESPONSE	19
311*7c478bd9Sstevel@tonic-gate #define SS_STARTUP		20
312*7c478bd9Sstevel@tonic-gate #define SS_CHAT_FAILED		21
313*7c478bd9Sstevel@tonic-gate #define SS_CALLBACK_LOOP	22
314*7c478bd9Sstevel@tonic-gate 
315*7c478bd9Sstevel@tonic-gate #define MAXPH	60	/* maximum phone string size */
316*7c478bd9Sstevel@tonic-gate #define	MAXC	BUFSIZ
317*7c478bd9Sstevel@tonic-gate 
318*7c478bd9Sstevel@tonic-gate #define	TRUE	1
319*7c478bd9Sstevel@tonic-gate #define	FALSE	0
320*7c478bd9Sstevel@tonic-gate #define NAMEBUF	32
321*7c478bd9Sstevel@tonic-gate 
322*7c478bd9Sstevel@tonic-gate /* The call structure is used by ct.c, cu.c, and dial.c.	*/
323*7c478bd9Sstevel@tonic-gate 
324*7c478bd9Sstevel@tonic-gate struct call {
325*7c478bd9Sstevel@tonic-gate 	char *speed;		/* transmission baud rate */
326*7c478bd9Sstevel@tonic-gate 	char *line;		/* device name for outgoing line */
327*7c478bd9Sstevel@tonic-gate 	char *telno;		/* ptr to tel-no digit string */
328*7c478bd9Sstevel@tonic-gate 	char *type;		/* type of device to use for call. */
329*7c478bd9Sstevel@tonic-gate };
330*7c478bd9Sstevel@tonic-gate 
331*7c478bd9Sstevel@tonic-gate /* structure of an Systems file line */
332*7c478bd9Sstevel@tonic-gate #define F_MAX	50	/* max number of fields in Systems file line */
333*7c478bd9Sstevel@tonic-gate #define F_NAME 0
334*7c478bd9Sstevel@tonic-gate #define F_TIME 1
335*7c478bd9Sstevel@tonic-gate #define F_TYPE 2
336*7c478bd9Sstevel@tonic-gate #define F_CLASS 3	/* an optional prefix and the speed */
337*7c478bd9Sstevel@tonic-gate #define F_PHONE 4
338*7c478bd9Sstevel@tonic-gate #define F_LOGIN 5
339*7c478bd9Sstevel@tonic-gate 
340*7c478bd9Sstevel@tonic-gate /* structure of an Devices file line */
341*7c478bd9Sstevel@tonic-gate #define D_TYPE 0
342*7c478bd9Sstevel@tonic-gate #define D_LINE 1
343*7c478bd9Sstevel@tonic-gate #define D_CALLDEV 2
344*7c478bd9Sstevel@tonic-gate #define D_CLASS 3
345*7c478bd9Sstevel@tonic-gate #define D_CALLER 4
346*7c478bd9Sstevel@tonic-gate #define D_ARG 5
347*7c478bd9Sstevel@tonic-gate #define D_MAX	50	/* max number of fields in Devices file line */
348*7c478bd9Sstevel@tonic-gate 
349*7c478bd9Sstevel@tonic-gate #define D_ACU 1
350*7c478bd9Sstevel@tonic-gate #define D_DIRECT 2
351*7c478bd9Sstevel@tonic-gate #define D_PROT 4
352*7c478bd9Sstevel@tonic-gate 
353*7c478bd9Sstevel@tonic-gate #define GRADES "/etc/uucp/Grades"
354*7c478bd9Sstevel@tonic-gate 
355*7c478bd9Sstevel@tonic-gate #define	D_QUEUE	'Z'	/* default queue */
356*7c478bd9Sstevel@tonic-gate 
357*7c478bd9Sstevel@tonic-gate /* past here, local changes are not recommended */
358*7c478bd9Sstevel@tonic-gate #define CMDPRE		'C'
359*7c478bd9Sstevel@tonic-gate #define DATAPRE		'D'
360*7c478bd9Sstevel@tonic-gate #define XQTPRE		'X'
361*7c478bd9Sstevel@tonic-gate 
362*7c478bd9Sstevel@tonic-gate /*
363*7c478bd9Sstevel@tonic-gate  * stuff for command execution
364*7c478bd9Sstevel@tonic-gate  */
365*7c478bd9Sstevel@tonic-gate #define X_RQDFILE	'F'
366*7c478bd9Sstevel@tonic-gate #define X_STDIN		'I'
367*7c478bd9Sstevel@tonic-gate #define X_STDOUT	'O'
368*7c478bd9Sstevel@tonic-gate #define X_STDERR	'E'
369*7c478bd9Sstevel@tonic-gate #define X_CMD		'C'
370*7c478bd9Sstevel@tonic-gate #define X_USER		'U'
371*7c478bd9Sstevel@tonic-gate #define X_BRINGBACK	'B'
372*7c478bd9Sstevel@tonic-gate #define X_MAILF		'M'
373*7c478bd9Sstevel@tonic-gate #define X_RETADDR	'R'
374*7c478bd9Sstevel@tonic-gate #define X_COMMENT	'#'
375*7c478bd9Sstevel@tonic-gate #define X_NONZERO	'Z'
376*7c478bd9Sstevel@tonic-gate #define X_SENDNOTHING	'N'
377*7c478bd9Sstevel@tonic-gate #define X_SENDZERO	'n'
378*7c478bd9Sstevel@tonic-gate 
379*7c478bd9Sstevel@tonic-gate 
380*7c478bd9Sstevel@tonic-gate /* This structure describes call routines */
381*7c478bd9Sstevel@tonic-gate struct caller {
382*7c478bd9Sstevel@tonic-gate 	char	*CA_type;
383*7c478bd9Sstevel@tonic-gate 	int	(*CA_caller)();
384*7c478bd9Sstevel@tonic-gate };
385*7c478bd9Sstevel@tonic-gate 
386*7c478bd9Sstevel@tonic-gate /* structure for a saved C file */
387*7c478bd9Sstevel@tonic-gate 
388*7c478bd9Sstevel@tonic-gate struct cs_struct {
389*7c478bd9Sstevel@tonic-gate 	char	file[NAMESIZE];
390*7c478bd9Sstevel@tonic-gate 	char	sys[NAMESIZE+5];
391*7c478bd9Sstevel@tonic-gate 	char	sgrade[NAMESIZE];
392*7c478bd9Sstevel@tonic-gate 	char	grade;
393*7c478bd9Sstevel@tonic-gate 	long	jsize;
394*7c478bd9Sstevel@tonic-gate };
395*7c478bd9Sstevel@tonic-gate 
396*7c478bd9Sstevel@tonic-gate /* This structure describes dialing routines */
397*7c478bd9Sstevel@tonic-gate struct dialer {
398*7c478bd9Sstevel@tonic-gate 	char	*DI_type;
399*7c478bd9Sstevel@tonic-gate 	int	(*DI_dialer)();
400*7c478bd9Sstevel@tonic-gate };
401*7c478bd9Sstevel@tonic-gate 
402*7c478bd9Sstevel@tonic-gate struct nstat {
403*7c478bd9Sstevel@tonic-gate 	pid_t	t_pid;		/* process id				*/
404*7c478bd9Sstevel@tonic-gate 	time_t	t_start;	/* start time				*/
405*7c478bd9Sstevel@tonic-gate 	time_t	t_scall;	/* start call to system			*/
406*7c478bd9Sstevel@tonic-gate 	time_t	t_ecall;	/* end call to system			*/
407*7c478bd9Sstevel@tonic-gate 	time_t	t_tacu;		/* acu time				*/
408*7c478bd9Sstevel@tonic-gate 	time_t	t_tlog;		/* login time				*/
409*7c478bd9Sstevel@tonic-gate 	time_t	t_sftp;		/* start file transfer protocol		*/
410*7c478bd9Sstevel@tonic-gate 	time_t	t_sxf;		/* start xfer 				*/
411*7c478bd9Sstevel@tonic-gate 	time_t	t_exf;		/* end xfer 				*/
412*7c478bd9Sstevel@tonic-gate 	time_t	t_eftp;		/* end file transfer protocol		*/
413*7c478bd9Sstevel@tonic-gate 	time_t	t_qtime;	/* time file queued			*/
414*7c478bd9Sstevel@tonic-gate 	int	t_ndial;	/* # of dials				*/
415*7c478bd9Sstevel@tonic-gate 	int	t_nlogs;	/* # of login trys			*/
416*7c478bd9Sstevel@tonic-gate 	struct tms t_tbb;	/* start execution times		*/
417*7c478bd9Sstevel@tonic-gate 	struct tms t_txfs;	/* xfer start times			*/
418*7c478bd9Sstevel@tonic-gate 	struct tms t_txfe;	/* xfer end times 			*/
419*7c478bd9Sstevel@tonic-gate 	struct tms t_tga;	/* garbage execution times		*/
420*7c478bd9Sstevel@tonic-gate };
421*7c478bd9Sstevel@tonic-gate 
422*7c478bd9Sstevel@tonic-gate /* This structure describes the values from Limits file */
423*7c478bd9Sstevel@tonic-gate struct limits {
424*7c478bd9Sstevel@tonic-gate 	int	totalmax;	/* overall limit */
425*7c478bd9Sstevel@tonic-gate 	int	sitemax;	/* limit per site */
426*7c478bd9Sstevel@tonic-gate 	char	mode[64];	/* uucico mode */
427*7c478bd9Sstevel@tonic-gate };
428*7c478bd9Sstevel@tonic-gate 
429*7c478bd9Sstevel@tonic-gate /* external declarations */
430*7c478bd9Sstevel@tonic-gate 
431*7c478bd9Sstevel@tonic-gate EXTERN int (*Read)(), (*Write)();
432*7c478bd9Sstevel@tonic-gate #if defined(__STDC__)
433*7c478bd9Sstevel@tonic-gate EXTERN int (*Ioctl)(int,int,...);
434*7c478bd9Sstevel@tonic-gate #else
435*7c478bd9Sstevel@tonic-gate EXTERN int (*Ioctl)();
436*7c478bd9Sstevel@tonic-gate #endif
437*7c478bd9Sstevel@tonic-gate EXTERN int Ifn, Ofn;
438*7c478bd9Sstevel@tonic-gate EXTERN int Debug, Verbose;
439*7c478bd9Sstevel@tonic-gate EXTERN uid_t Uid, Euid;		/* user-id and effective-uid */
440*7c478bd9Sstevel@tonic-gate EXTERN long Ulimit;
441*7c478bd9Sstevel@tonic-gate EXTERN mode_t Dev_mode;		/* save device mode here */
442*7c478bd9Sstevel@tonic-gate EXTERN char Wrkdir[];
443*7c478bd9Sstevel@tonic-gate EXTERN long Retrytime;
444*7c478bd9Sstevel@tonic-gate EXTERN char **Env;
445*7c478bd9Sstevel@tonic-gate EXTERN char Uucp[];
446*7c478bd9Sstevel@tonic-gate EXTERN char Pchar;
447*7c478bd9Sstevel@tonic-gate EXTERN struct nstat Nstat;
448*7c478bd9Sstevel@tonic-gate EXTERN char Dc[];			/* line name			*/
449*7c478bd9Sstevel@tonic-gate EXTERN int Seqn;			/* sequence #			*/
450*7c478bd9Sstevel@tonic-gate EXTERN int Role;
451*7c478bd9Sstevel@tonic-gate EXTERN int Sgrades;		/* flag for administrator defined service grades */
452*7c478bd9Sstevel@tonic-gate EXTERN char Grade;
453*7c478bd9Sstevel@tonic-gate EXTERN char Logfile[];
454*7c478bd9Sstevel@tonic-gate EXTERN char Rmtname[];
455*7c478bd9Sstevel@tonic-gate EXTERN char JobGrade[];
456*7c478bd9Sstevel@tonic-gate EXTERN char User[];
457*7c478bd9Sstevel@tonic-gate EXTERN char Loginuser[];
458*7c478bd9Sstevel@tonic-gate EXTERN char *Spool;
459*7c478bd9Sstevel@tonic-gate EXTERN char *Pubdir;
460*7c478bd9Sstevel@tonic-gate EXTERN char Myname[];
461*7c478bd9Sstevel@tonic-gate EXTERN char Progname[];
462*7c478bd9Sstevel@tonic-gate EXTERN char RemSpool[];
463*7c478bd9Sstevel@tonic-gate EXTERN char *Bnptr;		/* used when BASENAME macro is expanded */
464*7c478bd9Sstevel@tonic-gate extern char *sys_errlist[];
465*7c478bd9Sstevel@tonic-gate EXTERN int SizeCheck;		/* ulimit check supported flag */
466*7c478bd9Sstevel@tonic-gate EXTERN long RemUlimit;		/* remote ulimit if supported */
467*7c478bd9Sstevel@tonic-gate EXTERN int Restart;		/* checkpoint restart supported flag */
468*7c478bd9Sstevel@tonic-gate 
469*7c478bd9Sstevel@tonic-gate EXTERN char Jobid[];		/* Jobid of current C. file */
470*7c478bd9Sstevel@tonic-gate EXTERN int Uerror;		/* global error code */
471*7c478bd9Sstevel@tonic-gate EXTERN char *UerrorText[];	/* text for error code */
472*7c478bd9Sstevel@tonic-gate 
473*7c478bd9Sstevel@tonic-gate /*	Some global I need for section 2 and section 3 routines */
474*7c478bd9Sstevel@tonic-gate extern char *optarg;	/* for getopt() */
475*7c478bd9Sstevel@tonic-gate extern int optind;	/* for getopt() */
476*7c478bd9Sstevel@tonic-gate 
477*7c478bd9Sstevel@tonic-gate #define UERRORTEXT		UerrorText[Uerror]
478*7c478bd9Sstevel@tonic-gate #define UTEXT(x)		UerrorText[x]
479*7c478bd9Sstevel@tonic-gate 
480*7c478bd9Sstevel@tonic-gate /* things get kind of tricky beyond this point -- please stay out */
481*7c478bd9Sstevel@tonic-gate 
482*7c478bd9Sstevel@tonic-gate #ifdef ATTSV
483*7c478bd9Sstevel@tonic-gate #define index strchr
484*7c478bd9Sstevel@tonic-gate #define rindex strrchr
485*7c478bd9Sstevel@tonic-gate #define vfork fork
486*7c478bd9Sstevel@tonic-gate #define ATTSVKILL
487*7c478bd9Sstevel@tonic-gate #define UNAME
488*7c478bd9Sstevel@tonic-gate #else
489*7c478bd9Sstevel@tonic-gate #define strchr index
490*7c478bd9Sstevel@tonic-gate #define strrchr rindex
491*7c478bd9Sstevel@tonic-gate #endif
492*7c478bd9Sstevel@tonic-gate 
493*7c478bd9Sstevel@tonic-gate EXTERN struct stat __s_;
494*7c478bd9Sstevel@tonic-gate #define READANY(f)	((stat((f),&__s_)==0) && ((__s_.st_mode&(0004))!=0) )
495*7c478bd9Sstevel@tonic-gate #define READSOME(f)	((stat((f),&__s_)==0) && ((__s_.st_mode&(0444))!=0) )
496*7c478bd9Sstevel@tonic-gate 
497*7c478bd9Sstevel@tonic-gate #define WRITEANY(f)	((stat((f),&__s_)==0) && ((__s_.st_mode&(0002))!=0) )
498*7c478bd9Sstevel@tonic-gate #define DIRECTORY(f)	((stat((f),&__s_)==0) && ((__s_.st_mode&(S_IFMT))==S_IFDIR) )
499*7c478bd9Sstevel@tonic-gate #define NOTEMPTY(f)	((stat((f),&__s_)==0) && (__s_.st_size!=0) )
500*7c478bd9Sstevel@tonic-gate 
501*7c478bd9Sstevel@tonic-gate /* standard functions used */
502*7c478bd9Sstevel@tonic-gate 
503*7c478bd9Sstevel@tonic-gate extern char	*strcat(), *strcpy(), *strncpy(), *strrchr();
504*7c478bd9Sstevel@tonic-gate extern char	*strchr(), *strpbrk();
505*7c478bd9Sstevel@tonic-gate extern char	*index(), *rindex(), *getlogin(), *ttyname(); /*, *malloc();
506*7c478bd9Sstevel@tonic-gate extern char	*calloc(); */
507*7c478bd9Sstevel@tonic-gate extern long	atol();
508*7c478bd9Sstevel@tonic-gate extern time_t	time();
509*7c478bd9Sstevel@tonic-gate extern int	pipe(), close(), getopt();
510*7c478bd9Sstevel@tonic-gate extern struct tm	*localtime();
511*7c478bd9Sstevel@tonic-gate extern FILE	*popen();
512*7c478bd9Sstevel@tonic-gate #ifdef BSD4_2
513*7c478bd9Sstevel@tonic-gate extern char *sprintf();
514*7c478bd9Sstevel@tonic-gate #endif /* BSD4_2 */
515*7c478bd9Sstevel@tonic-gate 
516*7c478bd9Sstevel@tonic-gate /* uucp functions and subroutine */
517*7c478bd9Sstevel@tonic-gate EXTERN void	(*genbrk)();
518*7c478bd9Sstevel@tonic-gate extern int	iswrk(), gtwvec();			/* anlwrk.c */
519*7c478bd9Sstevel@tonic-gate extern void	findgrade();				/* grades.c */
520*7c478bd9Sstevel@tonic-gate extern void	chremdir(), mkremdir();			/* chremdir.c */
521*7c478bd9Sstevel@tonic-gate extern void	toCorrupt();				/* cpmv.c  */
522*7c478bd9Sstevel@tonic-gate extern int	xmv();					/* cpmv.c  */
523*7c478bd9Sstevel@tonic-gate 
524*7c478bd9Sstevel@tonic-gate EXTERN int	getargs();				/* getargs.c */
525*7c478bd9Sstevel@tonic-gate EXTERN void	bsfix();				/* getargs.c */
526*7c478bd9Sstevel@tonic-gate extern char	*getprm();				/* getprm.c */
527*7c478bd9Sstevel@tonic-gate 
528*7c478bd9Sstevel@tonic-gate extern char	*next_token();				/* permission.c */
529*7c478bd9Sstevel@tonic-gate extern char	*nextarg();				/* permission.c */
530*7c478bd9Sstevel@tonic-gate extern int	getuline();				/* permission.c */
531*7c478bd9Sstevel@tonic-gate 
532*7c478bd9Sstevel@tonic-gate EXTERN void	logent(), syslog(), closelog();		/* logent.c */
533*7c478bd9Sstevel@tonic-gate extern void	commandlog();				/* logent.c */
534*7c478bd9Sstevel@tonic-gate extern time_t	millitick();				/* logent.c */
535*7c478bd9Sstevel@tonic-gate 
536*7c478bd9Sstevel@tonic-gate extern unsigned long	getfilesize();			/* statlog.c */
537*7c478bd9Sstevel@tonic-gate extern void 		putfilesize();			/* statlog.c */
538*7c478bd9Sstevel@tonic-gate 
539*7c478bd9Sstevel@tonic-gate EXTERN char	*protoString();				/* permission.c */
540*7c478bd9Sstevel@tonic-gate extern int	logFind(), mchFind();			/* permission.c */
541*7c478bd9Sstevel@tonic-gate extern int	chkperm(), chkpth();			/* permission.c */
542*7c478bd9Sstevel@tonic-gate extern int	cmdOK(), switchRole();			/* permission.c */
543*7c478bd9Sstevel@tonic-gate extern int	callBack(), requestOK();		/* permission.c */
544*7c478bd9Sstevel@tonic-gate extern int	noSpool();				/* permission.c */
545*7c478bd9Sstevel@tonic-gate extern void	myName();				/* permission.c */
546*7c478bd9Sstevel@tonic-gate 
547*7c478bd9Sstevel@tonic-gate extern int	mkdirs();				/* expfile.c */
548*7c478bd9Sstevel@tonic-gate extern int	scanlimit();				/* limits.c */
549*7c478bd9Sstevel@tonic-gate extern void	systat();				/* systat.c */
550*7c478bd9Sstevel@tonic-gate EXTERN int	fd_mklock(), fd_cklock();		/* ulockf.c */
551*7c478bd9Sstevel@tonic-gate EXTERN int	fn_cklock();				/* ulockf.c */
552*7c478bd9Sstevel@tonic-gate EXTERN int	mklock(), cklock(), mlock();		/* ulockf.c */
553*7c478bd9Sstevel@tonic-gate EXTERN void	fd_rmlock(), delock(), rmlock();	/* ulockf.c */
554*7c478bd9Sstevel@tonic-gate extern char	*timeStamp();				/* utility.c */
555*7c478bd9Sstevel@tonic-gate EXTERN void	assert(), errent();			/* utility.c */
556*7c478bd9Sstevel@tonic-gate extern void	uucpname();				/* uucpname.c */
557*7c478bd9Sstevel@tonic-gate extern int	versys();				/* versys.c */
558*7c478bd9Sstevel@tonic-gate extern void	xuuxqt(), xuucico();			/* xqt.c */
559*7c478bd9Sstevel@tonic-gate EXTERN void	cleanup();				/* misc main.c */
560*7c478bd9Sstevel@tonic-gate 
561*7c478bd9Sstevel@tonic-gate #define ASSERT(e, s1, s2, i1) if (!(e)) {\
562*7c478bd9Sstevel@tonic-gate 	assert(s1, s2, i1, __FILE__, __LINE__);\
563*7c478bd9Sstevel@tonic-gate 	cleanup(FAIL);};
564*7c478bd9Sstevel@tonic-gate 
565*7c478bd9Sstevel@tonic-gate #ifdef ATTSV
566*7c478bd9Sstevel@tonic-gate unsigned	sleep();
567*7c478bd9Sstevel@tonic-gate void	exit(), setbuf();
568*7c478bd9Sstevel@tonic-gate long	ulimit();
569*7c478bd9Sstevel@tonic-gate #else /* !ATTSV */
570*7c478bd9Sstevel@tonic-gate int	sleep(), exit(), setbuf(), ftime();
571*7c478bd9Sstevel@tonic-gate #endif
572*7c478bd9Sstevel@tonic-gate 
573*7c478bd9Sstevel@tonic-gate #ifdef UNAME
574*7c478bd9Sstevel@tonic-gate #include <sys/utsname.h>
575*7c478bd9Sstevel@tonic-gate #endif /* UNAME */
576*7c478bd9Sstevel@tonic-gate 
577*7c478bd9Sstevel@tonic-gate #ifndef NOUSTAT
578*7c478bd9Sstevel@tonic-gate #ifdef V7USTAT
579*7c478bd9Sstevel@tonic-gate struct  ustat {
580*7c478bd9Sstevel@tonic-gate 	daddr_t	f_tfree;	/* total free */
581*7c478bd9Sstevel@tonic-gate 	ino_t	f_tinode;	/* total inodes free */
582*7c478bd9Sstevel@tonic-gate };
583*7c478bd9Sstevel@tonic-gate #else /* !NOUSTAT && !V7USTAT */
584*7c478bd9Sstevel@tonic-gate #include <ustat.h>
585*7c478bd9Sstevel@tonic-gate #endif /* V7USTAT */
586*7c478bd9Sstevel@tonic-gate #endif /* NOUSTAT */
587*7c478bd9Sstevel@tonic-gate 
588*7c478bd9Sstevel@tonic-gate #ifdef BSD4_2
589*7c478bd9Sstevel@tonic-gate char *gethostname();
590*7c478bd9Sstevel@tonic-gate #endif /* BSD4_2 */
591*7c478bd9Sstevel@tonic-gate 
592*7c478bd9Sstevel@tonic-gate /* messages */
593*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_OPEN;
594*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_WRITE;
595*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_READ;
596*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_CREATE;
597*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_ALLOCATE;
598*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_LOCK;
599*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_STAT;
600*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_CHOWN;
601*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_CHMOD;
602*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_LINK;
603*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_CHDIR;
604*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_UNLINK;
605*7c478bd9Sstevel@tonic-gate EXTERN char *Wr_ROLE;
606*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_CORRUPT;
607*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_FORK;
608*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_CLOSE;
609*7c478bd9Sstevel@tonic-gate EXTERN char *Ct_BADOWN;
610*7c478bd9Sstevel@tonic-gate EXTERN char *Fl_EXISTS;
611*7c478bd9Sstevel@tonic-gate 
612*7c478bd9Sstevel@tonic-gate #endif
613