Index: pykota/trunk/conf/pykotadmin.conf.sample
===================================================================
--- pykota/trunk/conf/pykotadmin.conf.sample (revision 3275)
+++ pykota/trunk/conf/pykotadmin.conf.sample (revision 3413)
@@ -1,5 +1,5 @@
 # PyKota sample administrator's configuration file
 #
-# Under NO circumstances regular users should 
+# Under NO circumstances regular users should
 # be allowed to read this file.
 #
@@ -31,10 +31,10 @@
 # the Free Software Foundation, either version 3 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, see <http://www.gnu.org/licenses/>.
@@ -71,5 +71,5 @@
 # storagename: dc=example,dc=com
 #
-# NB : the user and password below are the ones contained in 
+# NB : the user and password below are the ones contained in
 # the sample LDIF file pykota/initscripts/ldap/pykota-sample.ldif
 # Please adapt these lines to your own needs.
Index: pykota/trunk/conf/pykota.conf.sample
===================================================================
--- pykota/trunk/conf/pykota.conf.sample (revision 3296)
+++ pykota/trunk/conf/pykota.conf.sample (revision 3413)
@@ -33,10 +33,10 @@
 # the Free Software Foundation, either version 3 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, see <http://www.gnu.org/licenses/>.
@@ -50,5 +50,5 @@
 [global]
 
-# This directive configures the charset to use when reading PyKota's 
+# This directive configures the charset to use when reading PyKota's
 # configuration files. All directives values will be decoded and
 # interpreted using the character set defined here.
@@ -78,5 +78,5 @@
 # e.g. db.example.com:5432 (for PostgreSQL) or db.example.com:3306 (for MySQL)
 # NB : leave the directive empty to use unix sockets (same host only)
-# NB : Using the word 'localhost' for MySQL defaults to a UNIX socket 
+# NB : Using the word 'localhost' for MySQL defaults to a UNIX socket
 #      connection, which may be unexpected. Using 127.0.0.1 avoids this issue.
 #      See http://bugs.mysql.com/bug.php?id=31577 for more information.
@@ -87,9 +87,9 @@
 storagename: pykota
 
-# 
+#
 # Quota Storage normal user's name and password
-# These two fields contain a username and optional password 
+# These two fields contain a username and optional password
 # which may give readonly access to your print quota database.
-# 
+#
 # PLEASE ENSURE THAT THIS USER CAN'T WRITE TO YOUR PRINT QUOTA
 # DATABASE, OTHERWISE ANY USER WHO COULD READ THIS CONFIGURATION
@@ -112,6 +112,6 @@
 #storageserver: ldap://ldap.example.com:389
 #storagename: dc=example,dc=com
-# 
-# NB : the user and password below are the ones contained in 
+#
+# NB : the user and password below are the ones contained in
 # the sample LDIF file pykota/initscripts/ldap/pykota-sample.ldif
 # Please adapt these lines to your own needs.
@@ -137,5 +137,5 @@
 
 
-# Here we define some helpers to know where 
+# Here we define some helpers to know where
 # to plug into an existing LDAP directory
 # NB : THE DIRECTIVES BELOW MUST BE PRESENT WITH AN LDAP BACKEND
@@ -175,10 +175,10 @@
 # "below" creates the new accounts/groups as standalone entries
 # below the above defined 'userbase' ou
-# 
+#
 # attach(objectclass name [, action]) tries to find some existing user/group
 # using the above defined 'userrdn' or 'grouprdn' and 'userbase'
 # 'groupbase', and attach the PyKota specific entries to it.
 # if action is "warn" and no entry exists to attach to, a new
-# entry is created, and a message is logged. 
+# entry is created, and a message is logged.
 # if action is "fail" and no entry exists to attach to, program
 # logs an error message and aborts.
@@ -256,5 +256,5 @@
 
 # Where to log ?
-# supported values : stderr, system (system means syslog, but don't use 
+# supported values : stderr, system (system means syslog, but don't use
 # 'syslog' here). if the value is not set then the default SYSTEM applies.
 #
@@ -265,5 +265,5 @@
 # Enable debugging ? Put YES or NO there.
 # debug is set to YES in this sample configuration file, so debugging
-# is activated when configuring PyKota, which helps a lot. After all 
+# is activated when configuring PyKota, which helps a lot. After all
 # works, just put NO instead to save some disk space in your logs.
 # NB : When set to YES, there is a very significant impact on performance
