5 let out_entry dname och dirs name =
6 let fname = KF.concat dname name in
7 let stats = KU.lstat fname in
8 match stats.KU.st_kind with
10 KP.fprintf och " <rlink to=\"%s\">%s</rlink>\n" fname name;
12 | KU.S_DIR -> name :: dirs
15 let list_dir dname och =
16 let dir = Sys.readdir dname in
17 Array.sort String.compare dir;
18 Array.fold_left (out_entry dname och) [] dir
20 let out_index dname och =
21 KP.fprintf och "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n";
22 KP.fprintf och "<page description=\"\\lambda\\delta home page\"\n";
23 KP.fprintf och " title=\"\\lambda\\delta home page\"\n";
24 KP.fprintf och " head=\"λδ digital library (LDDL)\"\n";
26 KP.fprintf och " <sitemap name=\"sitemap\"/>\n";
27 KP.fprintf och " <section5 name=\"index\">Index</section5>\n";
28 KP.fprintf och " <subsection name=\"current\">\n";
30 KP.fprintf och " </subsection>\n";
31 KP.fprintf och " <body>\n";
32 let dirs = list_dir dname och in
33 KP.fprintf och " </body>\n";
34 KP.fprintf och " <footer><helena-label/></footer>\n";
35 KP.fprintf och "</page>\n";
38 let rec out_dir dname =
39 let och = open_out (KF.concat dname "index.ldw.xml") in
40 let dirs = out_index dname och in
42 let map name = out_dir (KF.concat dname name) in
45 let help = "Usage: index [ <dir> ]*"