X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccan_dir.c;h=6d95e064a5968d463b4528505406a37bd8995029;hp=0bb9b14457c73aad61a7473085a07232b3af2d4e;hb=d218dcd458cbec7a1b958af39b70cd068da7b040;hpb=3ea7b4d695237414015f33674d6ba01009e77fd1 diff --git a/tools/ccan_dir.c b/tools/ccan_dir.c index 0bb9b144..6d95e064 100644 --- a/tools/ccan_dir.c +++ b/tools/ccan_dir.c @@ -1,4 +1,5 @@ -#include +#include +#include #include "tools.h" #include #include @@ -22,10 +23,18 @@ static unsigned int ccan_dir_prefix(const char *fulldir) const char *find_ccan_dir(const char *base) { - unsigned int prefix = ccan_dir_prefix(base); + static char *ccan_dir; - if (!prefix) - return NULL; - - return talloc_strndup(NULL, base, prefix); + if (!ccan_dir) { + if (base[0] != '/') { + const char *tmpctx = path_cwd(NULL); + find_ccan_dir(path_join(tmpctx, tmpctx, base)); + tal_free(tmpctx); + } else { + unsigned int prefix = ccan_dir_prefix(base); + if (prefix) + ccan_dir = tal_strndup(NULL, base, prefix); + } + } + return ccan_dir; }