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