Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/libbb/loop.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 983 by niro, Fri Apr 24 18:33:46 2009 UTC revision 984 by niro, Sun May 30 11:32:42 2010 UTC
# Line 7  Line 7 
7   *   *
8   * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.   * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
9   */   */
   
10  #include "libbb.h"  #include "libbb.h"
   
 /* For 2.6, use the cleaned up header to get the 64 bit API. */  
11  #include <linux/version.h>  #include <linux/version.h>
12    
13  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
14  #include <linux/loop.h>  
15    /* For 2.6, use the cleaned up header to get the 64 bit API. */
16    /* linux/loop.h relies on __u64. Make sure we have that as a proper type
17     * until userspace is widely fixed. */
18    # if (defined __INTEL_COMPILER && !defined __GNUC__) \
19      || (defined __GNUC__ && defined __STRICT_ANSI__)
20    __extension__ typedef long long __s64;
21    __extension__ typedef unsigned long long __u64;
22    # endif
23    # include <linux/loop.h>
24  typedef struct loop_info64 bb_loop_info;  typedef struct loop_info64 bb_loop_info;
25  #define BB_LOOP_SET_STATUS LOOP_SET_STATUS64  # define BB_LOOP_SET_STATUS LOOP_SET_STATUS64
26  #define BB_LOOP_GET_STATUS LOOP_GET_STATUS64  # define BB_LOOP_GET_STATUS LOOP_GET_STATUS64
27    
 /* For 2.4 and earlier, use the 32 bit API (and don't trust the headers) */  
28  #else  #else
29  /* Stuff stolen from linux/loop.h for 2.4 and earlier kernels*/  
30  #include <linux/posix_types.h>  /* For 2.4 and earlier, use the 32 bit API (and don't trust the headers) */
31  #define LO_NAME_SIZE        64  /* Stuff stolen from linux/loop.h for 2.4 and earlier kernels */
32  #define LO_KEY_SIZE         32  # include <linux/posix_types.h>
33  #define LOOP_SET_FD         0x4C00  # define LO_NAME_SIZE        64
34  #define LOOP_CLR_FD         0x4C01  # define LO_KEY_SIZE         32
35  #define BB_LOOP_SET_STATUS  0x4C02  # define LOOP_SET_FD         0x4C00
36  #define BB_LOOP_GET_STATUS  0x4C03  # define LOOP_CLR_FD         0x4C01
37    # define BB_LOOP_SET_STATUS  0x4C02
38    # define BB_LOOP_GET_STATUS  0x4C03
39  typedef struct {  typedef struct {
40   int                lo_number;   int                lo_number;
41   __kernel_dev_t     lo_device;   __kernel_dev_t     lo_device;
# Line 60  char* FAST_FUNC query_loop(const char *d Line 68  char* FAST_FUNC query_loop(const char *d
68   return dev;   return dev;
69  }  }
70    
   
71  int FAST_FUNC del_loop(const char *device)  int FAST_FUNC del_loop(const char *device)
72  {  {
73   int fd, rc;   int fd, rc;
# Line 98  int FAST_FUNC set_loop(char **device, co Line 105  int FAST_FUNC set_loop(char **device, co
105   }   }
106    
107   /* Find a loop device.  */   /* Find a loop device.  */
108   try = *device ? : dev;   try = *device ? *device : dev;
109   for (i = 0; rc; i++) {   for (i = 0; rc; i++) {
110   sprintf(dev, LOOP_FORMAT, i);   sprintf(dev, LOOP_FORMAT, i);
111    

Legend:
Removed from v.983  
changed lines
  Added in v.984