X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcharconv.tcl;h=f43c8152eaadaa6d19077844a299e16bf9b36ba5;hp=45f6e13336a98548db85a9c5fada13b0f9ed78cd;hb=8626b7019b5d3d9c9594f20025e97d06a2d590fc;hpb=39d32c922161800240dfcfb2b833e55872dfb2ee
diff --git a/src/charconv.tcl b/src/charconv.tcl
index 45f6e13..f43c815 100755
--- a/src/charconv.tcl
+++ b/src/charconv.tcl
@@ -2,7 +2,7 @@
# the next line restats using tclsh \
exec tclsh "$0" "$@"
#
-# $Id: charconv.tcl,v 1.11 2006-02-23 13:15:43 adam Exp $
+# $Id: charconv.tcl,v 1.12 2006-04-19 23:15:39 adam Exp $
proc usage {} {
puts {charconv.tcl: [-p prefix] [-s split] [-o ofile] file ... }
@@ -255,11 +255,12 @@ proc dump_trie {ofilehandle} {
"
}
-proc readfile {fname ofilehandle prefix omits} {
+proc readfile {fname ofilehandle prefix omits reverse} {
global trie
set marc_lines 0
set ucs_lines 0
+ set utf_lines 0
set codename_lines 0
set lineno 0
set f [open $fname r]
@@ -290,12 +291,21 @@ proc readfile {fname ofilehandle prefix omits} {
}
} elseif {[regexp {} $line s]} {
if {[string length $ucs]} {
- for {set i 0} {$i < [string length $marc]} {incr i 2} {
- lappend hex [string range $marc $i [expr $i+1]]
+ if {$reverse} {
+ for {set i 0} {$i < [string length $utf]} {incr i 2} {
+ lappend hex [string range $utf $i [expr $i+1]]
+ }
+ # puts "ins_trie $hex $marc
+ ins_trie $hex $marc $combining $codename
+ unset hex
+ } else {
+ for {set i 0} {$i < [string length $marc]} {incr i 2} {
+ lappend hex [string range $marc $i [expr $i+1]]
+ }
+ # puts "ins_trie $hex $ucs"
+ ins_trie $hex $ucs $combining $codename
+ unset hex
}
- # puts "ins_trie $hex $ucs"
- ins_trie $hex $ucs $combining $codename
- unset hex
}
set marc {}
set uni {}
@@ -319,6 +329,8 @@ proc readfile {fname ofilehandle prefix omits} {
set combining 1
} elseif {[regexp {([0-9A-Fa-f]*)} $line s ucs]} {
incr ucs_lines
+ } elseif {[regexp {([0-9A-Fa-f]*)} $line s utf]} {
+ incr utf_lines
}
}
close $f
@@ -328,6 +340,7 @@ set verbose 0
set ifile {}
set ofile out.c
set prefix {c}
+set reverse_map 0
# Parse command line
set l [llength $argv]
set i 0
@@ -362,6 +375,9 @@ while {$i < $l} {
}
lappend omits $arg
}
+ -r {
+ set reverse_map 1
+ }
default {
lappend ifiles $arg
}
@@ -377,7 +393,7 @@ set ofilehandle [open $ofile w]
preamble_trie $ofilehandle
foreach ifile $ifiles {
- readfile $ifile $ofilehandle $prefix $omits
+ readfile $ifile $ofilehandle $prefix $omits $reverse_map
}
close $ofilehandle