38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Summary: minimal FTP implementation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Description: minimal FTP implementation allowing to fetch resources
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * like external subset.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Copy: See Copyright for the status of this software.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Author: Daniel Veillard
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifndef __NANO_FTP_H__
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define __NANO_FTP_H__
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xmlversion.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_FTP_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef __cplusplus
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncextern "C" {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * ftpListCallback:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @userData: user provided data for the callback
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @filename: the file name (including "->" when links are shown)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @attrib: the attribute string
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @owner: the owner string
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @group: the group string
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @size: the file size
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @links: the link count
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @year: the year
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @month: the month
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @day: the day
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @hour: the hour
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @minute: the minute
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * A callback for the xmlNanoFTPList command.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Note that only one of year and day:minute are specified.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef void (*ftpListCallback) (void *userData,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *filename, const char *attrib,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *owner, const char *group,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unsigned long size, int links, int year,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *month, int day, int hour,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int minute);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * ftpDataCallback:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @userData: the user provided context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @data: the data received
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @len: its size in bytes
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * A callback for the xmlNanoFTPGet command.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef void (*ftpDataCallback) (void *userData,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *data,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int len);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Init
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPInit (void);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPCleanup (void);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Creating/freeing contexts.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void * XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPNewCtxt (const char *URL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPFreeCtxt (void * ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void * XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPConnectTo (const char *server,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int port);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Opening/closing session connections.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void * XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPOpen (const char *URL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPConnect (void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPClose (void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPQuit (void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPScanProxy (const char *URL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPProxy (const char *host,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int port,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *user,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *passwd,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int type);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPUpdateURL (void *ctx,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *URL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Rather internal commands.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPGetResponse (void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPCheckResponse (void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * CD/DIR/GET handlers.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPCwd (void *ctx,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *directory);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPDele (void *ctx,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *file);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPGetConnection (void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPCloseConnection(void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPList (void *ctx,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ftpListCallback callback,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *userData,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPGetSocket (void *ctx,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPGet (void *ctx,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ftpDataCallback callback,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *userData,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char *filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNanoFTPRead (void *ctx,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *dest,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int len);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef __cplusplus
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_FTP_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* __NANO_FTP_H__ */