]> err.no Git - util-linux/commitdiff
Merge remote branch 'origin/master' into HEAD
authorLaMont Jones <lamont@debian.org>
Fri, 14 May 2010 11:07:14 +0000 (05:07 -0600)
committerLaMont Jones <lamont@debian.org>
Fri, 14 May 2010 11:07:14 +0000 (05:07 -0600)
Conflicts:
lib/fsprobe.c
mount/lomount.c

1  2 
hwclock/hwclock.8
hwclock/hwclock.c
mount/Makefile.am
mount/lomount.c
mount/losetup.8
mount/mount.8
mount/mount.c

Simple merge
Simple merge
Simple merge
diff --cc mount/lomount.c
index 90bc92c08fb083ba493e41f779b48312d946eb19,6130be1dd58c1d2dd3d7ad6d39d2e02562d92ec4..db6d53269bd0127dd1fbf62fef75b227ba1f1bda
@@@ -989,9 -915,7 +991,9 @@@ main(int argc, char **argv) 
        int showdev = 0;
        int ro = 0;
        int pfd = -1;
-       unsigned long long off, slimit;
 +      int keysz = 0;
 +      int hash_pass = 1;
+       uintmax_t off = 0, slimit = 0;
        struct option longopts[] = {
                { "all", 0, 0, 'a' },
                { "set-capacity", 0, 0, 'c' },
        textdomain(PACKAGE);
  
        capacity = delete = find = all = 0;
-       off = 0;
-         slimit = 0;
        assoc = offset = sizelimit = encryption = passfd = NULL;
 +      keysize = NULL;
  
        progname = argv[0];
        if ((p = strrchr(progname, '/')) != NULL)
diff --cc mount/losetup.8
Simple merge
diff --cc mount/mount.8
Simple merge
diff --cc mount/mount.c
index 464ca54f80585ea110d7afb69442b6404e704627,969e81fc3901c84756acd50a40600ca221034ded..26a8afedd50ad6b6bfc0242b35a9b690ec7db238
@@@ -209,8 -201,8 +210,9 @@@ static int opt_nofail = 0
  
  static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_sizelimit,
          *opt_encryption, *opt_speed, *opt_comment, *opt_uhelper;
 +static const char *opt_keybits, *opt_nohashpass;
  
+ static int is_readonly(const char *node);
  static int mounted (const char *spec0, const char *node0);
  static int check_special_mountprog(const char *spec, const char *node,
                const char *type, int flags, char *extra_opts, int *status);
@@@ -1099,9 -1116,24 +1128,24 @@@ loop_check(const char **spec, const cha
        *type = opt_vfstype;
    }
  
 -  *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_sizelimit || opt_encryption);
 +  *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_sizelimit || opt_encryption || opt_keybits);
    *loopfile = *spec;
  
+   /* Automatically create a loop device from a regular file if a filesystem
+    * is not specified or the filesystem is known for libblkid (these
+    * filesystems work with block devices only).
+    *
+    * Note that there is not a restriction (on kernel side) that prevents regular
+    * file as a mount(2) source argument. A filesystem that is able to mount
+    * regular files could be implemented.
+    */
+   if (!*loop && (!*type || strcmp(*type, "auto") == 0 ||
+                          fsprobe_known_fstype(*type))) {
+     struct stat st;
+     if (stat(*loopfile, &st) == 0)
+       *loop = S_ISREG(st.st_mode);
+   }
    if (*loop) {
      *flags |= MS_LOOP;
      if (fake) {