tar: support -T - and -X -
[oweals/busybox.git] / libbb / loop.c
index 204fcc982bc94c197ad4619acd8d533d6053e40d..b798932faf66aa0e68a8bb4095f9daf74dc26b2b 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
  * Copyright (C) 2005 by Rob Landley <rob@landley.net>
  *
- * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 #include "libbb.h"
 #include <linux/version.h>
@@ -56,7 +56,7 @@ char* FAST_FUNC query_loop(const char *device)
        fd = open(device, O_RDONLY);
        if (fd >= 0) {
                if (ioctl(fd, BB_LOOP_GET_STATUS, &loopinfo) == 0) {
-                       dev = xasprintf("%lu %s", (long) loopinfo.lo_offset,
+                       dev = xasprintf("%"OFF_FMT"u %s", (off_t) loopinfo.lo_offset,
                                        (char *)loopinfo.lo_file_name);
                }
                close(fd);
@@ -104,7 +104,8 @@ int FAST_FUNC set_loop(char **device, const char *file, unsigned long long offse
 
        /* Find a loop device.  */
        try = *device ? *device : dev;
-       for (i = 0; rc && i < 256; i++) {
+       /* 1048575 is a max possible minor number in Linux circa 2010 */
+       for (i = 0; rc && i < 1048576; i++) {
                sprintf(dev, LOOP_FORMAT, i);
 
                IF_FEATURE_MOUNT_LOOP_CREATE(errno = 0;)