@@ -315,5 +315,5 @@
 #        - a copy of the software's command line arguments
 #        - a copy of the software's environment variables
-# 
+#
 # suggested value :
 #
@@ -325,5 +325,5 @@
 # If the value is not set, and the mail attribute for the user
 # is not set in the PyKota storage, be it LDAP (see usermail directive
-# above) or a relationnal one, then email messages are sent to 
+# above) or a relationnal one, then email messages are sent to
 # username@smtpserver
 #
@@ -346,6 +346,6 @@
 # still case sensitive.
 #
-# If usernamecase is 'upper' or 'lower', the usernames received 
-# from the printing system are converted to uppercase or lowercase, 
+# If usernamecase is 'upper' or 'lower', the usernames received
+# from the printing system are converted to uppercase or lowercase,
 # respectively, at the start of printing, BUT ONLY when printing.
 #
@@ -365,5 +365,5 @@
 # This option adds support for Samba's Winbind utility, which
 # prefixes usernames with domain name and separator character.
-# Of course if you set this then you have to use NO separator when 
+# Of course if you set this then you have to use NO separator when
 # adding users with edpykota.
 #
@@ -372,8 +372,8 @@
 # (real username) is used.
 #
-# If winbind_separator is not set, which is the default, strict 
+# If winbind_separator is not set, which is the default, strict
 # username equality checking will be done (modulo the setting
 # of the 'usernamecase' directive), this means that users 'DOMAIN1/jerome',
-# 'Domain2/jerome' and 'jerome' are different. 
+# 'Domain2/jerome' and 'jerome' are different.
 #
 # winbind_separator: /
@@ -384,5 +384,5 @@
 # or groups which are unknown from the system ?
 # The default if unset is NO. This means that by default, you
-# can create users or groups for which `getent passwd username` 
+# can create users or groups for which `getent passwd username`
 # or `getent group groupname` returns nothing.
 #
@@ -400,5 +400,5 @@
 # If unset, the default value is NO, meaning that jobs' title, filename
 # and options will be saved into the history.
-# This option can't be set on a per printer basis, only into the 
+# This option can't be set on a per printer basis, only into the
 # [global] section.
 #
@@ -411,5 +411,5 @@
 # Also should we retry and if yes then how often and how many times ?
 # If you trust your users, set it to "nocharge".
-# If you think they found some mean to kill the real CUPS backend, 
+# If you think they found some mean to kill the real CUPS backend,
 # then set it to "charge".
 # If your print queues get regularly disabled by CUPS when the printers
@@ -418,5 +418,5 @@
 # the delay in seconds during which PyKota will sleep before trying again.
 # This 'retry' feature works in a way similar to Till Kamppeter's beh
-# backend wrapper which offers this functionnality but is actually not 
+# backend wrapper which offers this functionnality but is actually not
 # compatible with PyKota (because of my own inability to master regular
 # expressions).
@@ -467,8 +467,8 @@
 #    REASON=reason_we_chose_deny_or_cancel
 #    AUTH=NO (equivalent to DENY below)
-#    DENY 
+#    DENY
 #    CANCEL
 #
-# NB : the output of your command is entirely read, and the latest 
+# NB : the output of your command is entirely read, and the latest
 # value seen is used, so you command can output several usernames
 # or billing codes and only the latest ones will be used.
@@ -478,6 +478,6 @@
 # used unchanged.
 # If DENY or CANCEL is output, neither the username nor the
-# billing code can be overwritten. 
-# If REASON is output, that will be used in the notification in the case of 
+# billing code can be overwritten.
+# If REASON is output, that will be used in the notification in the case of
 # DENY or CANCEL. Otherwise, the built-in reasons will be used.
 #
@@ -499,5 +499,5 @@
 #
 # examples :
-# 
+#
 # overwrite_jobticket : /usr/bin/pknotify --destination $PYKOTAJOBORIGINATINGHOSTNAME:7654 --timeout 180 --denyafter 3 --checkauth --ask "Username:username:$PYKOTAUSERNAME" "Password:password:" "Billing code:billingcode:$PYKOTAJOBBILLING"
 # overwrite_jobticket : /path/to/some/script/or/command
@@ -560,5 +560,5 @@
 # Should we keep our work files on disk after printing ?
 # If unset, temporary files are deleted once the work is finished.
