home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume38 / libftp / part01 / FtpLibrary.h < prev    next >
C/C++ Source or Header  |  1993-07-13  |  3KB  |  89 lines

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <arpa/ftp.h>
  5. #include <netinet/in.h>
  6. #include <netdb.h>
  7.  
  8. #define EXIT(con,e) \
  9.   ({ con -> errno = e;  \
  10.      if ( (con->func != NULL) && (e < 0) ) \
  11.        (*(con->func))(con,e,FtpMessage(e));\
  12.      e;\
  13.   })
  14.    
  15. #define QUIT 0
  16. #define Ctrl(x) ((x) - '@')
  17. #define FREE(x) memset ( &x , '\0' , sizeof x )
  18. #define CUT(x) ((x)&0xff)
  19.  
  20. typedef int STATUS;
  21. typedef char String[256];
  22. typedef int Answers[];
  23.  
  24. typedef struct
  25. {
  26.   int sock;
  27.   FILE *data;
  28.   char mode;
  29.   int errno;
  30.   int ch;
  31.   STATUS (*func)();
  32.   STATUS (*debug)();
  33. } FTP;
  34.  
  35. #define FtpSetErrorHandler(con,f) con->func = f;
  36. #define FtpSetDebugHandler(con,f) con->debug = f; 
  37.  
  38. #define FtpAccount(ftp,acc)       FtpCommand(ftp,"ACCT %s",acc,230,EOF)
  39. #define FtpUser(ftp,user)         FtpCommand(ftp,"USER %s",user,230,331,332,EOF)
  40. #define FtpPassword(ftp,pas)      FtpCommand(ftp,"PASS %s",pas,230,332,EOF)
  41. #define FtpType(ftp,type)         FtpCommand(ftp,"TYPE %c",type,200,EOF)
  42. #define FtpChdir(ftp,dir)         FtpCommand(ftp,"CWD %s",dir,200,250,EOF)
  43. #define FtpMkdir(ftp,dir)         FtpCommand(ftp,"MKD %s",dir,200,257,EOF)
  44. #define FtpRm(ftp,dir)            FtpCommand(ftp,"DELE %s",dir,200,250,EOF)
  45. #define FtpGetFile(ftp,file)      FtpCommand(ftp,"RETR %s",file,\
  46.                         200,125,150,250,EOF)
  47. #define FtpPutFile(ftp,file)      FtpCommand(ftp,"STOR %s",file,\
  48.                        200,125,150,250,EOF)
  49. #define FtpAscii(ftp)             FtpType(ftp,'A')
  50. #define FtpBinary(ftp)            FtpType(ftp,'I')
  51. #define FtpOpenRead(ftp,file)     FtpData(ftp,"RETR %s",file,"r")
  52. #define FtpOpenWrite(ftp,file)    FtpData(ftp,"STOR %s",file,"w")
  53. #define FtpOpenAppend(ftp,file)   FtpData(ftp,"APPE %s",file,"r")
  54. #define FtpDirectory(ftp,pat,out) FtpRetr(ftp,"LIST %s",pat,out)
  55. #define FtpDir(ftp,out)           FtpRetr(ftp,"LIST","",out)
  56. #define FtpGet(ftp,in,out)        FtpRetr(ftp,"RETR %s",in,out)
  57.  
  58.  
  59. FILE
  60.   * FtpFullOpen(char * file,char * mode );
  61. STATUS
  62.   FtpBye (FTP * con),
  63.   FtpClose ( FTP *),
  64.   FtpConnect ( FTP **con,char *hostname),
  65.   FtpFullClose(FILE *),
  66.   FtpRetr ( FTP *con , char * command , char * inp , char * out),
  67.   FtpGetString ( FTP * con , char * str ),
  68.   FtpDebug ( FTP * con ),
  69.   FtpInitMessageList(),
  70.   FtpLogin ( FTP **con, char * host , char * user , char * pass , char * acct),
  71.   FtpMove ( FTP *con,char * old,char *new),
  72.   FtpData( FTP * con , char * command , char * param , char * mode ),
  73.   FtpPort ( FTP *con ,int ,int ,int ,int ,int ,int ),
  74.   FtpPut ( FTP * con , char * inp , char * out),
  75.   FtpRead ( FTP * con),
  76.   FtpOpenDir( FTP * con , char * files ),
  77.   FtpSendMessage( FTP * con , char * Message ),
  78.   FtpWrite ( FTP * con , char c);
  79.  
  80. int
  81.   FtpGetMessage( FTP * con , char * Message),
  82.   FtpNumber ( char * Message );
  83.  
  84. char 
  85.   *FtpPwd(FTP *con),
  86.   *FtpMessage(int Number);
  87.  
  88.  
  89.