0xV3NOMx
Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64



Your IP : 3.145.179.30


Current Path : /usr/bin/
Upload File :
Current File : //usr/bin/po2debconf

#! /bin/sh

#  po2debconf  - merge translations into Debconf templates file
#  Copyright (C) 2002-2005  Denis Barbier <barbier@debian.org>
#
#  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 of the License, 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.,
#  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
#   This script is part of po-debconf

: ${PODEBCONF_LIB=/usr/share/intltool-debian}
: ${PODEBCONF_ENCODINGS=/usr/share/po-debconf/encodings}

#   Prevent automatic conversion to UTF-8 by Perl
unset LANGUAGE LANG LC_ALL LC_CTYPE

#   Default values
dftencoding=utf8
dftformat=2

help=
quiet=--quiet
origfile=
podir=
outfile=
encoding=$dftencoding
format=$dftformat

for option
do
        if [ -n "$prev" ]; then
                eval "$prev=\$option"
                prev=
                shift
                continue
        fi
        optarg=`expr "x$option" : 'x[^=]*=\(.*\)'`
        case $option in
            -h | --h | --help )
                 help=1
                 shift ;;
            -v | --v | --verbose )
                 quiet=
                 shift ;;
            -o | --o | --output )
                 prev=outfile
                 shift ;;
            -o=* | --o=* | --output=* )
                 outfile=$optarg
                 shift ;;
            --podir )
                prev=podir
                shift ;;
            --podir=* )
                podir=$optarg
                shift ;;
            -e | --e | --encoding )
                prev=encoding
                shift ;;
            --e=* | --encoding=* )
                encoding=$optarg
                shift ;;
            -E | --E | --alt-encoding )
                 encoding=popular
                 shift ;;
            -u | --u | --utf8 )
                 #  Obsolete
                 encoding=utf8
                 shift ;;
            -n | --n | --no-utf8 )
                 #  Obsoleted
                 encoding=po
                 shift ;;
            -O | --O | --old-format )
                 #  Obsolete, use po/output file instead
                 format=1
                 shift ;;
            -* ) echo "$0: unknown option: $option ...exiting" 1>&2
                 exit 1
                 ;;
             * ) break ;;
        esac
done

origfile=$1

fail=0
[ -n "$origfile" ] || fail=1
if [ "x$help" = x1 ] || [ "x$fail" = x1 ]; then
        cat <<EOT 1>&2
Usage: po2debconf [options] master
Options:
  -h,  --help             display this help message
  -v,  --verbose          enable verbose mode
  -o,  --output=FILE      specify output file (Default: stdout)
  -e,  --encoding=STRING  convert encoding, STRING is chosen between
                        po: no conversion
                      utf8: convert to UTF-8
                   popular: change encoding according to file map found
                            in PODEBCONF_ENCODINGS environment variable
                            (Default, map is $PODEBCONF_ENCODINGS)
               traditional: obsolete, replaced by popular
       --podir=DIR        specify PO output directory
                          (Default: <master directory>/po)
EOT
        exit $fail
fi

[ -f "$origfile" ] || {
        echo "ERROR: File $origfile does not exist ...exiting" 1>&2
        exit 1
}
utf8=
case $encoding in
  po | PO )
        encoding=po ;;
  pop* | POP* )
        encoding=popular ;;
  trad* | TRAD* )
        encoding=popular ;;
  utf8 | utf-8 | UTF8 | UTF-8 )
        encoding=utf8 ;;
  * )   echo "ERROR: Wrong --encoding argument, must be po, popular or utf8 ...exiting" 1>&2
        exit 1 ;;
esac
[ -n "$podir" ] || podir=`dirname $origfile`/po
[ -d "$podir" ] || {
        echo "ERROR: Directory $podir does not exist ...exiting" 1>&2
        exit 1
}

#  Override values when $podir/output file is found
if [ -f "$podir/output" ]; then
        outputformat=`sed -e 1q "$podir/output" | awk '{printf "%s", $1}'`
        [ -n "$outputformat" ] && format=$outputformat
        outputencoding=`sed -e 1q "$podir/output" | awk '{printf "%s", $2}'`
        [ -n "$outputencoding" ] && encoding=$outputencoding
fi

#   Test validity of $encoding and $format values
case $encoding in
  po | popular | utf8 )
        #   Do nothing
        : ;;
  * )
        #   Invalid value, set default encoding
        echo "Warning:Invalid encoding: $encoding, set to '$dftencoding'" 1>&2
        encoding=$dftencoding ;;
