1 /* libxml2 - Library for parsing XML documents 2 * Copyright (C) 2006-2019 Free Software Foundation, Inc. 3 * 4 * This file is not part of the GNU gettext program, but is used with 5 * GNU gettext. 6 * 7 * The original copyright notice is as follows: 8 */ 9 10 /* 11 * Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. 12 * 13 * Permission is hereby granted, free of charge, to any person obtaining a copy 14 * of this software and associated documentation files (the "Software"), to deal 15 * in the Software without restriction, including without limitation the rights 16 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 17 * copies of the Software, and to permit persons to whom the Software is fur- 18 * nished to do so, subject to the following conditions: 19 * 20 * The above copyright notice and this permission notice shall be included in 21 * all copies or substantial portions of the Software. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- 25 * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 28 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 29 * THE SOFTWARE. 30 * 31 * Author: Daniel Veillard 32 */ 33 34 /* 35 * Summary: minimal FTP implementation 36 * Description: minimal FTP implementation allowing to fetch resources 37 * like external subset. 38 */ 39 40 #ifndef __NANO_FTP_H__ 41 #define __NANO_FTP_H__ 42 43 #include <libxml/xmlversion.h> 44 45 #ifdef LIBXML_FTP_ENABLED 46 47 /* Needed for portability to Windows 64 bits */ 48 #if defined(_WIN32) && !defined(__CYGWIN__) 49 #include <winsock2.h> 50 #else 51 /** 52 * SOCKET: 53 * 54 * macro used to provide portability of code to windows sockets 55 */ 56 #define SOCKET int 57 /** 58 * INVALID_SOCKET: 59 * 60 * macro used to provide portability of code to windows sockets 61 * the value to be used when the socket is not valid 62 */ 63 #undef INVALID_SOCKET 64 #define INVALID_SOCKET (-1) 65 #endif 66 67 #ifdef __cplusplus 68 extern "C" { 69 #endif 70 71 /** 72 * ftpListCallback: 73 * @userData: user provided data for the callback 74 * @filename: the file name (including "->" when links are shown) 75 * @attrib: the attribute string 76 * @owner: the owner string 77 * @group: the group string 78 * @size: the file size 79 * @links: the link count 80 * @year: the year 81 * @month: the month 82 * @day: the day 83 * @hour: the hour 84 * @minute: the minute 85 * 86 * A callback for the xmlNanoFTPList command. 87 * Note that only one of year and day:minute are specified. 88 */ 89 typedef void (*ftpListCallback) (void *userData, 90 const char *filename, const char *attrib, 91 const char *owner, const char *group, 92 unsigned long size, int links, int year, 93 const char *month, int day, int hour, 94 int minute); 95 /** 96 * ftpDataCallback: 97 * @userData: the user provided context 98 * @data: the data received 99 * @len: its size in bytes 100 * 101 * A callback for the xmlNanoFTPGet command. 102 */ 103 typedef void (*ftpDataCallback) (void *userData, 104 const char *data, 105 int len); 106 107 /* 108 * Init 109 */ 110 XMLPUBFUN void XMLCALL 111 xmlNanoFTPInit (void); 112 XMLPUBFUN void XMLCALL 113 xmlNanoFTPCleanup (void); 114 115 /* 116 * Creating/freeing contexts. 117 */ 118 XMLPUBFUN void * XMLCALL 119 xmlNanoFTPNewCtxt (const char *URL); 120 XMLPUBFUN void XMLCALL 121 xmlNanoFTPFreeCtxt (void * ctx); 122 XMLPUBFUN void * XMLCALL 123 xmlNanoFTPConnectTo (const char *server, 124 int port); 125 /* 126 * Opening/closing session connections. 127 */ 128 XMLPUBFUN void * XMLCALL 129 xmlNanoFTPOpen (const char *URL); 130 XMLPUBFUN int XMLCALL 131 xmlNanoFTPConnect (void *ctx); 132 XMLPUBFUN int XMLCALL 133 xmlNanoFTPClose (void *ctx); 134 XMLPUBFUN int XMLCALL 135 xmlNanoFTPQuit (void *ctx); 136 XMLPUBFUN void XMLCALL 137 xmlNanoFTPScanProxy (const char *URL); 138 XMLPUBFUN void XMLCALL 139 xmlNanoFTPProxy (const char *host, 140 int port, 141 const char *user, 142 const char *passwd, 143 int type); 144 XMLPUBFUN int XMLCALL 145 xmlNanoFTPUpdateURL (void *ctx, 146 const char *URL); 147 148 /* 149 * Rather internal commands. 150 */ 151 XMLPUBFUN int XMLCALL 152 xmlNanoFTPGetResponse (void *ctx); 153 XMLPUBFUN int XMLCALL 154 xmlNanoFTPCheckResponse (void *ctx); 155 156 /* 157 * CD/DIR/GET handlers. 158 */ 159 XMLPUBFUN int XMLCALL 160 xmlNanoFTPCwd (void *ctx, 161 const char *directory); 162 XMLPUBFUN int XMLCALL 163 xmlNanoFTPDele (void *ctx, 164 const char *file); 165 166 XMLPUBFUN SOCKET XMLCALL 167 xmlNanoFTPGetConnection (void *ctx); 168 XMLPUBFUN int XMLCALL 169 xmlNanoFTPCloseConnection(void *ctx); 170 XMLPUBFUN int XMLCALL 171 xmlNanoFTPList (void *ctx, 172 ftpListCallback callback, 173 void *userData, 174 const char *filename); 175 XMLPUBFUN SOCKET XMLCALL 176 xmlNanoFTPGetSocket (void *ctx, 177 const char *filename); 178 XMLPUBFUN int XMLCALL 179 xmlNanoFTPGet (void *ctx, 180 ftpDataCallback callback, 181 void *userData, 182 const char *filename); 183 XMLPUBFUN int XMLCALL 184 xmlNanoFTPRead (void *ctx, 185 void *dest, 186 int len); 187 188 #ifdef __cplusplus 189 } 190 #endif 191 #endif /* LIBXML_FTP_ENABLED */ 192 #endif /* __NANO_FTP_H__ */ 193