Shuffle location of generic code into utility.c
authorErik Andersen <andersen@codepoet.org>
Wed, 26 Jan 2000 23:49:21 +0000 (23:49 -0000)
committerErik Andersen <andersen@codepoet.org>
Wed, 26 Jan 2000 23:49:21 +0000 (23:49 -0000)
 -Erik

internal.h
mount.c
util-linux/mount.c
utility.c

index 9611c19..39f7e0c 100644 (file)
@@ -177,6 +177,8 @@ extern pid_t findInitPid();
 
 #if defined BB_FEATURE_MOUNT_LOOP
 extern int del_loop(const char *device);
+extern int set_loop(const char *device, const char *file, int offset, int *loopro);
+extern char *find_unused_loop_device (void);
 #endif
 
 #if defined BB_GUNZIP || defined BB_GZIP || defined BB_PRINTF || defined BB_TAIL
diff --git a/mount.c b/mount.c
index 3c1568a..4b0901f 100644 (file)
--- a/mount.c
+++ b/mount.c
@@ -51,8 +51,6 @@
 #include <sys/ioctl.h>
 #include <linux/loop.h>
 
-static int set_loop(const char *device, const char *file, int offset, int *loopro);
-static char *find_unused_loop_device (void);
 
 static int use_loop = 0;
 #endif
@@ -177,75 +175,6 @@ extern void whine_if_fstab_is_missing()
 #endif
 
 
-#if defined BB_FEATURE_MOUNT_LOOP
-static int set_loop(const char *device, const char *file, int offset, int *loopro)
-{
-       struct loop_info loopinfo;
-       int     fd, ffd, mode;
-       
-       mode = *loopro ? O_RDONLY : O_RDWR;
-       if ((ffd = open (file, mode)) < 0 && !*loopro
-           && (errno != EROFS || (ffd = open (file, mode = O_RDONLY)) < 0)) {
-         perror (file);
-         return 1;
-       }
-       if ((fd = open (device, mode)) < 0) {
-         close(ffd);
-         perror (device);
-         return 1;
-       }
-       *loopro = (mode == O_RDONLY);
-
-       memset(&loopinfo, 0, sizeof(loopinfo));
-       strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
-       loopinfo.lo_name[LO_NAME_SIZE-1] = 0;
-
-       loopinfo.lo_offset = offset;
-
-       loopinfo.lo_encrypt_key_size = 0;
-       if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
-               perror("ioctl: LOOP_SET_FD");
-               close(fd);
-               close(ffd);
-               return 1;
-       }
-       if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
-               (void) ioctl(fd, LOOP_CLR_FD, 0);
-               perror("ioctl: LOOP_SET_STATUS");
-               close(fd);
-               close(ffd);
-               return 1;
-       }
-       close(fd);
-       close(ffd);
-       return 0;
-}
-
-char *find_unused_loop_device (void)
-{
-       char dev[20];
-       int i, fd;
-       struct stat statbuf;
-       struct loop_info loopinfo;
-
-       for(i = 0; i <= 7; i++) {
-           sprintf(dev, "/dev/loop%d", i);
-           if (stat (dev, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) {
-               if ((fd = open (dev, O_RDONLY)) >= 0) {
-                   if(ioctl (fd, LOOP_GET_STATUS, &loopinfo) == -1) {
-                       if (errno == ENXIO) { /* probably free */
-                           close (fd);
-                           return strdup(dev);
-                       }
-                   }
-                   close (fd);
-               }
-           }
-       }
-        return NULL;
-}
-#endif /* BB_FEATURE_MOUNT_LOOP */
-
 /* Seperate standard mount options from the nonstandard string options */
 static void
 parse_mount_options ( char *options, unsigned long *flags, char *strflags)
index 3c1568a..4b0901f 100644 (file)
@@ -51,8 +51,6 @@
 #include <sys/ioctl.h>
 #include <linux/loop.h>
 
-static int set_loop(const char *device, const char *file, int offset, int *loopro);
-static char *find_unused_loop_device (void);
 
 static int use_loop = 0;
 #endif
@@ -177,75 +175,6 @@ extern void whine_if_fstab_is_missing()
 #endif
 
 
-#if defined BB_FEATURE_MOUNT_LOOP
-static int set_loop(const char *device, const char *file, int offset, int *loopro)
-{
-       struct loop_info loopinfo;
-       int     fd, ffd, mode;
-       
-       mode = *loopro ? O_RDONLY : O_RDWR;
-       if ((ffd = open (file, mode)) < 0 && !*loopro
-           && (errno != EROFS || (ffd = open (file, mode = O_RDONLY)) < 0)) {
-         perror (file);
-         return 1;
-       }
-       if ((fd = open (device, mode)) < 0) {
-         close(ffd);
-         perror (device);
-         return 1;
-       }
-       *loopro = (mode == O_RDONLY);
-
-       memset(&loopinfo, 0, sizeof(loopinfo));
-       strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
-       loopinfo.lo_name[LO_NAME_SIZE-1] = 0;
-
-       loopinfo.lo_offset = offset;
-
-       loopinfo.lo_encrypt_key_size = 0;
-       if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
-               perror("ioctl: LOOP_SET_FD");
-               close(fd);
-               close(ffd);
-               return 1;
-       }
-       if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
-               (void) ioctl(fd, LOOP_CLR_FD, 0);
-               perror("ioctl: LOOP_SET_STATUS");
-               close(fd);
-               close(ffd);
-               return 1;
-       }
-       close(fd);
-       close(ffd);
-       return 0;
-}
-
-char *find_unused_loop_device (void)
-{
-       char dev[20];
-       int i, fd;
-       struct stat statbuf;
-       struct loop_info loopinfo;
-
-       for(i = 0; i <= 7; i++) {
-           sprintf(dev, "/dev/loop%d", i);
-           if (stat (dev, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) {
-               if ((fd = open (dev, O_RDONLY)) >= 0) {
-                   if(ioctl (fd, LOOP_GET_STATUS, &loopinfo) == -1) {
-                       if (errno == ENXIO) { /* probably free */
-                           close (fd);
-                           return strdup(dev);
-                       }
-                   }
-                   close (fd);
-               }
-           }
-       }
-        return NULL;
-}
-#endif /* BB_FEATURE_MOUNT_LOOP */
-
 /* Seperate standard mount options from the nonstandard string options */
 static void
 parse_mount_options ( char *options, unsigned long *flags, char *strflags)
index 643c3b5..5ff03d7 100644 (file)
--- a/utility.c
+++ b/utility.c
@@ -1169,6 +1169,74 @@ extern int del_loop(const char *device)
     close(fd);
     return( TRUE);
 }
