Fix generation of locales with multiple variants

Serbian locales have triple components to represent the 2 variations of the
locale: Latin and Cyrillic. Previously the tools generatic the locale were
appending both definitions instead of differentiating them.

Reported by:	ache
Approved by:	re (gjb)
This commit is contained in:
Baptiste Daroussin 2016-06-20 06:45:42 +00:00
parent 0fbcaf7657
commit bd51ae1287
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=302026
16 changed files with 183 additions and 368 deletions

View File

@ -4,47 +4,47 @@
# -----------------------------------------------------------------------------
#
# int_curr_symbol (last character always SPACE)
RSD ""RSD
RSD
#
# currency_symbol
RSD""RSD
RSD
#
# mon_decimal_point
,"",
,
#
# mon_thousands_sep
."".
.
#
# mon_grouping
33
3
#
# positive_sign
""
#
# negative_sign
-""-
-
#
# int_frac_digits
00
0
#
# frac_digits
00
0
#
# p_cs_precedes
00
0
#
# p_sep_by_space
11
1
#
# n_cs_precedes
00
0
#
# n_sep_by_space
11
1
#
# p_sign_posn
11
1
#
# n_sign_posn
11
1
# EOF

View File

@ -16,7 +16,6 @@ LOCALES+= be_BY.CP1251
LOCALES+= be_BY.ISO8859-5
LOCALES+= be_BY.UTF-8
LOCALES+= bg_BG.CP1251
LOCALES+= bg_BG.UTF-8
LOCALES+= cs_CZ.UTF-8
LOCALES+= de_DE.UTF-8
LOCALES+= el_GR.ISO8859-7
@ -64,9 +63,8 @@ LOCALES+= ru_RU.UTF-8
LOCALES+= se_NO.UTF-8
LOCALES+= sk_SK.ISO8859-2
LOCALES+= sk_SK.UTF-8
LOCALES+= sl_SI.UTF-8
LOCALES+= sr_Cyrl_RS.ISO8859-5
LOCALES+= sr_Latn_RS.ISO8859-2
LOCALES+= sr_Cyrl_RS.UTF-8
LOCALES+= sr_Latn_RS.UTF-8
LOCALES+= sv_SE.UTF-8
LOCALES+= tr_TR.ISO8859-9
@ -97,6 +95,7 @@ SAME+= ar_SA.UTF-8 ar_MA.UTF-8
SAME+= ar_SA.UTF-8 ar_JO.UTF-8
SAME+= ar_SA.UTF-8 ar_EG.UTF-8
SAME+= ar_SA.UTF-8 ar_AE.UTF-8
SAME+= sr_Cyrl_RS.UTF-8 bg_BG.UTF-8
SAME+= es_MX.ISO8859-1 es_ES.ISO8859-15
SAME+= es_MX.ISO8859-1 es_ES.ISO8859-1
SAME+= es_MX.ISO8859-1 es_AR.ISO8859-1
@ -179,9 +178,11 @@ SAME+= fr_FR.UTF-8 fr_CA.ISO8859-1
SAME+= fr_FR.UTF-8 fr_BE.UTF-8
SAME+= fr_FR.UTF-8 fr_BE.ISO8859-15
SAME+= fr_FR.UTF-8 fr_BE.ISO8859-1
SAME+= sl_SI.UTF-8 sl_SI.ISO8859-2
SAME+= sl_SI.UTF-8 hr_HR.UTF-8
SAME+= sl_SI.UTF-8 hr_HR.ISO8859-2
SAME+= sr_Latn_RS.UTF-8 sr_Latn_RS.ISO8859-2
SAME+= sr_Latn_RS.UTF-8 sl_SI.UTF-8
SAME+= sr_Latn_RS.UTF-8 sl_SI.ISO8859-2
SAME+= sr_Latn_RS.UTF-8 hr_HR.UTF-8
SAME+= sr_Latn_RS.UTF-8 hr_HR.ISO8859-2
SAME+= hu_HU.UTF-8 hu_HU.ISO8859-2
SAME+= is_IS.ISO8859-15 is_IS.ISO8859-1
SAME+= it_IT.ISO8859-15 it_IT.ISO8859-1
@ -199,7 +200,6 @@ SAME+= pt_PT.ISO8859-15 pt_BR.ISO8859-1
SAME+= pt_PT.UTF-8 pt_BR.UTF-8
SAME+= ro_RO.UTF-8 ro_RO.ISO8859-2
SAME+= se_NO.UTF-8 se_FI.UTF-8
SAME+= sr_Latn_RS.UTF-8 sr_Cyrl_RS.UTF-8
SAME+= zh_Hans_CN.GBK zh_Hans_CN.GB18030
SAME+= zh_Hans_CN.GBK zh_Hans_CN.eucCN
SAME+= ko_KR.eucKR ko_KR.CP949 # legacy (same charset)

