Add .gitignore file for git.
[virt-df.git] / lib / diskimage_fat.ml
index d428b95..123d1da 100644 (file)
@@ -2,19 +2,20 @@
    (C) Copyright 2007 Richard W.M. Jones, Red Hat Inc.
    http://libvirt.org/
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2 of the License, or (at your option) any later version,
+   with the OCaml linking exception described in ../COPYING.LIB.
 
-   This program is distributed in the hope that it will be useful,
+   This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 
    Support for FAT32.
 *)
@@ -82,14 +83,14 @@ and probe_superblock dev =
       root_directory_cluster : 32 : littleendian;
       _ : 16;                          (* FS information sector *)
       _ : 16;                          (* Backup of boot sector *)
-      pad : 12*8 : bitstring;          (* Reserved *)
+      _ : 12*8 : bitstring;            (* Reserved *)
       _ : 8;                           (* Physical drive number *)
       _ : 8;                           (* Reserved *)
       _ : 8;                           (* Extended boot signature *)
       serial : 32 : littleendian;      (* Serial number. *)
       volume_label : 88 : string;      (* Volume label. *)
       "FAT32   " : 64 : string;                (* FAT32 identifier. *)
-      code : 420*8 : bitstring;                (* Boot code. *)
+      _ : 420*8 : bitstring;           (* Boot code. *)
       0x55AA : 16 } ->                 (* End of bootsector magic. *)
 
       let blocksize = bytes_per_sector * sectors_per_cluster in
@@ -142,7 +143,7 @@ and probe_superblock dev =
        fs_cb = callbacks ();
        fs_dev = fs_dev;
        fs_blocksize = blocksize;
-       fs_blocks_total = number_of_sectors *^ bytes_per_sector /^ blocksize;
+       fs_blocks_total = number_of_sectors *^ sectorsize /^ blocksize;
        fs_is_swap = false;
        fs_blocks_reserved = blocks_reserved;
        fs_blocks_avail = blocks_avail;
@@ -175,7 +176,7 @@ and iter_fat_entries { fat_dev = dev; fat_sectorsize = sectorsize;
                       fat_sectors_per_fat = size } f =
   let cn = ref ~^0 in
 
-  for i = 0 to size-1 do
+  for i = 0 to (Int63.to_int size)-1 do
     let sector =
       dev#read_bitstring ((start +^ Int63.of_int i) *^ sectorsize) sectorsize in
     let rec loop bits =
@@ -186,12 +187,13 @@ and iter_fat_entries { fat_dev = dev; fat_sectorsize = sectorsize;
            | 0 -> Free
            | 1 -> Reserved1
            | (0xffffff0|0xffffff1|0xffffff2|0xffffff3|
-                  0xffffff4|0xffffff5|0xffffff6) as r -> Reserved r
+                  0xffffff4|0xffffff5|0xffffff6) as r ->
+               Reserved (Int63.of_int r)
            | 0xffffff7 -> Bad
            | (0xffffff8|0xffffff9|0xffffffa|0xffffffb|
                   0xffffffc|0xffffffd|0xffffffe|
-                      0xfffffff) as r -> Last r
-           | _ -> Used e in
+                      0xfffffff) as r -> Last (Int63.of_int r)
+           | _ -> Used (Int63.of_int e) in
 
          if !cn >= ~^2 then f !cn e;
          cn := !cn +^ ~^1;