(*Main parameter to the binary*) let param_cgi_target = ref "main.cgi" let usage_msg = "dir2safequery [-t ]" let speclist = ref [] let () = speclist := [ ("-t", Arg.Set_string param_cgi_target, "Set target page that will process the query"); ("-h", Arg.Unit (fun () -> Arg.usage !speclist usage_msg; flush stderr; raise (Arg.Help "")), "Print this help message") ] let get_selector_from path = (Filename.basename (Filename.dirname path)) let get_filename_from path = Filename.basename path let construct_uri_query target selector filename = Uri.make ~path:target ~query:[("d", [selector]); ("q", [filename]) ] () let wrap_to_ahref uri name = "" ^ name ^ "" let rec iter_lines cgi_target = try begin let line = read_line () in if Sys.is_regular_file line then begin wrap_to_ahref (construct_uri_query cgi_target (get_selector_from line) (get_filename_from line)) (get_filename_from line) |> print_endline end; iter_lines cgi_target end with | End_of_file -> () | Sys_error _ -> () let () = Arg.parse !speclist (fun _ -> ()) usage_msg; iter_lines !param_cgi_target .