module KF = Filename
module KP = Printf
module KU = Unix
let out_entry dname och dirs name =
let fname = KF.concat dname name in
let stats = KU.lstat fname in
match stats.KU.st_kind with
| KU.S_REG ->
KP.fprintf och " %s\n" fname name;
dirs
| KU.S_DIR -> name :: dirs
| _ -> dirs
let list_dir dname och =
let dir = Sys.readdir dname in
Array.sort String.compare dir;
Array.fold_left (out_entry dname och) [] dir
let out_index dname och =
KP.fprintf och "\n\n";
KP.fprintf och "\n";
KP.fprintf och " \n";
KP.fprintf och " Index\n";
KP.fprintf och " \n";
KP.fprintf och " \n";
KP.fprintf och " \n";
let dirs = list_dir dname och in
KP.fprintf och " \n";
KP.fprintf och " \n";
KP.fprintf och "\n";
dirs
let rec out_dir dname =
let och = open_out (KF.concat dname "index.ldw.xml") in
let dirs = out_index dname och in
close_out och;
let map name = out_dir (KF.concat dname name) in
List.iter map dirs
let help = "Usage: index [
]*"
let main =
Arg.parse [
] out_dir help