-# If set to yes, files are kept on disk in the 'directory' 
+# If set to yes, files are kept on disk in the 'directory'
 # named with the previous directive.
 # This value can be set either globally or on a per printer basis
@@ -576,5 +576,5 @@
 # will compute the number of pages printed. This directive is the most
 # important one in PyKota's configuration.
-# 
+#
 # NB : This directive is MANDATORY, there's no default value when not set.
 #
@@ -591,10 +591,10 @@
 # The big advantages of hardware accounting are lighter CPU usage compared
 # to software accounting described below, although it can take more time
-# because of necessary internal counter stabilization delays, and the fact 
+# because of necessary internal counter stabilization delays, and the fact
 # that paper jams don't cause users to be charged for pages they couldn't
 # print.
 # For hardware accounting, two special values are accepted in addition
 # to a script name : snmp and pjl. 'snmp' asks PyKota to use its internal
-# SNMP code, 'pjl' asks PyKota to internally send a specially crafter PJL 
+# SNMP code, 'pjl' asks PyKota to internally send a specially crafter PJL
 # job to the printer's TCP port 9100 (by default).
 #
@@ -627,5 +627,5 @@
 #
 # Supported resolutions for ink accounting are any number of dots
-# per inch comprised between 72 and 1200. 
+# per inch comprised between 72 and 1200.
 # IMPORTANT : increasing the resolution increases precision, but
 # increase CPU load a lot at the same time. The default resolution
@@ -634,10 +634,10 @@
 # coefficients for each color in the colorspace, as explained
 # further below in this file.
-# 
+#
 # You can get hints on which configuration is best for your printers by
 # typing : pkturnkey --doconf
 #
 # In the lines below "%(printer)s" is automatically replaced at run time
-# with your printer's Fully Qualified Domain Name for network printers, 
+# with your printer's Fully Qualified Domain Name for network printers,
 # if PyKota can extract it from its environment.
 #
@@ -654,5 +654,5 @@
 # accounter : hardware(/opt/local/net-snmp/bin/snmpwalk -v 1 -Cc -c public %(printer)s | grep mib-2.43.10.2.1.4.1.1 | cut -d " " -f4)
 # accounter : hardware(/opt/local/net-snmp/bin/snmpwalk -v 1 -Cc -c public -Ov %(printer)s | grep Counter32 | tail -2 | head -1 | cut -d " " -f2)
-# accounter : software(/usr/bin/pkpgcounter "$PYKOTADATAFILE") 
+# accounter : software(/usr/bin/pkpgcounter "$PYKOTADATAFILE")
 # accounter : software()
 # accounter : ink(cmyk, 150)
@@ -661,12 +661,12 @@
 # accounter : ink(cmy, 72)
 # accounter : ink(gc, 72)
-#         
+#
 # This directive can be set either globally or per printer or both.
 # If both are defined, the printer option has priority.
-#         
-# IF YOU PLAN TO USE YOUR OWN SCRIPTS FOR HARDWARE ACCOUNTING,      
+#
+# IF YOU PLAN TO USE YOUR OWN SCRIPTS FOR HARDWARE ACCOUNTING,
 # YOU ABSOLUTELY HAVE TO BE SURE YOU HAVE A SCRIPT WHICH WAITS FOR THE
 # PRINTER BEING READY BEFORE ASKING FOR ITS INTERNAL PAGE COUNTER.
-#         
+#
 # PYKOTA'S 'snmp' and 'pjl' HARDWARE ACCOUNTING METHODS DO THE CORRECT WORK
 # INTERNALLY, BUT SOME OF THE EXAMPLES ABOVE DON'T, YOU HAVE BEEN WARNED.
@@ -677,13 +677,13 @@
 # AND DO ALL THE HARD WORK AUTOMATICALLY. IF YOU REALLY NEED TO YOU CAN USE
 # YOUR OWN EXTERNAL COMMANDS AS DESCRIBED ABOVE, JUST BE CAREFUL WITH THIS.
-#         
+#
 # Sane default :
 #
 accounter: software()
 
-# Should we ensure that the printer really is idle before 
+# Should we ensure that the printer really is idle before
 # sending the job's datas to it ?
 #
