Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
KHTTP_URLPART(3)	    Library Functions Manual	      KHTTP_URLPART(3)

NAME
       khttp_urlpart,  khttp_urlpartx,	khttp_vurlpart,	khttp_vurlpartx	-- URL
       formatting for kcgi

LIBRARY
       library "libkcgi"

SYNOPSIS
       #include	<sys/types.h>
       #include	<stdarg.h>
       #include	<stdint.h>
       #include	<kcgi.h>

       char *
       khttp_urlpart(const char	*path,	const char *suffix,  const char	*page,
	   ...);

       char *
       khttp_urlpartx(const char *path,	 const char *suffix, const char	*page,
	   ...);

       char *
       khttp_vurlpart(const char *path,	const char *suffix,  const char	*page,
	   va_list ap);

       char *
       khttp_vurlpartx(const char *path, const char *suffix, const char	*page,
	   va_list ap);

DESCRIPTION
       Format  a  URL given the	components following the domain.  If the vari-
       able arguments are provided, append them	as query string	pairs.

	     path/page.suffix
	     path/page.suffix?key=val...

       If path is NULL,	the URL	will be	relative to page; otherwise, path will
       be followed by a	path separator.	 An empty path signifies the root  di-
       rectory.

       If  the	suffix	is NULL	or empty, or the corresponding page is NULL or
       empty, the URL is formatted without a suffix.

       The  variable  key-value	 arguments  must  be  terminated  with	 NULL.
       khttp_urlpart()	and  khttp_vurlpart()  accept  pairs of	variable argu-
       ments, the first	being the query	 string	 key,  the  second  being  the
       value.	Both  are char *.  A NULL query	string value is	rendered as an
       empty string.  khttp_urlpartx() and khttp_vurlpartx() accept  triplets.
       In each group, the first	argument is a char * giving the	key.  The sec-
       ond  argument  is an enum kattrx	specifying the type of the third argu-
       ment: KATTRX_STRING followed by a char *	string	(where	a  NULL	 query
       string value is rendered	as an empty string), KATTRX_INT	followed by an
       int64_t signed integer, or KATTRX_DOUBLE	followed by a double floating-
       point  number.	If  all	types are KATTRX_STRING, the invocation	can be
       shortened to khttp_urlpart().

       The page, query string keys, and	query string values  are  URL-encoded,
       but the path and	the suffix are not.

       There  are two deprecated forms of these	functions: kutil_urlpart() and
       kutil_urlpartx().  These	should no longer be used.

RETURN VALUES
       Return newly-allocated strings that must	be freed with free(3) or  NULL
       if allocation fails.

EXAMPLES
       The following creates a relative	URL with path, page, suffix, and query
       string parts.

	     url = khttp_urlpart("/path", "html", "page",
		      "foo", "bar", "baz", "xyzzy", NULL);

       This will assign	the following URL:

	     /path/page.html?foo=bar&baz=xyzzy

       For  typed  arguments, the extended form	may be used.  Integer and real
       literals	must have the int64_t and double types,	respectively.

	     url = khttp_urlpartx("/path", "html", "page",
		      "foo", KATTRX_INT, (int64_t)0, NULL);

       This assigns the	following

	     /path/page.html?foo=0

       These may be made relative to the current page by omitting the  leading
       slash or	passing	NULL for the path component entirely, such as:

	     url1 = khttp_urlpart("rel/path", "html", "page", NULL);
	     url2 = khttp_urlpart(NULL,	"html",	"page",	NULL);

       These assign the	following, respectively:

	     rel/path/page.html
	     page.html

       Lastly, pages and their suffixes	may be omitted entirely:

	     url3 = khttp_urlpart("", "", "", "foo", "bar", NULL);
	     url4 = khttp_urlpart(NULL,	"", "",	"foo", "bar", NULL);

       These assign the	following:

	     /?foo=bar
	     ?foo=bar

AUTHORS
       Written by Kristaps Dzonsons <kristaps@bsd.lv>.

FreeBSD	Ports 14.quarterly	  $Mdocdate$		      KHTTP_URLPART(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=khttp_urlpart&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help