+static char *mountpoint;
+
+const char *mountpoint_for_device(const char *dev_path)
+{
+ char *tmp, *dev;
+ dev = strrchr(dev_path, '/');
+ if (dev)
+ dev_path = dev + 1;
+ asprintf(&tmp, "%s/%s", mountpoint, dev_path);
+ return tmp;
+}
+
+char *resolve_path(const char *path, const char *default_mountpoint)
+{
+ char *sep, *ret;
+ const char *devpath;
+
+ sep = strchr(path, ':');
+ if (!sep) {
+ devpath = default_mountpoint;
+ asprintf(&ret, "%s/%s", devpath, path);
+ } else {
+ char *tmp = strndup(path, sep - path);
+ devpath = mountpoint_for_device(path);
+ asprintf(&ret, "%s/%s", devpath, sep + 1);
+ free(tmp);
+ }
+
+ return ret;
+}
+