You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
80 lines
2.4 KiB
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 <unistd.h> |
|
|
|
+#include <locale.h> |
|
+#include <langinfo.h> |
|
+ |
|
#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 <errno.h> |
|
|
|
#include <paper.h> |
|
+#include <locale.h> |
|
|
|
|
|
/* 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;
|
|
|