esac
case $format in
  1 | 2 )
        #   Do nothing
        :
        ;;
  * )
        #   Invalid value, set default encoding
        echo "Warning:Invalid format: $format, set to '$dftformat'" 1>&2
        format=$dftformat
        ;;
esac

[ "$encoding" = popular ] || format=2
[ "$encoding" = utf8 ] && utf8="-u"

outdir=
fake=
is_tmp=
tmpfile=
cleanup()
{
        rc=$?
        [ -n "$outdir" ] && [ -d "$outdir" ] && {
                rm -f "$outdir"/*.po
                rmdir "$outdir"
        }
        [ -n "$fake" ] && [ -L "$podir/$fake.po" ] && rm -f "$podir/$fake.po"
        [ -n "$is_tmp" ] && [ -f "$outfile" ] && rm -f "$outfile"
        [ -n "$tmpfile" ] && [ -f "$tmpfile" ] && rm -f "$tmpfile"
        exit $rc
}
trap 'cleanup' HUP INT QUIT BUS PIPE TERM

if [ "$encoding" = popular ]; then
        [ -f "$PODEBCONF_ENCODINGS" ] || {
                echo "ERROR: File $PODEBCONF_ENCODINGS does not exist ...exiting" 1>&2
                exit 1
        }
        outdir=`mktemp -t -d po2debconf.XXXXXXXXXX` || {
                echo "ERROR: Unable to create temporary directory ...exiting" 1>&2
                exit 1
        }
        tmpfile=`mktemp -t po2debconf.XXXXXXXXXX` || {
                echo "ERROR: Unable to create temporary file ...exiting" 1>&2
                exit 1
        }
        for f in $podir/*.po
        do
                [ -f "$f" ] || continue
                l=`echo $f | sed -e 's/.*\///' -e 's/\.po$//'`
                encto=`grep "^$l[ 	]" "$PODEBCONF_ENCODINGS" | sed -e "s/^$l[ 	][ 	]*//" -e 1q`
                if [ -n "$encto" ]; then
                        [ -n "$quiet" ] || echo "Converting $f to $encto..." 1>&2
                        if msgconv -t "$encto" "$f" -o "$tmpfile" 2>/dev/null; then
                                mv "$tmpfile" "$outdir/$l.po"
                        else
                                echo "Warning: msgconv failed when converting file $f to $encto ... file skipped" >&2
                        fi
                else
                        echo "Warning: Unknown default encoding for $l, get it from $f" 1>&2
                        cat "$f" > "$outdir/$l.po"
                fi
        done
        podir=$outdir
        rm -f "$tmpfile"
fi

if [ "x$outfile" = 'x-' ] || [ -z "$outfile" ]; then
        outfile=`mktemp -t po2debconf.XXXXXXXXXX` || {
                echo "ERROR: Unable to create temporary file ...exiting" 1>&2
                exit 1
        }
        is_tmp=1
fi

#  Helps no.po -> nb.po transition
if [ -r "$podir/no.po" ]; then
        if [ -r "$podir/nb.po" ]; then
                echo "Warning: Both no.po and nb.po files exist, please consider removing no.po" 1>&2
        else
                echo "Warning: no.po is obsolete and should be renamed into nb.po" 1>&2
        fi
elif [ -r "$podir/nb.po" ]; then
        #  nb.po was found, copy it to no.po to provide both -nb and -no
        #  localized fields and thus ease no -> nb transition for Norwegian
        #  speaking people.
        fake=no
        ln -s nb.po "$podir/no.po"
fi

$PODEBCONF_LIB/intltool-merge $quiet --rfc822deb-style $utf8 $podir $origfile $outfile 1>&2 || exit 1

if [ $format -le 1 ]; then
        tmpfile=`mktemp -t po2debconf.XXXXXXXXXX` || {
                echo "ERROR: Unable to create temporary file ...exiting" 1>&2
                exit 1
        }
        sed -e 's/^\([^ 	:]*\)\.[^ 	:]*:/\1:/' $outfile > $tmpfile && mv -f $tmpfile $outfile
fi

tmpfile=`mktemp -t po2debconf.XXXXXXXXXX` || {
        echo "ERROR: Unable to create temporary file ...exiting" 1>&2
        exit 1
}
sed -e 's/^DefaultChoice/Default/' $outfile > $tmpfile && mv -f $tmpfile $outfile

[ -n "$is_tmp" ] && cat "$outfile"

#  Set $? to 0
:

cleanup