(* filter.ml - Don Yang (uguu.org) Remove trailing whitespaces. 05/12/02 *) type line = String of string | EOF;; let set_input () = if Array.length Sys.argv > 1 && Sys.argv.(1) <> "-" then open_in Sys.argv.(1) else stdin;; let set_output () = if Array.length Sys.argv > 2 then open_out Sys.argv.(2) else stdout;; let rec loadfile instream = match (try String (input_line instream) with End_of_file -> EOF) with String x -> [x] @ loadfile instream | _ -> [];; let rec rtrim str = let len = String.length str in if len > 0 then let x = (String.get str (len - 1)) in if x == ' ' || x == '\t' then rtrim (String.sub str 0 (len - 1)) else str else str;; let filter () = let data = loadfile (set_input()) in let outstream = set_output() in List.iter (fun x -> output_string outstream ((rtrim x) ^ "\n")) data;; filter();;