Imported Upstream version 0.19.7
[platform/upstream/gettext.git] / gnulib-local / lib / libxml / nanoftp.in.h
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 #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__ */