foo
[oftp] / src / ftp.h
index 2d69ce7..c9ebbe2 100644 (file)
--- a/src/ftp.h
+++ b/src/ftp.h
@@ -3,6 +3,22 @@
 
 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
+};
+
+struct ftp_op {
+       int op;
+       char *arg;
+};
+
 struct ftp_dirent {
        char *name;
        int type;
@@ -11,19 +27,30 @@ struct ftp_dirent {
 struct ftp {
        int ctl, data;  /* sockets */
 
+       int status;
+       char *user, *pass;
+
+       void (*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;
+       char *curdir_rem, *curdir_loc;
        struct ftp_dirent *dent;
        int num_dent;
+
+       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);
 
@@ -33,6 +60,7 @@ int ftp_pending(struct ftp *ftp);
 int ftp_handle(struct ftp *ftp, int s);
 
 int ftp_update(struct ftp *ftp);
+int ftp_pwd(struct ftp *ftp);
 int ftp_chdir(struct ftp *ftp, const char *dirname);