diff -up libpaper-1.1.24+nmu3/lib/paper.c.useglibcfallback libpaper-1.1.24+nmu3/lib/paper.c --- libpaper-1.1.24+nmu3/lib/paper.c.useglibcfallback 2010-04-24 08:12:11.000000000 -0400 +++ libpaper-1.1.24+nmu3/lib/paper.c 2014-04-22 15:58:33.120039001 -0400 @@ -20,6 +20,9 @@ #include +#include +#include + #include "paper.h" struct paper { @@ -108,6 +111,27 @@ in PAPERCONFVAR, fall-back to the old be } const char* defaultpapername(void) { +#if defined(LC_PAPER) && defined(_GNU_SOURCE) + +#define NL_PAPER_GET(x) \ + ((union { char *string; unsigned int word; })nl_langinfo(x)).word + +#define PT_TO_MM(v) (unsigned int)((v * 2.54 * 10 / 72) + 0.5) + + const struct paper* pp; + + unsigned int w = NL_PAPER_GET(_NL_PAPER_WIDTH); + unsigned int h = NL_PAPER_GET(_NL_PAPER_HEIGHT); + + for (pp = paperfirst(); pp; pp = papernext(pp)) { + if ( + PT_TO_MM(pp->pswidth) == w && + PT_TO_MM(pp->psheight) == h + ) { + return pp->name; + } + } +#endif return PAPERSIZE; } diff -up libpaper-1.1.24+nmu3/man/paperconf.1.in.useglibcfallback libpaper-1.1.24+nmu3/man/paperconf.1.in --- libpaper-1.1.24+nmu3/man/paperconf.1.in.useglibcfallback 2014-04-22 15:58:33.121038995 -0400 +++ libpaper-1.1.24+nmu3/man/paperconf.1.in 2014-04-22 16:00:15.973428376 -0400 @@ -48,10 +48,12 @@ looking in order at the .B @PAPERSIZEVAR@ environment variable, at the contents of the file specified by the .B @PAPERCONFVAR@ -environment variable, at the contents of +environment variable, at the contents of the file .B @PAPERCONF@ -or by using -.B letter +, consulting the values controlled by the +.B LC_PAPER +locale setting, or by using +.B @PAPERSIZE@ as a fall-back value if none of the other alternatives are successful. By default, width and height of the paper are printed in PostScript points. .SH OPTIONS diff -up libpaper-1.1.24+nmu3/src/paperconf.c.useglibcfallback libpaper-1.1.24+nmu3/src/paperconf.c --- libpaper-1.1.24+nmu3/src/paperconf.c.useglibcfallback 2012-05-03 15:05:12.000000000 -0400 +++ libpaper-1.1.24+nmu3/src/paperconf.c 2014-04-22 15:58:33.121038995 -0400 @@ -13,6 +13,7 @@ #include #include +#include /* needed for GNU/Hurd */ @@ -99,6 +100,8 @@ int main(int argc, char** argv) const char* progname; + setlocale(LC_ALL, ""); + progname = strrchr(*argv, '/'); if (progname) { ++progname;