View File

@ -1,17 +0,0 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
#
# yesexpr
^(([dD]([aA])?)|([dD])|([yY]([eE][sS])?)|([yY]))
#
# noexpr
^(([nN]([eE])?)|([nN])|([nN]([oO])?)|([nN]))
#
# yesstr
da:d:DA:D:yes:y:YES:Y
#
# nostr
ne:n:NE:N:no:n:NO:N
# EOF

View File

@ -4,14 +4,14 @@
# -----------------------------------------------------------------------------
#
# yesexpr
^(([Դ]([а])?)|([Դ])|([yY]([eE][sS])?)|([yY]))""^(([dD]([aA])?)|([dD])|([yY]([eE][sS])?)|([yY]))
^(([Դ]([а])?)|([Դ])|([yY]([eE][sS])?)|([yY]))
#
# noexpr
^(([ݽ]([յ])?)|([ݽ])|([nN]([oO])?)|([nN]))""^(([nN]([eE])?)|([nN])|([nN]([oO])?)|([nN]))
^(([ݽ]([յ])?)|([ݽ])|([nN]([oO])?)|([nN]))
#
# yesstr
ÔÐ:Ô:´°:´:yes:y:YES:Y""da:d:DA:D:yes:y:YES:Y
ÔÐ:Ô:´°:´:yes:y:YES:Y
#
# nostr
ÝÕ:Ý:½µ:½:no:n:NO:N""ne:n:NE:N:no:n:NO:N
ÝÕ:Ý:½µ:½:no:n:NO:N
# EOF

View File

@ -1,17 +0,0 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
#
# yesexpr
^(([dD]([aA])?)|([dD])|([yY]([eE][sS])?)|([yY]))""^(([dD]([aA])?)|([dD])|([yY]([eE][sS])?)|([yY]))
#
# noexpr
^(([hH]([eE])?)|([hH])|([nN]([oO])?)|([nN]))""^(([nN]([eE])?)|([nN])|([nN]([oO])?)|([nN]))
#
# yesstr
da:d:DA:D:yes:y:YES:Y""da:d:DA:D:yes:y:YES:Y
#
# nostr
he:h:HE:H:no:n:NO:N""ne:n:NE:N:no:n:NO:N
# EOF

View File

@ -4,14 +4,14 @@
# -----------------------------------------------------------------------------
#
# yesexpr
^(([дД]([аА])?)|([дД])|([yY]([eE][sS])?)|([yY]))""^(([dD]([aA])?)|([dD])|([yY]([eE][sS])?)|([yY]))
^(([dD]([aA])?)|([dD])|([yY]([eE][sS])?)|([yY]))
#
# noexpr
^(([нН]([еЕ])?)|([нН])|([nN]([oO])?)|([nN]))""^(([nN]([eE])?)|([nN])|([nN]([oO])?)|([nN]))
^(([nN]([eE])?)|([nN])|([nN]([oO])?)|([nN]))
#
# yesstr
да:д:ДА:Д:yes:y:YES:Y""da:d:DA:D:yes:y:YES:Y
da:d:DA:D:yes:y:YES:Y
#
# nostr
не:н:НЕ:Н:no:n:NO:N""ne:n:NE:N:no:n:NO:N
ne:n:NE:N:no:n:NO:N
# EOF

