/* API of the FTP library */ /* still to do handle of restart for high level file transfer functions get: OK put: need to check */ /* for off_t */ #include <sys/types.h> /* ------------------------------------------------------------------------ global parameters they can be changed at any time between API calls */ int ftp_safeput = 1; // if set, put to destfile".tmp", then rename int ftp_verbose = 0; int ftp_debug = 0; /* These default values are what you want. Believe me. */ int ftp_passive = 1; int ftp_sendport = 0; /* Other FTP "parameters" that you can't change: struct, mode and format are obsolete type (ascii/binary) is automatic */ /* ------------------------------------------------------------------------- basic API */ int ftp_open(char* host, char* login, char* passwd); int ftp_close(void); int ftp_cd(char* directory); int ftp_mkdir(char* directory); int ftp_rmdir(char* directory); int ftp_rename(char* oldname, char* newname); int ftp_delete(char* filename); int ftp_ls(int long_ls, char* file_or_dir, int (*cons)(char*,unsigned)); /* high level file transfer functions */ int ftp_getfile(char* remote_name, char* local_name, off_t restart_point); int ftp_putfile(char* local_name, char* remote_name, off_t restart_point, int append); /* 'remote_name' is the suggested name to be used by the server 'uname' is a buffer of size 'usize' that will contain on output the unique name generated by the server. it can be set to NULL if you don't care about this name */ int ftp_putfileunique(char* local_name, char* remote_name, char *uname, unsigned usize); /* ------------------------------------------------------------------------- advanced API */ /* send raw FTP commands answer string of the server is put in 'buffer', whose size is 'size' size is limited to BUFSIZ (but it won't be that long anyway) */ int ftp_sendcommand(char *cmd, char *buffer, unsigned size); /* low level file transfer functions look at how ftp_getfile(), ftp_putfile(), and ftp_putfileunique() are implemented in ftplib.c to see how to use them */ int ftp_get(char* remote_name, int (*cons)(char*,unsigned), unsigned bufsize, off_t restart_point); int ftp_put(char* remote_name, int (*prod)(char*,unsigned), unsigned bufsize, off_t restart_point, int append); int ftp_putunique(char* remote_name, char *uname, unsigned usize, int (*prod)(char*,unsigned), unsigned bufsize); /* missing useful features: - several FTP sessions at the same time - third party transfers (No: this is forbidden for security reasons by recent servers) ... */