diff options
Diffstat (limited to 'localedata')
-rw-r--r-- | localedata/ChangeLog | 5 | ||||
-rw-r--r-- | localedata/Makefile | 8 | ||||
-rw-r--r-- | localedata/locales/de_AT | 4 | ||||
-rw-r--r-- | localedata/locales/de_DE | 4 | ||||
-rw-r--r-- | localedata/locales/ru_RU | 78 | ||||
-rw-r--r-- | localedata/tst-rpmatch.c | 37 | ||||
-rwxr-xr-x | localedata/tst-rpmatch.sh | 64 |
7 files changed, 154 insertions, 46 deletions
diff --git a/localedata/ChangeLog b/localedata/ChangeLog index ed255649de..e968fe07b9 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,8 @@ +1998-03-08 Ulrich Drepper <drepper@cygnus.com> + + * locales/ru_RU: Correct inconsistencies in mon data. + Patch by Alexander V. Lukyanov <lav@alpha.netis.ru>. + 1997-10-09 04:56 Ulrich Drepper <drepper@cygnus.com> * locales/is_IS: Update from Debian version. diff --git a/localedata/Makefile b/localedata/Makefile index 4e26d15374..d62a6a346c 100644 --- a/localedata/Makefile +++ b/localedata/Makefile @@ -30,7 +30,7 @@ charmaps := $(filter-out $(addprefix charmaps/, CVS RCS %~), \ locales := $(filter-out $(addprefix locales/, CVS RCS %~), \ $(wildcard locales/*)) -test-srcs := collate-test xfrm-test tst-fmon +test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch test-input := de_DE.ISO-8859-1 da_DK.ISO-8859-1 fr_CA,2.13.ISO-8859-1 test-output := $(foreach s, .out .xout, \ $(addsuffix $s, $(basename $(test-input)))) @@ -43,7 +43,7 @@ ld-test-srcs := $(addprefix tests/,$(addsuffix .cm,$(ld-test-names)) \ distribute := CHECKSUMS tst-fmon.sh tst-fmon.data ChangeLog sort-test.sh \ README mnemonic.ds fr_CA,2.13.in de_DE.in da_DK.in \ - $(charmaps) $(locales) $(ld-test-srcs) + $(charmaps) $(locales) $(ld-test-srcs) tst-rpmatch.sh # Get $(inst_i18ndir) defined. include ../Makeconfig @@ -59,8 +59,10 @@ $(inst_i18ndir)/locales/%: locales/%; $(do-install) ifeq (no,$(cross-compiling)) -tests: $(objpfx)collate-test $(objpfx)xfrm-test $(objpfx)tst-fmon +tests: $(objpfx)collate-test $(objpfx)xfrm-test $(objpfx)tst-fmon \ + $(objpfx)tst-rpmatch $(SHELL) -e sort-test.sh $(common-objpfx) $(test-input) $(SHELL) -e tst-fmon.sh $(common-objpfx) tst-fmon.data $(SHELL) -e tst-locale.sh $(common-objpfx) + $(SHELL) -e tst-rpmatch.sh $(common-objpfx) endif diff --git a/localedata/locales/de_AT b/localedata/locales/de_AT index 2c75d68694..a4642179d4 100644 --- a/localedata/locales/de_AT +++ b/localedata/locales/de_AT @@ -27,8 +27,8 @@ copy "en_DK" END LC_COLLATE LC_MESSAGES -yesexpr "<<(><j><J><y><Y><)/>><.><*>" -noexpr "<<(><n><N><)/>><.><*>" +yesexpr "<'/>><<(><j><J><y><Y><)/>><.><*>" +noexpr "<'/>><<(><n><N><)/>><.><*>" END LC_MESSAGES LC_MONETARY diff --git a/localedata/locales/de_DE b/localedata/locales/de_DE index 6308ff3b5d..b13f52f5c9 100644 --- a/localedata/locales/de_DE +++ b/localedata/locales/de_DE @@ -2138,8 +2138,8 @@ copy "en_DK" END LC_CTYPE LC_MESSAGES -yesexpr "<<(><j><J><y><Y><)/>><.><*>" -noexpr "<<(><n><N><)/>><.><*>" +yesexpr "<'/>><<(><j><J><y><Y><)/>><.><*>" +noexpr "<'/>><<(><n><N><)/>><.><*>" END LC_MESSAGES LC_MONETARY diff --git a/localedata/locales/ru_RU b/localedata/locales/ru_RU index 9da6982624..d898f63eec 100644 --- a/localedata/locales/ru_RU +++ b/localedata/locales/ru_RU @@ -38,7 +38,7 @@ LC_COLLATE % members of equivalence classes % 3. A distinction is made with regards % to case as noted below. -% 4. Special characters are ignored +% 4. Special characters are ignored % when comparing letters, but then % they are considered % 5. The alphabets are sorted in order @@ -66,10 +66,10 @@ collating-symbol <SMALL> % and Spanish <C><h> being treated % as one letter. -% The <a8> ...... <z8> collating +% The <a8> ...... <z8> collating % symbols have defined weights as % the last character in a group of -% Latin letters. They are used +% Latin letters. They are used % to specify deltas by locales using % a locale as the default ordering % and by "replace-after" statements @@ -992,7 +992,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <a-> <A>;<MACRON>;<SMALL>;IGNORE <A7> <A>;<MACRON+DOT>;<CAPITAL>;IGNORE <a7> <A>;<MACRON+DOT>;<SMALL>;IGNORE -<a8> +<a8> <AE> "<A><E>";"<AE><AE>";"<CAPITAL><CAPITAL>";IGNORE <ae> "<A><E>";"<AE><AE>";"<SMALL><SMALL>";IGNORE <AE'> "<A><E>";"<AE'><AE'>";"<CAPITAL><CAPITAL>";IGNORE @@ -1007,7 +1007,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <b-.> <B>;<DOT-BELOW>;<SMALL>;IGNORE <B_> <B>;<LINE-BELOW>;<CAPITAL>;IGNORE <b_> <B>;<LINE-BELOW>;<SMALL>;IGNORE -<b8> +<b8> <C> <C>;<NONE>;<CAPITAL>;IGNORE <c> <C>;<NONE>;<SMALL>;IGNORE <C'> <C>;<ACUTE>;<CAPITAL>;IGNORE @@ -1024,7 +1024,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <c,> <C>;<CEDILLA>;<SMALL>;IGNORE <C,'> <C>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE <c,'> <C>;<CEDILLA+ACUTE>;<SMALL>;IGNORE -<c8> +<c8> <D> <D>;<NONE>;<CAPITAL>;IGNORE <d> <D>;<NONE>;<SMALL>;IGNORE <D<> <D>;<CARON>;<CAPITAL>;IGNORE @@ -1041,7 +1041,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <d-/>> <D>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE <D_> <D>;<LINE-BELOW>;<CAPITAL>;IGNORE <d_> <D>;<LINE-BELOW>;<SMALL>;IGNORE -<d8> +<d8> <E> <E>;<NONE>;<CAPITAL>;IGNORE <e> <E>;<NONE>;<SMALL>;IGNORE <E'> <E>;<ACUTE>;<CAPITAL>;IGNORE @@ -1092,14 +1092,14 @@ UNDEFINED IGNORE;IGNORE;IGNORE <e-!> <E>;<MACRON+GRAVE>;<SMALL>;IGNORE <E-/>> <E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE <e-/>> <E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE -<e8> +<e8> <F> <F>;<NONE>;<CAPITAL>;IGNORE <f> <F>;<NONE>;<SMALL>;IGNORE <F2> <F>;<HOOK>;<CAPITAL>;IGNORE <f2> <F>;<HOOK>;<SMALL>;IGNORE <F.> <F>;<DOT>;<CAPITAL>;IGNORE <f.> <F>;<DOT>;<SMALL>;IGNORE -<f8> +<f8> <ff> "<F><F>";"<NONE><NONE>";"<ff><ff>";IGNORE <fi> "<F><I>";"<NONE><NONE>";"<fi><fi>";IGNORE <fl> "<F><L>";"<NONE><NONE>";"<fl><fl>";IGNORE @@ -1124,7 +1124,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <g,> <G>;<CEDILLA>;<SMALL>;IGNORE <G-> <G>;<MACRON>;<CAPITAL>;IGNORE <g-> <G>;<MACRON>;<SMALL>;IGNORE -<g8> +<g8> <H> <H>;<NONE>;<CAPITAL>;IGNORE <h> <H>;<NONE>;<SMALL>;IGNORE <H-(> <H>;<BREVE-BELOW>;<CAPITAL>;IGNORE @@ -1141,7 +1141,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <h//> <H>;<STROKE>;<SMALL>;IGNORE <H,> <H>;<CEDILLA>;<CAPITAL>;IGNORE <h,> <H>;<CEDILLA>;<SMALL>;IGNORE -<h8> +<h8> <I> <I>;<NONE>;<CAPITAL>;IGNORE <i> <I>;<NONE>;<SMALL>;IGNORE <I'> <I>;<ACUTE>;<CAPITAL>;IGNORE @@ -1176,14 +1176,14 @@ UNDEFINED IGNORE;IGNORE;IGNORE <i;> <I>;<OGONEK>;<SMALL>;IGNORE <I-> <I>;<MACRON>;<CAPITAL>;IGNORE <i-> <I>;<MACRON>;<SMALL>;IGNORE -<i8> +<i8> <IJ> "<I><J>";"<IJ><IJ>";"<CAPITAL><CAPITAL>";IGNORE <ij> "<I><J>";"<IJ><IJ>";"<SMALL><SMALL>";IGNORE <J> <J>;<NONE>;<CAPITAL>;IGNORE <j> <J>;<NONE>;<SMALL>;IGNORE <J/>> <J>;<CIRCUMFLEX>;<CAPITAL>;IGNORE <j/>> <J>;<CIRCUMFLEX>;<SMALL>;IGNORE -<j8> +<j8> <K> <K>;<NONE>;<CAPITAL>;IGNORE <k> <K>;<NONE>;<SMALL>;IGNORE <K'> <K>;<ACUTE>;<CAPITAL>;IGNORE @@ -1198,7 +1198,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <k,> <K>;<CEDILLA>;<SMALL>;IGNORE <K_> <K>;<LINE-BELOW>;<CAPITAL>;IGNORE <k_> <K>;<LINE-BELOW>;<SMALL>;IGNORE -<k8> +<k8> <kk> <K>;<kk>;<SMALL>;IGNORE <L> <L>;<NONE>;<CAPITAL>;IGNORE <l> <L>;<NONE>;<SMALL>;IGNORE @@ -1220,7 +1220,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <l-/>> <L>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE <L_> <L>;<LINE-BELOW>;<CAPITAL>;IGNORE <l_> <L>;<LINE-BELOW>;<SMALL>;IGNORE -<l8> +<l8> <M> <M>;<NONE>;<CAPITAL>;IGNORE <m> <M>;<NONE>;<SMALL>;IGNORE <M'> <M>;<ACUTE>;<CAPITAL>;IGNORE @@ -1229,7 +1229,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <m.> <M>;<DOT>;<SMALL>;IGNORE <M-.> <M>;<DOT-BELOW>;<CAPITAL>;IGNORE <m-.> <M>;<DOT-BELOW>;<SMALL>;IGNORE -<m8> +<m8> <N> <N>;<NONE>;<CAPITAL>;IGNORE <n> <N>;<NONE>;<SMALL>;IGNORE <N'> <N>;<ACUTE>;<CAPITAL>;IGNORE @@ -1249,7 +1249,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <N_> <N>;<LINE-BELOW>;<CAPITAL>;IGNORE <n_> <N>;<LINE-BELOW>;<SMALL>;IGNORE <'n> <N>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE -<n8> +<n8> <NG> "<N><G>";"<NG><NG>";"<CAPITAL><CAPITAL>";IGNORE <ng> "<N><G>";"<NG><NG>";"<SMALL><SMALL>";IGNORE <O> <O>;<NONE>;<CAPITAL>;IGNORE @@ -1319,7 +1319,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <o9?> <O>;<HORN+TILDE>;<SMALL>;IGNORE <O9-.> <O>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE <o9-.> <O>;<HORN+DOT-BELOW>;<SMALL>;IGNORE -<o8> +<o8> <OE> "<O><E>";"<OE><OE>";"<CAPITAL><CAPITAL>";IGNORE <oe> "<O><E>";"<OE><OE>";"<SMALL><SMALL>";IGNORE <P> <P>;<NONE>;<CAPITAL>;IGNORE @@ -1328,10 +1328,10 @@ UNDEFINED IGNORE;IGNORE;IGNORE <p'> <P>;<ACUTE>;<SMALL>;IGNORE <P.> <P>;<DOT>;<CAPITAL>;IGNORE <p.> <P>;<DOT>;<SMALL>;IGNORE -<p8> +<p8> <Q> <Q>;<NONE>;<CAPITAL>;IGNORE <q> <Q>;<NONE>;<SMALL>;IGNORE -<q8> +<q8> <R> <R>;<NONE>;<CAPITAL>;IGNORE <r> <R>;<NONE>;<SMALL>;IGNORE <R'> <R>;<ACUTE>;<CAPITAL>;IGNORE @@ -1352,7 +1352,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <r--.> <R>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE <R_> <R>;<LINE-BELOW>;<CAPITAL>;IGNORE <r_> <R>;<LINE-BELOW>;<SMALL>;IGNORE -<r8> +<r8> <S> <S>;<NONE>;<CAPITAL>;IGNORE <s> <S>;<NONE>;<SMALL>;IGNORE <st> "<S><T>";"<NONE><NONE>";"<st><st>";IGNORE @@ -1374,7 +1374,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <s.-.> <S>;<DOT+DOT-BELOW>;<SMALL>;IGNORE <S,> <S>;<CEDILLA>;<CAPITAL>;IGNORE <s,> <S>;<CEDILLA>;<SMALL>;IGNORE -<s8> +<s8> <s1> <S>;<s1>;<SMALL>;IGNORE <ss> "<S><S>";"<NONE><NONE>";"<SMALL><ss>";IGNORE <T> <T>;<NONE>;<CAPITAL>;IGNORE @@ -1393,7 +1393,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <t-/>> <T>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE <T_> <T>;<LINE-BELOW>;<CAPITAL>;IGNORE <t_> <T>;<LINE-BELOW>;<SMALL>;IGNORE -<t8> +<t8> <TH> "<T><H>";"<TH><TH>";"<CAPITAL><CAPITAL>";IGNORE <th> "<T><H>";"<TH><TH>";"<SMALL><SMALL>";IGNORE <U> <U>;<NONE>;<CAPITAL>;IGNORE @@ -1458,14 +1458,14 @@ UNDEFINED IGNORE;IGNORE;IGNORE <u9?> <U>;<HORN+TILDE>;<SMALL>;IGNORE <U9-.> <U>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE <u9-.> <U>;<HORN+DOT-BELOW>;<SMALL>;IGNORE -<u8> +<u8> <V> <V>;<NONE>;<CAPITAL>;IGNORE <v> <V>;<NONE>;<SMALL>;IGNORE <V?> <V>;<TILDE>;<CAPITAL>;IGNORE <v?> <V>;<TILDE>;<SMALL>;IGNORE <V-.> <V>;<DOT-BELOW>;<CAPITAL>;IGNORE <v-.> <V>;<DOT-BELOW>;<SMALL>;IGNORE -<v8> +<v8> <W> <W>;<NONE>;<CAPITAL>;IGNORE <w> <W>;<NONE>;<SMALL>;IGNORE <W'> <W>;<ACUTE>;<CAPITAL>;IGNORE @@ -1480,14 +1480,14 @@ UNDEFINED IGNORE;IGNORE;IGNORE <w.> <W>;<DOT>;<SMALL>;IGNORE <W-.> <W>;<DOT-BELOW>;<CAPITAL>;IGNORE <w-.> <W>;<DOT-BELOW>;<SMALL>;IGNORE -<w8> +<w8> <X> <X>;<NONE>;<CAPITAL>;IGNORE <x> <X>;<NONE>;<SMALL>;IGNORE <X:> <X>;<DIAERESIS>;<CAPITAL>;IGNORE <x:> <X>;<DIAERESIS>;<SMALL>;IGNORE <X.> <X>;<DOT>;<CAPITAL>;IGNORE <x.> <X>;<DOT>;<SMALL>;IGNORE -<x8> +<x8> <Y> <Y>;<NONE>;<CAPITAL>;IGNORE <y> <Y>;<NONE>;<SMALL>;IGNORE <Y'> <Y>;<ACUTE>;<CAPITAL>;IGNORE @@ -1506,7 +1506,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <y.> <Y>;<DOT>;<SMALL>;IGNORE <Y-.> <Y>;<DOT-BELOW>;<CAPITAL>;IGNORE <y-.> <Y>;<DOT-BELOW>;<SMALL>;IGNORE -<y8> +<y8> <Z> <Z>;<NONE>;<CAPITAL>;IGNORE <z> <Z>;<NONE>;<SMALL>;IGNORE <Z'> <Z>;<ACUTE>;<CAPITAL>;IGNORE @@ -1523,7 +1523,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE <z//> <Z>;<STROKE>;<SMALL>;IGNORE <Z_> <Z>;<LINE-BELOW>;<CAPITAL>;IGNORE <z_> <Z>;<LINE-BELOW>;<SMALL>;IGNORE -<z8> +<z8> <A*> <A*>;<CAPITAL>;<GREEK>;IGNORE <A%> <A*>;<CAPITAL>;<TONOS>;IGNORE <a*> <A*>;<SMALL>;<GREEK>;IGNORE @@ -2134,18 +2134,18 @@ abday "<V=><s=><k=>";/ "<C%><t=><v=>";/ "<P=><t=><n=>";/ "<S=><u=><b=>" -mon "<JA><n=><v=><a=><r=><ja>";/ - "<F=><e=><v=><r=><a=><l=><ja>";/ +mon "<JA><n=><v=><a=><r=><%'>";/ + "<F=><e=><v=><r=><a=><l=><%'>";/ "<M=><a=><r=><t=>";/ - "<A=><p=><r=><e=><l=><ja>";/ + "<A=><p=><r=><e=><l=><%'>";/ "<M=><a=><j=>";/ - "<I=><ju><n=><ja>";/ - "<I=><ju><l=><ja>";/ - "<A=><v=><g=><u=><s=><t=><a=>";/ - "<S=><e=><n=><t=><ja><b=><r=><ja>";/ - "<O=><k=><t=><ja><b=><r=><ja>";/ - "<N=><o=><ja><b=><r=><ja>";/ - "<D=><e=><k=><a=><b=><r=><ja>" + "<I=><ju><n=><%'>";/ + "<I=><ju><l=><%'>";/ + "<A=><v=><g=><u=><s=><t=>";/ + "<S=><e=><n=><t=><ja><b=><r=><%'>";/ + "<O=><k=><t=><ja><b=><r=><%'>";/ + "<N=><o=><ja><b=><r=><%'>";/ + "<D=><e=><k=><a=><b=><r=><%'>" abmon "<JA><n=><v=>";/ "<F=><e=><v=>";/ "<M=><a=><r=>";/ diff --git a/localedata/tst-rpmatch.c b/localedata/tst-rpmatch.c new file mode 100644 index 0000000000..f79930408e --- /dev/null +++ b/localedata/tst-rpmatch.c @@ -0,0 +1,37 @@ +/* Test program for + Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jochen Hein <jochen.hein@delphi.central.de>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> + +int +main (int argc, char* argv[]) +{ + setlocale (LC_ALL, argv[1]); + + if (rpmatch (argv[2]) != atol (argv[3])) + { + fprintf (stderr,"Failed: Locale %s, String %s, Exp: %s, got %d\n", + argv[1], argv[2], argv[3], rpmatch (argv[2])); + exit (EXIT_FAILURE); + } + exit (EXIT_SUCCESS); +} diff --git a/localedata/tst-rpmatch.sh b/localedata/tst-rpmatch.sh new file mode 100755 index 0000000000..7718b54aaf --- /dev/null +++ b/localedata/tst-rpmatch.sh @@ -0,0 +1,64 @@ +#! /bin/sh -f +# +# Copyright (C) 1998 Free Software Foundation, Inc. +# This file is part of the GNU C Library and contains tests for +# the rpmatch(3)-implementation. +# contributed by Jochen Hein <jochen.hein@delphi.central.de> + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +common_objpfx=$1 +IFS="§" +rc=0 +while read locale string result dummy; do + if [ "$locale" != "#" ]; then + LOCPATH=${common_objpfx}localedata \ + ${common_objpfx}elf/ld.so --library-path $common_objpfx \ + ${common_objpfx}localedata/tst-rpmatch $locale $string $result \ + || exit 1 + fi +done <<EOF +#§ These are the tests for rpmatch in glibc. Each line contains one test, +#§ comments start with #§ in the first column. The fields are seperated +#§ by paragraph signs and contain: the locale, the string, the expected +#§ return value of rpmatch(3). If the test fails, test-rpmatch prints +#§ all these informations +C§Yes§1 +C§yes§1 +C§YES§1 +C§YeS§1 +C§YEs§1 +C§yEs§1 +C§yES§1 +C§yeS§1 +C§No§0 +C§no§0 +#§ Uh, that's nonsense +C§nonsens§0 +C§Error§-1 +de_DE§Yes§1 +de_DE§Ja§1 +de_DE§Jammerschade§1 +de_DE§dejavu§-1 +de_DE§Nein§0 +de_DE§Fehler§-1 +de_DE§jein§1 +EOF + +rc=$? +if [ $rc -eq 1 ]; then + echo "Errors" +fi +exit $rc |