1*86d7f5d3SJohn Marino #ifndef _FTP_H_INCLUDE 2*86d7f5d3SJohn Marino #define _FTP_H_INCLUDE 3*86d7f5d3SJohn Marino 4*86d7f5d3SJohn Marino #include <sys/types.h> 5*86d7f5d3SJohn Marino #include <sys/cdefs.h> 6*86d7f5d3SJohn Marino #include <stdio.h> 7*86d7f5d3SJohn Marino #include <time.h> 8*86d7f5d3SJohn Marino 9*86d7f5d3SJohn Marino /* 10*86d7f5d3SJohn Marino * ---------------------------------------------------------------------------- 11*86d7f5d3SJohn Marino * "THE BEER-WARE LICENSE" (Revision 42): 12*86d7f5d3SJohn Marino * <phk@login.dknet.dk> wrote this file. As long as you retain this notice you 13*86d7f5d3SJohn Marino * can do whatever you want with this stuff. If we meet some day, and you think 14*86d7f5d3SJohn Marino * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp 15*86d7f5d3SJohn Marino * ---------------------------------------------------------------------------- 16*86d7f5d3SJohn Marino * 17*86d7f5d3SJohn Marino * Major Changelog: 18*86d7f5d3SJohn Marino * 19*86d7f5d3SJohn Marino * Jordan K. Hubbard 20*86d7f5d3SJohn Marino * 17 Jan 1996 21*86d7f5d3SJohn Marino * 22*86d7f5d3SJohn Marino * Turned inside out. Now returns xfers as new file ids, not as a special 23*86d7f5d3SJohn Marino * `state' of FTP_t 24*86d7f5d3SJohn Marino * 25*86d7f5d3SJohn Marino * $FreeBSD: src/lib/libftpio/ftpio.h,v 1.15.2.1 2000/07/15 07:24:03 kris Exp $ 26*86d7f5d3SJohn Marino * $DragonFly: src/lib/libftpio/ftpio.h,v 1.3 2004/08/16 13:51:21 joerg Exp $ 27*86d7f5d3SJohn Marino */ 28*86d7f5d3SJohn Marino 29*86d7f5d3SJohn Marino /* Internal housekeeping data structure for FTP sessions */ 30*86d7f5d3SJohn Marino typedef struct { 31*86d7f5d3SJohn Marino enum { init, isopen, quit } con_state; 32*86d7f5d3SJohn Marino int fd_ctrl; 33*86d7f5d3SJohn Marino int addrtype; 34*86d7f5d3SJohn Marino char *host; 35*86d7f5d3SJohn Marino char *file; 36*86d7f5d3SJohn Marino int error; 37*86d7f5d3SJohn Marino int is_binary; 38*86d7f5d3SJohn Marino int is_passive; 39*86d7f5d3SJohn Marino int is_verbose; 40*86d7f5d3SJohn Marino } *FTP_t; 41*86d7f5d3SJohn Marino 42*86d7f5d3SJohn Marino /* Structure we use to match FTP error codes with readable strings */ 43*86d7f5d3SJohn Marino struct ftperr { 44*86d7f5d3SJohn Marino const int num; 45*86d7f5d3SJohn Marino const char *string; 46*86d7f5d3SJohn Marino }; 47*86d7f5d3SJohn Marino 48*86d7f5d3SJohn Marino __BEGIN_DECLS 49*86d7f5d3SJohn Marino extern struct ftperr ftpErrList[]; 50*86d7f5d3SJohn Marino extern int const ftpErrListLength; 51*86d7f5d3SJohn Marino 52*86d7f5d3SJohn Marino /* Exported routines - deal only with FILE* type */ 53*86d7f5d3SJohn Marino extern FILE *ftpLogin(const char *host, const char *user, 54*86d7f5d3SJohn Marino const char *passwd, int port, int verbose, 55*86d7f5d3SJohn Marino int *retcode); 56*86d7f5d3SJohn Marino extern int ftpChdir(FILE *fp, char *dir); 57*86d7f5d3SJohn Marino extern int ftpErrno(FILE *fp); 58*86d7f5d3SJohn Marino extern off_t ftpGetSize(FILE *fp, const char *file); 59*86d7f5d3SJohn Marino extern FILE *ftpGet(FILE *fp, const char *file, off_t *seekto); 60*86d7f5d3SJohn Marino extern FILE *ftpPut(FILE *fp, const char *file); 61*86d7f5d3SJohn Marino extern int ftpAscii(FILE *fp); 62*86d7f5d3SJohn Marino extern int ftpBinary(FILE *fp); 63*86d7f5d3SJohn Marino extern int ftpPassive(FILE *fp, int status); 64*86d7f5d3SJohn Marino extern void ftpVerbose(FILE *fp, int status); 65*86d7f5d3SJohn Marino extern FILE *ftpGetURL(const char *url, const char *user, 66*86d7f5d3SJohn Marino const char *passwd, int *retcode); 67*86d7f5d3SJohn Marino extern FILE *ftpPutURL(const char *url, const char *user, 68*86d7f5d3SJohn Marino const char *passwd, int *retcode); 69*86d7f5d3SJohn Marino extern time_t ftpGetModtime(FILE *fp, const char *file); 70*86d7f5d3SJohn Marino extern const char *ftpErrString(int error); 71*86d7f5d3SJohn Marino extern FILE *ftpLoginAf(const char *host, int af, const char *user, 72*86d7f5d3SJohn Marino const char *passwd, int port, int verbose, 73*86d7f5d3SJohn Marino int *retcode); 74*86d7f5d3SJohn Marino extern FILE *ftpGetURLAf(const char *url, int af, const char *user, 75*86d7f5d3SJohn Marino const char *passwd, int *retcode); 76*86d7f5d3SJohn Marino extern FILE *ftpPutURLAf(const char *url, int af, const char *user, 77*86d7f5d3SJohn Marino const char *passwd, int *retcode); 78*86d7f5d3SJohn Marino __END_DECLS 79*86d7f5d3SJohn Marino 80*86d7f5d3SJohn Marino #endif /* _FTP_H_INCLUDE */ 81