]> git.ipfire.org Git - people/ms/pakfire.git/commitdiff
mount: Move pakfire_bind() into mount.c
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 17 Jul 2022 18:34:09 +0000 (18:34 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 17 Jul 2022 18:34:09 +0000 (18:34 +0000)
There are no functional changes, but this function rather belongs here,
and as a bonus, we get to make pakfire_mount() static and declutter
pakfire.c slightly.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/pakfire.c
src/libpakfire/build.c
src/libpakfire/include/pakfire/mount.h
src/libpakfire/include/pakfire/pakfire.h
src/libpakfire/mount.c
src/libpakfire/pakfire.c

index b9b3eb3beee8b1ec45d64309e993a9b1b01fd4e9..cc42fddb4f1b8ac86cec469d5688f15a78c11522 100644 (file)
@@ -28,6 +28,7 @@
 #include <pakfire/dist.h>
 #include <pakfire/execute.h>
 #include <pakfire/logging.h>
+#include <pakfire/mount.h>
 #include <pakfire/packagelist.h>
 #include <pakfire/pakfire.h>
 #include <pakfire/key.h>
index 66a21fb5deeac073bee354d07c271053f29290cf..230d2c0dd01cb7c23796bdd1e41d0a8a21ec986a 100644 (file)
@@ -30,6 +30,7 @@
 #include <pakfire/dist.h>
 #include <pakfire/file.h>
 #include <pakfire/logging.h>
+#include <pakfire/mount.h>
 #include <pakfire/package.h>
 #include <pakfire/packager.h>
 #include <pakfire/parser.h>
index 20330e08c477c4ba48fe03b8eb3a163038880dec..f47184a6b2a17ea5228ac90b2d59b519024ed452 100644 (file)
 #                                                                             #
 #############################################################################*/
 
-#ifdef PAKFIRE_PRIVATE
-
-#include <sys/queue.h>
+#ifndef PAKFIRE_MOUNT_H
+#define PAKFIRE_MOUNT_H
 
 #include <pakfire/pakfire.h>
 
-int pakfire_mount_list(struct pakfire* pakfire);
+int pakfire_bind(struct pakfire* pakfire, const char* src, const char* dst, int flags);
 
-int pakfire_mount(struct pakfire* pakfire, const char* source, const char* target,
-       const char* filesystemtype, unsigned long mountflags, const void* data);
+#ifdef PAKFIRE_PRIVATE
+
+int pakfire_mount_list(struct pakfire* pakfire);
 
 int pakfire_mount_all(struct pakfire* pakfire);
 int pakfire_umount_all(struct pakfire* pakfire);
 
 #endif /* PAKFIRE_PRIVATE */
+
+#endif /* PAKFIRE_MOUNT_H */
index 1b855c011fbcbb0f90a2a88d3448e7f7855c25d8..835bc4705ad3ac83bbc892269ff30ae12bbc2df1 100644 (file)
@@ -74,8 +74,6 @@ const char* pakfire_get_path(struct pakfire* pakfire);
 int pakfire_clean(struct pakfire* pakfire, int flags);
 int pakfire_refresh(struct pakfire* pakfire, int flags);
 
-int pakfire_bind(struct pakfire* pakfire, const char* src, const char* dst, int flags);
-
 int pakfire_list_keys(struct pakfire* pakfire, struct pakfire_key*** keys);
 
 int pakfire_copy_in(struct pakfire* pakfire, const char* src, const char* dst);
index 52eb381cb1b5cfcc33c0614e26bfa1c051470ba4..e563449f71cae8342ab485aa1b39960daa4aa172 100644 (file)
@@ -32,6 +32,7 @@
 #include <pakfire/arch.h>
 #include <pakfire/logging.h>
 #include <pakfire/pakfire.h>
+#include <pakfire/private.h>
 #include <pakfire/mount.h>
 #include <pakfire/util.h>
 
@@ -165,7 +166,7 @@ int pakfire_is_mountpoint(struct pakfire* pakfire, const char* path) {
                __pakfire_is_mountpoint, path);
 }
 
