chiark / gitweb /
label: move is_dir() to util.c
[elogind.git] / src / shared / util.c
index ebacee55b181c379fa9fd0fb31cf269d9d9609b0..bc97c67f768900abdd06462d2eb0dc91cb37cd9e 100644 (file)
@@ -2074,7 +2074,7 @@ int acquire_terminal(
                  * ended our handle will be dead. It's important that
                  * we do this after sleeping, so that we don't enter
                  * an endless loop. */
-                safe_close(fd);
+                fd = safe_close(fd);
         }
 
         safe_close(notify);
@@ -3306,13 +3306,8 @@ unsigned lines(void) {
 
         l = 0;
         e = getenv("LINES");
-        if (e) {
-                int r;
-
-                r = safe_atou(e, &l);
-                if (r < 0) {}
-                        /* do nothing, we fall back to l = 0 */
-        }
+        if (e)
+                (void) safe_atou(e, &l);
 
         if (l <= 0)
                 l = fd_lines(STDOUT_FILENO);
@@ -6938,10 +6933,21 @@ int is_symlink(const char *path) {
         if (lstat(path, &info) < 0)
                 return -errno;
 
-        if (S_ISLNK(info.st_mode))
-                return 1;
+        return !!S_ISLNK(info.st_mode);
+}
 
-        return 0;
+int is_dir(const char* path, bool follow) {
+        struct stat st;
+
+        if (follow) {
+                if (stat(path, &st) < 0)
+                        return -errno;
+        } else {
+                if (lstat(path, &st) < 0)
+                        return -errno;
+        }
+
+        return !!S_ISDIR(st.st_mode);
 }
 
 int unquote_first_word(const char **p, char **ret) {