ZOOM: new setting apdufile
[yaz-moved-to-github.git] / src / csvtodiag.tcl
index 0066a3f..12e263c 100644 (file)
@@ -1,8 +1,7 @@
 # This file is part of the YAZ toolkit
-# Copyright (c) Index Data 1996-2005
+# Copyright (C) Index Data
 # See the file LICENSE for details.
 #
-# $Id: csvtodiag.tcl,v 1.2 2005-04-22 14:51:11 adam Exp $
 #
 # Converts a CSV file with diagnostics to C+H file for easy
 # maintenance
@@ -17,8 +16,14 @@ proc csvtodiag {ifiles name alias} {
     set cfile [open [lindex $ifiles 1] w]
     set hfile [open [lindex $ifiles 2] w]
     set lineno 0
-    set preamble "/* Generated automatically by csvtodiag.tcl from [lindex $ifiles 0] */"
+    puts $cfile "/** \\file [lindex $ifiles 1]"
+    puts $hfile "/** \\file [lindex $ifiles 2]"
+    set preamble "    \\brief Diagnostics: Generated by csvtodiag.tcl from [lindex $ifiles 0] */"
     puts $cfile $preamble
+    puts $cfile "\#ifdef HAVE_CONFIG_H"
+    puts $cfile "\#include <config.h>"
+    puts $cfile "\#endif"
+
     puts $cfile "
 #include \"diag-entry.h\"
 \#include \"[lindex $ifiles 2]\"
@@ -89,3 +94,55 @@ YAZ_END_CDECL
     close $hfile
 }
 
+proc csvto_xml {csvfname xmlfname id} {
+    set xfile [open $xmlfname w]
+    set csv [open $csvfname r]
+
+    puts $xfile "<!-- Generated by csvtodiag.tcl from $csvfname -->"
+    puts $xfile "<informaltable id=\"${id}\">"
+    puts $xfile {<tgroup cols="2">}
+    puts $xfile {<colspec colwidth="1*" colname="code"></colspec>}
+    puts $xfile {<colspec colwidth="4*" colname="text"></colspec>}
+    puts $xfile {<thead>}
+    puts $xfile {<row>}
+    puts $xfile {<entry>Code</entry>}
+    puts $xfile {<entry>Text</entry>}
+    puts $xfile {</row>}
+    puts $xfile {</thead>}
+    puts $xfile {<tbody>}
+
+    set lineno 0
+    while {1} {
+       incr lineno
+       set cnt [gets $csv line]
+       if {$cnt < 0} {
+           break
+       }
+       if {[regexp {([0-9]+)[^\"]*"([^\"]*)"} $line s code msg]} {
+           puts $xfile {<row>}
+           puts $xfile {<entry>}
+           puts $xfile $code
+           puts $xfile {</entry><entry>}
+           puts $xfile $msg
+           puts $xfile {</entry>}
+           puts $xfile {</row>}
+       }
+    }
+    puts $xfile {</tbody>}
+    puts $xfile {</tgroup>}
+    puts $xfile {</informaltable>}
+
+    close $xfile
+    close $csv
+}
+
+if {[llength $argv] >= 4} {
+    set alias {}
+    if {[llength $argv] >= 5} {
+       set alias [lindex $argv 4]
+    }
+    csvtodiag [list [lindex $argv 0] [lindex $argv 1] [lindex $argv 2]] \
+       [lindex $argv 3] $alias
+} elseif {[llength $argv] == 3} {
+    csvto_xml [lindex $argv 0] [lindex $argv 1] [lindex $argv 2]
+}
\ No newline at end of file