View File

@ -18,7 +18,6 @@ LOCALES+= hi_IN.UTF-8
LOCALES+= hy_AM.UTF-8
LOCALES+= it_CH.UTF-8
LOCALES+= ru_RU.CP866
LOCALES+= sr_Latn_RS.UTF-8
LOCALES+= tr_TR.UTF-8
LOCALES+= uk_UA.ISO8859-5
LOCALES+= uk_UA.KOI8-U
@ -133,6 +132,10 @@ SAME+= ar_SA.UTF-8 ar_JO.UTF-8
SAME+= ar_SA.UTF-8 ar_EG.UTF-8
SAME+= ar_SA.UTF-8 ar_AE.UTF-8
SAME+= tr_TR.UTF-8 tr_TR.ISO8859-9
SAME+= tr_TR.UTF-8 sr_Latn_RS.UTF-8
SAME+= tr_TR.UTF-8 sr_Latn_RS.ISO8859-2
SAME+= tr_TR.UTF-8 sr_Cyrl_RS.UTF-8
SAME+= tr_TR.UTF-8 sr_Cyrl_RS.ISO8859-5
SAME+= tr_TR.UTF-8 sl_SI.UTF-8
SAME+= tr_TR.UTF-8 sl_SI.ISO8859-2
SAME+= tr_TR.UTF-8 ro_RO.UTF-8
@ -199,9 +202,6 @@ SAME+= fr_CH.ISO8859-15 fr_CH.ISO8859-1
SAME+= hi_IN.UTF-8 hi_IN.ISCII-DEV
SAME+= hy_AM.UTF-8 hy_AM.ARMSCII-8
SAME+= uk_UA.KOI8-U ru_RU.KOI8-R
SAME+= sr_Latn_RS.UTF-8 sr_Latn_RS.ISO8859-2
SAME+= sr_Latn_RS.UTF-8 sr_Cyrl_RS.UTF-8
SAME+= sr_Latn_RS.UTF-8 sr_Cyrl_RS.ISO8859-5
SAME+= ko_KR.eucKR ko_KR.CP949 # legacy (same charset)
FILES= ${LOCALES:S/$/.out/}

View File

@ -1,14 +0,0 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
#
# decimal_point
,"",
#
# thousands_sep
."".
#
# grouping
33
# EOF

View File

@ -34,7 +34,6 @@ LOCALES+= el_GR.ISO8859-7
LOCALES+= el_GR.UTF-8
LOCALES+= en_CA.UTF-8
LOCALES+= en_GB.UTF-8
LOCALES+= en_HK.UTF-8
LOCALES+= en_IE.UTF-8
LOCALES+= en_PH.UTF-8
LOCALES+= en_SG.UTF-8
@ -111,6 +110,7 @@ LOCALES+= sk_SK.UTF-8
LOCALES+= sl_SI.ISO8859-2
LOCALES+= sl_SI.UTF-8
LOCALES+= sr_Cyrl_RS.ISO8859-5
LOCALES+= sr_Cyrl_RS.UTF-8
LOCALES+= sr_Latn_RS.ISO8859-2
LOCALES+= sr_Latn_RS.UTF-8
LOCALES+= sv_FI.ISO8859-15
@ -154,11 +154,12 @@ SAME+= de_DE.ISO8859-15 de_DE.ISO8859-1
SAME+= de_DE.ISO8859-15 de_CH.ISO8859-15
SAME+= de_DE.ISO8859-15 de_CH.ISO8859-1
SAME+= de_DE.UTF-8 de_CH.UTF-8
SAME+= en_HK.UTF-8 en_HK.ISO8859-1
SAME+= en_HK.UTF-8 en_AU.UTF-8
SAME+= en_HK.UTF-8 en_AU.US-ASCII
SAME+= en_HK.UTF-8 en_AU.ISO8859-15
SAME+= en_HK.UTF-8 en_AU.ISO8859-1
SAME+= en_PH.UTF-8 en_HK.UTF-8
SAME+= en_PH.UTF-8 en_HK.ISO8859-1
SAME+= en_PH.UTF-8 en_AU.UTF-8
SAME+= en_PH.UTF-8 en_AU.US-ASCII
SAME+= en_PH.UTF-8 en_AU.ISO8859-15
SAME+= en_PH.UTF-8 en_AU.ISO8859-1
SAME+= en_CA.UTF-8 en_CA.US-ASCII
SAME+= en_CA.UTF-8 en_CA.ISO8859-15
SAME+= en_CA.UTF-8 en_CA.ISO8859-1
@ -198,7 +199,6 @@ SAME+= nl_NL.UTF-8 nl_NL.ISO8859-15
SAME+= nl_NL.UTF-8 nl_NL.ISO8859-1
SAME+= nn_NO.ISO8859-15 nn_NO.ISO8859-1
SAME+= pt_PT.ISO8859-15 pt_PT.ISO8859-1
SAME+= sr_Latn_RS.UTF-8 sr_Cyrl_RS.UTF-8
SAME+= sv_FI.ISO8859-15 sv_FI.ISO8859-1
SAME+= sv_SE.ISO8859-15 sv_SE.ISO8859-1
SAME+= zh_Hans_CN.GBK zh_Hans_CN.GB18030

