In contrast to a filename-only argument, find_binary() did not
actually check if an path exists, allowing the code to fail later on.
This was OK, but it seems nicer to treat both paths identically.
Also take advantage of path_make_absolute_cwd doing strdup() by itself
if necessary to simplify.
assert(name);
if (strchr(name, '/')) {
+ if (access(name, X_OK) < 0)
+ return -errno;
+
if (filename) {
char *p;
- if (path_is_absolute(name))
- p = strdup(name);
- else
- p = path_make_absolute_cwd(name);
+ p = path_make_absolute_cwd(name);
if (!p)
return -ENOMEM;
+
*filename = p;
}
free(p);
assert(find_binary("xxxx-xxxx", &p) == -ENOENT);
+
+ assert(find_binary("/some/dir/xxxx-xxxx", &p) == -ENOENT);
}
static void test_prefixes(void) {