blob: 2156c7965d5f5799dc88315360e1c0c8043f7201 [file] [log] [blame]
Owen Taylor3473f882001-02-23 17:55:21 +00001/*
2 * nanohttp.c: minimalist FTP implementation to fetch external subsets.
3 *
4 * See Copyright for the status of this software.
5 *
Daniel Veillardc5d64342001-06-24 12:13:24 +00006 * daniel@veillard.com
Owen Taylor3473f882001-02-23 17:55:21 +00007 */
8
9#ifndef __NANO_FTP_H__
10#define __NANO_FTP_H__
11
12#include <libxml/xmlversion.h>
Igor Zlatkovic7ae91bc2002-11-08 17:18:52 +000013
Owen Taylor3473f882001-02-23 17:55:21 +000014#ifdef LIBXML_FTP_ENABLED
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20/**
21 * ftpListCallback:
22 * @userData: user provided data for the callback
23 * @filename: the file name (including "->" when links are shown)
24 * @attrib: the attribute string
25 * @owner: the owner string
26 * @group: the group string
27 * @size: the file size
28 * @links: the link count
29 * @year: the year
30 * @month: the month
31 * @day: the day
32 * @hour: the hour
33 * @minute: the minute
34 *
Daniel Veillard61f26172002-03-12 18:46:39 +000035 * A callback for the xmlNanoFTPList command.
36 * Note that only one of year and day:minute are specified.
Owen Taylor3473f882001-02-23 17:55:21 +000037 */
38typedef void (*ftpListCallback) (void *userData,
Daniel Veillard963d2ae2002-01-20 22:08:18 +000039 const char *filename, const char *attrib,
Owen Taylor3473f882001-02-23 17:55:21 +000040 const char *owner, const char *group,
41 unsigned long size, int links, int year,
42 const char *month, int day, int hour,
43 int minute);
44/**
45 * ftpDataCallback:
Daniel Veillardf69bb4b2001-05-19 13:24:56 +000046 * @userData: the user provided context
47 * @data: the data received
48 * @len: its size in bytes
49 *
Daniel Veillard61f26172002-03-12 18:46:39 +000050 * A callback for the xmlNanoFTPGet command.
Owen Taylor3473f882001-02-23 17:55:21 +000051 */
Daniel Veillard963d2ae2002-01-20 22:08:18 +000052typedef void (*ftpDataCallback) (void *userData,
53 const char *data,
54 int len);
Owen Taylor3473f882001-02-23 17:55:21 +000055
56/*
57 * Init
58 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +000059XMLPUBFUN void XMLCALL
60 xmlNanoFTPInit (void);
61XMLPUBFUN void XMLCALL
62 xmlNanoFTPCleanup (void);
Owen Taylor3473f882001-02-23 17:55:21 +000063
64/*
Daniel Veillard61f26172002-03-12 18:46:39 +000065 * Creating/freeing contexts.
Owen Taylor3473f882001-02-23 17:55:21 +000066 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +000067XMLPUBFUN void * XMLCALL
68 xmlNanoFTPNewCtxt (const char *URL);
69XMLPUBFUN void XMLCALL
70 xmlNanoFTPFreeCtxt (void * ctx);
71XMLPUBFUN void * XMLCALL
72 xmlNanoFTPConnectTo (const char *server,
Owen Taylor3473f882001-02-23 17:55:21 +000073 int port);
74/*
Daniel Veillard61f26172002-03-12 18:46:39 +000075 * Opening/closing session connections.
Owen Taylor3473f882001-02-23 17:55:21 +000076 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +000077XMLPUBFUN void * XMLCALL
78 xmlNanoFTPOpen (const char *URL);
79XMLPUBFUN int XMLCALL
80 xmlNanoFTPConnect (void *ctx);
81XMLPUBFUN int XMLCALL
82 xmlNanoFTPClose (void *ctx);
83XMLPUBFUN int XMLCALL
84 xmlNanoFTPQuit (void *ctx);
85XMLPUBFUN void XMLCALL
86 xmlNanoFTPScanProxy (const char *URL);
87XMLPUBFUN void XMLCALL
88 xmlNanoFTPProxy (const char *host,
Owen Taylor3473f882001-02-23 17:55:21 +000089 int port,
90 const char *user,
91 const char *passwd,
92 int type);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000093XMLPUBFUN int XMLCALL
94 xmlNanoFTPUpdateURL (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +000095 const char *URL);
96
97/*
Daniel Veillard61f26172002-03-12 18:46:39 +000098 * Rather internal commands.
Owen Taylor3473f882001-02-23 17:55:21 +000099 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000100XMLPUBFUN int XMLCALL
101 xmlNanoFTPGetResponse (void *ctx);
102XMLPUBFUN int XMLCALL
103 xmlNanoFTPCheckResponse (void *ctx);
Owen Taylor3473f882001-02-23 17:55:21 +0000104
105/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000106 * CD/DIR/GET handlers.
Owen Taylor3473f882001-02-23 17:55:21 +0000107 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000108XMLPUBFUN int XMLCALL
109 xmlNanoFTPCwd (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000110 char *directory);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000111XMLPUBFUN int XMLCALL
112 xmlNanoFTPDele (void *ctx,
Daniel Veillard6c73cb82003-03-05 16:45:40 +0000113 char *file);
Owen Taylor3473f882001-02-23 17:55:21 +0000114
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000115XMLPUBFUN int XMLCALL
116 xmlNanoFTPGetConnection (void *ctx);
117XMLPUBFUN int XMLCALL
118 xmlNanoFTPCloseConnection(void *ctx);
119XMLPUBFUN int XMLCALL
120 xmlNanoFTPList (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000121 ftpListCallback callback,
122 void *userData,
123 char *filename);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000124XMLPUBFUN int XMLCALL
125 xmlNanoFTPGetSocket (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000126 const char *filename);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000127XMLPUBFUN int XMLCALL
128 xmlNanoFTPGet (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000129 ftpDataCallback callback,
130 void *userData,
131 const char *filename);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000132XMLPUBFUN int XMLCALL
133 xmlNanoFTPRead (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000134 void *dest,
135 int len);
136
137#ifdef __cplusplus
138}
139#endif /* LIBXML_FTP_ENABLED */
140#endif
141#endif /* __NANO_FTP_H__ */