/usr/lib/ocaml/biniou/bi_dump.ml is in libbiniou-ocaml-dev 1.0.9-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | open Printf
(*
let split s = Str.split (Str.regexp ",") s
*)
let split s =
let acc = ref [] in
let stop = ref (String.length s) in
for i = !stop - 1 downto 0 do
if s.[i] = ',' then (
let start = i + 1 in
acc := String.sub s start (!stop - start) :: !acc;
stop := i
)
done;
String.sub s 0 !stop :: !acc
let load_lines accu s =
let ic = open_in s in
let l = ref accu in
(try
while true do
l := input_line ic :: List.rev !l
done
with End_of_file ->
close_in ic
);
!l
let load ic =
let buf = Buffer.create 1000 in
try
while true do
Buffer.add_char buf (input_char ic);
done;
assert false
with End_of_file ->
Buffer.contents buf
let ( // ) = Filename.concat
let default_dict_path () =
try
match Sys.os_type with
"Unix" -> Some (Sys.getenv "HOME" // ".bdump-dict")
| "Win32" -> Some (Sys.getenv "HOMEPATH" // "_bdump-dict")
| "Cygwin" -> Some (Sys.getenv "HOME" // ".bdump-dict")
| _ -> None
with Not_found ->
None
let load_dictionary dic_file accu =
match dic_file with
None -> accu
| Some fn ->
if Sys.file_exists fn then
try
load_lines accu fn
with e ->
failwith (sprintf "Cannot load dictionary from %S: %s\n%!"
fn (Printexc.to_string e))
else
accu
let write_uniq oc a =
if Array.length a > 0 then (
fprintf oc "%s\n" a.(0);
ignore (
Array.fold_left (
fun last x ->
if last <> x then
fprintf oc "%s\n" x;
x
) a.(0) a
)
)
let save_dictionary dic_file l =
match dic_file with
None -> ()
| Some fn ->
let a = Array.of_list l in
Array.sort String.compare a;
let oc = open_out fn in
let finally () = close_out_noerr oc in
try
write_uniq oc a;
finally ()
with e ->
finally ();
raise e
|