#pragma once

int fgetcSocket(int s);
const char *fputsSocket(const char *format, int s);

const char *fprintfSocket(int s, const char *format, ...);

int fputcSocket(int s, char putChar);
int fputSocket(int s, char *putChar, int len);
char *fgetsSocket(int s, char *string);

char *hookup(const char *host, int port);
char **glob(const char *s);
int herror(char *s);

int getreply(int expecteof);
int ruserpass(const char *host, char **aname, char **apass, char **aacct);
char *getpass(const char *prompt);
void makeargv(void);
void domacro(int argc, const char *argv[]);
void proxtrans(const char *cmd, const char *local, const char *remote);
int null(void);
int initconn(void);
void disconnect(int argc, const char *argv[]);
void ptransfer(const char *direction, long bytes, struct timeval *t0, struct timeval *t1);
void setascii(int argc, const char *argv[]);
void setbinary(int argc, const char *argv[]);
void setebcdic(void);
void settenex(int argc, const char *argv[]);
void tvsub(struct timeval *tdiff, struct timeval *t1, struct timeval *t0);
void setpassive(int argc, const char *argv[]);
void setpeer(int argc, const char *argv[]);
void cmdscanner(int top);
void pswitch(int flag);
void quit(int argc, const char *argv[]);
int login(const char *host);
int command(const char *fmt, ...);
int globulize(const char **cpp);
void sendrequest(const char *cmd, const char *local, const char *remote, int printnames);
void recvrequest(const char *cmd, const char *local, const char *remote, const char *mode,
                int printnames);
int confirm(const char *cmd, const char *file);
void blkfree(char **av0);
int getit(int argc, const char *argv[], int restartit, const char *mode);
int sleep(int time);

char *tail(void);
void setbell(int argc, const char *argv[]);
void setdebug(int argc, const char *argv[]);
void setglob(int argc, const char *argv[]);
void sethash(int argc, const char *argv[]);
void setport(int argc, const char *argv[]);
void setprompt(int argc, const char *argv[]);
void settrace(int argc, const char *argv[]);
void setverbose(int argc, const char *argv[]);
void settype(int argc, const char *argv[]);
void setform(int argc, const char *argv[]);
void setstruct(int argc, const char *argv[]);
void restart(int argc, const char *argv[]);
void syst(int argc, const char *argv[]);
void cd(int argc, const char *argv[]);
void lcd(int argc, const char *argv[]);
void delete(int argc, const char *argv[]);
void mdelete(int argc, const char *argv[]);
void ls(int argc, const char *argv[]);
void mls(int argc, const char *argv[]);
void get(int argc, const char *argv[]);
void mget(int argc, const char *argv[]);
void help(int argc, const char *argv[]);
void put(int argc, const char *argv[]);
void mput(int argc, const char *argv[]);
void reget(int argc, const char *argv[]);
void status(int argc, const char *argv[]);
void renamefile(int argc, const char *argv[]);
void quote(int argc, const char *argv[]);
void rmthelp(int argc, const char *argv[]);
void site(int argc, const char *argv[]);
void pwd(int argc, const char *argv[]);
void makedir(int argc, const char *argv[]);
void removedir(int argc, const char *argv[]);
void setcr(int argc, const char *argv[]);
void account(int argc, const char *argv[]);
void doproxy(int argc, const char *argv[]);
void reset(int argc, const char *argv[]);
void setcase(int argc, const char *argv[]);
void setntrans(int argc, const char *argv[]);
void setnmap(int argc, const char *argv[]);
void setsunique(int argc, const char *argv[]);
void setrunique(int argc, const char *argv[]);
void cdup(int argc, const char *argv[]);
void macdef(int argc, const char *argv[]);
void sizecmd(int argc, const char *argv[]);
void modtime(int argc, const char *argv[]);
void newer(int argc, const char *argv[]);
void rmtstatus(int argc, const char *argv[]);
void do_chmod(int argc, const char *argv[]);
void do_umask(int argc, const char *argv[]);
void idle(int argc, const char *argv[]);
void shell(int argc, const char *argv[]);
void user(int argc, const char *argv[]);
void fsetmode(int argc, const char *argv[]);
struct cmd	*getcmd(const char *name);
