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} |
|