Convert everything to use int63 type throughout.
[virt-df.git] / lib / diskimage_mbr.ml
index 07f9df8..30c5dc4 100644 (file)
@@ -26,10 +26,11 @@ open ExtList
 
 open Diskimage_utils
 
+open Int63.Operators
+
 let plugin_id = "mbr"
 
-let sector_size = 512
-let sector_size64 = 512L
+let sector_size = ~^512
 
 (* Maximum number of extended partitions possible. *)
 let max_extended_partitions = 100
@@ -47,8 +48,8 @@ let max_extended_partitions = 100
 class partition_device partno start size dev =
   let devname = dev#name in
   let name = sprintf "%s%d" devname partno in
-  let start = start *^ sector_size64 in
-  let size = size *^ sector_size64 in
+  let start = start *^ sector_size in
+  let size = size *^ sector_size in
 object (self)
   inherit offset_device name start size sector_size dev
 end
@@ -62,7 +63,7 @@ end
 let rec probe dev =
   (* Read the first sector. *)
   let bits =
-    try dev#read_bitstring 0L sector_size
+    try dev#read_bitstring ~^0 sector_size
     with exn -> raise Not_found in
 
   (* Does this match a likely-looking MBR? *)
@@ -116,11 +117,16 @@ and parse_mbr_entry dev i bits =
        part_dev = null_device; part_content = `Unknown }
 
 and make_mbr_entry part_status dev partno part_type first_lba part_size =
-  let first_lba = uint64_of_int32 first_lba in
-  let part_size = uint64_of_int32 part_size in
+  let first_lba = Int63.of_int32 first_lba in
+  let part_size = Int63.of_int32 part_size in
+  (*
+    XXX Used to be:
+  let first_lba = uint63_of_int32 first_lba in
+  let part_size = uint63_of_int32 part_size in
+  *)
   if !debug then
-    eprintf "make_mbr_entry: first_lba = %Lx part_size = %Lx\n%!"
-      first_lba part_size;
+    eprintf "make_mbr_entry: first_lba = %s part_size = %s\n%!"
+      (Int63.to_string first_lba) (Int63.to_string part_size);
   { part_status = part_status;
     part_type = part_type;
     part_dev = new partition_device partno first_lba part_size dev;
@@ -169,6 +175,7 @@ and probe_extended_partition max fd epart sect =
   else []
 *)
 
+(*
 (* Ugh, fake a UInt32 -> UInt64 conversion without sign extension, until
  * we get working UInt32/UInt64 modules in extlib.
  *)
@@ -176,3 +183,4 @@ and uint64_of_int32 u32 =
   let i64 = Int64.of_int32 u32 in
   if u32 >= 0l then i64
   else Int64.add i64 0x1_0000_0000_L
+*)