From 38cccfcf9cb02b5a470dd4de31c528e1d106a100 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Bollo?= Date: Thu, 10 Dec 2015 17:55:06 +0100 Subject: [PATCH] allow to query path having heading / Change-Id: I9be22c09557f426f271310fac4b1cdd5000e0161 --- src/wgt.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/wgt.c b/src/wgt.c index db59091..9c3cd6e 100644 --- a/src/wgt.c +++ b/src/wgt.c @@ -71,6 +71,13 @@ static int validsubpath(const char *subpath) return l >= 0; } +static const char *normalsubpath(const char *subpath) +{ + while(*subpath == '/') + subpath++; + return validsubpath(subpath) ? subpath : NULL; +} + struct wgt *wgt_create() { struct wgt *wgt = malloc(sizeof * wgt); @@ -150,7 +157,9 @@ int wgt_has(struct wgt *wgt, const char *filename) { assert(wgt); assert(wgt_is_connected(wgt)); - if (!validsubpath(filename)) { + + filename = normalsubpath(filename); + if (!filename) { errno = EINVAL; return -1; } @@ -161,7 +170,8 @@ int wgt_open_read(struct wgt *wgt, const char *filename) { assert(wgt); assert(wgt_is_connected(wgt)); - if (!validsubpath(filename)) { + filename = normalsubpath(filename); + if (!filename) { errno = EINVAL; return -1; } @@ -229,7 +239,8 @@ static const char *localize(struct wgt *wgt, const char *filename, char path[PAT { int i; - if (!validsubpath(filename)) { + filename = normalsubpath(filename); + if (!filename) { errno = EINVAL; return NULL; } -- 2.16.6