Deleted Added
full compact
fetch.c (60190) fetch.c (60376)
1/*-
2 * Copyright (c) 1998 Dag-Erling Co�dan Sm�rgrav
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
1/*-
2 * Copyright (c) 1998 Dag-Erling Co�dan Sm�rgrav
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * $FreeBSD: head/lib/libfetch/fetch.c 60190 2000-05-07 20:02:52Z des $
28 * $FreeBSD: head/lib/libfetch/fetch.c 60376 2000-05-11 13:31:02Z des $
29 */
30
31#include <sys/param.h>
32#include <sys/errno.h>
33
34#include <ctype.h>
35#include <stdio.h>
36#include <stdlib.h>

--- 110 unchanged lines hidden (view full) ---

147 struct url *u;
148 FILE *f;
149
150 if ((u = fetchParseURL(URL)) == NULL)
151 return NULL;
152
153 f = fetchGet(u, flags);
154
29 */
30
31#include <sys/param.h>
32#include <sys/errno.h>
33
34#include <ctype.h>
35#include <stdio.h>
36#include <stdlib.h>

--- 110 unchanged lines hidden (view full) ---

147 struct url *u;
148 FILE *f;
149
150 if ((u = fetchParseURL(URL)) == NULL)
151 return NULL;
152
153 f = fetchGet(u, flags);
154
155 free(u);
155 fetchFreeURL(u);
156 return f;
157}
158
159
160/*
161 * Attempt to parse the given URL; if successful, call fetchPut().
162 */
163FILE *
164fetchPutURL(char *URL, char *flags)
165{
166 struct url *u;
167 FILE *f;
168
169 if ((u = fetchParseURL(URL)) == NULL)
170 return NULL;
171
172 f = fetchPut(u, flags);
173
156 return f;
157}
158
159
160/*
161 * Attempt to parse the given URL; if successful, call fetchPut().
162 */
163FILE *
164fetchPutURL(char *URL, char *flags)
165{
166 struct url *u;
167 FILE *f;
168
169 if ((u = fetchParseURL(URL)) == NULL)
170 return NULL;
171
172 f = fetchPut(u, flags);
173
174 free(u);
174 fetchFreeURL(u);
175 return f;
176}
177
178/*
179 * Attempt to parse the given URL; if successful, call fetchStat().
180 */
181int
182fetchStatURL(char *URL, struct url_stat *us, char *flags)
183{
184 struct url *u;
185 int s;
186
187 if ((u = fetchParseURL(URL)) == NULL)
188 return -1;
189
190 s = fetchStat(u, us, flags);
191
175 return f;
176}
177
178/*
179 * Attempt to parse the given URL; if successful, call fetchStat().
180 */
181int
182fetchStatURL(char *URL, struct url_stat *us, char *flags)
183{
184 struct url *u;
185 int s;
186
187 if ((u = fetchParseURL(URL)) == NULL)
188 return -1;
189
190 s = fetchStat(u, us, flags);
191
192 free(u);
192 fetchFreeURL(u);
193 return s;
194}
195
196/*
197 * Attempt to parse the given URL; if successful, call fetchList().
198 */
199struct url_ent *
200fetchListURL(char *URL, char *flags)
201{
202 struct url *u;
203 struct url_ent *ue;
204
205 if ((u = fetchParseURL(URL)) == NULL)
206 return NULL;
207
208 ue = fetchList(u, flags);
209
193 return s;
194}
195
196/*
197 * Attempt to parse the given URL; if successful, call fetchList().
198 */
199struct url_ent *
200fetchListURL(char *URL, char *flags)
201{
202 struct url *u;
203 struct url_ent *ue;
204
205 if ((u = fetchParseURL(URL)) == NULL)
206 return NULL;
207
208 ue = fetchList(u, flags);
209
210 free(u);
210 fetchFreeURL(u);
211 return ue;
212}
213
214/*
215 * Split an URL into components. URL syntax is:
216 * method:[//[user[:pwd]@]host[:port]]/[document]
217 * This almost, but not quite, RFC1738 URL syntax.
218 */

--- 58 unchanged lines hidden (view full) ---

277 goto ouch;
278 }
279 while (*p && (*p != '/'))
280 p++;
281 }
282
283nohost:
284 /* document */
211 return ue;
212}
213
214/*
215 * Split an URL into components. URL syntax is:
216 * method:[//[user[:pwd]@]host[:port]]/[document]
217 * This almost, but not quite, RFC1738 URL syntax.
218 */

--- 58 unchanged lines hidden (view full) ---

277 goto ouch;
278 }
279 while (*p && (*p != '/'))
280 p++;
281 }
282
283nohost:
284 /* document */
285 if (*p) {
286 struct url *t;
287 t = realloc(u, sizeof *u + strlen(p) - 1);
288 if (t == NULL) {
289 errno = ENOMEM;
290 _fetch_syserr();
291 goto ouch;
292 }
293 u = t;
294 strcpy(u->doc, p);
295 } else {
296 u->doc[0] = '/';
297 u->doc[1] = 0;
285 if (!*p)
286 p = "/";
287
288 if ((u->doc = strdup(p)) == NULL) {
289 errno = ENOMEM;
290 _fetch_syserr();
291 goto ouch;
298 }
299
300 DEBUG(fprintf(stderr,
301 "scheme: [\033[1m%s\033[m]\n"
302 "user: [\033[1m%s\033[m]\n"
303 "password: [\033[1m%s\033[m]\n"
304 "host: [\033[1m%s\033[m]\n"
305 "port: [\033[1m%d\033[m]\n"
306 "document: [\033[1m%s\033[m]\n",
307 u->scheme, u->user, u->pwd,
308 u->host, u->port, u->doc));
309
310 return u;
311
312ouch:
313 free(u);
314 return NULL;
315}
292 }
293
294 DEBUG(fprintf(stderr,
295 "scheme: [\033[1m%s\033[m]\n"
296 "user: [\033[1m%s\033[m]\n"
297 "password: [\033[1m%s\033[m]\n"
298 "host: [\033[1m%s\033[m]\n"
299 "port: [\033[1m%d\033[m]\n"
300 "document: [\033[1m%s\033[m]\n",
301 u->scheme, u->user, u->pwd,
302 u->host, u->port, u->doc));
303
304 return u;
305
306ouch:
307 free(u);
308 return NULL;
309}
310
311/*
312 * Free a URL
313 */
314void
315fetchFreeURL(struct url *u)
316{
317 free(u->doc);
318 free(u);
319}