diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-01-20 15:06:34 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-01-20 15:06:58 +0100 |
commit | 85dbc41dc67ff49fd8a843dbac5b8b5cb0b61155 (patch) | |
tree | 27cd179d2f98ef32ed27cb66589e44751135513e /src/import/import-util.c | |
parent | 88a1aadc48e5bbefd2e689db099569ec4c3c1e4b (diff) |
import: add a simple scheme for validating the SHA256 sums of downloaded raw files
Diffstat (limited to 'src/import/import-util.c')
-rw-r--r-- | src/import/import-util.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/import/import-util.c b/src/import/import-util.c index 341a566e37..1212025d43 100644 --- a/src/import/import-util.c +++ b/src/import/import-util.c @@ -218,3 +218,55 @@ int import_make_path(const char *url, const char *etag, const char *image_root, *ret = path; return 0; } + +int import_url_last_component(const char *url, char **ret) { + const char *e, *p; + char *s; + + e = strchrnul(url, '?'); + + while (e > url && e[-1] == '/') + e--; + + p = e; + while (p > url && p[-1] != '/') + p--; + + if (e <= p) + return -EINVAL; + + s = strndup(p, e - p); + if (!s) + return -ENOMEM; + + *ret = s; + return 0; +} + + +int import_url_change_last_component(const char *url, const char *suffix, char **ret) { + const char *e; + char *s; + + assert(url); + assert(ret); + + e = strchrnul(url, '?'); + + while (e > url && e[-1] == '/') + e--; + + while (e > url && e[-1] != '/') + e--; + + if (e <= url) + return -EINVAL; + + s = new(char, (e - url) + strlen(suffix) + 1); + if (!s) + return -ENOMEM; + + strcpy(mempcpy(s, url, e - url), suffix); + *ret = s; + return 0; +} |