From 1a4e67c143e427ac922ff0160c59839b0b2a3eed Mon Sep 17 00:00:00 2001 From: Nahuel ANGELINETTI Date: Mon, 4 May 2009 11:22:15 +0200 Subject: [PATCH] (bug #3183) fix the SetMarcUnicodeFlag function This patch fix the funciton SetMarcUnicodeFlag for UNIMARC support, now the function will fix the length of the field, and set encoding as "50 " instead of "5050". Signed-off-by: Galen Charlton --- C4/Charset.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/C4/Charset.pm b/C4/Charset.pm index 5ca40daf82..001cf01001 100644 --- a/C4/Charset.pm +++ b/C4/Charset.pm @@ -238,7 +238,13 @@ sub SetMarcUnicodeFlag { } elsif ($marc_flavour eq "UNIMARC") { if (my $field = $marc_record->field('100')) { my $sfa = $field->subfield('a'); - substr($sfa, 26, 4) = '5050'; + + my $subflength = 36; + # fix the length of the field + $sfa = substr $sfa, 0, $subflength if (length($sfa) > $subflength); + $sfa = sprintf( "%-*s", 35, $sfa ) if (length($sfa) < $subflength); + + substr($sfa, 26, 4) = '50 '; $field->update('a' => $sfa); } } else { -- 2.39.5