libfetch-2.13:

Add a function to turn struct url back into a string.
This commit is contained in:
joerg 2008-04-25 19:59:30 +00:00
parent 1e9e9f0f00
commit 634d70f1f6
5 changed files with 59 additions and 12 deletions

View file

@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.15 2008/04/25 16:25:25 joerg Exp $
# $NetBSD: Makefile,v 1.16 2008/04/25 19:59:30 joerg Exp $
#
DISTNAME= libfetch-2.12
DISTNAME= libfetch-2.13
CATEGORIES= net
MASTER_SITES= # empty
DISTFILES= # empty

View file

@ -24,7 +24,7 @@
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD: fetch.3,v 1.64 2007/12/18 11:03:26 des Exp $
.\" $NetBSD: fetch.3,v 1.6 2008/04/25 16:25:25 joerg Exp $
.\" $NetBSD: fetch.3,v 1.7 2008/04/25 19:59:30 joerg Exp $
.\"
.Dd April 25, 2008
.Dt FETCH 3
@ -63,6 +63,7 @@
.Nm fetchFreeURLList ,
.Nm fetchUnquotePath ,
.Nm fetchUnquoteFilename ,
.Nm fetchStringifyURL ,
.Nm fetch
.Nd file transfer functions
.Sh LIBRARY
@ -136,6 +137,8 @@
.Fn fetchUnquotePath "struct url *u"
.Ft char *
.Fn fetchUnquoteFilename "struct url *u"
.Ft char *
.Fn fetchStringifyURL "const struct url *u"
.Sh DESCRIPTION
These functions implement a high-level library for retrieving and
uploading files using Uniform Resource Locators (URLs).
@ -272,12 +275,15 @@ The list should be initialised by calling
and the entries be freed by calling
.Fn fetchFreeURLList .
.Pp
.Fn fetchStringifyURL
returns the URL as string.
.Fn fetchUnquotePath
returns the path name part of the URL with any quoting undone.
Query arguments and fragment identifiers are not included.
.Fn fetchUnquoteFilename
returns the last component of the path name as returned by
.Fn fetchUnquotePath .
.Fn fetchStringifyURL ,
.Fn fetchUnquotePath
and
.Fn fetchUnquoteFilename

View file

@ -1,4 +1,4 @@
/* $NetBSD: fetch.c,v 1.10 2008/04/25 16:25:25 joerg Exp $ */
/* $NetBSD: fetch.c,v 1.11 2008/04/25 19:59:30 joerg Exp $ */
/*-
* Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
* Copyright (c) 2008 Joerg Sonnenberger <joerg@NetBSD.org>
@ -590,3 +590,39 @@ fetchUnquoteFilename(struct url *url)
free(unquoted);
return filename;
}
char *
fetchStringifyURL(const struct url *url)
{
size_t total;
char *doc;
/* scheme :// user : pwd @ host :port doc */
total = strlen(url->scheme) + 3 + strlen(url->user) + 1 +
strlen(url->pwd) + 1 + strlen(url->host) + 6 + strlen(url->doc) + 1;
if ((doc = malloc(total)) == NULL)
return NULL;
if (url->port != 0)
snprintf(doc, total, "%s%s%s%s%s%s%s:%d%s",
url->scheme,
url->scheme[0] != '\0' ? "://" : "",
url->user,
url->pwd[0] != '\0' ? ":" : "",
url->pwd,
url->user[0] != '\0' || url->pwd[0] != '\0' ? "@" : "",
url->host,
(int)url->port,
url->doc);
else {
snprintf(doc, total, "%s%s%s%s%s%s%s%s",
url->scheme,
url->scheme[0] != '\0' ? "://" : "",
url->user,
url->pwd[0] != '\0' ? ":" : "",
url->pwd,
url->user[0] != '\0' || url->pwd[0] != '\0' ? "@" : "",
url->host,
url->doc);
}
return doc;
}

View file

