#ifdef _WIN32
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#endif
#ifdef _WIN32
int fclose_socket(FILE* f);
FILE* fdopen_socket(SOCKET s, char* mode);
#define FCLOSE_SOCKET(f) fclose_socket(f)
#define FDOPEN_SOCKET(s, mode) fdopen_socket(s, mode)
#define SOCKETNO(fd) _get_osfhandle(fd)
#define PERROR_SOCKET(str) do { errno = SOCKET_ERRNO; perror(str); } while(0)
#else
#define FCLOSE_SOCKET(f) fclose(f)
#define FDOPEN_SOCKET(s, mode) fdopen(s, mode)
#define SOCKETNO(fd) (fd)
#define PERROR_SOCKET(str) perror(str)
#endif
#ifdef _WIN32
typedef void (*sig_t)(int);
typedef void sigtype;
#else
#define sig_t my_sig_t
#define sigtype krb5_sigtype
typedef sigtype (*sig_t)();
#endif
#ifdef DEFINITIONS
#define extern
#endif
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 autoauth;
extern int autologin;
extern int autoencrypt;
extern int forward;
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];
#ifndef NO_PASSIVE_MODE
extern int passivemode;
#endif
extern char *altarg;
extern char ntin[17];
extern char ntout[17];
#ifdef _WIN32
#ifndef MAXPATHLEN
#define MAXPATHLEN MAX_PATH
#endif
#else
#include <sys/param.h>
#endif
extern char mapin[MAXPATHLEN];
extern char mapout[MAXPATHLEN];
extern int clevel;
extern int dlevel;
extern int type;
extern int curtype;
extern int stru;
extern int form;
extern int mode;
extern char bytename[32];
extern int bytesize;
extern char *hostname;
extern int unix_server;
extern int unix_proxy;
extern struct servent *sp;
#include <setjmp.h>
extern jmp_buf toplevel;
extern char line[500];
extern char *stringbase;
extern char argbuf[500];
extern char *argbase;
extern int margc;
extern char *margv[20];
extern int cpend;
extern int mflag;
extern int options;
struct cmd {
char *c_name;
char *c_help;
char c_bell;
char c_conn;
char c_proxy;
void (*c_handler)();
};
struct macel {
char mac_name[9];
char *mac_start;
char *mac_end;
};
extern int macnum;
extern struct macel macros[16];
extern char macbuf[4096];
#ifdef DEFINITIONS
#undef extern
#endif
extern char *tail();
#ifndef _WIN32
extern char *mktemp();
#endif
extern int command(char *, ...)
#if !defined(__cplusplus) && (__GNUC__ > 2)
__attribute__((__format__(__printf__, 1, 2)))
#endif
;
char *remglob (char **, int);
int another (int *, char ***, char *);
void makeargv (void);
void setpeer (int, char **);
void setclevel (int, char **);
void setdlevel (int, char **);
void ccc (void);
void setclear (void);
void setsafe (void);
void setprivate (void);
void settype (int, char **);
void changetype (int, int);
void setbinary (void);
void setascii (void);
void settenex (void);
void set_mode (int, char **);
void setform (int, char **);
void setstruct (int, char **);
void siteidle (int, char **);
void put (int, char **);
void mput (int, char **);
void reget (int, char **);
void get (int, char **);
void mget (int, char **);
void status (int, char **);
void setbell (void);
void settrace (void);
void sethash (void);
void setverbose (void);
void setport (void);
void setprompt (void);
void setglob (void);
void setdebug (int, char **);
void cd (int, char **);
void lcd (int, char **);
void delete_file (int, char **);
void mdelete (int, char **);
void renamefile (int, char **);
void ls (int, char **);
void mls (int, char **);
void shell (int, char **);
void user (int, char **);
void pwd (void);
void makedir (int, char **);
void removedir (int, char **);
void quote (int, char **);
void site (int, char **);
void do_chmod (int, char **);
void do_umask (int, char **);
void setidle (int, char **);
void rmthelp (int, char **);
void quit (void);
void disconnect (void);
void fatal (char *);
void account (int, char **);
void doproxy (int, char **);
void setcase (void);
void setcr (void);
void setntrans (int, char **);
void setnmap (int, char **);
void setsunique (void);
void setrunique (void);
void cdup (void);
void restart (int, char **);
void syst (void);
void macdef (int, char **);
void sizecmd (int, char **);
void modtime (int, char **);
void rmtstatus (int, char **);
void newer (int, char **);
void setpassive (void);
void sendrequest (char *, char *, char *, int);
void recvrequest (char *, char *volatile, char *, char *, int, int);
int login (char *);
void setpbsz (unsigned int);
void pswitch (int);
int getreply (int);
void reset (void);
char *hookup (char *, int);
int do_auth (void);
void blkfree (char **);
void domacro (int, char **);
void help (int, char **);
struct cmd *getcmd (char *);
int ruserpass (char *, char **, char **, char **);
int radix_encode (unsigned char *, unsigned char *, int *, int);
char *radix_error (int);
char *mygetpass (char *);
char **ftpglob (char *);