1 //#include <winsock.h>
2 #include <setjmp.h>
3 #include <time.h>
4 
5 #include "fake.h"
6 #include "prototypes.h"
7 
8 //typedef void (*Sig_t)(int);
9 
10 /* The following defines are from ftp.h and telnet.h from bsd.h */
11 /* All relevent copyrights below apply.                         */
12 
13 #define	IAC	255
14 #define	DONT	254
15 #define	DO	253
16 #define	WONT	252
17 #define	WILL	251
18 #define	SB	250
19 #define	GA	249
20 #define	EL	248
21 #define	EC	247
22 #define	AYT	246
23 #define	AO	245
24 #define	IP	244
25 #define	BREAK	243
26 #define	DM	242
27 #define	NOP	241
28 #define	SE	240
29 #define EOR     239
30 #define	ABORT	238
31 #define	SUSP	237
32 #define	xEOF	236
33 
34 
35 #define MAXPATHLEN 255
36 #define TYPE_A 'A'
37 #define TYPE_I 'I'
38 #define TYPE_E 'E'
39 #define TYPE_L 'L'
40 
41 #define PRELIM		1
42 #define COMPLETE	2
43 #define CONTINUE	3
44 #define TRANSIENT	4
45 
46 #define	MODE_S		1
47 #define	MODE_B		2
48 #define	MODE_C		3
49 
50 #define	STRU_F		1
51 #define	STRU_R		2
52 #define	STRU_P		3
53 
54 #define	FORM_N		1
55 #define	FORM_T		2
56 #define	FORM_C		3
57 
58 
59 /*
60  * Copyright (c) 1985 Regents of the University of California.
61  * All rights reserved.
62  *
63  * Redistribution and use in source and binary forms are permitted
64  * provided that the above copyright notice and this paragraph are
65  * duplicated in all such forms and that any documentation,
66  * advertising materials, and other materials related to such
67  * distribution and use acknowledge that the software was developed
68  * by the University of California, Berkeley.  The name of the
69  * University may not be used to endorse or promote products derived
70  * from this software without specific prior written permission.
71  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
72  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
73  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
74  *
75  *	@(#)ftp_var.h	5.5 (Berkeley) 6/29/88
76  */
77 
78 /*
79  * FTP global variables.
80  */
81 
82 /*
83  * Options and other state info.
84  */
85 extern int	trace;			/* trace packets exchanged */
86 extern int	hash;			/* print # for each buffer transferred */
87 extern int	sendport;		/* use PORT cmd for each data connection */
88 extern int	verbose;		/* print messages coming back from server */
89 extern int	connected;		/* connected to server */
90 extern int	fromatty;		/* input is from a terminal */
91 extern int	interactive;		/* interactively prompt on m* cmds */
92 extern int	debug;			/* debugging level */
93 extern int	bell;			/* ring bell on cmd completion */
94 extern int	doglob;			/* glob local file names */
95 extern int	proxy;			/* proxy server connection active */
96 extern int	proxflag;		/* proxy connection exists */
97 extern int	sunique;		/* store files on server with unique name */
98 extern int	runique;		/* store local files with unique name */
99 extern int	mcase;			/* map upper to lower case for mget names */
100 extern int	ntflag;			/* use ntin ntout tables for name translation */
101 extern int	mapflag;		/* use mapin mapout templates on file names */
102 extern int	code;			/* return/reply code for ftp command */
103 extern int	crflag;			/* if 1, strip car. rets. on ascii gets */
104 extern char	pasv[64];		/* passive port for proxy data connection */
105 extern int	passivemode;		/* passive mode enabled */
106 extern char	*altarg;		/* argv[1] with no shell-like preprocessing  */
107 extern char	ntin[17];		/* input translation table */
108 extern char	ntout[17];		/* output translation table */
109 
110 extern char	mapin[MAXPATHLEN];	/* input map template */
111 extern char	mapout[MAXPATHLEN];	/* output map template */
112 extern char	typename[32];		/* name of file transfer type */
113 extern int	type;			/* file transfer type */
114 extern char	structname[32];		/* name of file transfer structure */
115 extern int	stru;			/* file transfer structure */
116 extern char	formname[32];		/* name of file transfer format */
117 extern int	form;			/* file transfer format */
118 extern char	modename[32];		/* name of file transfer mode */
119 extern int	mode;			/* file transfer mode */
120 extern char	bytename[32];		/* local byte size in ascii */
121 extern int	bytesize;		/* local byte size in binary */
122 
123 extern jmp_buf	toplevel;		/* non-local goto stuff for cmd scanner */
124 
125 extern char	line[200];		/* input line buffer */
126 extern char	*stringbase;		/* current scan point in line buffer */
127 extern char	argbuf[200];		/* argument storage buffer */
128 extern char	*argbase;		/* current storage point in arg buffer */
129 extern int	margc;			/* count of arguments on input line */
130 extern const char	*margv[20];	/* args parsed from input line */
131 extern int	cpend;			/* flag: if != 0, then pending server reply */
132 extern int	mflag;			/* flag: if != 0, then active multi command */
133 
134 extern int	options;		/* used during socket creation */
135 
136 /*
137  * Format of command table.
138  */
139 struct cmd {
140 	const char	*c_name;	/* name of command */
141 	const char	*c_help;	/* help string */
142 	char	c_bell;			/* give bell when command completes */
143 	char	c_conn;			/* must be connected to use command */
144 	char	c_proxy;		/* proxy server may execute */
145 	void	(*c_handler)(int argc, const char *argv[]);	/* function to call */
146 };
147 
148 struct macel {
149 	char mac_name[9];		/* macro name */
150 	char *mac_start;		/* start of macro in macbuf */
151 	char *mac_end;			/* end of macro in macbuf */
152 };
153 
154 extern int macnum;			/* number of defined macros */
155 extern struct macel macros[16];
156 extern char macbuf[4096];
157 
158 #if	defined(__ANSI__) || defined(sparc)
159 typedef void sig_t;
160 #else
161 typedef int sig_t;
162 #endif
163 
164 typedef int uid_t;
165 
166