@ -7,8 +7,8 @@ NNAAMMEE
ffeettcchhPPuuttFFiillee, ffeettcchhSSttaattFFiillee, ffeettcchhLLiissttFFiillee, ffeettcchhXXGGeettHHTTTTPP, ffeettcchhGGeettHHTTTTPP,
ffeettcchhPPuuttHHTTTTPP, ffeettcchhSSttaattHHTTTTPP, ffeettcchhLLiissttHHTTTTPP, ffeettcchhXXGGeettFFTTPP, ffeettcchhGGeettFFTTPP,
ffeettcchhPPuuttFFTTPP, ffeettcchhSSttaattFFTTPP, ffeettcchhLLiissttFFTTPP ffeettcchhIInniittUURRLLLLiisstt,
ffeettcchhFFrreeeeUURRLLLLiisstt, ffeettcchhUUnnqquuootteePPaatthh, ffeettcchhUUnnqquuootteeFFiilleennaammee, ffeettcchh -- file
transfer functions
ffeettcchhFFrreeeeUURRLLLLiisstt, ffeettcchhUUnnqquuootteePPaatthh, ffeettcchhUUnnqquuootteeFFiilleennaammee,
ffeettcchhSSttrriinnggiiffyyUURRLL, ffeettcchh -- file transfer functions
LLIIBBRRAARRYY
library ``libfetch''
@ -117,6 +117,9 @@ SSYYNNOOPPSSIISS
_c_h_a_r _*
ffeettcchhUUnnqquuootteeFFiilleennaammee(_s_t_r_u_c_t _u_r_l _*_u);
_c_h_a_r _*
ffeettcchhSSttrriinnggiiffyyUURRLL(_c_o_n_s_t _s_t_r_u_c_t _u_r_l _*_u);
DDEESSCCRRIIPPTTIIOONN
These functions implement a high-level library for retrieving and upload-
ing files using Uniform Resource Locators (URLs).
@ -201,12 +204,13 @@ DDEESSCCRRIIPPTTIIOONN
The list should be initialised by calling ffeettcchhIInniittUURRLLLLiisstt() and the
entries be freed by calling ffeettcchhFFrreeeeUURRLLLLiisstt().
ffeettcchhUUnnqquuootteePPaatthh() returns the path name part of the URL with any quoting
undone. Query arguments and fragment identifiers are not included.
ffeettcchhSSttrriinnggiiffyyUURRLL() returns the URL as string. ffeettcchhUUnnqquuootteePPaatthh()
returns the path name part of the URL with any quoting undone. Query
arguments and fragment identifiers are not included.
ffeettcchhUUnnqquuootteeFFiilleennaammee() returns the last component of the path name as
returned by ffeettcchhUUnnqquuootteePPaatthh(). ffeettcchhUUnnqquuootteePPaatthh() and
ffeettcchhUUnnqquuootteeFFiilleennaammee() return a string that should be deallocated with
ffrreeee() after use.
returned by ffeettcchhUUnnqquuootteePPaatthh(). ffeettcchhSSttrriinnggiiffyyUURRLL(), ffeettcchhUUnnqquuootteePPaatthh()
and ffeettcchhUUnnqquuootteeFFiilleennaammee() return a string that should be deallocated
with ffrreeee() after use.
ffeettcchhXXGGeett(), ffeettcchhGGeett(), ffeettcchhPPuutt() and ffeettcchhSSttaatt() are similar to
ffeettcchhXXGGeettUURRLL(), ffeettcchhGGeettUURRLL(), ffeettcchhPPuuttUURRLL() and ffeettcchhSSttaattUURRLL(), except

View file

@ -1,4 +1,4 @@
/* $NetBSD: fetch.h,v 1.10 2008/04/25 16:25:25 joerg Exp $ */
/* $NetBSD: fetch.h,v 1.11 2008/04/25 19:59:30 joerg Exp $ */
/*-
* Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
* All rights reserved.
@ -146,6 +146,7 @@ struct url *fetchMakeURL(const char *, const char *, int,
const char *, const char *, const char *);
struct url *fetchParseURL(const char *);
struct url *fetchCopyURL(const struct url *);
char *fetchStringifyURL(const struct url *);
void fetchFreeURL(struct url *);
/* URL listening */