summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/lomount.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/lomount.c')
-rw-r--r--mdk-stage1/lomount.c166
1 files changed, 83 insertions, 83 deletions
diff --git a/mdk-stage1/lomount.c b/mdk-stage1/lomount.c
index 74a409e0b..b7d61f24b 100644
--- a/mdk-stage1/lomount.c
+++ b/mdk-stage1/lomount.c
@@ -35,90 +35,90 @@
#include "lomount.h"
-#define LO_NAME_SIZE 64
-#define LO_KEY_SIZE 32
+#define LO_NAME_SIZE 64
+#define LO_KEY_SIZE 32
struct loop_info
{
- int lo_number; /* ioctl r/o */
- dev_t lo_device; /* ioctl r/o */
- unsigned long lo_inode; /* ioctl r/o */
- dev_t lo_rdevice; /* ioctl r/o */
- int lo_offset;
- int lo_encrypt_type;
- int lo_encrypt_key_size; /* ioctl w/o */
- int lo_flags; /* ioctl r/o */
- char lo_name[LO_NAME_SIZE];
- unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
- unsigned long lo_init[2];
- char reserved[4];
+ int lo_number; /* ioctl r/o */
+ dev_t lo_device; /* ioctl r/o */
+ unsigned long lo_inode; /* ioctl r/o */
+ dev_t lo_rdevice; /* ioctl r/o */
+ int lo_offset;
+ int lo_encrypt_type;
+ int lo_encrypt_key_size; /* ioctl w/o */
+ int lo_flags; /* ioctl r/o */
+ char lo_name[LO_NAME_SIZE];
+ unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
+ unsigned long lo_init[2];
+ char reserved[4];
};
-#define LOOP_SET_FD 0x4C00
-#define LOOP_CLR_FD 0x4C01
-#define LOOP_SET_STATUS 0x4C02
-#define LOOP_GET_STATUS 0x4C03
+#define LOOP_SET_FD 0x4C00
+#define LOOP_CLR_FD 0x4C01
+#define LOOP_SET_STATUS 0x4C02
+#define LOOP_GET_STATUS 0x4C03
int
set_loop (const char *device, const char *file)
{
- struct loop_info loopinfo;
- int fd, ffd, mode;
+ struct loop_info loopinfo;
+ int fd, ffd, mode;
- mode = O_RDONLY;
+ mode = O_RDONLY;
- if ((ffd = open (file, mode)) < 0)
- return 1;
+ if ((ffd = open (file, mode)) < 0)
+ return 1;
- if ((fd = open (device, mode)) < 0) {
- close(ffd);
- return 1;
- }
+ if ((fd = open (device, mode)) < 0) {
+ close(ffd);
+ return 1;
+ }
- memset(&loopinfo, 0, sizeof (loopinfo));
- strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
- loopinfo.lo_name[LO_NAME_SIZE - 1] = 0;
- loopinfo.lo_offset = 0;
+ memset(&loopinfo, 0, sizeof (loopinfo));
+ strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
+ loopinfo.lo_name[LO_NAME_SIZE - 1] = 0;
+ loopinfo.lo_offset = 0;
#ifdef MCL_FUTURE
- /*
- * Oh-oh, sensitive data coming up. Better lock into memory to prevent
- * passwd etc being swapped out and left somewhere on disk.
- */
+ /*
+ * Oh-oh, sensitive data coming up. Better lock into memory to prevent
+ * passwd etc being swapped out and left somewhere on disk.
+ */
- if(mlockall(MCL_CURRENT|MCL_FUTURE)) {
- log_message("CRITICAL Couldn't lock into memory! %s (memlock)", strerror(errno));
- return 1;
- }
+ if(mlockall(MCL_CURRENT|MCL_FUTURE)) {
+ log_message("CRITICAL Couldn't lock into memory! %s (memlock)", strerror(errno));
+ return 1;
+ }
#endif
- if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
- close(fd);
- close(ffd);
- return 1;
- }
-
- if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
- (void) ioctl (fd, LOOP_CLR_FD, 0);
- close(fd);
- close(ffd);
- return 1;
- }
-
- close(fd);
- close(ffd);
- return 0;
+ if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
+ close(fd);
+ close(ffd);
+ return 1;
+ }
+
+ if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
+ (void) ioctl (fd, LOOP_CLR_FD, 0);
+ close(fd);
+ close(ffd);
+ return 1;
+ }
+
+ close(fd);
+ close(ffd);
+ return 0;
}
char* find_free_loop()
{
- struct loop_info loopinfo;
+ struct loop_info loopinfo;
int i;
for (i=0; i<256; i++) {
int fd;
- char ldev[100];
- sprintf(ldev, "/dev/loop%d", i);
+ char ldev[100];
+ sprintf(ldev, "/dev/loop%d", i);
ensure_dev_exists(ldev);
fd = open(ldev, O_RDONLY);
if (!ioctl(fd, LOOP_GET_STATUS, &loopinfo)) {
@@ -141,54 +141,54 @@ char* find_free_loop()
void
del_loop(char * loopdev)
{
- int fd;
+ int fd;
if (!loopdev)
return;
- if ((fd = open (loopdev, O_RDONLY)) < 0)
- return;
+ if ((fd = open (loopdev, O_RDONLY)) < 0)
+ return;
- if (ioctl (fd, LOOP_CLR_FD, 0) < 0)
- return;
+ if (ioctl (fd, LOOP_CLR_FD, 0) < 0)
+ return;
- close (fd);
+ close (fd);
}
int
lomount(char *loopfile, char *where, char **dev, int compressed)
{
- long int flag;
+ long int flag;
char * loopdev;
- flag = MS_MGC_VAL;
- flag |= MS_RDONLY;
+ flag = MS_MGC_VAL;
+ flag |= MS_RDONLY;
- my_insmod("loop", ANY_DRIVER_TYPE, "max_loop=256", 1);
- if (compressed) {
- my_insmod("squashfs", ANY_DRIVER_TYPE, NULL, 1);
- }
+ my_insmod("loop", ANY_DRIVER_TYPE, "max_loop=256", 1);
+ if (compressed) {
+ my_insmod("squashfs", ANY_DRIVER_TYPE, NULL, 1);
+ }
if (!(loopdev = find_free_loop())) {
- log_message("could not find a free loop");
- return 1;
+ log_message("could not find a free loop");
+ return 1;
}
if (dev)
*dev = loopdev;
- if (set_loop(loopdev, loopfile)) {
- log_message("set_loop failed on %s (%s)", loopdev, strerror(errno));
- return 1;
- }
+ if (set_loop(loopdev, loopfile)) {
+ log_message("set_loop failed on %s (%s)", loopdev, strerror(errno));
+ return 1;
+ }
- if (my_mount(loopdev, where, compressed ? "squashfs" : "iso9660", 0)) {
- del_loop(loopdev);
- return 1;
- }
+ if (my_mount(loopdev, where, compressed ? "squashfs" : "iso9660", 0)) {
+ del_loop(loopdev);
+ return 1;
+ }
- log_message("lomount succeeded for %s on %s", loopfile, where);
- return 0;
+ log_message("lomount succeeded for %s on %s", loopfile, where);
+ return 0;
}