]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/web-util.c
Merge pull request #653 from dvdhrm/bus-gold
[thirdparty/systemd.git] / src / basic / web-util.c
1 /***
2 This file is part of systemd.
3
4 Copyright 2010 Lennart Poettering
5
6 systemd is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
10
11 systemd is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License
17 along with systemd; If not, see <http://www.gnu.org/licenses/>.
18 ***/
19
20 #include <stdbool.h>
21
22 #include "string-util.h"
23 #include "utf8.h"
24 #include "web-util.h"
25
26 bool http_etag_is_valid(const char *etag) {
27 if (isempty(etag))
28 return false;
29
30 if (!endswith(etag, "\""))
31 return false;
32
33 if (!startswith(etag, "\"") && !startswith(etag, "W/\""))
34 return false;
35
36 return true;
37 }
38
39 bool http_url_is_valid(const char *url) {
40 const char *p;
41
42 if (isempty(url))
43 return false;
44
45 p = startswith(url, "http://");
46 if (!p)
47 p = startswith(url, "https://");
48 if (!p)
49 return false;
50
51 if (isempty(p))
52 return false;
53
54 return ascii_is_valid(p);
55 }
56
57 bool documentation_url_is_valid(const char *url) {
58 const char *p;
59
60 if (isempty(url))
61 return false;
62
63 if (http_url_is_valid(url))
64 return true;
65
66 p = startswith(url, "file:/");
67 if (!p)
68 p = startswith(url, "info:");
69 if (!p)
70 p = startswith(url, "man:");
71
72 if (isempty(p))
73 return false;
74
75 return ascii_is_valid(p);
76 }