NeoMutt
2025-12-11-1039-g550ac6
Teaching an old dog new tricks
DOXYGEN
Toggle main menu visibility
Loading...
Searching...
No Matches
url.h
Go to the documentation of this file.
1
22
23
#ifndef MUTT_EMAIL_URL_H
24
#define MUTT_EMAIL_URL_H
25
26
#include <stddef.h>
27
#include <stdint.h>
28
#include "
mutt/lib.h
"
29
33
enum
UrlScheme
34
{
35
U_UNKNOWN
,
36
U_FILE
,
37
U_POP
,
38
U_POPS
,
39
U_IMAP
,
40
U_IMAPS
,
41
U_NNTP
,
42
U_NNTPS
,
43
U_SMTP
,
44
U_SMTPS
,
45
U_MAILTO
,
46
U_NOTMUCH
,
47
};
48
49
#define U_NONE 0
50
#define U_PATH (1U << 0)
51
57
struct
UrlQuery
58
{
59
char
*
name
;
60
char
*
value
;
61
STAILQ_ENTRY
(
UrlQuery
) entries;
62
};
63
STAILQ_HEAD
(UrlQueryList,
UrlQuery
);
64
68
struct
Url
69
{
70
enum
UrlScheme
scheme
;
71
char
*
user
;
72
char
*
pass
;
73
char
*
host
;
74
unsigned
short
port
;
75
char
*
path
;
76
struct
UrlQueryList
query_strings
;
77
char
*
src
;
78
};
79
80
enum
UrlScheme
url_check_scheme
(
const
char
*s);
81
void
url_free
(
struct
Url
**ptr);
82
struct
Url
*
url_parse
(
const
char
*
src
);
83
int
url_pct_decode
(
char
*s);
84
void
url_pct_encode
(
char
*buf,
size_t
buflen,
const
char
*
src
);
85
int
url_tobuffer
(
const
struct
Url
*url,
struct
Buffer
*dest, uint8_t flags);
86
int
url_tostring
(
const
struct
Url
*url,
char
*buf,
size_t
buflen, uint8_t flags);
87
88
#endif
/* MUTT_EMAIL_URL_H */
lib.h
Convenience wrapper for the library headers.
STAILQ_HEAD
#define STAILQ_HEAD(name, type)
Definition
queue.h:312
Buffer
String manipulation buffer.
Definition
buffer.h:36
UrlQuery
Parsed Query String.
Definition
url.h:58
UrlQuery::STAILQ_ENTRY
STAILQ_ENTRY(UrlQuery) entries
Linked list.
UrlQuery::name
char * name
Query name.
Definition
url.h:59
UrlQuery::value
char * value
Query value.
Definition
url.h:60
Url
A parsed URL proto://user:password@host:port/path?a=1&b=2.
Definition
url.h:69
Url::user
char * user
Username.
Definition
url.h:71
Url::port
unsigned short port
Port.
Definition
url.h:74
Url::query_strings
struct UrlQueryList query_strings
List of query strings.
Definition
url.h:76
Url::host
char * host
Host.
Definition
url.h:73
Url::src
char * src
Raw URL string.
Definition
url.h:77
Url::pass
char * pass
Password.
Definition
url.h:72
Url::path
char * path
Path.
Definition
url.h:75
Url::scheme
enum UrlScheme scheme
Scheme, e.g. U_SMTPS.
Definition
url.h:70
url_pct_decode
int url_pct_decode(char *s)
Decode a percent-encoded string.
Definition
url.c:190
UrlScheme
UrlScheme
All recognised Url types.
Definition
url.h:34
U_NOTMUCH
@ U_NOTMUCH
Url is notmuch://.
Definition
url.h:46
U_UNKNOWN
@ U_UNKNOWN
Url wasn't recognised.
Definition
url.h:35
U_FILE
@ U_FILE
Url is file://.
Definition
url.h:36
U_NNTPS
@ U_NNTPS
Url is nntps://.
Definition
url.h:42
U_MAILTO
@ U_MAILTO
Url is mailto://.
Definition
url.h:45
U_SMTPS
@ U_SMTPS
Url is smtps://.
Definition
url.h:44
U_SMTP
@ U_SMTP
Url is smtp://.
Definition
url.h:43
U_NNTP
@ U_NNTP
Url is nntp://.
Definition
url.h:41
U_IMAP
@ U_IMAP
Url is imap://.
Definition
url.h:39
U_POPS
@ U_POPS
Url is pops://.
Definition
url.h:38
U_IMAPS
@ U_IMAPS
Url is imaps://.
Definition
url.h:40
U_POP
@ U_POP
Url is pop://.
Definition
url.h:37
url_parse
struct Url * url_parse(const char *src)
Fill in Url.
Definition
url.c:242
url_check_scheme
enum UrlScheme url_check_scheme(const char *s)
Check the protocol of a URL.
Definition
url.c:229
url_free
void url_free(struct Url **ptr)
Free the contents of a URL.
Definition
url.c:124
url_tostring
int url_tostring(const struct Url *url, char *buf, size_t buflen, uint8_t flags)
Output the URL string for a given Url object.
Definition
url.c:426
url_pct_encode
void url_pct_encode(char *buf, size_t buflen, const char *src)
Percent-encode a string.
Definition
url.c:152
url_tobuffer
int url_tobuffer(const struct Url *url, struct Buffer *dest, uint8_t flags)
Output the URL string for a given Url object.
Definition
url.c:361