X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fftp.h;h=13cc415efb75727fd82369762bba15b74fd5df65;hb=e0c59f7f4ddb73390dc9c16569254c0e2a921931;hp=2d69ce74b382f45cc83cc1aa39b7799212dcc3bd;hpb=4577dd26b3ecbf7ccc5ff55efa991334136866e1;p=oftp diff --git a/src/ftp.h b/src/ftp.h index 2d69ce7..13cc415 100644 --- a/src/ftp.h +++ b/src/ftp.h @@ -3,37 +3,91 @@ enum {FTP_DIR, FTP_FILE}; /* ftp_dirent type */ +enum { + FTP_PWD, + FTP_CHDIR, + FTP_MKDIR, + FTP_RMDIR, + FTP_DEL, + FTP_LIST, + FTP_RETR, + FTP_STORE +}; + +enum { + FTP_DISC, + FTP_CONN_PASV, + FTP_CONN_ACT +}; + +enum { + FTP_MOD_REMDIR = 0x100, + FTP_MOD_LOCDIR = 0x200 +}; + +struct ftp_op { + int op; + char *arg; + + struct ftp_op *next; +}; + struct ftp_dirent { char *name; int type; + long size; + + struct ftp_dirent *next; }; struct ftp { - int ctl, data; /* sockets */ + int ctl, lis, data; /* sockets */ + int lis_port; + + int status, busy; + char *user, *pass; + + struct ftp_op *qhead, *qtail; + + int (*cproc)(struct ftp *ftp, int code, const char *buf, void *cls); + void (*dproc)(struct ftp *ftp, const char *buf, int sz, void *cls); + void *cproc_cls, *dproc_cls; char crecv[256]; int num_crecv; char drecv[256]; - int num_drecv; - char *cwd; - struct ftp_dirent *dent; - int num_dent; + char *curdir_rem, *curdir_loc; + struct ftp_dirent *dent_rem, *dent_loc; + + int last_resp; + int modified; }; struct ftp *ftp_alloc(void); void ftp_free(struct ftp *ftp); +void ftp_auth(const char *user, const char *pass); + int ftp_connect(struct ftp *ftp, const char *host, int port); void ftp_close(struct ftp *ftp); int ftp_sockets(struct ftp *ftp, int *sockv, int maxsize); -int ftp_pending(struct ftp *ftp); int ftp_handle(struct ftp *ftp, int s); +int ftp_queue(struct ftp *ftp, int op, const char *arg); +int ftp_waitresp(struct ftp *ftp, time_t timeout); + int ftp_update(struct ftp *ftp); +int ftp_pwd(struct ftp *ftp); int ftp_chdir(struct ftp *ftp, const char *dirname); +int ftp_mkdir(struct ftp *ftp, const char *dirname); +int ftp_rmdir(struct ftp *ftp, const char *dirname); +int ftp_delete(struct ftp *ftp, const char *fname); +int ftp_list(struct ftp *ftp); +int ftp_retrieve(struct ftp *ftp, const char *fname); +int ftp_store(struct ftp *ftp, const char *fname); #endif /* FTP_H_ */