This file is indexed.

/usr/share/system-config-printer/troubleshoot/Locale.py is in system-config-printer-gnome 1.5.7+20160212-0ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/python3

## Printing troubleshooter

## Copyright (C) 2008, 2012 Red Hat, Inc.
## Copyright (C) 2008, 2012 Tim Waugh <twaugh@redhat.com>

## 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.

import locale

from gi.repository import Gtk

from .base import *

class Locale(Question):
    def __init__ (self, troubleshooter):
        Question.__init__ (self, troubleshooter, "Locale issues")
        page = self.initial_vbox (_("Incorrect Page Size"),
                                  _("The page size for the print job was "
                                    "not the printer's default page size.  "
                                    "If this is not intentional it may cause "
                                    "alignment problems."))
        table = Gtk.Table (n_rows=2, n_columns=2)
        table.set_row_spacings (6)
        table.set_col_spacings (6)
        page.pack_start (table, False, False, 0)
        self.printer_page_size = Gtk.Label ()
        self.printer_page_size.set_alignment (0, 0)
        self.job_page_size = Gtk.Label ()
        self.job_page_size.set_alignment (0, 0)
        label = Gtk.Label(label=_("Print job page size:"))
        label.set_alignment (0, 0)
        table.attach (label, 0, 1, 0, 1, xoptions=Gtk.AttachOptions.FILL, yoptions=0)
        table.attach (self.job_page_size, 1, 2, 0, 1,
                      xoptions=Gtk.AttachOptions.FILL, yoptions=0)
        label = Gtk.Label(label=_("Printer page size:"))
        label.set_alignment (0, 0)
        table.attach (label, 0, 1, 1, 2, xoptions=Gtk.AttachOptions.FILL, yoptions=0)
        table.attach (self.printer_page_size, 1, 2, 1, 2,
                      xoptions=Gtk.AttachOptions.FILL, yoptions=0)
        troubleshooter.new_page (page, self)

    def display (self):
        self.answers = {}
        (messages, encoding) = locale.getlocale (locale.LC_MESSAGES)
        (ctype, encoding) = locale.getlocale (locale.LC_CTYPE)
        self.answers['user_locale_messages'] = messages
        self.answers['user_locale_ctype'] = ctype

        try:
            system_lang = None
            conf = None
            for conffile in ["/etc/locale.conf", "/etc/sysconfig/i18n"]:
                try:
                    conf = open (conffile).readlines ()
                except IOError:
                    continue

            if conf is not None:
                for line in conf:
                    if line.startswith("LC_PAPER="):
                        system_lang = line[9:].strip ('\n"')
                    elif system_lang is None and line.startswith ("LANG="):
                        system_lang = line[5:].strip ('\n"')

                if system_lang is not None:
                    dot = system_lang.find ('.')
                    if dot != -1:
                        system_lang = system_lang[:dot]
        except:
            system_lang = None

        self.answers['system_locale_lang'] = system_lang

        printer_page_size = None
        try:
            ppd_defs = self.troubleshooter.answers['cups_printer_ppd_defaults']
            for group, options in ppd_defs.items ():
                if "PageSize" in options:
                    printer_page_size = options["PageSize"]
                    break

        except KeyError:
            try:
                attrs = self.troubleshooter.answers['remote_cups_queue_attributes']
                printer_page_size = attrs["media-default"]
            except KeyError:
                pass

        try:
            job_status = self.troubleshooter.answers["test_page_job_status"]
        except KeyError:
            job_status = []

        self.answers['printer_page_size'] = printer_page_size
        if printer_page_size is not None:
            job_page_size = None
            for (test, jobid, printer, doc, status, attrs) in job_status:
                if test:
                    if "PageSize" in attrs:
                        job_page_size = attrs["PageSize"]
                        self.answers['job_page_size'] = job_page_size
                        if job_page_size != printer_page_size:
                            self.printer_page_size.set_text (printer_page_size)
                            self.job_page_size.set_text (job_page_size)
                            return True

        return False

    def collect_answer (self):
        return self.answers