chiark / gitweb /
machined,machinectl: add calls for changing container/VM quotas
[elogind.git] / src / shared / path-util.c
index ad9dc882b2ac1ef6c69ed2d4529589fcaaafab3d..12d1ec321f174619183f1423cbdf5f83c2389e90 100644 (file)
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 ***/
 
-#include <assert.h>
 #include <string.h>
 #include <unistd.h>
 #include <errno.h>
 #include <stdlib.h>
-#include <signal.h>
 #include <stdio.h>
 #include <fcntl.h>
-#include <dirent.h>
 #include <sys/statvfs.h>
 
 #include "macro.h"
@@ -436,6 +433,10 @@ bool path_equal(const char *a, const char *b) {
         }
 }
 
+bool path_equal_or_files_same(const char *a, const char *b) {
+        return path_equal(a, b) || files_same(a, b) > 0;
+}
+
 char* path_join(const char *root, const char *path, const char *rest) {
         assert(path);
 
@@ -454,10 +455,7 @@ char* path_join(const char *root, const char *path, const char *rest) {
 
 int path_is_mount_point(const char *t, bool allow_symlink) {
 
-        union file_handle_union h = {
-                .handle.handle_bytes = MAX_HANDLE_SZ
-        };
-
+        union file_handle_union h = FILE_HANDLE_INIT;
         int mount_id = -1, mount_id_parent = -1;
         _cleanup_free_ char *parent = NULL;
         struct stat a, b;
@@ -524,6 +522,9 @@ fallback:
                 return -errno;
         }
 
+        free(parent);
+        parent = NULL;
+
         r = path_get_parent(t, &parent);
         if (r < 0)
                 return r;
@@ -560,14 +561,14 @@ int path_is_os_tree(const char *path) {
         int r;
 
         /* We use /usr/lib/os-release as flag file if something is an OS */
-        p = strappenda(path, "/usr/lib/os-release");
+        p = strjoina(path, "/usr/lib/os-release");
         r = access(p, F_OK);
 
         if (r >= 0)
                 return 1;
 
         /* Also check for the old location in /etc, just in case. */
-        p = strappenda(path, "/etc/os-release");
+        p = strjoina(path, "/etc/os-release");
         r = access(p, F_OK);
 
         return r >= 0;
@@ -665,7 +666,7 @@ int fsck_exists(const char *fstype) {
         const char *checker;
         int r;
 
-        checker = strappenda("fsck.", fstype);
+        checker = strjoina("fsck.", fstype);
 
         r = find_binary(checker, true, &p);
         if (r < 0)