Hi,

 As you probably know, the CUPS daemon handles print jobs by running a
chain of "filters" in separate processes, piping data between them.

  The weird thing I noticed on my system (debian unstable, cups 1.2.1,
locales 2.3.6) is the behaviour of the filter process' locale settings.

  After some experimenting (I replaced my printer driver binary with my
own script that prints environment settings into a file) I got to the
following conclusion:


 The process' locale depends only the locale settings of the user
submitting the job (regardless of the 'DefaultLanguage' settings in
cupsd.conf):


*  If the user that sent the job uses system defaults (i.e. has no LANG
defined, so the locale becomes POSIX), the process gets LANG=en_US.


*  If the user had any value at all in LANG (legal or illegal locale),
the friver process gets LANG="en" (which was not a legal setting on my
system).


(the filter runs as user "lp", which has no home directory, thus no
special login scripts or locale settings).


 I could not find any reference to explain this, nor any reference to
locale in my cups config files and man pages.


The problem: I could not print as a normal user, only from root. I found
out that this is caused because the printer driver (a filter started by
cups to to convert raster to printer input) dies whenever it has an
illegal locale setting.

I fixed this by adding "en   en_US.ISO-8859-1" to locale.aliases and
reconfiguring locales.


 My question: How do you control which locale CUPS assigns to it's
filter processes?

(I want to set it to something other than "en", so I can get rid of this
alias).


    p.s. -  there's some more gory details which I avoided to make this
post shorter. These come about because I'm actually running a 32bit
binary driver using dchroot from a 64bit cupsd (but it should have no
effect, because I also ran my debugging script on the 64bit side).


    Thanks,

        Amit



=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to