-# This directive is only used when you use an internal 
+# This directive is only used when you use an internal
 #�hardware accounting mechanism, like hardware(snmp) or
 # hardware(pjl), and is not used for external hardware
@@ -691,5 +691,5 @@
 #
 # If PyKota and CUPS are properly configured, i.e. a single
-# computer (the print server) can access to a particular physical 
+# computer (the print server) can access to a particular physical
 # printer, or all CUPS+PyKota print servers which access to the
 # same physical printer share a common network directory used
@@ -706,5 +706,5 @@
 #
 # If not defined, a value of No is assumed.
-# 
+#
 # This value can be set either globally or on a per printer basis
 # If both are defined, the printer option has priority.
@@ -718,11 +718,11 @@
 # Supported values are :
 #
-#  preaccounter: software()       
+#  preaccounter: software()
 #  preaccounter: software(/path/to/your/script)
 #  preaccounter: ink(colorspace, resolution)
 #
-# NB : the preaccounter directive doesn't support hardware() for obvious 
-# reasons. If unset, "software()" is assumed. If you use your own script, 
-# ensure that it only prints the job's number of pages (or an estimation 
+# NB : the preaccounter directive doesn't support hardware() for obvious
+# reasons. If unset, "software()" is assumed. If you use your own script,
+# ensure that it only prints the job's number of pages (or an estimation
 # of it) on its standard output, and that it reads the print job's datas
 # from the file pointed to by the PYKOTADATAFILE environment variable.
@@ -743,5 +743,5 @@
 #
 # Supported resolutions for ink accounting are any number of dots
-# per inch comprised between 72 and 1200. 
+# per inch comprised between 72 and 1200.
 # IMPORTANT : increasing the resolution increases precision, but
 # increase CPU load a lot at the same time. The default resolution
@@ -769,5 +769,5 @@
 # 'stop' means fail and stop the print queue. If an accounter
 # error occurs, most of the time this is a misconfiguration, so
-# stopping the print queue is usually the best thing to do 
+# stopping the print queue is usually the best thing to do
 # until the admin has fixed the configuration.
 #
@@ -786,5 +786,5 @@
 # These values can be set either globally or per printer or both.
 # If both are defined, the printer option has priority.
-# If these values are not set, the default admin root 
+# If these values are not set, the default admin root
 # and the default adminmail root@localhost are used.
 admin: John Doe
@@ -795,5 +795,5 @@
 # Who should we send an email to in case a quota is reached ?
 # possible values are : DevNull, User, Admin, Both, External(some command)
-# The Both value means that the User and the Admin will receive 
+# The Both value means that the User and the Admin will receive
 # an email message.
 # The DevNull value means no email message will be sent.
@@ -812,5 +812,5 @@
 #       '%(printername)s'       will contain the printer's name
 #       '%(email)s'             will contain the user's email address
-#       '%(message)s'           will contain the message if you want 
+#       '%(message)s'           will contain the message if you want
 #                               to use it.
 #
@@ -820,5 +820,5 @@
 #     mailto: external(/usr/bin/callpager %(username)s "Quota problem on %(printername)s" >/dev/null)
 #
-#   To automatically send a WinPopup message (this may only work with a PDC, 
+#   To automatically send a WinPopup message (this may only work with a PDC,
 #   here the same machine does Samba as PDC + CUPS) :
 #
@@ -835,5 +835,5 @@
 #
 #   NB : in ANY case, don't forget to redirect your command's standard output
-#        somewhere (e.g. >/dev/null) so that there's no perturbation to the 
+#        somewhere (e.g. >/dev/null) so that there's no perturbation to the
 #        underlying layer (filter or backend)
 #
@@ -868,5 +868,5 @@
 
 # Poor man's threshold
-# If account balance reaches below this amount, a warning message 
+# If account balance reaches below this amount, a warning message
 # is sent through the 'mailto' directive above.
 #
@@ -882,5 +882,5 @@
 # Again this must appear in the global section
 #
-poorwarn : Your Print Quota account balance is low. 
+poorwarn : Your Print Quota account balance is low.
  Soon you'll not be allowed to print anymore.
 
@@ -893,5 +893,5 @@
 softwarn: Your Print Quota Soft Limit is reached.
  This means that you may still be allowed to print for some
- time, but you must contact your administrator to purchase 
+ time, but you must contact your administrator to purchase
  more print quota.
 
