Package: libpaper1 Version: 1.1.16 Severity: important Tags: patch Hi,
as noted in libpaper1.config comments: # PROBLEM: it doesn't work for page sizes that aren't exact millimeter multiple # since libpaper database is using decimal numbers, while i18n database is rounded # to integer. Here is a patch. It fixes other problems too: * Title was wrongly set (see #270103). It is mostly useless, so drop it. * Locales can also be selected by $LANG and $LC_ALL environment variables * Looking at locale source files is fragile, it does not work with most locales. Use the locale program instead. Please run debconf-updatepo after applying this patch. Denis
diff -ur debian.orig/libpaper1.config debian/libpaper1.config --- debian.orig/libpaper1.config 2006-05-13 16:35:56.000000000 +0200 +++ debian/libpaper1.config 2006-05-17 02:06:54.000000000 +0200 @@ -4,75 +4,23 @@ db_version 2.0 db_capb backup -db_settitle libpaper/defaultpaper +paper= if [ -f /etc/papersize ]; then paper=`head -n 1 /etc/papersize` - db_set libpaper/defaultpaper $paper - -elif [ -n "$LC_PAPER" ] -then - - # - # Find the name of the i18n locale file - # - - if [ -e /usr/share/i18n/locales/"$LC_PAPER" ] - then - f=/usr/share/i18n/locales/"$LC_PAPER" - else - nocharset=${LC_PAPER%.*} - if [ -e /usr/share/i18n/locales/"$nocharset" ] - then - f=/usr/share/i18n/locales/"$nocharset" - else - nocountry=${LC_PAPER%_*} - if [ -e /usr/share/i18n/locales/"$nocountry" ] - then - f=/usr/share/i18n/locales/"$nocountry" - fi - fi - fi - - # - # look for pagesize information in that file - # - - if [ -n "$f" ] - then - - # Look in the locales definition file - # for width and height of default paper. +else + loc=${LC_ALL:-${LC_PAPER:-$LANG}} + if [ -n "$loc" ] && [ "$loc" != C ]; then # This is always in millimeters. - wh=$(awk 'BEGIN {noPAP=1;} -/^LC_PAPER/ {noPAP=0;} -/^height/ { if (noPAP==0) {h=$2} } -/^width/ { if (noPAP==0) {w=$2} } -/^END LC_PAPER/ {print w " mm " h " mm"; exit 0}' "$f" ) - - # Next look into libpaper database and see if we find a matching paper size - # and, eventually, find its name. - # - # PROBLEM: it doesn't work for page sizes that aren't exact millimeter multiple - # since libpaper database is using decimal numbers, while i18n database is rounded - # to integer. + wh=$(locale width height 2>/dev/null | tr '\n' ' ' | sed -e 's/ / mm /g' | sed -e 's/ $//') - [ -n "$wh" ] && line=$(paperconf -asm | grep -n "$wh" | sed -e 's/\(^[^:]*\):.*$/\1/') - [ -n "$line" ] && paper=$(paperconf -a | head -$line | head -1) - [ -n "$paper" ] && db_set libpaper/defaultpaper $paper + # Next look into libpaper database and see if we find a matching + # paper size and, eventually, find its name. + [ -n "$wh" ] && line=$(paperconf -asm | LC_ALL=C awk '{printf "%d mm %d mm\n", $1+0.5, $3+0.5}' | grep -n "$wh" | sed -e 's/\(^[^:]*\):.*$/\1/' -e 1q) + [ -n "$line" ] && paper=$(paperconf -a | sed -e ${line}'!d') fi - - # - # handle special cases - # - - case "${LC_PAPER%.*}" in - *_US | *_CA) - db_set libpaper/defaultpaper letter - ;; - esac - fi +[ -n "$paper" ] && db_set libpaper/defaultpaper $paper db_input medium libpaper/defaultpaper db_go diff -ur debian.orig/libpaper1.templates debian/libpaper1.templates --- debian.orig/libpaper1.templates 2004-07-16 19:05:50.000000000 +0200 +++ debian/libpaper1.templates 2006-05-17 02:10:25.000000000 +0200 @@ -6,7 +6,3 @@ Please select which paper size to use as the default on your system. Various programs on your system will use this configuration option to determine how to print output. The default is typically correct. - -Template: libpaper/title -Type: title -_Description: Paper Size Configuration