improve realpath lookup for relative paths - geomyidae - A small C-based gopherd. HTML git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit a10c97c30ba60dc3a6f04007944add595226060d DIR parent e32a3c324c94aa302f866d422ac6f1340593c01c HTML Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sun, 18 Nov 2018 13:09:50 +0100 improve realpath lookup for relative paths - don't lookup when the path is empty. - allow relative paths for 'h' types. - allow URL: in filenames for non-'h' types. Signed-off-by: Christoph Lohmann <20h@r-36.net> Diffstat: M ind.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) --- DIR diff --git a/ind.c b/ind.c @@ -428,14 +428,15 @@ printelem(int fd, Elems *el, char *file, char *base, char *addr, char *port) * some URL and ignore various types that have different semantics but * to point to some file or directory. */ - if (el->e[2][0] != '/' - && strncmp(el->e[2], "URL:", 4) - && el->e[0][0] != 'i' - && el->e[0][0] != '2' - && el->e[0][0] != '3' - && el->e[0][0] != '8' - && el->e[0][0] != 'w' - && el->e[0][0] != 'T') { + if ((el->e[2][0] != '\0' + && el->e[2][0] != '/' + && el->e[0][0] != 'i' + && el->e[0][0] != '2' + && el->e[0][0] != '3' + && el->e[0][0] != '8' + && el->e[0][0] != 'w' + && el->e[0][0] != 'T') && + !(el->e[0][0] == 'h' && !strncmp(el->e[2], "URL:", 4))) { path = file + strlen(base); if ((p = strrchr(path, '/'))) len = p - path;