summaryrefslogtreecommitdiff
path: root/src/import/import-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-01-20 15:06:34 +0100
committerLennart Poettering <lennart@poettering.net>2015-01-20 15:06:58 +0100
commit85dbc41dc67ff49fd8a843dbac5b8b5cb0b61155 (patch)
tree27cd179d2f98ef32ed27cb66589e44751135513e /src/import/import-util.c
parent88a1aadc48e5bbefd2e689db099569ec4c3c1e4b (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.c52
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;
+}