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(_WIN32) && !defined(__CYGWIN__) |
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 | #undef INVALID_SOCKET |
35 | #define INVALID_SOCKET (-1) |
36 | #endif |
37 | |
38 | #ifdef __cplusplus |
39 | extern "C" { |
40 | #endif |
41 | |
42 | /** |
43 | * ftpListCallback: |
44 | * @userData: user provided data for the callback |
45 | * @filename: the file name (including "->" when links are shown) |
46 | * @attrib: the attribute string |
47 | * @owner: the owner string |
48 | * @group: the group string |
49 | * @size: the file size |
50 | * @links: the link count |
51 | * @year: the year |
52 | * @month: the month |
53 | * @day: the day |
54 | * @hour: the hour |
55 | * @minute: the minute |
56 | * |
57 | * A callback for the xmlNanoFTPList command. |
58 | * Note that only one of year and day:minute are specified. |
59 | */ |
60 | typedef void (*ftpListCallback) (void *userData, |
61 | const char *filename, const char *attrib, |
62 | const char *owner, const char *group, |
63 | unsigned long size, int links, int year, |
64 | const char *month, int day, int hour, |
65 | int minute); |
66 | /** |
67 | * ftpDataCallback: |
68 | * @userData: the user provided context |
69 | * @data: the data received |
70 | * @len: its size in bytes |
71 | * |
72 | * A callback for the xmlNanoFTPGet command. |
73 | */ |
74 | typedef void (*ftpDataCallback) (void *userData, |
75 | const char *data, |
76 | int len); |
77 | |
78 | /* |
79 | * Init |
80 | */ |
81 | XMLPUBFUN void XMLCALL |
82 | xmlNanoFTPInit (void); |
83 | XMLPUBFUN void XMLCALL |
84 | xmlNanoFTPCleanup (void); |
85 | |
86 | /* |
87 | * Creating/freeing contexts. |
88 | */ |
89 | XMLPUBFUN void * XMLCALL |
90 | xmlNanoFTPNewCtxt (const char *URL); |
91 | XMLPUBFUN void XMLCALL |
92 | xmlNanoFTPFreeCtxt (void * ctx); |
93 | XMLPUBFUN void * XMLCALL |
94 | xmlNanoFTPConnectTo (const char *server, |
95 | int port); |
96 | /* |
97 | * Opening/closing session connections. |
98 | */ |
99 | XMLPUBFUN void * XMLCALL |
100 | xmlNanoFTPOpen (const char *URL); |
101 | XMLPUBFUN int XMLCALL |
102 | xmlNanoFTPConnect (void *ctx); |
103 | XMLPUBFUN int XMLCALL |
104 | xmlNanoFTPClose (void *ctx); |
105 | XMLPUBFUN int XMLCALL |
106 | xmlNanoFTPQuit (void *ctx); |
107 | XMLPUBFUN void XMLCALL |
108 | xmlNanoFTPScanProxy (const char *URL); |
109 | XMLPUBFUN void XMLCALL |
110 | xmlNanoFTPProxy (const char *host, |
111 | int port, |
112 | const char *user, |
113 | const char *passwd, |
114 | int type); |
115 | XMLPUBFUN int XMLCALL |
116 | xmlNanoFTPUpdateURL (void *ctx, |
117 | const char *URL); |
118 | |
119 | /* |
120 | * Rather internal commands. |
121 | */ |
122 | XMLPUBFUN int XMLCALL |
123 | xmlNanoFTPGetResponse (void *ctx); |
124 | XMLPUBFUN int XMLCALL |
125 | xmlNanoFTPCheckResponse (void *ctx); |
126 | |
127 | /* |
128 | * CD/DIR/GET handlers. |
129 | */ |
130 | XMLPUBFUN int XMLCALL |
131 | xmlNanoFTPCwd (void *ctx, |
132 | const char *directory); |
133 | XMLPUBFUN int XMLCALL |
134 | xmlNanoFTPDele (void *ctx, |
135 | const char *file); |
136 | |
137 | XMLPUBFUN SOCKET XMLCALL |
138 | xmlNanoFTPGetConnection (void *ctx); |
139 | XMLPUBFUN int XMLCALL |
140 | xmlNanoFTPCloseConnection(void *ctx); |
141 | XMLPUBFUN int XMLCALL |
142 | xmlNanoFTPList (void *ctx, |
143 | ftpListCallback callback, |
144 | void *userData, |
145 | const char *filename); |
146 | XMLPUBFUN SOCKET XMLCALL |
147 | xmlNanoFTPGetSocket (void *ctx, |
148 | const char *filename); |
149 | XMLPUBFUN int XMLCALL |
150 | xmlNanoFTPGet (void *ctx, |
151 | ftpDataCallback callback, |
152 | void *userData, |
153 | const char *filename); |
154 | XMLPUBFUN int XMLCALL |
155 | xmlNanoFTPRead (void *ctx, |
156 | void *dest, |
157 | int len); |
158 | |
159 | #ifdef __cplusplus |
160 | } |
161 | #endif |
162 | #endif /* LIBXML_FTP_ENABLED */ |
163 | #endif /* __NANO_FTP_H__ */ |
164 | |