![]() ![]() | ![]() |
1.1 misho 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: */
1.1.1.2 ! misho 34: #undef INVALID_SOCKET
1.1 misho 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__ */