summaryrefslogtreecommitdiff
path: root/include/mailutils/url.h
blob: c33dadc4585f07c60e5dca554d40ad31f7656736 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* GNU Mailutils -- a suite of utilities for electronic mail
   Copyright (C) 1999, 2000, 2001, 2005, 2007, 2008, 2009, 2010, 2011
   Free Software Foundation, Inc.

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 3 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General
   Public License along with this library.  If not, see 
   <http://www.gnu.org/licenses/>. */

#ifndef _MAILUTILS_URL_H
#define _MAILUTILS_URL_H	1

#include <mailutils/types.h>

#ifdef __cplusplus
extern "C" {
#endif

#define MU_URL_SCHEME 0x0001
#define MU_URL_USER   0x0002 /* Has a user part */
#define MU_URL_SECRET 0x0004 /* Has a secret (password) part */
#define MU_URL_AUTH   0x0008 /* Has auth part */
#define MU_URL_HOST   0x0010 /* Has host part */
#define MU_URL_PORT   0x0020 /* Has port part */  
#define MU_URL_PATH   0x0040 /* Has path */
#define MU_URL_PARAM  0x0080 /* Has parameters */
#define MU_URL_QUERY  0x0100 /* Has query */
#define MU_URL_IPV6   0x0200 /* Host part is bracketed (IPv6) */
  
#define MU_URL_CRED (MU_URL_USER | MU_URL_SECRET | MU_URL_AUTH)  
  /* Has some of authentication credentials */
#define MU_URL_INET (MU_URL_HOST | MU_URL_PORT)
  /* Has Inet address */
#define MU_URL_ALL \
  (MU_URL_CRED | \
   MU_URL_HOST | \
   MU_URL_PATH | \
   MU_URL_PARAM | \
   MU_URL_QUERY)

  /* Parser flags */
#define MU_URL_PARSE_HEXCODE      0x0001  /* Decode % notations (RFC 1738,
					     section 2.2) */
#define MU_URL_PARSE_HIDEPASS     0x0002  /* Hide password in the URL */
#define MU_URL_PARSE_PORTSRV      0x0004  /* Use getservbyname to determine
					     port number */
#define MU_URL_PARSE_PORTWC       0x0008  /* Allow wildcard (*) as a port
					     number (for tickets) */
#define MU_URL_PARSE_PIPE         0x0010  /* Translate "| ..." to
					     "prog://..." */
#define MU_URL_PARSE_SLASH        0x0020  /* Translate "/..." to
					     "file:///..." */
#define MU_URL_PARSE_DSLASH_OPTIONAL 0x0040 /* Double-slash after scheme:
					       part is optional */
  
#define MU_URL_PARSE_DEFAULT \
  (MU_URL_PARSE_HEXCODE|MU_URL_PARSE_HIDEPASS|MU_URL_PARSE_PORTSRV|\
   MU_URL_PARSE_PIPE|MU_URL_PARSE_SLASH)
#define MU_URL_PARSE_ALL (MU_URL_PARSE_DEFAULT|MU_URL_PARSE_PORTWC)  
  
int mu_url_create_hint (mu_url_t *purl, const char *str, int flags,
			mu_url_t hint);
int mu_url_copy_hints (mu_url_t url, mu_url_t hint);
  
int  mu_url_create    (mu_url_t *, const char *name);
int  mu_url_dup       (mu_url_t old_url, mu_url_t *new_url);
int  mu_url_uplevel   (mu_url_t url, mu_url_t *upurl);

int mu_url_get_flags (mu_url_t, int *);
int mu_url_has_flag (mu_url_t, int);  
  
void mu_url_destroy   (mu_url_t *);

int mu_url_sget_scheme  (const mu_url_t, const char **);
int mu_url_aget_scheme  (const mu_url_t, char **);  
int mu_url_get_scheme  (const mu_url_t, char *, size_t, size_t *);

int mu_url_sget_user  (const mu_url_t, const char **);
int mu_url_aget_user  (const mu_url_t, char **);  
int mu_url_get_user  (const mu_url_t, char *, size_t, size_t *);

int mu_url_get_secret (const mu_url_t url, mu_secret_t *psecret);

int mu_url_sget_auth  (const mu_url_t, const char **);
int mu_url_aget_auth  (const mu_url_t, char **);  
int mu_url_get_auth  (const mu_url_t, char *, size_t, size_t *);

int mu_url_sget_host  (const mu_url_t, const char **);
int mu_url_aget_host  (const mu_url_t, char **);  
int mu_url_get_host  (const mu_url_t, char *, size_t, size_t *);

int mu_url_sget_path  (const mu_url_t, const char **);
int mu_url_aget_path  (const mu_url_t, char **);  
int mu_url_get_path  (const mu_url_t, char *, size_t, size_t *);

int mu_url_sget_query (const mu_url_t url, size_t *qc, char ***qv);
int mu_url_aget_query (const mu_url_t url, size_t *qc, char ***qv);

int mu_url_sget_portstr  (const mu_url_t, const char **);
int mu_url_aget_portstr  (const mu_url_t, char **);  
int mu_url_get_portstr   (const mu_url_t, char *, size_t, size_t *);
  
int mu_url_get_port    (const mu_url_t, unsigned *);

int mu_url_sget_fvpairs (const mu_url_t url, size_t *fvc, char ***fvp);
int mu_url_aget_fvpairs (const mu_url_t url, size_t *pfvc, char ***pfvp);

int mu_url_sget_param (const mu_url_t url, const char *param, const char **val);
int mu_url_aget_param (const mu_url_t url, const char *param, char **val);
  
int mu_url_expand_path (mu_url_t url);
const char *mu_url_to_string   (const mu_url_t);

int mu_url_set_scheme (mu_url_t url, const char *scheme);

int mu_url_is_scheme   (mu_url_t, const char *scheme);

int mu_url_is_same_scheme (mu_url_t, mu_url_t);
int mu_url_is_same_user   (mu_url_t, mu_url_t);
int mu_url_is_same_path   (mu_url_t, mu_url_t);
int mu_url_is_same_host   (mu_url_t, mu_url_t);
int mu_url_is_same_port   (mu_url_t, mu_url_t);

int mu_url_matches_ticket   (mu_url_t ticket, mu_url_t url, int *wcn);  

int mu_url_decode (mu_url_t url);
  
#ifdef __cplusplus
}
#endif

#endif /* _MAILUTILS_URL_H */

Return to:

Send suggestions and report system problems to the System administrator.