View File

@ -1,87 +0,0 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
#
# Short month names
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
#
# Long month names (as in a date)
January
February
March
April
May
June
July
August
September
October
November
December
#
# Short weekday names
Sun
Mon
Tue
Wed
Thu
Fri
Sat
#
# Long weekday names
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
#
# X_fmt
%I:%M:%S %p
#
# x_fmt
%e/%m/%Y
#
# c_fmt
%A %e %B %Y at %I:%M:%S %p
#
# AM/PM
AM
PM
#
# date_fmt
%A %e %B %Y at %I:%M:%S %p %Z
#
# Long month names (without case ending)
January
February
March
April
May
June
July
August
September
October
November
December
#
# md_order
m
#
# ampm_fmt
%I:%M:%S %p
# EOF

View File

@ -15,18 +15,7 @@
áÕß
ÞÚâ
ÝÞÒ
ÔÕæ""jan
feb
mar
apr
maj
jun
jul
avg
sep
okt
nov
dec
ÔÕæ
#
# Long month names (as in a date)
øÐÝãÐà
@ -40,18 +29,7 @@ dec
áÕßâÕÜÑÐà
ÞÚâÞÑÐà
ÝÞÒÕÜÑÐà
ÔÕæÕÜÑÐà""januar
februar
mart
april
maj
jun
jul
avgust
septembar
oktobar
novembar
decembar
ÔÕæÕÜÑÐà
#
# Short weekday names
ÝÕÔ
@ -60,13 +38,7 @@ decembar
áàÕ
çÕâ
ßÕâ
áãÑ""ned
pon
uto
sre
cet
pet
sub
áãÑ
#
# Long weekday names
ÝÕÔÕùÐ
@ -75,30 +47,23 @@ sub
áàÕÔÐ
çÕâÒàâÐÚ
ßÕâÐÚ
áãÑÞâÐ""nedelja
ponedeljak
utorak
sreda
cetvrtak
petak
subota
áãÑÞâÐ
#
# X_fmt
%H.%M.%S""%H.%M.%S
%H.%M.%S
#
# x_fmt
%d.%m.%y.""%e.%m.%y.
%d.%m.%y.
#
# c_fmt
%d. %B %Y. %H.%M.%S""%d. %B %Y. %H.%M.%S %Z
%d. %B %Y. %H.%M.%S
#
# AM/PM
ßàÕ ßÞÔÝÕ
ßÞ ßÞÔÝÕ""pre podne
po podne
ßÞ ßÞÔÝÕ
#
# date_fmt
%d. %B %Y. %H.%M.%S %Z""%d. %B %Y. %H.%M.%S %Z
%d. %B %Y. %H.%M.%S %Z
#
# Long month names (without case ending)
øÐÝãÐà
@ -112,22 +77,11 @@ po podne
áÕßâÕÜÑÐà
ÞÚâÞÑÐà
ÝÞÒÕÜÑÐà
ÔÕæÕÜÑÐà""januar
februar
mart
april
maj
jun
jul
avgust
septembar
oktobar
novembar
decembar
ÔÕæÕÜÑÐà
#
# md_order
dmdm
dm
#
# ampm_fmt
%I.%M.%S %p""%I.%M.%S %p
%I.%M.%S %p
# EOF

