6 enum {FTP_DIR, FTP_FILE}; /* ftp_dirent type */
47 int ctl, lis, data; /* sockets */
54 struct ftp_op *qhead, *qtail;
56 int (*cproc)(struct ftp *ftp, int code, const char *buf, void *cls);
57 void (*dproc)(struct ftp *ftp, const char *buf, int sz, void *cls);
58 void *cproc_cls, *dproc_cls;
65 struct ftp_dirent *dirent; /* dynamic array */
74 FILE *fp; /* option: file */
75 char *mem; /* option: darray */
78 void (*done)(struct ftp*, struct ftp_transfer*);
81 struct ftp *ftp_alloc(void);
82 void ftp_free(struct ftp *ftp);
84 void ftp_auth(const char *user, const char *pass);
86 int ftp_connect(struct ftp *ftp, const char *host, int port);
87 void ftp_close(struct ftp *ftp);
89 int ftp_sockets(struct ftp *ftp, int *sockv, int maxsize);
91 int ftp_handle(struct ftp *ftp, int s);
93 int ftp_queue(struct ftp *ftp, int op, const char *arg);
94 int ftp_queue_transfer(struct ftp *ftp, struct ftp_transfer *xfer);
95 int ftp_waitresp(struct ftp *ftp, long timeout);
97 int ftp_update(struct ftp *ftp);
98 int ftp_type(struct ftp *ftp, const char *type);
99 int ftp_pwd(struct ftp *ftp);
100 int ftp_chdir(struct ftp *ftp, const char *dirname);
101 int ftp_mkdir(struct ftp *ftp, const char *dirname);
102 int ftp_rmdir(struct ftp *ftp, const char *dirname);
103 int ftp_delete(struct ftp *ftp, const char *fname);
104 int ftp_list(struct ftp *ftp);
105 int ftp_retrieve(struct ftp *ftp, const char *fname);
106 int ftp_store(struct ftp *ftp, const char *fname);
107 int ftp_transfer(struct ftp *ftp, struct ftp_transfer *xfer);
109 const char *ftp_curdir(struct ftp *ftp);
110 int ftp_num_dirent(struct ftp *ftp);
111 struct ftp_dirent *ftp_dirent(struct ftp *ftp, int idx);
113 int ftp_direntcmp(const void *a, const void *b);