@@ -938,15 +938,15 @@
 # for example to automatically add the user to the quota database, and set
 # page limits on the current printer if he is unknown :
-# 
-#   policy: external(/usr/bin/pkusers --add --skipexisting %(username)s && /usr/bin/edpykota --add --skipexisting --printer %(printername)s --softlimit 50 --hardlimit 60 %(username)s) 
+#
+#   policy: external(/usr/bin/pkusers --add --skipexisting %(username)s && /usr/bin/edpykota --add --skipexisting --printer %(printername)s --softlimit 50 --hardlimit 60 %(username)s)
 #
 # NB : If you want to limit users by their account balance value, it is preferable to
 # use the following policy to automate user account creation on first print :
 #
-#   policy: external(/usr/bin/autopykota --initbalance 25.0) 
+#   policy: external(/usr/bin/autopykota --initbalance 25.0)
 #
 #   This will automatically add the user if he doesn't already exist, and
-#   set his initial balance value to 25.0 (for example). If the user already 
-#   exists then his balance value will not be modified. 
+#   set his initial balance value to 25.0 (for example). If the user already
+#   exists then his balance value will not be modified.
 #   Please don't use autopykota if you want to limit your users by page
 #   quota, and in any case, carefully read autopykota's help or manpage
@@ -962,9 +962,9 @@
 #       '%(printername)s'       will contain the printer's name
 #
-#   On your command line, to pass arguments to your command. 
-#
-# If the printer, user, or user quota entry still doesn't exist after 
-# external policy command was launched (the external command didn't add it), 
-# or if an error occured during the execution of the external policy 
+#   On your command line, to pass arguments to your command.
+#
+# If the printer, user, or user quota entry still doesn't exist after
+# external policy command was launched (the external command didn't add it),
+# or if an error occured during the execution of the external policy
 # command, then the job is rejected.
 #
@@ -975,5 +975,5 @@
 
 
-# Pre and Post Hooks 
+# Pre and Post Hooks
 # These directives allow the easy plug-in of any command of your choice
 # at different phases of PyKota's execution.
@@ -988,11 +988,11 @@
 # List of available environment variables :
 # NB : Most of these variables are also available during the execution
-# of external commands defined in the accounter and mailto 
+# of external commands defined in the accounter and mailto
 # directives.
 #
 # PYKOTADIRECTORY : The directory containing cupspykota's temporary files
-# PYKOTADATAFILE : The name of the temporary file which contains the 
+# PYKOTADATAFILE : The name of the temporary file which contains the
 #                  job's datas
-# PYKOTAFILENAME : The name of the file which contains the job's datas or 
+# PYKOTAFILENAME : The name of the file which contains the job's datas or
 #                  empty if datas come from stdin
 # PYKOTAMD5SUM : Contains an hexadecimal digest of the md5 sum of the job's datas
@@ -1008,5 +1008,5 @@
 # PYKOTAOPTIONS : job's options
 # PYKOTABALANCE : user's account balance
-# PYKOTALIFETIMEPAID : user's grand total paid 
+# PYKOTALIFETIMEPAID : user's grand total paid
 # PYKOTALIMITBY : user print limiting factor, for example 'quota' or 'balance'
 # PYKOTAPAGECOUNTER : user's page counter on this printer
@@ -1020,5 +1020,5 @@
 # PYKOTAPRECOMPUTEDJOBSIZE : contains the precomputed job's size
 # PYKOTAPRECOMPUTEDJOBPRICE : contains the precomputed job's price
-# PYKOTAJOBORIGINATINGHOSTNAME : contains the client's hostname if 
+# PYKOTAJOBORIGINATINGHOSTNAME : contains the client's hostname if
 #                                it is possible to retrieve it.
 # PYKOTAPRINTERHOSTNAME : the printer's hostname or IP address for network
@@ -1026,5 +1026,5 @@
 #                         meaningful.
 # PYKOTAWARNCOUNT : the number of times the user was forbidden to print but a banner
-#                   page was still printed on the current printer.                   
+#                   page was still printed on the current printer.
 # PYKOTAOVERCHARGE : user's overcharging factor.
 # PYKOTAJOBBILLING : Job's billing code if present, possibly modified through the overwrite_jobticket directive.
@@ -1047,7 +1047,7 @@
 # prehook has access to many environment variables :
 #