View File

@ -0,0 +1,87 @@
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
#
# Short month names
јан
феб
мар
апр
мај
јун
јул
авг
сеп
окт
нов
дец
#
# Long month names (as in a date)
јануар
фебруар
март
април
мај
јун
јул
август
септембар
октобар
новембар
децембар
#
# Short weekday names
нед
пон
уто
сре
чет
пет
суб
#
# Long weekday names
недеља
понедељак
уторак
среда
четвртак
петак
субота
#
# X_fmt
%H.%M.%S
#
# x_fmt
%d.%m.%y.
#
# c_fmt
%d. %B %Y. %H.%M.%S
#
# AM/PM
пре подне
по подне
#
# date_fmt
%d. %B %Y. %H.%M.%S %Z
#
# Long month names (without case ending)
јануар
фебруар
март
април
мај
јун
јул
август
септембар
октобар
новембар
децембар
#
# md_order
dm
#
# ampm_fmt
%I.%M.%S %p
# EOF

View File

@ -4,18 +4,7 @@
# -----------------------------------------------------------------------------
#
# Short month names
jah
feb
mar
apr
maj
juh
jul
abg
cep
okt
hob
dec""jan
jan
feb
mar
apr
@ -29,18 +18,7 @@ nov
dec
#
# Long month names (as in a date)
jahuar
februar
mart
aprjl
maj
juh
jul
abguct
ceptembar
oktobar
hobembar
decembar""januar
januar
februar
mart
april
@ -54,13 +32,7 @@ novembar
decembar
#
# Short weekday names
hed
poh
uto
cre
èet
pet
cub""ned
ned
pon
uto
sre
@ -69,13 +41,7 @@ pet
sub
#
# Long weekday names
hedelja
pohedeljak
utorak
creda
èetbrtak
petak
cubota""nedelja
nedelja
ponedeljak
utorak
sreda
@ -84,35 +50,23 @@ petak
subota
#
# X_fmt
%H.%M.%S""%H.%M.%S
%H.%M.%S
#
# x_fmt
%d.%m.%y.""%d.%m.%y.
%d.%m.%y.
#
# c_fmt
%d. %B %Y. %H.%M.%S""%d. %B %Y. %H.%M.%S %Z
%d. %B %Y. %H.%M.%S
#
# AM/PM
pre podhe
po podhe""pre podne
pre podne
po podne
#
# date_fmt
%d. %B %Y. %H.%M.%S %Z""%d. %B %Y. %H.%M.%S %Z
%d. %B %Y. %H.%M.%S %Z
#
# Long month names (without case ending)
jahuar
februar
mart
aprjl
maj
juh
jul
abguct
ceptembar
oktobar
hobembar
decembar""januar
januar
februar
mart
april
@ -126,8 +80,8 @@ novembar
decembar
#
# md_order
dmdm
dm
#
# ampm_fmt
%I.%M.%S %p""%I.%M.%S %p
%I.%M.%S %p
# EOF

View File

