#ifndef _FTP_VAR_H
#define _FTP_VAR_H
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/param.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/resource.h>
#include <sys/ttold.h>
#include <sys/stropts.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/ftp.h>
#include <arpa/telnet.h>
#include <arpa/inet.h>
#include <setjmp.h>
#include <libintl.h>
#include <string.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <widec.h>
#include <signal.h>
#include <netdb.h>
#include <pwd.h>
#include <locale.h>
#include <limits.h>
#include <fnmatch.h>
#include <dirent.h>
#include <termios.h>
#include <stdarg.h>
#include <unistd.h>
#include <malloc.h>
#include <strings.h>
#include <errno.h>
#include <ctype.h>
#include <gssapi/gssapi.h>
#include <gssapi/gssapi_ext.h>
#define signal(s, f) sigset(s, f)
#define setjmp(e) sigsetjmp(e, 1)
#define longjmp(e, v) siglongjmp(e, v)
#define jmp_buf sigjmp_buf
#define DEFAULTFTPFILE "/etc/default/ftp"
extern int trace;
extern int hash;
extern int sendport;
extern int verbose;
extern int connected;
extern int fromatty;
extern int interactive;
extern int debug;
extern int bell;
extern int doglob;
extern int autologin;
extern int proxy;
extern int proxflag;
extern int sunique;
extern int runique;
extern int mcase;
extern int ntflag;
extern int mapflag;
extern int code;
extern int crflag;
extern char pasv[64];
extern char *altarg;
extern char ntin[17];
extern char ntout[17];
extern char mapin[MAXPATHLEN];
extern char mapout[MAXPATHLEN];
extern char typename[32];
extern int type;
extern char structname[32];
extern int stru;
extern char formname[32];
extern int form;
extern char modename[32];
extern int mode;
extern char bytename[32];
extern int bytesize;
extern int passivemode;
extern off_t restart_point;
extern int tcpwindowsize;
extern boolean_t ls_invokes_NLST;
extern char *hostname;
extern char *home;
extern char *globerr;
extern struct sockaddr_in6 myctladdr;
extern struct sockaddr_in6 remctladdr;
extern int clevel;
extern int dlevel;
extern int autoauth;
extern int auth_type;
extern int auth_error;
extern int autoencrypt;
extern int fflag;
extern boolean_t goteof;
extern int skipsyst;
extern uchar_t *ucbuf;
#define MECH_SZ 40
#define FTP_DEF_MECH "kerberos_v5"
extern char mechstr[MECH_SZ];
extern gss_OID mechoid;
extern gss_ctx_id_t gcontext;
#define FTPBUFSIZ BUFSIZ*16
#define HASHSIZ BUFSIZ*8
extern char *buf;
extern jmp_buf toplevel;
#define MAXCMDLEN 10
#define BUFSIZE ((MAXPATHLEN)*2+MAXCMDLEN+4)
extern char line[BUFSIZE];
extern char *stringbase;
extern char argbuf[BUFSIZE];
extern char *argbase;
extern int margc;
extern char **margv;
extern int cpend;
extern int mflag;
extern FILE *tmp_nlst;
extern char *reply_parse;
extern char reply_buf[FTPBUFSIZ];
extern char *reply_ptr;
extern int options;
extern int timeout;
extern int timeoutms;
extern jmp_buf timeralarm;
struct cmd {
char *c_name;
char *c_help;
char c_bell;
char c_conn;
char c_proxy;
void (*c_handler)(int argc, char *argv[]);
};
struct macel {
char mac_name[9];
char *mac_start;
char *mac_end;
};
extern int macnum;
extern struct macel macros[16];
extern char macbuf[4096];
extern void macdef(int argc, char *argv[]);
extern void doproxy(int argc, char *argv[]);
extern void setpeer(int argc, char *argv[]);
extern void rmthelp(int argc, char *argv[]);
extern void settype(int argc, char *argv[]);
extern void setbinary(int argc, char *argv[]);
extern void setascii(int argc, char *argv[]);
extern void settenex(int argc, char *argv[]);
extern void setebcdic(int argc, char *argv[]);
extern void setmode(int argc, char *argv[]);
extern void setform(int argc, char *argv[]);
extern void setstruct(int argc, char *argv[]);
extern void put(int argc, char *argv[]);
extern void mput(int argc, char *argv[]);
extern void get(int argc, char *argv[]);
extern void mget(int argc, char *argv[]);
extern void status(int argc, char *argv[]);
extern void setbell(int argc, char *argv[]);
extern void settrace(int argc, char *argv[]);
extern void sethash(int argc, char *argv[]);
extern void setverbose(int argc, char *argv[]);
extern void setport(int argc, char *argv[]);
extern void setprompt(int argc, char *argv[]);
extern void setglob(int argc, char *argv[]);
extern void setdebug(int argc, char *argv[]);
extern void cd(int argc, char *argv[]);
extern void lcd(int argc, char *argv[]);
extern void delete(int argc, char *argv[]);
extern void mdelete(int argc, char *argv[]);
extern void renamefile(int argc, char *argv[]);
extern void ls(int argc, char *argv[]);
extern void mls(int argc, char *argv[]);
extern void shell(int argc, char *argv[]);
extern void user(int argc, char *argv[]);
extern void pwd(int argc, char *argv[]);
extern void makedir(int argc, char *argv[]);
extern void removedir(int argc, char *argv[]);
extern void quote(int argc, char *argv[]);
extern void rmthelp(int argc, char *argv[]);
extern void quit(int argc, char *argv[]);
extern void disconnect(int argc, char *argv[]);
extern void account(int argc, char *argv[]);
extern void setcase(int argc, char *argv[]);
extern void setcr(int argc, char *argv[]);
extern void setntrans(int argc, char *argv[]);
extern void setnmap(int argc, char *argv[]);
extern void setsunique(int argc, char *argv[]);
extern void setrunique(int argc, char *argv[]);
extern void cdup(int argc, char *argv[]);
extern void domacro(int argc, char *argv[]);
extern void help(int argc, char *argv[]);
extern void reset(int argc, char *argv[]);
extern void reget(int argc, char *argv[]);
extern void restart(int argc, char *argv[]);
extern void setpassive(int argc, char *argv[]);
extern void settcpwindow(int argc, char *argv[]);
extern void site(int argc, char *argv[]);
extern void ccc(int argc, char *argv[]);
extern void setclear(int argc, char *argv[]);
extern void setclevel(int argc, char *argv[]);
extern void setdlevel(int argc, char *argv[]);
extern void setsafe(int argc, char *argv[]);
extern void setmech(int argc, char *argv[]);
extern int do_auth(void);
extern void setpbsz(uint_t size);
extern char *radix_error(int);
extern int radix_encode(uchar_t *, uchar_t *, size_t, int *, int);
extern void user_gss_error(OM_uint32 maj_stat, OM_uint32 min_stat,
char *errstr);
extern void setprivate(int argc, char *argv[]);
extern int secure_flush(int);
extern int secure_getc(FILE *);
extern int secure_putc(int, FILE *);
extern ssize_t secure_read(int, void *, size_t);
extern ssize_t secure_write(int, const void *, size_t);
extern void fatal(char *msg);
extern int getreply(int expecteof);
extern void call(void (*routine)(int argc, char *argv[]), ...);
extern void sendrequest(char *cmd, char *local, char *remote, int allowpipe);
extern void recvrequest(char *cmd, char *local, char *remote, char *mode,
int allowpipe);
extern void makeargv(void);
extern int login(char *host);
extern int command(char *fmt, ...);
extern char **glob(char *v);
extern void blkfree(char **);
extern void pswitch(int flag);
extern char *hookup(char *host, char *);
extern char *mygetpass(char *prompt);
extern void lostpeer(int sig);
extern int ruserpass(char *host, char **aname, char **apass, char **aacct);
extern FILE *mypopen(char *cmd, char *mode);
extern int mypclose(FILE *ptr);
extern struct cmd *getcmd(char *name);
extern void stop_timer(void);
extern void reset_timer(void);
extern int getpagesize(void);
#define ENCODELEN(l) (((4 * (l)) / 3) + 4)
#define DECODELEN(l) (((3 * (l)) / 4) + 4)
#ifdef __cplusplus
}
#endif
#endif