-#endif
+
+extern int set_loop(const char *device, const char *file, int offset, int *loopro)
+{
+       struct loop_info loopinfo;
+       int     fd, ffd, mode;
+       
+       mode = *loopro ? O_RDONLY : O_RDWR;
+       if ((ffd = open (file, mode)) < 0 && !*loopro
+           && (errno != EROFS || (ffd = open (file, mode = O_RDONLY)) < 0)) {
+         perror (file);
+         return 1;
+       }
+       if ((fd = open (device, mode)) < 0) {
+         close(ffd);
+         perror (device);
+         return 1;
+       }
+       *loopro = (mode == O_RDONLY);
+
+       memset(&loopinfo, 0, sizeof(loopinfo));
+       strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
+       loopinfo.lo_name[LO_NAME_SIZE-1] = 0;
+
+       loopinfo.lo_offset = offset;
+
+       loopinfo.lo_encrypt_key_size = 0;
+       if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
+               perror("ioctl: LOOP_SET_FD");
+               close(fd);
+               close(ffd);
+               return 1;
+       }
+       if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
+               (void) ioctl(fd, LOOP_CLR_FD, 0);
+               perror("ioctl: LOOP_SET_STATUS");
+               close(fd);
+               close(ffd);
+               return 1;
+       }
+       close(fd);
+       close(ffd);
+       return 0;
+}
+
+extern char *find_unused_loop_device (void)
+{
+       char dev[20];
+       int i, fd;
+       struct stat statbuf;
+       struct loop_info loopinfo;
+
+       for(i = 0; i <= 7; i++) {
+           sprintf(dev, "/dev/loop%d", i);
+           if (stat (dev, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) {
+               if ((fd = open (dev, O_RDONLY)) >= 0) {
+                   if(ioctl (fd, LOOP_GET_STATUS, &loopinfo) == -1) {
+                       if (errno == ENXIO) { /* probably free */
+                           close (fd);
+                           return strdup(dev);
+                       }
+                   }
+                   close (fd);
+               }
+           }
+       }
+        return NULL;
+}
+#endif /* BB_FEATURE_MOUNT_LOOP */
+
 
 /* END CODE */