@ -4,18 +4,7 @@
# -----------------------------------------------------------------------------
#
# Short month names
јан
феб
мар
апр
мај
јун
јул
авг
сеп
окт
нов
дец""jan
jan
feb
mar
apr
@ -29,18 +18,7 @@ nov
dec
#
# Long month names (as in a date)
јануар
фебруар
март
април
мај
јун
јул
август
септембар
октобар
новембар
децембар""januar
januar
februar
mart
april
@ -54,13 +32,7 @@ novembar
decembar
#
# Short weekday names
нед
пон
уто
сре
чет
пет
суб""ned
ned
pon
uto
sre
@ -69,13 +41,7 @@ pet
sub
#
# Long weekday names
недеља
понедељак
уторак
среда
четвртак
петак
субота""nedelja
nedelja
ponedeljak
utorak
sreda
@ -84,35 +50,23 @@ petak
subota
#
# X_fmt
%H.%M.%S""%H.%M.%S
%H.%M.%S
#
# x_fmt
%d.%m.%y.""%d.%m.%y.
%d.%m.%y.
#
# c_fmt
%d. %B %Y. %H.%M.%S""%d. %B %Y. %H.%M.%S %Z
%d. %B %Y. %H.%M.%S
#
# AM/PM
пре подне
по подне""pre podne
pre podne
po podne
#
# date_fmt
%d. %B %Y. %H.%M.%S %Z""%d. %B %Y. %H.%M.%S %Z
%d. %B %Y. %H.%M.%S %Z
#
# Long month names (without case ending)
јануар
фебруар
март
април
мај
јун
јул
август
септембар
октобар
новембар
децембар""januar
januar
februar
mart
april
@ -126,8 +80,8 @@ novembar
decembar
#
# md_order
dmdm
dm
#
# ampm_fmt
%I.%M.%S %p""%I.%M.%S %p
%I.%M.%S %p
# EOF

View File

@ -595,8 +595,8 @@ sub get_fields {
$line =~ s/^$k\s+//;
}
$values{$l}{$c}{$k} = ""
if (!defined $values{$l}{$c}{$k});
$values{$l}{$f}{$c}{$k} = ""
if (!defined $values{$l}{$f}{$c}{$k});
$continue = ($line =~ /\/$/);
$line =~ s/\/$// if ($continue);
@ -606,7 +606,7 @@ sub get_fields {
s/\<([^>_]+)_([^>]+)\>/<$1 $2>/;
}
die "_ in data - $line" if ($line =~ /_/);
$values{$l}{$c}{$k} .= $line;
$values{$l}{$f}{$c}{$k} .= $line;
last if (!$continue);
}
@ -723,7 +723,7 @@ sub print_fields {
# -----------------------------------------------------------------------------
EOF
foreach my $k (keys(%keys)) {
my $f = $keys{$k};
my $g = $keys{$k};
die("Unknown $k in \%DESC")
if (!defined $DESC{$k});
@ -731,37 +731,38 @@ EOF
$output .= "#\n# $DESC{$k}\n";
# Replace one row with another
if ($f =~ /^>/) {
$k = substr($f, 1);
$f = $keys{$k};
if ($g =~ /^>/) {
$k = substr($g, 1);
$g = $keys{$k};
}
# Callback function
if ($f =~ /^\</) {
if ($g =~ /^\</) {
$callback{data}{c} = $c;
$callback{data}{k} = $k;
$callback{data}{f} = $f;
$callback{data}{l} = $l;
$callback{data}{e} = $enc;
my @a = split(/\</, substr($f, 1));
my @a = split(/\</, substr($g, 1));
my $rv =
&{$callback{$a[0]}}($values{$l}{$c}{$a[1]});
$values{$l}{$c}{$k} = $rv;
$f = $a[2];
&{$callback{$a[0]}}($values{$l}{$f}{$c}{$a[1]});
$values{$l}{$f}{$c}{$k} = $rv;
$g = $a[2];
$callback{data} = ();
}
my $v = $values{$l}{$c}{$k};
my $v = $values{$l}{$f}{$c}{$k};
$v = "undef" if (!defined $v);
if ($f eq "i") {
if ($g eq "i") {
$output .= "$v\n";
next;
}
if ($f eq "ai") {
if ($g eq "ai") {
$output .= "$v\n";
next;
}
if ($f eq "s") {
if ($g eq "s") {
$v =~ s/^"//;
$v =~ s/"$//;
my $cm = "";
@ -785,7 +786,7 @@ EOF
$output .= "$v\n";
next;
}
if ($f eq "as") {
if ($g eq "as") {
foreach my $v (split(/;/, $v)) {
$v =~ s/^"//;
$v =~ s/"$//;
@ -815,7 +816,7 @@ EOF
next;
}
die("$k is '$f'");
die("$k is '$g'");
}