return 0;
}
+
+/* Mount using the loopback device. You can't use the generic
+ * do_mount call for this because the first parameter isn't a
+ * device.
+ */
+int
+do_mount_loop (char *file, char *mountpoint)
+{
+ int len, r;
+ char *buf, *mp;
+ char *error;
+
+ NEED_ROOT (-1);
+ ABS_PATH (file, -1);
+
+ /* We have to prefix /sysroot on both the filename and the mountpoint. */
+ len = strlen (mountpoint) + 9;
+ mp = malloc (len);
+ if (!mp) {
+ reply_with_perror ("malloc");
+ return -1;
+ }
+ snprintf (mp, len, "/sysroot%s", mountpoint);
+
+ len = strlen (file) + 9;
+ buf = malloc (len);
+ if (!file) {
+ reply_with_perror ("malloc");
+ free (mp);
+ return -1;
+ }
+ snprintf (buf, len, "/sysroot%s", file);
+
+ r = command (NULL, &error, "mount", "-o", "loop", buf, mp, NULL);
+ free (mp);
+ free (buf);
+ if (r == -1) {
+ reply_with_error ("mount: %s on %s: %s", file, mountpoint, error);
+ free (error);
+ return -1;
+ }
+
+ return 0;
+}
filesystem as initrd. We I<only> support the newer initramfs
format (compressed cpio files).");
+ ("mount_loop", (RErr, [String "file"; String "mountpoint"]), 129, [],
+ [],
+ "mount a file using the loop device",
+ "\
+This command lets you mount C<file> (a filesystem image
+in a file) on a mount point. It is entirely equivalent to
+the command C<mount -o loop file mountpoint>.");
+
]
let all_functions = non_daemon_functions @ daemon_functions