Signed-off-by: Karel Zak <kzak@redhat.com>
int (*redirect_on_enoent)(struct path_cxt *, const char *, int *);
};
-struct path_cxt *ul_new_path(const char *dir);
+struct path_cxt *ul_new_path(const char *dir, ...);
void ul_unref_path(struct path_cxt *pc);
void ul_ref_path(struct path_cxt *pc);
__UL_INIT_DEBUG_FROM_ENV(ulpath, ULPATH_DEBUG_, 0, ULPATH_DEBUG);
}
-struct path_cxt *ul_new_path(const char *dir)
+struct path_cxt *ul_new_path(const char *dir, ...)
{
struct path_cxt *pc = calloc(1, sizeof(*pc));
pc->dir_fd = -1;
if (dir) {
- pc->dir_path = strdup(dir);
- if (!pc->dir_path)
+ int rc;
+ va_list ap;
+
+ va_start(ap, dir);
+ rc = vasprintf(&pc->dir_path, dir, ap);
+ va_end(ap);
+
+ if (rc < 0 || !pc->dir_path)
goto fail;
}
return pc;