-int pakfire_mount(struct pakfire* pakfire, const char* source, const char* target,
+static int pakfire_mount(struct pakfire* pakfire, const char* source, const char* target,
                const char* fstype, unsigned long mflags, const void* data) {
        const char* options = (const char*)data;
        int r;
@@ -432,3 +433,53 @@ int pakfire_umount_all(struct pakfire* pakfire) {
        return pakfire_mount_foreach(pakfire, MNT_ITER_BACKWARD,
                __pakfire_umount, NULL);
 }
+
+PAKFIRE_EXPORT int pakfire_bind(struct pakfire* pakfire, const char* src, const char* dst, int flags) {
+       struct stat st;
+       char mountpoint[PATH_MAX];
+
+       if (!dst)
+               dst = src;
+
+       int r = pakfire_make_path(pakfire, mountpoint, dst);
+       if (r < 0)
+               return 1;
+
+       DEBUG(pakfire, "Bind-mounting %s to %s\n", src, mountpoint);
+
+       r = stat(src, &st);
+       if (r < 0) {
+               ERROR(pakfire, "Could not stat %s: %m\n", src);
+               return 1;
+       }
+
+       // Make sure the mountpoint exists
+       switch (st.st_mode & S_IFMT) {
+               case S_IFDIR:
+                       r = pakfire_mkdir(mountpoint, 0);
+                       if (r && errno != EEXIST)
+                               return r;
+                       break;
+
+               case S_IFREG:
+               case S_IFLNK:
+                       // Make parent directory
+                       r = pakfire_mkparentdir(mountpoint, 0);
+                       if (r)
+                               return r;
+
+                       // Create a file
+                       FILE* f = fopen(mountpoint, "w");
+                       if (!f)
+                               return 1;
+                       fclose(f);
+                       break;
+
+               default:
+                       errno = ENOTSUP;
+                       return 1;
+       }
+
+       // Perform mount
+       return pakfire_mount(pakfire, src, mountpoint, NULL, flags|MS_BIND, NULL);
+}
index 0c5bc8833540e95557221b1ecfbc18223b9fbcc1..da24e4fd064624f21abfefc96f1e4d2d1447f136 100644 (file)
@@ -873,56 +873,6 @@ int __pakfire_make_path(struct pakfire* pakfire, char* dst, size_t length, const
        return __pakfire_path_join(dst, length, pakfire->path, path);
 }
 
-PAKFIRE_EXPORT int pakfire_bind(struct pakfire* pakfire, const char* src, const char* dst, int flags) {
-       struct stat st;
-       char mountpoint[PATH_MAX];
-
-       if (!dst)
-               dst = src;
-
-       int r = pakfire_make_path(pakfire, mountpoint, dst);
-       if (r < 0)
-               return 1;
-
-       DEBUG(pakfire, "Bind-mounting %s to %s\n", src, mountpoint);
-
-       r = stat(src, &st);
-       if (r < 0) {
-               ERROR(pakfire, "Could not stat %s: %m\n", src);
-               return 1;
-       }
-
-       // Make sure the mountpoint exists
-       switch (st.st_mode & S_IFMT) {
-               case S_IFDIR:
-                       r = pakfire_mkdir(mountpoint, 0);
-                       if (r && errno != EEXIST)
-                               return r;
-                       break;
-
-               case S_IFREG:
-               case S_IFLNK:
-                       // Make parent directory
-                       r = pakfire_mkparentdir(mountpoint, 0);
-                       if (r)
-                               return r;
-
-                       // Create a file
-                       FILE* f = fopen(mountpoint, "w");
-                       if (!f)
-                               return 1;
-                       fclose(f);
-                       break;
-
-               default:
-                       errno = ENOTSUP;
-                       return 1;
-       }
-
-       // Perform mount
-       return pakfire_mount(pakfire, src, mountpoint, NULL, flags|MS_BIND, NULL);
-}
-
 gpgme_ctx_t pakfire_get_gpgctx(struct pakfire* pakfire) {
        return pakfire->gpgctx;
 }