#ifndef _UUCP_H
#define _UUCP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <wchar.h>
#include <widec.h>
#include <wctype.h>
#include <ulimit.h>
#include <values.h>
#include <sys/types.h>
#include <sys/wait.h>
#include "parms.h"
#ifdef ATTSV
#define ATTSVKILL
#define ATTSVTTY
#define UNAME
#ifdef ATTSVR4
#define ATTSVR3
#endif
#endif
#ifdef BSD4_3
#define BSD4_2
#define BSDINETD
#endif
#ifdef DIAL
#define EXTERN static
#define GLOBAL static
#else
#define EXTERN extern
#define GLOBAL
#endif
#ifdef BSD4_2
#define V7
#define ATTSVKILL
#undef NONAP
#undef FASTTIMER
#endif
#ifdef V8
#define V7
#define ATTSVKILL
#define UNAME
#endif
#ifdef FASTTIMER
#undef NONAP
#endif
#include <stdio.h>
#include <ctype.h>
#include <setjmp.h>
#include <sys/param.h>
#ifdef V7
#ifdef ATTSVTTY
#include <termio.h>
#else
#include <sgtty.h>
#endif
#include <sys/timeb.h>
#ifdef BSD4_2
#include <fcntl.h>
#endif
#else
#include <termio.h>
#include <sys/types.h>
#include <signal.h>
#include <fcntl.h>
#endif
#include <sys/stat.h>
#include <utime.h>
#include <dirent.h>
#ifdef BSD4_2
#include <sys/time.h>
#else
#include <time.h>
#endif
#include <sys/times.h>
#include <errno.h>
#ifdef ATTSV
#ifdef ATTSVR4
#include <sys/mkdev.h>
#else
#include <sys/sysmacros.h>
#endif
#endif
#ifdef RT
#include "rt/types.h"
#include "rt/unix/param.h"
#include "rt/stat.h"
#include <sys/ustat.h>
#endif
#include <sysexits.h>
#ifndef ATTSVR4
#define const
#endif
#define LEGALMODE (mode_t) 0666
#define PUB_FILEMODE (mode_t) 0666
#define LOGFILEMODE (mode_t) 0644
#define CFILEMODE (mode_t) 0644
#define DFILEMODE (mode_t) 0600
#define PUBMASK (mode_t) 0000
#define PUB_DIRMODE (mode_t) 0777
#define DIRMASK (mode_t) 0022
#define MAXSTART 300
#define ACULAST "<"
#define STATDIR "/var/uucp/.Status"
#define LOGUUX "/var/uucp/.Log/uux"
#define LOGUUXQT "/var/uucp/.Log/uuxqt"
#define LOGUUCP "/var/uucp/.Log/uucp"
#define LOGCICO "/var/uucp/.Log/uucico"
#define CORRUPTDIR "/var/spool/uucp/.Corrupt"
#define XQTDIR "/var/spool/uucp/.Xqtdir"
#define SYSNSIZE (MAXBASENAME - 7)
#ifdef USRSPOOLLOCKS
#define LOCKPRE "/var/spool/locks/LCK."
#else
#define LOCKPRE "/var/spool/uucp/LCK."
#endif
#define SQFILE "/etc/uucp/SQFILE"
#define SQTMP "/etc/uucp/SQTMP"
#define SLCKTIME 5400
#define DIALCODES "/etc/uucp/Dialcodes"
#define PERMISSIONS "/etc/uucp/Permissions"
#define SYSNAMEFILE "/etc/uucp/Sysname"
#define SPOOL "/var/spool/uucp"
#define SEQDIR "/var/uucp/.Sequence"
#define X_LOCKTIME 3600
#ifdef USRSPOOLLOCKS
#define SEQLOCK "/var/spool/locks/LCK.SQ."
#define SQLOCK "/var/spool/locks/LCK.SQ"
#define X_LOCK "/var/spool/locks/LCK.X"
#define S_LOCK "/var/spool/locks/LCK.S"
#define L_LOCK "/var/spool/locks/LK"
#define X_LOCKDIR "/var/spool/locks"
#else
#define SEQLOCK "/var/spool/uucp/LCK.SQ."
#define SQLOCK "/var/spool/uucp/LCK.SQ"
#define X_LOCK "/var/spool/uucp/LCK.X"
#define S_LOCK "/var/spool/uucp/LCK.S"
#define L_LOCK "/var/spool/uucp/LK"
#define X_LOCKDIR "/var/spool/uucp"
#endif
#define X_LOCKPRE "LCK.X"
#define S_LOCKPRE "LCK.S"
#define PUBDIR "/usr/spool/uucppublic"
#define ADMIN "/var/uucp/.Admin"
#define ERRLOG "/var/uucp/.Admin/errors"
#define SYSLOG "/var/uucp/.Admin/xferstats"
#define RMTDEBUG "/var/uucp/.Admin/audit"
#define CLEANUPLOGFILE "/var/uucp/.Admin/uucleanup"
#define CMDLOG "/var/uucp/.Admin/command"
#define PERFLOG "/var/uucp/.Admin/perflog"
#define ACCOUNT "/var/uucp/.Admin/account"
#define SECURITY "/var/uucp/.Admin/security"
#define WORKSPACE "/var/spool/uucp/.Workspace"
#define SQTIME 60
#define TRYCALLS 2
#define MINULIMIT (1L<<11)
#define MAX_LOCKTRY 5
#ifndef DIAL
#define CDEBUG(l, f, s) if (Debug >= l) fprintf(stderr, f, s)
#else
#define CDEBUG(l, f, s)
#define SMALL
#endif
#ifndef SMALL
#define DEBUG(l, f, s) if (Debug >= l) fprintf(stderr, f, s)
#else
#define DEBUG(l, f, s)
#endif
#define VERBOSE(f, s) { if (Verbose > 0) fprintf(stderr, f, s); }
#define PREFIX(pre, str) (strncmp((pre), (str), strlen(pre)) == SAME)
#define BASENAME(str, c) ((Bnptr = strrchr((str), c)) ? (Bnptr + 1) : (str))
#define EQUALS(a,b) ((a != CNULL) && (b != CNULL) && (strcmp((a),(b))==SAME))
#define WEQUALS(a,b) ((a != CNULL) && (b != CNULL) && (wcscmp((a),(b))==SAME))
#define EQUALSN(a,b,n) ((a != CNULL) && (b != CNULL) && (strncmp((a),(b),(n))==SAME))
#define WEQUALSN(a,b,n) ((a != CNULL) && (b != CNULL) && (wcsncmp((a),(b),(n))==SAME))
#define LASTCHAR(s) (s+strlen(s)-1)
#define SAME 0
#define ANYREAD 04
#define ANYWRITE 02
#define FAIL -1
#define SUCCESS 0
#define NULLCHAR '\0'
#define CNULL ((void *) 0)
#define STBNULL (struct sgttyb *) 0
#define MASTER 1
#define SLAVE 0
#define MAXBASENAME 14
#define MAXFULLNAME BUFSIZ
#define MAXNAMESIZE 64
#define CONNECTTIME 30
#define EXPECTTIME 45
#define MSGTIME 60
#define NAMESIZE MAXBASENAME+1
#define SIZEOFPID 10
#define EOTMSG "\004\n\004\n"
#define CALLBACK 1
#define ACCESS_SYSTEMS 1
#define ACCESS_DEVICES 2
#define ACCESS_DIALERS 3
#define EACCESS_SYSTEMS 4
#define EACCESS_DEVICES 5
#define EACCESS_DIALERS 6
#define CK_READ 0
#define CK_WRITE 1
#define SHELL "/usr/bin/sh"
#define MAIL "mail"
#define UUCICO "/usr/lib/uucp/uucico"
#define UUXQT "/usr/lib/uucp/uuxqt"
#define UUX "/usr/bin/uux"
#define UUCP "/usr/bin/uucp"
#define SS_OK 0
#define SS_NO_DEVICE 1
#define SS_TIME_WRONG 2
#define SS_INPROGRESS 3
#define SS_CONVERSATION 4
#define SS_SEQBAD 5
#define SS_LOGIN_FAILED 6
#define SS_DIAL_FAILED 7
#define SS_BAD_LOG_MCH 8
#define SS_LOCKED_DEVICE 9
#define SS_ASSERT_ERROR 10
#define SS_BADSYSTEM 11
#define SS_CANT_ACCESS_DEVICE 12
#define SS_DEVICE_FAILED 13
#define SS_WRONG_MCH 14
#define SS_CALLBACK 15
#define SS_RLOCKED 16
#define SS_RUNKNOWN 17
#define SS_RLOGIN 18
#define SS_UNKNOWN_RESPONSE 19
#define SS_STARTUP 20
#define SS_CHAT_FAILED 21
#define SS_CALLBACK_LOOP 22
#define MAXPH 60
#define MAXC BUFSIZ
#define TRUE 1
#define FALSE 0
#define NAMEBUF 32
struct call {
char *speed;
char *line;
char *telno;
char *type;
};
#define F_MAX 50
#define F_NAME 0
#define F_TIME 1
#define F_TYPE 2
#define F_CLASS 3
#define F_PHONE 4
#define F_LOGIN 5
#define D_TYPE 0
#define D_LINE 1
#define D_CALLDEV 2
#define D_CLASS 3
#define D_CALLER 4
#define D_ARG 5
#define D_MAX 50
#define D_ACU 1
#define D_DIRECT 2
#define D_PROT 4
#define GRADES "/etc/uucp/Grades"
#define D_QUEUE 'Z'
#define CMDPRE 'C'
#define DATAPRE 'D'
#define XQTPRE 'X'
#define X_RQDFILE 'F'
#define X_STDIN 'I'
#define X_STDOUT 'O'
#define X_STDERR 'E'
#define X_CMD 'C'
#define X_USER 'U'
#define X_BRINGBACK 'B'
#define X_MAILF 'M'
#define X_RETADDR 'R'
#define X_COMMENT '#'
#define X_NONZERO 'Z'
#define X_SENDNOTHING 'N'
#define X_SENDZERO 'n'
#define X_JOBID 'J'
struct caller {
char *CA_type;
int (*CA_caller)();
};
struct cs_struct {
char file[NAMESIZE];
char sys[NAMESIZE+5];
char sgrade[NAMESIZE];
char grade;
long jsize;
};
struct dialer {
char *DI_type;
int (*DI_dialer)();
};
struct nstat {
pid_t t_pid;
time_t t_start;
time_t t_scall;
time_t t_ecall;
time_t t_tacu;
time_t t_tlog;
time_t t_sftp;
time_t t_sxf;
time_t t_exf;
time_t t_eftp;
time_t t_qtime;
int t_ndial;
int t_nlogs;
struct tms t_tbb;
struct tms t_txfs;
struct tms t_txfe;
struct tms t_tga;
};
struct limits {
int totalmax;
int sitemax;
char mode[64];
};
EXTERN ssize_t (*Read)(), (*Write)();
#if defined(__STDC__)
EXTERN int (*Ioctl)(int,int,...);
#else
EXTERN int (*Ioctl)();
#endif
EXTERN int Ifn, Ofn;
EXTERN int Debug, Verbose;
EXTERN uid_t Uid, Euid;
EXTERN long Ulimit;
EXTERN mode_t Dev_mode;
EXTERN char Wrkdir[];
EXTERN long Retrytime;
EXTERN char **Env;
EXTERN char Uucp[];
EXTERN char Pchar;
EXTERN struct nstat Nstat;
EXTERN char Dc[];
EXTERN int Seqn;
EXTERN int Role;
EXTERN int Sgrades;
EXTERN char Grade;
EXTERN char Logfile[MAXFULLNAME];
EXTERN char Rmtname[MAXFULLNAME];
EXTERN char JobGrade[MAXBASENAME+1];
EXTERN char User[MAXFULLNAME];
EXTERN char Loginuser[NAMESIZE];
EXTERN char *Spool;
EXTERN char *Pubdir;
EXTERN char Myname[];
EXTERN char Progname[];
EXTERN char RemSpool[];
EXTERN char *Bnptr;
EXTERN char *Shchar;
EXTERN int SizeCheck;
EXTERN long RemUlimit;
EXTERN int Restart;
EXTERN char Jobid[NAMESIZE];
EXTERN int Uerror;
EXTERN char *UerrorText[];
#define UERRORTEXT UerrorText[Uerror]
#define UTEXT(x) UerrorText[x]
#ifdef ATTSV
#define index strchr
#define rindex strrchr
#else
#define strchr index
#define strrchr rindex
#endif
#ifdef BSD4_2
#define memcpy(s1,s2,n) bcopy(s2,s1,n)
extern void bcopy();
#else
#ifndef ATTSVR4
#define vfork fork
extern char *memcpy();
#endif
#endif
EXTERN struct stat __s_;
#define F_READANY(f) ((fstat((f),&__s_)==0) && ((__s_.st_mode&(0004))!=0) )
#define READANY(f) ((stat((f),&__s_)==0) && ((__s_.st_mode&(0004))!=0) )
#define WRITEANY(f) ((stat((f),&__s_)==0) && ((__s_.st_mode&(0002))!=0) )
#define DIRECTORY(f) ((stat((f),&__s_)==0) && ((__s_.st_mode&(S_IFMT))==S_IFDIR) )
#define NOTEMPTY(f) ((stat((f),&__s_)==0) && (__s_.st_size!=0) )
EXTERN void (*genbrk)();
extern int iswrk(), gtwvec();
extern void findgrade();
extern void chremdir(), mkremdir();
extern void toCorrupt();
extern int xmv();
EXTERN int getargs();
EXTERN void bsfix();
extern char *_uu_setlocale();
extern void _uu_resetlocale();
extern char *getprm();
extern char *next_token();
extern char *nextarg();
extern int getuline();
EXTERN void logent(), usyslog(), ucloselog();
extern void commandlog();
extern time_t millitick();
extern unsigned long getfilesize();
extern void putfilesize();
EXTERN char *protoString();
extern int logFind(), mchFind();
extern int chkperm(), chkpth();
extern int cmdOK(), switchRole();
extern int callBack(), requestOK();
extern int noSpool();
extern void myName();
extern int mkdirs();
extern int scanlimit();
extern void systat();
EXTERN int fd_mklock(), fd_cklock();
EXTERN int fn_cklock();
EXTERN int mklock(), cklock(), umlock();
EXTERN void fd_rmlock(), delock(), rmlock();
extern char *timeStamp();
EXTERN void assert(), errent();
extern void uucpname();
extern int versys();
extern void xuuxqt(), xuucico();
EXTERN void cleanup();
#define ASSERT(e, s1, s2, i1) if (!(e)) {\
assert(s1, s2, i1, __FILE__, __LINE__);\
cleanup(FAIL);};
#ifdef ATTSV
void setbuf();
#else
int setbuf(), ftime();
char *mktemp();
#endif
#ifdef UNAME
#include <sys/utsname.h>
#endif
#ifndef NOUSTAT
#ifdef V7USTAT
struct ustat {
daddr_t f_tfree;
ino_t f_tinode;
};
#else
#ifdef STATFS
#include <sys/vfs.h>
#else
#include <ustat.h>
#endif
#endif
#endif
#ifdef BSD4_2
int gethostname();
#endif
EXTERN char *Ct_OPEN;
EXTERN char *Ct_WRITE;
EXTERN char *Ct_READ;
EXTERN char *Ct_CREATE;
EXTERN char *Ct_ALLOCATE;
EXTERN char *Ct_LOCK;
EXTERN char *Ct_STAT;
EXTERN char *Ct_CHOWN;
EXTERN char *Ct_CHMOD;
EXTERN char *Ct_LINK;
EXTERN char *Ct_CHDIR;
EXTERN char *Ct_UNLINK;
EXTERN char *Wr_ROLE;
EXTERN char *Ct_CORRUPT;
EXTERN char *Ct_FORK;
EXTERN char *Ct_CLOSE;
EXTERN char *Ct_BADOWN;
EXTERN char *Fl_EXISTS;
#ifdef __cplusplus
}
#endif
#endif