From: Adam Dickmeiss Date: Sat, 22 Sep 2007 18:55:02 +0000 (+0000) Subject: Remove duplicates (already existing) in flat entries for MARC-8 X-Git-Tag: YAZ.3.0.15.snap.5.oct~8 X-Git-Url: http://sru.miketaylor.org.uk/cgi-bin?a=commitdiff_plain;h=e77f334b9b8b6d0ba01b3ede0f58b99ac561dd2d;p=yaz-moved-to-github.git Remove duplicates (already existing) in flat entries for MARC-8 tries. Previously only duplicates in index tries were treated. This ensures that only first sequence (of multiple) is used for conversion and takes precedence. For example utf E38080 is converted then converted to marc8 212321 (not marc8 212320). --- diff --git a/src/charconv.tcl b/src/charconv.tcl index dc494b1..b37b0d8 100755 --- a/src/charconv.tcl +++ b/src/charconv.tcl @@ -2,7 +2,7 @@ # the next line restarts using tclsh \ if [ -f /usr/local/bin/tclsh8.4 ]; then exec tclsh8.4 "$0" "$@"; else exec tclsh "$0" "$@"; fi # -# $Id: charconv.tcl,v 1.19 2007-09-17 19:18:27 adam Exp $ +# $Id: charconv.tcl,v 1.20 2007-09-22 18:55:02 adam Exp $ proc usage {} { puts {charconv.tcl: [-p prefix] [-s split] [-o ofile] file ... } @@ -147,7 +147,18 @@ proc ins_trie_r {from to combining codename this} { set trie($this,type) f } if {$trie($this,type) == "f"} { - lappend trie($this,content) [list $from $to $combining $codename] + set dup 0 + if {[info exists trie($this,content)]} { + foreach e $trie($this,content) { + set efrom [lindex $e 0] + if { $efrom == $from } { + set dup 1 + } + } + } + if { $dup == 0 } { + lappend trie($this,content) [list $from $to $combining $codename] + } # split ? if {[llength $trie($this,content)] > $trie(split)} {