-# PYKOTAACTION contains either "ALLOW", "WARN" or "DENY" and 
+# PYKOTAACTION contains either "ALLOW", "WARN" or "DENY" and
 # represents the action which is to be done wrt the print job.
-# PYKOTAPHASE contains 'BEFORE' during execution of prehook 
+# PYKOTAPHASE contains 'BEFORE' during execution of prehook
 #
 # uncomment the line below to see what environment variables are available
@@ -1058,6 +1058,6 @@
 # PostHook : gets executed after the job has been added to the history.
 # posthook has access to all the environment variables defined above,
-# as well as two additionnal environment variables : PYKOTAJOBPRICE 
-# and PYKOTAJOBSIZE. 
+# as well as two additionnal environment variables : PYKOTAJOBPRICE
+# and PYKOTAJOBSIZE.
 # PYKOTAPHASE contains 'AFTER' during execution of posthook.
 #
@@ -1069,5 +1069,5 @@
 # AccountBanner : how should banner accounting be done ?
 #
-# If enabled, banner pages printed from StartingBanner and/or EndingBanner 
+# If enabled, banner pages printed from StartingBanner and/or EndingBanner
 # (depending on the value) will be included in the accounting for the
 # print job
@@ -1113,5 +1113,5 @@
 
 
-# If a job is printed by the same person as the last job on the same printer, 
+# If a job is printed by the same person as the last job on the same printer,
 # should banners be avoided to save some paper
 #
@@ -1120,23 +1120,23 @@
 # If set to no or 0, no banners will be avoided (they will all be printed)
 # If set to any positive integer, banners will be avoided if printed within
-#     'integer' seconds of the last job 
+#     'integer' seconds of the last job
 #
 # This value defaults to no
 # avoidduplicatebanners: yes
 # avoidduplicatebanners: no
-# avoidduplicatebanners: 600   
-
-
-# StartingBanner : if defined will print a banner before the rest of the job 
+# avoidduplicatebanners: 600
+
+
+# StartingBanner : if defined will print a banner before the rest of the job
 # is printed. The argument can be a printable file, or an executable file.
-# If not executable, the file will be printed as is. If executable, the 
+# If not executable, the file will be printed as is. If executable, the
 # file will be executed and its standard output will be sent to the printer.
 #
 # In any case, the banner content which will be sent to the printer
-# MUST be in a format your printer will accept !!! 
+# MUST be in a format your printer will accept !!!
 #
 # The pkbanner command included in PyKota can automatically generate
 # starting and ending banners in the PostScript format. You can use
-# this command in a pipe through GhostScript if your printer doesn't 
+# this command in a pipe through GhostScript if your printer doesn't
 # accept PostScript as an input format.
 # NB : pkbanner's default page size is A4
@@ -1149,7 +1149,7 @@
 
 
-# EndingBanner : if defined will print a banner after the job 
+# EndingBanner : if defined will print a banner after the job
 # has been printed. The argument can be a printable file, or an executable file.
-# If not executable, the file will be printed as is. If executable, the 
+# If not executable, the file will be printed as is. If executable, the
 # file will be executed and its standard output will be sent to the printer.
 #
@@ -1159,5 +1159,5 @@
 # The pkbanner command included in PyKota can automatically generate
 # starting and ending banners in the PostScript format. You can use
-# this command in a pipe through GhostScript if your printer doesn't 
+# this command in a pipe through GhostScript if your printer doesn't
 # accept PostScript as an input format.
 # NB : pkbanner's default page size is A4
@@ -1178,5 +1178,5 @@
 #
 # Default PyKota banner
-# endingbanner: /usr/bin/pkbanner 
+# endingbanner: /usr/bin/pkbanner
 
 
@@ -1185,11 +1185,11 @@
 #
 # "laxist" is the default if value is not set, and allows users
-# to be over quota on their last job. 
+# to be over quota on their last job.
 #
 # "strict" tries to prevent users from ever being over quota.
 #
 # Enforcement can be defined either globally, per printer,
-# or both. If both are defined, the printer specific enforcement 
-# setting has priority. 
+# or both. If both are defined, the printer specific enforcement
+# setting has priority.
 #
 # valid values : "strict" or "laxist"
@@ -1211,5 +1211,5 @@
 # "trustjobsize : >N:25" : uses 25 if jobsize is >N pages
 #
