<sys/ioccom.h>, <sys/ioctl.h>
[minix3.git] / include / fetch.h
blob307548643601569c7aa2f5873f887edfce30d3f5
1 /* $NetBSD: fetch.h,v 1.16 2010/01/22 13:21:09 joerg Exp $ */
2 /*-
3 * Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
4 * All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer
11 * in this position and unchanged.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. The name of the author may not be used to endorse or promote products
16 * derived from this software without specific prior written permission
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 * $FreeBSD: fetch.h,v 1.26 2004/09/21 18:35:20 des Exp $
32 #ifndef _FETCH_H_INCLUDED
33 #define _FETCH_H_INCLUDED
35 #include <sys/types.h>
36 #include <limits.h>
37 #include <stdio.h>
39 #define _LIBFETCH_VER "libfetch/2.0"
41 #define URL_HOSTLEN 255
42 #define URL_SCHEMELEN 16
43 #define URL_USERLEN 256
44 #define URL_PWDLEN 256
46 typedef struct fetchIO fetchIO;
48 struct url {
49 char scheme[URL_SCHEMELEN + 1];
50 char user[URL_USERLEN + 1];
51 char pwd[URL_PWDLEN + 1];
52 char host[URL_HOSTLEN + 1];
53 int port;
54 char *doc;
55 off_t offset;
56 size_t length;
57 time_t last_modified;
60 struct url_stat {
61 off_t size;
62 time_t atime;
63 time_t mtime;
66 struct url_list {
67 size_t length;
68 size_t alloc_size;
69 struct url *urls;
72 /* Recognized schemes */
73 #define SCHEME_FTP "ftp"
74 #define SCHEME_HTTP "http"
75 #define SCHEME_HTTPS "https"
76 #define SCHEME_FILE "file"
78 /* Error codes */
79 #define FETCH_ABORT 1
80 #define FETCH_AUTH 2
81 #define FETCH_DOWN 3
82 #define FETCH_EXISTS 4
83 #define FETCH_FULL 5
84 #define FETCH_INFO 6
85 #define FETCH_MEMORY 7
86 #define FETCH_MOVED 8
87 #define FETCH_NETWORK 9
88 #define FETCH_OK 10
89 #define FETCH_PROTO 11
90 #define FETCH_RESOLV 12
91 #define FETCH_SERVER 13
92 #define FETCH_TEMP 14
93 #define FETCH_TIMEOUT 15
94 #define FETCH_UNAVAIL 16
95 #define FETCH_UNKNOWN 17
96 #define FETCH_URL 18
97 #define FETCH_VERBOSE 19
98 #define FETCH_UNCHANGED 20
100 #if defined(__cplusplus)
101 extern "C" {
102 #endif
104 void fetchIO_close(fetchIO *);
105 ssize_t fetchIO_read(fetchIO *, void *, size_t);
106 ssize_t fetchIO_write(fetchIO *, const void *, size_t);
108 /* fetchIO-specific functions */
109 fetchIO *fetchXGetFile(struct url *, struct url_stat *, const char *);
110 fetchIO *fetchGetFile(struct url *, const char *);
111 fetchIO *fetchPutFile(struct url *, const char *);
112 int fetchStatFile(struct url *, struct url_stat *, const char *);
113 int fetchListFile(struct url_list *, struct url *, const char *,
114 const char *);
116 /* HTTP-specific functions */
117 fetchIO *fetchXGetHTTP(struct url *, struct url_stat *, const char *);
118 fetchIO *fetchGetHTTP(struct url *, const char *);
119 fetchIO *fetchPutHTTP(struct url *, const char *);
120 int fetchStatHTTP(struct url *, struct url_stat *, const char *);
121 int fetchListHTTP(struct url_list *, struct url *, const char *,
122 const char *);
124 /* FTP-specific functions */
125 fetchIO *fetchXGetFTP(struct url *, struct url_stat *, const char *);
126 fetchIO *fetchGetFTP(struct url *, const char *);
127 fetchIO *fetchPutFTP(struct url *, const char *);
128 int fetchStatFTP(struct url *, struct url_stat *, const char *);
129 int fetchListFTP(struct url_list *, struct url *, const char *,
130 const char *);
132 /* Generic functions */
133 fetchIO *fetchXGetURL(const char *, struct url_stat *, const char *);
134 fetchIO *fetchGetURL(const char *, const char *);
135 fetchIO *fetchPutURL(const char *, const char *);
136 int fetchStatURL(const char *, struct url_stat *, const char *);
137 int fetchListURL(struct url_list *, const char *, const char *,
138 const char *);
139 fetchIO *fetchXGet(struct url *, struct url_stat *, const char *);
140 fetchIO *fetchGet(struct url *, const char *);
141 fetchIO *fetchPut(struct url *, const char *);
142 int fetchStat(struct url *, struct url_stat *, const char *);
143 int fetchList(struct url_list *, struct url *, const char *,
144 const char *);
146 /* URL parsing */
147 struct url *fetchMakeURL(const char *, const char *, int,
148 const char *, const char *, const char *);
149 struct url *fetchParseURL(const char *);
150 struct url *fetchCopyURL(const struct url *);
151 char *fetchStringifyURL(const struct url *);
152 void fetchFreeURL(struct url *);
154 /* URL listening */
155 void fetchInitURLList(struct url_list *);
156 int fetchAppendURLList(struct url_list *, const struct url_list *);
157 void fetchFreeURLList(struct url_list *);
158 char *fetchUnquotePath(struct url *);
159 char *fetchUnquoteFilename(struct url *);
161 /* Connection caching */
162 void fetchConnectionCacheInit(int, int);
163 void fetchConnectionCacheClose(void);
165 /* Authentication */
166 typedef int (*auth_t)(struct url *);
167 extern auth_t fetchAuthMethod;
169 /* Last error code */
170 extern int fetchLastErrCode;
171 #define MAXERRSTRING 256
172 extern char fetchLastErrString[MAXERRSTRING];
174 /* I/O timeout */
175 extern int fetchTimeout;
177 /* Restart interrupted syscalls */
178 extern volatile int fetchRestartCalls;
180 /* Extra verbosity */
181 extern int fetchDebug;
183 #if defined(__cplusplus)
185 #endif
187 #endif