Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/external/libfetch/fetch.h
4744 views
1
/*-
2
* SPDX-License-Identifier: BSD-3-Clause
3
*
4
* Copyright (c) 1998-2004 Dag-Erling Smørgrav
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer
12
* in this position and unchanged.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
* 3. The name of the author may not be used to endorse or promote products
17
* derived from this software without specific prior written permission
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
*/
30
31
#ifndef _FETCH_H_INCLUDED
32
#define _FETCH_H_INCLUDED
33
34
#define _LIBFETCH_VER "libfetch/2.0"
35
36
#define URL_SCHEMELEN 16
37
#define URL_USERLEN 256
38
#define URL_PWDLEN 256
39
40
struct url {
41
char scheme[URL_SCHEMELEN+1];
42
char user[URL_USERLEN+1];
43
char pwd[URL_PWDLEN+1];
44
char host[MAXHOSTNAMELEN+1];
45
int port;
46
char *doc;
47
off_t offset;
48
size_t length;
49
time_t ims_time;
50
int netrcfd;
51
};
52
53
struct url_stat {
54
off_t size;
55
time_t atime;
56
time_t mtime;
57
};
58
59
struct url_ent {
60
char name[PATH_MAX];
61
struct url_stat stat;
62
};
63
64
/* Recognized schemes */
65
#define SCHEME_FTP "ftp"
66
#define SCHEME_HTTP "http"
67
#define SCHEME_HTTPS "https"
68
#define SCHEME_FILE "file"
69
70
/* Error codes */
71
#define FETCH_ABORT 1
72
#define FETCH_AUTH 2
73
#define FETCH_DOWN 3
74
#define FETCH_EXISTS 4
75
#define FETCH_FULL 5
76
#define FETCH_INFO 6
77
#define FETCH_MEMORY 7
78
#define FETCH_MOVED 8
79
#define FETCH_NETWORK 9
80
#define FETCH_OK 10
81
#define FETCH_PROTO 11
82
#define FETCH_RESOLV 12
83
#define FETCH_SERVER 13
84
#define FETCH_TEMP 14
85
#define FETCH_TIMEOUT 15
86
#define FETCH_UNAVAIL 16
87
#define FETCH_UNKNOWN 17
88
#define FETCH_URL 18
89
#define FETCH_VERBOSE 19
90
91
#ifdef __cplusplus
92
extern "C" {
93
#endif
94
95
/* FILE-specific functions */
96
FILE *fetchXGetFile(struct url *, struct url_stat *, const char *);
97
FILE *fetchGetFile(struct url *, const char *);
98
FILE *fetchPutFile(struct url *, const char *);
99
int fetchStatFile(struct url *, struct url_stat *, const char *);
100
struct url_ent *fetchListFile(struct url *, const char *);
101
102
/* HTTP-specific functions */
103
FILE *fetchXGetHTTP(struct url *, struct url_stat *, const char *);
104
FILE *fetchGetHTTP(struct url *, const char *);
105
FILE *fetchPutHTTP(struct url *, const char *);
106
int fetchStatHTTP(struct url *, struct url_stat *, const char *);
107
struct url_ent *fetchListHTTP(struct url *, const char *);
108
FILE *fetchReqHTTP(struct url *, const char *, const char *,
109
const char *, const char *);
110
111
/* Generic functions */
112
FILE *fetchXGetURL(const char *, struct url_stat *, const char *);
113
FILE *fetchGetURL(const char *, const char *);
114
FILE *fetchPutURL(const char *, const char *);
115
int fetchStatURL(const char *, struct url_stat *, const char *);
116
struct url_ent *fetchListURL(const char *, const char *);
117
FILE *fetchXGet(struct url *, struct url_stat *, const char *);
118
FILE *fetchGet(struct url *, const char *);
119
FILE *fetchPut(struct url *, const char *);
120
int fetchStat(struct url *, struct url_stat *, const char *);
121
struct url_ent *fetchList(struct url *, const char *);
122
123
/* URL parsing */
124
struct url *fetchMakeURL(const char *, const char *, int,
125
const char *, const char *, const char *);
126
struct url *fetchParseURL(const char *);
127
void fetchFreeURL(struct url *);
128
129
#ifdef __cplusplus
130
}
131
#endif
132
133
/* Authentication */
134
typedef int (*auth_t)(struct url *);
135
extern auth_t fetchAuthMethod;
136
137
/* Last error code */
138
extern int fetchLastErrCode;
139
#define MAXERRSTRING 256
140
extern char fetchLastErrString[MAXERRSTRING];
141
142
/* I/O timeout */
143
extern int fetchTimeout;
144
145
/* Restart interrupted syscalls */
146
extern int fetchRestartCalls;
147
148
/* Extra verbosity */
149
extern int fetchDebug;
150
151
/* Custom HTTP headers (newline-separated) */
152
extern const char *fetchCustomHTTPHeaders;
153
154
/* Low speed limit: abort if speed drops below fetchSpeedLimit bytes/sec
155
* for fetchSpeedTime consecutive seconds. Both must be set to enable. */
156
extern int fetchSpeedLimit;
157
extern int fetchSpeedTime;
158
159
#endif
160
161