-# General form : ">n:m" where n is a positive integer, and m is 
+# General form : ">n:m" where n is a positive integer, and m is
 # either the word 'precomputed' or a positive integer.
 # The special form "yes" is also accepted and is the default.
@@ -1217,10 +1217,10 @@
 # This directive can be set either globally or on a per printer
 # basis. Use this directive when hardware accounting for a particular
-# printer produces some glitches due to the printer returning 
+# printer produces some glitches due to the printer returning
 # incorrect answers.
 #
 # NB : DON'T MODIFY THIS IF YOU DON'T NEED TO. THIS IS ONLY TO BE USED
 # AS A WORKAROUND FOR SOME PRINTERS. IT'S PROBABLY BETTER TO ALWAYS
-# SET THIS DIRECTIVE TO 'yes'. THIS DIRECTIVE WILL ONLY BE HONORED 
+# SET THIS DIRECTIVE TO 'yes'. THIS DIRECTIVE WILL ONLY BE HONORED
 # IF PYKOTA DETECTS A DIFFERENCE BETWEEN THE PRECOMPUTED JOB SIZE
 # AND THE JOB SIZE AS COMPUTED BY PYKOTA EITHER USING HARDWARE OR
@@ -1248,9 +1248,9 @@
 # Possible values are 'yes', 'no', or any other string.
 # If the string is not recognized as a truth value,
-# it is considered to be a command to launch. 
+# it is considered to be a command to launch.
 # PyKota launches the command and parses its standard
 # output. The special keywords 'ALLOW' and 'DENY' are
 # recognized, allowing an external tool to decide if
-# the job is to be allowed or denied. 
+# the job is to be allowed or denied.
 #
 # denyduplicates : /usr/bin/myowncommand with some arguments
@@ -1260,7 +1260,7 @@
 
 
-# Sets the delay in seconds after which two identical jobs are 
+# Sets the delay in seconds after which two identical jobs are
 # not considered as being a duplicate.
-# 
+#
 # This can be defined either globally or on a per printer basis
 # The default value if not set is 0, for 0 seconds.
@@ -1275,7 +1275,7 @@
 # will never be printed, aborts the hardware accounting
 # process, and uses the latest internal page counter value seen.
-# 
-# Increasing this value, or setting it to 0, may help with some 
-# printers which don't conform to RFC3805. Problem reported on a 
+#
+# Increasing this value, or setting it to 0, may help with some
+# printers which don't conform to RFC3805. Problem reported on a
 # Samsung ML2551n gave a way for clever students to bypass
 # hardware accounting entirely by removing the paper from
@@ -1287,5 +1287,5 @@
 #
 # This directive can be set either globally or on a per printer
-# basis. 
+# basis.
 #
 # When not set, an hardcoded value of 60 seconds is used.
@@ -1302,5 +1302,5 @@
 #
 # This directive can be set either globally or on a per printer
-# basis. 
+# basis.
 #
 # When not set, an hardcoded value of 5 times is used.
@@ -1316,5 +1316,5 @@
 #
 # This directive can be set either globally or on a per printer
-# basis. 
+# basis.
 #
 # When not set, an hardcoded value of 4.0 seconds is used.
@@ -1331,5 +1331,5 @@
 #
 # This directive can be set either globally or on a per printer
-# basis. 
+# basis.
 #
 # The 16 bit values are specified as in RFC3805 (Printer MIB v2),
@@ -1359,5 +1359,5 @@
 #   No Paper, Door Open, Jammed, Offline, Service Requested,
 #   Input Tray Missing, Output Tray Missing, Output Full, Input Tray Empty
-# 
+#
 # This value can be specified either in hexadecimal (prefixed with 0x),
 # in octal (prefixed with 0) or in decimal (no prefix).
@@ -1375,5 +1375,5 @@
 # With these coefficients, the exact cost of each page
 # can be computed : for each ink color in the colorspace specified
-# in the preaccounter and/or accounter directives, we multiply the 
+# in the preaccounter and/or accounter directives, we multiply the
 # base cost per page set with pkprinters by this ink color's coefficient
 # and by the percent of that page covered with such ink. Then we
@@ -1412,5 +1412,5 @@
 # Coefficients can be set either in the [global] section or in any
 # [printqueuename] section. The latter taking precedence, as always.
-# 
+#
 #coefficient_cyan : 1.2
 #coefficient_magenta : 3
