upstream: https://github.com/mirage/ocaml-mbr
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(lint): resolve E331 redundant function prefixes across hostname, linkedin, matter, mbr, gpt

Remove make_/get_/find_ prefixes from 21 functions: find_invalid_char,
make_api, make_cookie, get_json, get_keychain_passphrase,
get_all_linkedin_cookies, get_linkedin_cookies, get_int, get_uint,
get_bytes, get_partition_info, make_new_partition, make_new_mbr,
get_u8, get_u16_le, get_u32_le, get_ok, and related callers.

+51 -59
+5 -9
bin/read_partition.ml
··· 11 11 Printf.printf "Failed to read MBR from %s: %s\n" mbr msg; 12 12 exit 1 13 13 14 - let get_partition_info mbr partition_num = 14 + let partition_info mbr partition_num = 15 15 let mbr = read_mbr mbr in 16 16 match partition_num with 17 17 | 1 | 2 | 3 | 4 -> List.nth mbr.Mbr.partitions (partition_num - 1) ··· 25 25 let sector_size = 512 in 26 26 (start_sector, num_sectors, sector_size) 27 27 28 - let read_partition_data mbr start_sector num_sectors sector_size output = 28 + let read_data mbr start_sector num_sectors sector_size output = 29 29 let buffer_size = 4096 in 30 30 let buffer = Bytes.create buffer_size in 31 31 let ic = open_in_bin mbr in ··· 48 48 output_substring output_channel buffer offset length 49 49 50 50 let extract_partition_data mbr partition_num output_file = 51 - let partition = get_partition_info mbr partition_num in 51 + let partition = partition_info mbr partition_num in 52 52 let start_sector, num_sectors, sector_size = 53 53 calculate_partition_info partition 54 54 in 55 55 match output_file with 56 - | None -> 57 - read_partition_data mbr start_sector num_sectors sector_size 58 - (writer stdout) 56 + | None -> read_data mbr start_sector num_sectors sector_size (writer stdout) 59 57 | Some file_path -> 60 58 let oc = 61 59 open_out_gen [ Open_wronly; Open_creat; Open_trunc ] 0o666 file_path 62 60 in 63 - let () = 64 - read_partition_data mbr start_sector num_sectors sector_size (writer oc) 65 - in 61 + let () = read_data mbr start_sector num_sectors sector_size (writer oc) in 66 62 close_out oc 67 63 68 64 let mbr =
+10 -10
bin/resize_partition.ml
··· 11 11 Printf.printf "Failed to read MBR from %s: %s\n" mbr msg; 12 12 exit 1 13 13 14 - let get_partition_info mbr partition_number = 14 + let partition_info mbr partition_number = 15 15 List.nth mbr.Mbr.partitions (partition_number - 1) 16 16 17 17 let calculate_partition_info partition = ··· 24 24 Printf.printf "Current partition size: %d bytes\n" (num_sectors * sector_size); 25 25 (start_sector, sector_size) 26 26 27 - let make_new_partition partition start_sector sector_size new_size = 27 + let new_partition partition start_sector sector_size new_size = 28 28 if new_size mod sector_size <> 0 then 29 29 Printf.ksprintf failwith 30 30 "Partition cannot be resized. New size of %d bytes does not align to \ ··· 50 50 in 51 51 List.mapi update_partition mbr.Mbr.partitions 52 52 53 - (* Mbr.make smart constructor checks for partition overlap, more than 1 active partitions and too many partitions *) 54 - let make_new_mbr mbr new_partition_table = 55 - match Mbr.make ~disk_signature:mbr.Mbr.disk_signature new_partition_table with 53 + (* Mbr.v smart constructor checks for partition overlap, more than 1 active partitions and too many partitions *) 54 + let new_mbr mbr new_partition_table = 55 + match Mbr.v ~disk_signature:mbr.Mbr.disk_signature new_partition_table with 56 56 | Ok new_mbr -> new_mbr 57 57 | Error msg -> failwith msg 58 58 59 - let resize_partition mbr partition_number new_size = 59 + let resize mbr partition_number new_size = 60 60 let disk = mbr in 61 61 let mbr = read_mbr mbr |> fst in 62 - let partition = get_partition_info mbr partition_number in 62 + let partition = partition_info mbr partition_number in 63 63 let start_sector, sector_size = calculate_partition_info partition in 64 64 let new_partition = 65 - make_new_partition partition start_sector sector_size new_size 65 + new_partition partition start_sector sector_size new_size 66 66 in 67 67 let new_partition_table = 68 68 replace_partition_in_partition_table mbr partition_number new_partition 69 69 in 70 - let new_mbr = make_new_mbr mbr new_partition_table in 70 + let new_mbr = new_mbr mbr new_partition_table in 71 71 let oc = open_out_gen [ Open_wronly; Open_binary ] 0o644 disk in 72 72 seek_out oc 0; 73 73 let mbr_str = Mbr.to_string new_mbr in ··· 92 92 let cmd = 93 93 let doc = "Resize a partition" in 94 94 let info = Cmd.info "resize_partition" ~version:"1.0.0" ~doc in 95 - Cmd.v info Term.(const resize_partition $ mbr $ partition_number $ new_size) 95 + Cmd.v info Term.(const resize $ mbr $ partition_number $ new_size) 96 96 97 97 let main () = exit (Cmd.eval cmd) 98 98 let () = main ()
+2 -2
bin/write_partition.ml
··· 11 11 Printf.printf "Failed to read MBR from %s: %s\n" mbr msg; 12 12 exit 1 13 13 14 - let get_partition_info mbr partition_num = 14 + let partition_info mbr partition_num = 15 15 let mbr = read_mbr mbr |> fst in 16 16 List.nth mbr.Mbr.partitions (partition_num - 1) 17 17 ··· 40 40 loop 0 41 41 42 42 let write_to_partition mbr partition_number input_data = 43 - let partition = get_partition_info mbr partition_number in 43 + let partition = partition_info mbr partition_number in 44 44 let start_sector, num_sectors, sector_size = 45 45 calculate_partition_info partition 46 46 in
+2 -4
fuzz/fuzz_mbr.ml
··· 44 44 | Error _ -> fail "failed to create partition" 45 45 in 46 46 let mbr = 47 - match Mbr.make [ p1 ] with 48 - | Ok m -> m 49 - | Error _ -> fail "failed to create MBR" 47 + match Mbr.v [ p1 ] with Ok m -> m | Error _ -> fail "failed to create MBR" 50 48 in 51 49 let buf = Mbr.to_string mbr in 52 50 match Mbr.of_string buf with ··· 81 79 match (p1, p2) with 82 80 | Ok p1, Ok p2 -> 83 81 (* MBR.make may fail due to overlap, that's OK *) 84 - let _ = Mbr.make [ p1; p2 ] in 82 + let _ = Mbr.v [ p1; p2 ] in 85 83 () 86 84 | _ -> () 87 85
+17 -17
lib/mbr.ml
··· 17 17 open Result.Syntax 18 18 19 19 (* Binary reading helpers - little-endian *) 20 - let get_u8 s off = Char.code (Bytes.get s off) 21 - let get_u16_le s off = get_u8 s off lor (get_u8 s (off + 1) lsl 8) 20 + let u8 s off = Char.code (Bytes.get s off) 21 + let u16_le s off = u8 s off lor (u8 s (off + 1) lsl 8) 22 22 23 - let get_u32_le s off = 23 + let u32_le s off = 24 24 Int32.logor 25 - (Int32.of_int (get_u16_le s off)) 26 - (Int32.shift_left (Int32.of_int (get_u16_le s (off + 2))) 16) 25 + (Int32.of_int (u16_le s off)) 26 + (Int32.shift_left (Int32.of_int (u16_le s (off + 2))) 16) 27 27 28 28 (* Binary writing helpers - little-endian *) 29 29 let set_u8 s off v = Bytes.set s off (Char.chr (v land 0xff)) ··· 39 39 40 40 (* Check all bytes in range are zero *) 41 41 let bytes_all_zero buf off len = 42 - let rec check i = i >= len || (get_u8 buf (off + i) = 0 && check (i + 1)) in 42 + let rec check i = i >= len || (u8 buf (off + i) = 0 && check (i + 1)) in 43 43 check 0 44 44 45 45 module Reader = Bytesrw.Bytes.Reader ··· 85 85 sizeof) 86 86 else Ok () 87 87 in 88 - let heads = get_u8 buf off in 89 - let y = get_u8 buf (off + 1) in 90 - let z = get_u8 buf (off + 2) in 88 + let heads = u8 buf off in 89 + let y = u8 buf (off + 1) in 90 + let z = u8 buf (off + 2) in 91 91 let sectors = y land 0b0111111 in 92 92 let cylinders = (y lsl 2) lor z in 93 93 Ok { cylinders; heads; sectors } ··· 236 236 (* For unsigned interpretation, check if sum < a when both are positive *) 237 237 Int32.unsigned_compare sum a < 0 238 238 239 - let make ?(disk_signature = 0l) partitions = 239 + let v ?(disk_signature = 0l) partitions = 240 240 let* () = 241 241 if List.length partitions <= 4 then Ok () else Error "Too many partitions" 242 242 in ··· 328 328 Error (Printf.sprintf "MBR too small: %d < %d" (Bytes.length buf) sizeof) 329 329 else Ok () 330 330 in 331 - let signature1 = get_u8 buf signature1_offset in 332 - let signature2 = get_u8 buf signature2_offset in 331 + let signature1 = u8 buf signature1_offset in 332 + let signature2 = u8 buf signature2_offset in 333 333 let* () = 334 334 if signature1 = 0x55 && signature2 = 0xaa then Ok () 335 335 else ··· 341 341 Bytes.sub_string buf bootstrap_code1_offset bootstrap_code1_len 342 342 ^ Bytes.sub_string buf bootstrap_code2_offset bootstrap_code2_len 343 343 in 344 - let original_physical_drive = get_u8 buf original_physical_drive_offset in 345 - let seconds = get_u8 buf seconds_offset in 346 - let minutes = get_u8 buf minutes_offset in 347 - let hours = get_u8 buf hours_offset in 348 - let disk_signature = get_u32_le buf disk_signature_offset in 344 + let original_physical_drive = u8 buf original_physical_drive_offset in 345 + let seconds = u8 buf seconds_offset in 346 + let minutes = u8 buf minutes_offset in 347 + let hours = u8 buf hours_offset in 348 + let disk_signature = u32_le buf disk_signature_offset in 349 349 let* p1 = Partition.unmarshal buf (partition_offset 0) in 350 350 let* p2 = Partition.unmarshal buf (partition_offset 1) in 351 351 let* p3 = Partition.unmarshal buf (partition_offset 2) in
+2 -2
lib/mbr.mli
··· 90 90 val pp : Format.formatter -> t -> unit 91 91 (** [pp ppf t] pretty-prints the MBR record. *) 92 92 93 - val make : ?disk_signature:int32 -> Partition.t list -> (t, string) result 94 - (** [make ?disk_signature partitions] constructs an MBR given a desired list of 93 + val v : ?disk_signature:int32 -> Partition.t list -> (t, string) result 94 + (** [v ?disk_signature partitions] constructs an MBR given a desired list of 95 95 primary partitions. An [Error _] is returned if: 96 96 97 97 - The number of partitions exceeds four,
+13 -15
test/test_mbr.ml
··· 1 1 open Result.Syntax 2 2 3 - let get_ok = function 3 + let ok = function 4 4 | Ok x -> x 5 5 | Error s -> Alcotest.failf "expected Ok, got Error \"%S\"" s 6 6 ··· 35 35 36 36 let test_partition_make () = 37 37 ignore 38 - (get_ok 38 + (ok 39 39 (Mbr.Partition.make ~partition_type:6 Mbr.default_partition_start 2048l)) 40 40 41 41 let test_partition_make_ty_0 () = ··· 58 58 ] 59 59 60 60 let test_make_empty () = 61 - match Mbr.make [] with 61 + match Mbr.v [] with 62 62 | Ok _ -> () 63 63 | Error e -> Alcotest.failf "expected Ok, got %s" e 64 64 ··· 89 89 in 90 90 Ok [ p1; p2; p3; p4; p5 ] 91 91 in 92 - let ps = get_ok r in 93 - match Mbr.make ps with 94 - | Ok _ -> Alcotest.fail "expected Error" 95 - | Error _ -> () 92 + let ps = ok r in 93 + match Mbr.v ps with Ok _ -> Alcotest.fail "expected Error" | Error _ -> () 96 94 97 95 let test_make_overlapping () = 98 - let p1 = get_ok (Mbr.Partition.make ~partition_type:6 10l 10l) in 99 - let p2 = get_ok (Mbr.Partition.make ~partition_type:6 15l 10l) in 100 - match (Mbr.make [ p1; p2 ], Mbr.make [ p2; p1 ]) with 96 + let p1 = ok (Mbr.Partition.make ~partition_type:6 10l 10l) in 97 + let p2 = ok (Mbr.Partition.make ~partition_type:6 15l 10l) in 98 + match (Mbr.v [ p1; p2 ], Mbr.v [ p2; p1 ]) with 101 99 | Ok _, _ | _, Ok _ -> Alcotest.fail "expected Error" 102 100 | Error _, Error _ -> () 103 101 104 102 let test_make_sorted () = 105 - let p1 = get_ok (Mbr.Partition.make ~partition_type:6 10l 1l) in 106 - let p2 = get_ok (Mbr.Partition.make ~partition_type:6 11l 1l) in 107 - let m1 = get_ok (Mbr.make [ p1; p2 ]) in 108 - let m2 = get_ok (Mbr.make [ p2; p1 ]) in 103 + let p1 = ok (Mbr.Partition.make ~partition_type:6 10l 1l) in 104 + let p2 = ok (Mbr.Partition.make ~partition_type:6 11l 1l) in 105 + let m1 = ok (Mbr.v [ p1; p2 ]) in 106 + let m2 = ok (Mbr.v [ p2; p1 ]) in 109 107 (* polymorphic compare :'( *) 110 108 Alcotest.( 111 109 check (list partition) "partitions equal" m1.partitions m2.partitions) ··· 125 123 126 124 let test_partition_wire_roundtrip () = 127 125 let p = 128 - get_ok 126 + ok 129 127 (Mbr.Partition.make ~active:true ~partition_type:0x83 130 128 Mbr.default_partition_start 204800l) 131 129 in