chiark / gitweb /
networkd-wait-online: improve interoptability and enable by default
[elogind.git] / src / shared / path-util.c
index 1ad1084b2d5f0653bb56b1e8dee818b39199fe88..373dd7a35c3998b2f920c76949101b3a9d76ed49 100644 (file)
@@ -427,15 +427,16 @@ int find_binary(const char *name, char **filename) {
         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;
                 }
 
@@ -463,8 +464,7 @@ int find_binary(const char *name, char **filename) {
                                 continue;
 
                         if (filename) {
-                                path_kill_slashes(p);
-                                *filename = p;
+                                *filename = path_kill_slashes(p);
                                 p = NULL;
                         }