• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Summary: minimal FTP implementation
3  * Description: minimal FTP implementation allowing to fetch resources
4  *              like external subset.
5  *
6  * Copy: See Copyright for the status of this software.
7  *
8  * Author: Daniel Veillard
9  */
10 
11 #ifndef __NANO_FTP_H__
12 #define __NANO_FTP_H__
13 
14 #include <libxml/xmlversion.h>
15 
16 #ifdef LIBXML_FTP_ENABLED
17 
18 /* Needed for portability to Windows 64 bits */
19 #if defined(__MINGW32__) || defined(_WIN32_WCE)
20 #include <winsock2.h>
21 #else
22 /**
23  * SOCKET:
24  *
25  * macro used to provide portability of code to windows sockets
26  */
27 #define SOCKET int
28 /**
29  * INVALID_SOCKET:
30  *
31  * macro used to provide portability of code to windows sockets
32  * the value to be used when the socket is not valid
33  */
34 #define INVALID_SOCKET (-1)
35 #endif
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 /**
42  * ftpListCallback:
43  * @userData:  user provided data for the callback
44  * @filename:  the file name (including "->" when links are shown)
45  * @attrib:  the attribute string
46  * @owner:  the owner string
47  * @group:  the group string
48  * @size:  the file size
49  * @links:  the link count
50  * @year:  the year
51  * @month:  the month
52  * @day:  the day
53  * @hour:  the hour
54  * @minute:  the minute
55  *
56  * A callback for the xmlNanoFTPList command.
57  * Note that only one of year and day:minute are specified.
58  */
59 typedef void (*ftpListCallback) (void *userData,
60 	                         const char *filename, const char *attrib,
61 	                         const char *owner, const char *group,
62 				 unsigned long size, int links, int year,
63 				 const char *month, int day, int hour,
64 				 int minute);
65 /**
66  * ftpDataCallback:
67  * @userData: the user provided context
68  * @data: the data received
69  * @len: its size in bytes
70  *
71  * A callback for the xmlNanoFTPGet command.
72  */
73 typedef void (*ftpDataCallback) (void *userData,
74 				 const char *data,
75 				 int len);
76 
77 /*
78  * Init
79  */
80 XMLPUBFUN void XMLCALL
81 	xmlNanoFTPInit		(void);
82 XMLPUBFUN void XMLCALL
83 	xmlNanoFTPCleanup	(void);
84 
85 /*
86  * Creating/freeing contexts.
87  */
88 XMLPUBFUN void * XMLCALL
89 	xmlNanoFTPNewCtxt	(const char *URL);
90 XMLPUBFUN void XMLCALL
91 	xmlNanoFTPFreeCtxt	(void * ctx);
92 XMLPUBFUN void * XMLCALL
93 	xmlNanoFTPConnectTo	(const char *server,
94 				 int port);
95 /*
96  * Opening/closing session connections.
97  */
98 XMLPUBFUN void * XMLCALL
99 	xmlNanoFTPOpen		(const char *URL);
100 XMLPUBFUN int XMLCALL
101 	xmlNanoFTPConnect	(void *ctx);
102 XMLPUBFUN int XMLCALL
103 	xmlNanoFTPClose		(void *ctx);
104 XMLPUBFUN int XMLCALL
105 	xmlNanoFTPQuit		(void *ctx);
106 XMLPUBFUN void XMLCALL
107 	xmlNanoFTPScanProxy	(const char *URL);
108 XMLPUBFUN void XMLCALL
109 	xmlNanoFTPProxy		(const char *host,
110 				 int port,
111 				 const char *user,
112 				 const char *passwd,
113 				 int type);
114 XMLPUBFUN int XMLCALL
115 	xmlNanoFTPUpdateURL	(void *ctx,
116 				 const char *URL);
117 
118 /*
119  * Rather internal commands.
120  */
121 XMLPUBFUN int XMLCALL
122 	xmlNanoFTPGetResponse	(void *ctx);
123 XMLPUBFUN int XMLCALL
124 	xmlNanoFTPCheckResponse	(void *ctx);
125 
126 /*
127  * CD/DIR/GET handlers.
128  */
129 XMLPUBFUN int XMLCALL
130 	xmlNanoFTPCwd		(void *ctx,
131 				 const char *directory);
132 XMLPUBFUN int XMLCALL
133 	xmlNanoFTPDele		(void *ctx,
134 				 const char *file);
135 
136 XMLPUBFUN SOCKET XMLCALL
137 	xmlNanoFTPGetConnection	(void *ctx);
138 XMLPUBFUN int XMLCALL
139 	xmlNanoFTPCloseConnection(void *ctx);
140 XMLPUBFUN int XMLCALL
141 	xmlNanoFTPList		(void *ctx,
142 				 ftpListCallback callback,
143 				 void *userData,
144 				 const char *filename);
145 XMLPUBFUN SOCKET XMLCALL
146 	xmlNanoFTPGetSocket	(void *ctx,
147 				 const char *filename);
148 XMLPUBFUN int XMLCALL
149 	xmlNanoFTPGet		(void *ctx,
150 				 ftpDataCallback callback,
151 				 void *userData,
152 				 const char *filename);
153 XMLPUBFUN int XMLCALL
154 	xmlNanoFTPRead		(void *ctx,
155 				 void *dest,
156 				 int len);
157 
158 #ifdef __cplusplus
159 }
160 #endif
161 #endif /* LIBXML_FTP_ENABLED */
162 #endif /* __NANO_FTP_H__ */
163