let text_dir = Filename.concat (File_store.txtdir ()) "peers" type t = { path: string; pack: Header_pack.t } let fold fn init = match Sys.readdir text_dir with | exception (Sys_error msg) -> prerr_endline msg; init | dirs -> let read_pack init path = let fullpath = Filename.concat text_dir path in if Sys.is_directory fullpath then begin let pack_path = Filename.concat fullpath "index.pck" in match Sys.file_exists pack_path with | false -> Printf.eprintf "Missing index.pck for %s\n" path; init | true -> match Header_pack.of_string (File_store.to_string pack_path) with | Error s -> Printf.eprintf "%s %s\n" s pack_path; init | Ok pack -> fn init { path; pack } end else init in Array.fold_left read_pack init dirs let scheme url = let colon_idx = String.index_from url 0 ':' in let scheme = String.sub url 0 colon_idx in (* let remain = String.(sub url (colon_idx+1) (length url - length scheme - 1)) in*) scheme