Flexible encoding and support of locale paper size - enscript - GNU Enscript
 (HTM) git clone git://thinkerwim.org/enscript.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 3638fc4643436b27b4fd034416d77651a057fc42
 (DIR) parent a356d343aa9db52b75432cde927b6f9bad6a7c44
 (HTM) Author: Werner Fink <werner@suse.de>
       Date:   Tue, 23 Jan 2018 15:26:47 +0100
       
       Flexible encoding and support of locale paper size
       
       as well paper size names known by ghostscript
       
       Signed-off-by: Werner Fink <werner@suse.de>
       Signed-off-by: James Cloos <cloos@jhcloos.com>
       
       Diffstat:
         M configure.ac                        |      18 ++++++++++++++++++
         M lib/Makefile.am                     |       1 +
         M lib/enscript.cfg.in                 |      34 ++++++++++++++++++++++++++++++-
         M src/main.c                          |       6 ++++++
         M src/util.c                          |      10 ++++++++++
       
       5 files changed, 68 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/configure.ac b/configure.ac
       @@ -65,6 +65,23 @@ AC_ARG_WITH(media,
        MEDIA=$ac_cv_value_media
        AC_SUBST(MEDIA)
        
       +dnl Define the default input encoding.
       +AC_ARG_WITH(encoding,
       +[  --with-encoding(=ENCODING) use input encoding (ENCODING), default is latin1],
       +  if test "X$withval" != "Xno"; then
       +    if test "X$withval" = "Xyes"; then
       +      ac_cv_value_encoding='latin1'
       +    else
       +      ac_cv_value_encoding=$withval
       +    fi
       +  else
       +    ac_cv_value_encoding=${ENCODING-latin1}
       +  fi,
       +  ac_cv_value_encoding=${ENCODING-latin1}
       +)
       +ENCODING=$ac_cv_value_encoding
       +AC_SUBST(ENCODING)
       +
        dnl Find the printer spooler command.
        
        AC_CHECK_PROG(SPOOLER, lpr, lpr)
       @@ -142,6 +159,7 @@ echo ""
        echo "Option     Change with configure's option   Current value"
        echo "---------------------------------------------------------"
        echo "Media      --with-media=MEDIA               $MEDIA"
       +echo "Encoding   --with-encoding=ENCODING         $ENCODING"
        echo "Spooler    --with-spooler=SPOOLER           $SPOOLER"
        echo "PS level   --with-ps-level=LEVEL            $PSLEVEL"
        echo ""
 (DIR) diff --git a/lib/Makefile.am b/lib/Makefile.am
       @@ -35,6 +35,7 @@ EXTRA_DIST = ChangeLog.old enscript.cfg.in $(pkgdata_DATA)        \
                Makefile-encodings make-encoding.pl
        
        do_subst = sed -e 's%@DATADIR@%$(datadir)%g' \
       +               -e 's%@encoding@%@ENCODING@%g' \
                       -e 's%@media@%@MEDIA@%g' \
                       -e 's%@BINDIR@%$(bindir)%g' \
                       -e 's%@spooler@%@SPOOLER@%g' \
 (DIR) diff --git a/lib/enscript.cfg.in b/lib/enscript.cfg.in
       @@ -40,7 +40,7 @@ AppendCtrlD: 0
        Clean7Bit: 1
        
        # Default input encoding.
       -DefaultEncoding: latin1
       +DefaultEncoding: @encoding@
        
        # Default fancy header.
        DefaultFancyHeader: enscript
       @@ -94,6 +94,38 @@ Media:  Letter                612        792        38        24        574        768
        Media:        A4dj                595        842        24        50        571        818
        Media:  Letterdj        612     792     24      40      588     768
        
       +# Define ghostscript page names and their sizes
       +Media:        letter                612        792        24        24        574        768
       +Media:        note                540        720        24        24        516        696
       +Media:        legal                612        1008        24        24        588        984
       +Media:        a0                2380        3368        24        24        2356        3344
       +Media:        a1                1684        2380        24        24        1660        2356
       +Media:        a2                1190        1684        24        24        1166        1660
       +Media:        a3                842        1190        24        24        818        1166
       +Media:        a4                595        842        24        24        571        818
       +Media:        a5                421        595        24        24        397        571
       +Media:        a6                297        421        24        24        273        397
       +Media:        a7                210        297        24        24        186        273
       +Media:        a8                148        210        24        24        124        186
       +Media:        a9                105        148        24        24        81        124
       +Media:        a10                74        105        24        24        50        81
       +Media:        b0                2836        4008        24        24        2812        3984
       +Media:        b1                2004        2836        24        24        1980        2812
       +Media:        b2                1418        2004        24        24        1394        1980
       +Media:        b3                1002        1418        24        24        978        1394
       +Media:        b4                709        1002        24        24        685        978
       +Media:        b5                501        709        24        24        477        685
       +Media:        archE                2592        3456        24        24        2568        3432
       +Media:        archD                1728        2592        24        24        1704        2568
       +Media:        archC                1296        1728        24        24        1272        1704
       +Media:        archB                864        1296        24        24        840        1272
       +Media:        archA                648        864        24        24        624        840
       +Media:        flsa                612        936        24        24        588        912
       +Media:        flse                612        936        24        24        588        912
       +Media:        halfletter        396        612        24        24        372        588
       +Media:        11x17                792        1224        24        24        768        1200
       +Media:        ledger                1224        792        24        24        1200        768
       +
        # Spooler option to suppress the job header.
        NoJobHeaderSwitch: -h
        
 (DIR) diff --git a/src/main.c b/src/main.c
       @@ -24,6 +24,8 @@
        
        #include "gsint.h"
        #include "getopt.h"
       +#include <locale.h>
       +#include <limits.h>
        
        /*
         * Prototypes for static functions.
       @@ -957,6 +959,10 @@ main (int argc, char *argv[])
        #if HAVE_LC_MESSAGES
          setlocale (LC_MESSAGES, "");
        #endif
       +  setlocale (LC_CTYPE, "");
       +#ifdef LC_PAPER
       +  setlocale (LC_PAPER, "");
       +#endif
        #endif
        #if ENABLE_NLS
          bindtextdomain (PACKAGE, LOCALEDIR);
 (DIR) diff --git a/src/util.c b/src/util.c
       @@ -171,6 +171,16 @@ read_config (char *path, char *file)
                {
                  token2 = GET_TOKEN (NULL);
                  CHECK_TOKEN ();
       +#ifdef LC_PAPER
       +          if (!strcasecmp("LC_PAPER", token2))
       +            {
       +              unsigned int paperheight = (unsigned int)nl_langinfo(_NL_PAPER_HEIGHT);
       +              if (paperheight && paperheight == 279)
       +                token2 = "letter";
       +              else
       +                token2 = "a4";
       +            }
       +#endif
                  xfree (media_name);
                  media_name = xstrdup (token2);
                }