Index: pykota/trunk/gentarball.sh
===================================================================
--- pykota/trunk/gentarball.sh (revision 3156)
+++ pykota/trunk/gentarball.sh (revision 3156)
@@ -0,0 +1,29 @@
+#! /bin/sh
+#
+# PyKota
+#
+# PyKota : Print Quotas for CUPS and LPRng
+#
+# (c) 2003, 2004, 2005, 2006, 2007 Jerome Alet <alet@librelogiciel.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.
+#
+# $Id$
+#
+
+# Use this to generate a tarball
+
+./clean.sh
+svn2cl --group-by-day --reparagraph --include-rev --authors=AUTHORS
+python ./setup.py sdist
Index: pykota/trunk/AUTHORS
===================================================================
--- pykota/trunk/AUTHORS (revision 3156)
+++ pykota/trunk/AUTHORS (revision 3156)
@@ -0,0 +1,5 @@
+jerome:Jerome Alet <alet@librelogiciel.com>
+jalet:Jerome Alet <alet@librelogiciel.com>
+matt:Matt Hyclak <hyclak@math.ohiou.edu>
+stefan:Stefan Wold <stefan.wold@it.su.se>
+jamuel:Jamuel P. Starkey <jamuel@my740il.com>
Index: pykota/trunk/setup.py
===================================================================
--- pykota/trunk/setup.py (revision 3133)
+++ pykota/trunk/setup.py (revision 3156)
@@ -49,5 +49,7 @@
     
 docdir = "share/doc/pykota"    
-docfiles = ["README", "FAQ", "SECURITY", "COPYING", "LICENSE", "CREDITS", "TODO", "NEWS"]
+docfiles = ["README", "FAQ", "SECURITY", "COPYING", "LICENSE", "CREDITS", "TODO"]
+if os.path.exists("ChangeLog") :
+    docfiles.append("ChangeLog")
 data_files.append((docdir, docfiles))
 
Index: pykota/trunk/clean.sh
===================================================================
--- pykota/trunk/clean.sh (revision 3133)
+++ pykota/trunk/clean.sh (revision 3156)
@@ -24,5 +24,5 @@
 # Use this to clean the tree from temporary files
 
-rm -f MANIFEST
+rm -f MANIFEST ChangeLog
 find . -name "*.bak" -exec rm -f {} \;
 find . -name "*~" -exec rm -f {} \;
Index: pykota/trunk/MANIFEST.in
===================================================================
--- pykota/trunk/MANIFEST.in (revision 3063)
+++ pykota/trunk/MANIFEST.in (revision 3156)
@@ -1,4 +1,4 @@
-include README FAQ COPYING LICENSE TODO NEWS CREDITS SECURITY MANIFEST.in 
-include clean.sh checkdeps.py bin/pkturnkey bin/pkmail bin/pkbanner
+include README FAQ COPYING LICENSE TODO ChangeLog AUTHORS CREDITS SECURITY MANIFEST.in 
+include clean.sh gentarball.sh checkdeps.py bin/pkturnkey bin/pkmail bin/pkbanner
 include bin/autopykota bin/dumpykota bin/cupspykota bin/edpykota bin/warnpykota
 include bin/repykota bin/pykotme bin/pykosd bin/pkprinters bin/pkbcodes bin/pkinvoice
Index: pykota/trunk/NEWS
===================================================================
--- pykota/trunk/NEWS (revision 3153)
+++  (revision )
@@ -1,2518 +1,0 @@
-# $Id$
-
-PyKota - Print Quotas for CUPS and LPRng
-
-(c) 2003, 2004, 2005, 2006, 2007 Jerome Alet <alet@librelogiciel.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.
-
-============================================================
-
-PyKota NEWS :
-       
-    - 1.26alpha4 (2007-03-12) :
-       
-        - Don't ask for confirmation anymore if there isn't enough credits
-          to print or if the job was already denied for some reason.
-          
-    - 1.26alpha3 (2007-01-31) :
-    
-        - Ensures start= and end= filters are only allowed for history and 
-          payments. Made start= or end= filters also work with payments.
-          
-        - Doesn't print banners anymore when the user cancelled the print job.
-        
-    - 1.26alpha2 (2007-01-18) :
-    
-        - Fixed a problem with pksetup when several instances of PostgreSQL
-          were installed.
-          
-        - Fixed a failure in edpykota to cleanly delete non existing entries.
-        
-        - Fixed email headers.
-        
-        - Changed copyright years.
-        
-    - 1.26alpha1 (2007-01-17) :
-    
-        - Stefan Wold contributed a patch to make autopykota able to retrieve
-          the email address to use for a particular user when creating it.
-          
-        - Added support for pkpgcounter v2.13's GC pseudo colorspace if you
-          only want to differentiate grayscale pages from colored pages.
-          
-        - Fixed a compatibility problem dumpykota's "--format cups" command line
-          option.
-          
-    - 1.25 (2006-12-03) :
-       
-        - Fixed a minor problem in pkprinters with the --cups command line option.
-        
-        - Improved readablity when pkrefund asks for confirmation.
-        
-        - Finished the french translation.
-        
-    - 1.25beta (2006-11-30) :
-    
-        - Fixed a bug wrt ink accounting, thanks to Netzwerkler.
-    
-        - Updated all message catalogs and manual pages.
-        
-    - 1.25alpha18 (2006-11-30) :
-    
-        - Make the data dumper accept jobid= as an additional filter, just
-          like pkrefund and pkinvoice.
-        
-        - Make pkinvoice internally work like pkrefund.
-        
-        - Fixed a severe bug in the LDAP backend wrt the overcharging factor.
-        
-    - 1.25alpha17 (2006-11-27) :
-    
-        - pkrefund can now create receipts in the PDF format.
-        
-        - The code was changed to accomodate ReportLab 2.x in pkbanner
-          and pkinvoice. ReportLab v1.x is now only supported with 
-          an english or C locale.
-          
-        - pknotify now accepts the --noremote command line option to
-          decide what has to be done when there's no PyKotIcon running
-          or accepting connections from the print server on the client host.
-          
-        - pkprinters now only modifies CUPS' printers.conf when the
-          -C | --cups command line switch is used.
-          
-    - 1.25alpha16 (2006-11-12) :
-      
-        - Several fixes to CGI scripts wrt i18n.
-        
-        - Introduced the pkrefund command line tool to refund jobs.
-        
-        - Several i18n fixes.
-        
-        - Several minor fixes to documentation and translations.
-        
-    - 1.25alpha15 (2006-11-06) :   
-    
-        - pkprinters --add and --delete now automatically reroutes CUPS
-          print queues through PyKota or through CUPS only.
-          
-        - Fixed date and time parsing problems.
-        
-        - Finally simplified the locking code again, and checked that no
-          stalled lock can persist. The lock files remain on disk though,
-          but it is a small price to pay.
-          
-    - 1.25alpha14 (2006-10-13) :
-      
-        - Removed some locking code which would have prevented multi-server
-          configuration to work correctly with a shared lock directory.
-          
-        - First useable release with the computation of ink
-          usage, through the introduction of the 'ink(cspace, resolution)'
-          value for the 'preaccounter' and 'accounter' directives in
-          pykota.conf
-          
-    - 1.25alpha13 (2006-10-04) :
-     
-        - The dumpykota.cgi script now does basic form checking
-          to immediately avoid incompatible dump options and
-          alerts the end user if Javascript is enabled.
-          
-        - The filter keys in dumpykota can now be specified in
-          lower or upper case.
-          
-        - Introduced the 'noprintingmaxdelay' directive to workaround
-          some buggy printers when hardware accounting is used.
-          
-        - Improved the reliability of hardware accounting.  
-          
-    - 1.25alpha12 (2006-09-15) :
-    
-        - Fixes encoding of username and billingcode when they
-          are overwritten by a subprocess.
-          
-    - 1.25alpha11 (2006-09-06) :
-    
-        - Now fails in an helpful manner if python-mysqldb is too old.
-        
-        - Now exports the original username and billing code (i.e.
-          their values before they are eventually overwritten) in
-          two additionnal environment variables.
-          
-    - 1.25alpha10 (2006-09-03) :
-    
-        - Rewrote the locking mechanism to try to fix the problem
-          some people reported.
-          
-        - Permissions on cupspykota are now correctly set after
-          installation.
-          
-        - Added a workaround to incorrect charset through the add
-          of the python-chardet module as a dependency.
-          
-    - 1.25alpha9 (2006-08-10) :
-    
-        - Fixed a problem when an SMTP error occured and the recovery
-          routine failed to handle it correctly.
-          
-    - 1.25alpha8 (2006-07-11) :
-    
-        - Fixed a problem in the MySQL schema.
-        
-    - 1.25alpha7 (2006-06-20) :
-    
-        - Fixed some date formatting problems when retrieving the 
-          printing history with MySQL.
-          
-        - Began code cleaning.  
-          
-    - 1.25alpha6 (2006-06-13) :
-    
-        - pkusers now supports the --email command line switch.
-          The old method to set the email address is still supported,
-          but the new one allows the email address to be modified
-          as well.
-          
-    - 1.25alpha6 (2006-06-09) :
-    
-        - Fixed the incorrect overwriting of the original billing
-          code if the overwrite_jobticket directive was used.
-          
-    - 1.25alpha5 (2006-06-03) :
-    
-        - Fixed minor issues with pkipplib's usage.
-        
-        - Fixed MySQL schema to workaround some "features"...
-        
-    - 1.25alpha4 (2006-05-23) :
-    
-        - Introduced the 'askconfirmation' directive to interact with
-          the end user through any script (pknotify is recommended)
-          and see if he really wants to print when knowing the cost
-          of the job.
-          
-        - Now uses pkipplib if present to directly retrieve the job
-          information from the CUPS server over IPP.
-          
-    - 1.25alpha3 (2006-05-11) :
-    
-        - Added a lock to ensure that a single cupspykota backend
-          is processing datas for a particular print queue at any
-          given time.
-          
-        - Now exports more environment variables for the subprocesses.
-          
-    - 1.25alpha2 (2006-05-03) :
-    
-        - Fixed some problems with DateTime objects.
-        
-        - Added support for PySNMP v4.x in addition to 3.4.x.
-        
-    - 1.25alpha1 (2006-04-14) :
-    
-        - Make the MySQL schema work with old releases of MySQL.
-        
-        - Fixed several character encoding problems.
-          
-        - Ensures that the denied banners counter is properly initialized
-          with relationnal databases.
-          
-    - 1.24 (2006-04-08) :
-    
-        - Improved documentation and packaging stuff.
-        
-    - 1.24beta (2006-03-26) :
-    
-        - Finalized the pknotify command.
-        
-        - Updated the messages catalogs for translations.
-        
-    - 1.24alpha18 (2006-03-15) :
-    
-        - Now uses MIME encapsulation for email messages to avoid
-          some problems with 8 bits messages being rejected.
-          
-    - 1.24alpha17 (2006-03-06) :
-    
-        - Fixed a major problem in the PostgreSQL backend.
-        
-        - pknotify can now check a remote user's name and password.
-        
-    - 1.24alpha16 (2006-03-02) :
-    
-        - Introduced the pknotify command line tool to dialog
-          with remote PyKotIcon applications.
-          
-    - 1.24alpha15 (2006-03-02) :
-        
-        - optimized pkbcodes, pkprinters and pkusers using edpykota as 
-          the model.
-        
-        - 'edpykota --list' and 'pkusers --list' are now authorized 
-          to mere mortal users, but the list is restricted to informations
-          about the current user.
-        
-        - Extended the functionnality of the 'onbackenderror' directive to
-          allow for configurable retries.
-          
-    - 1.24alpha14 :
-    
-        - Finished optimizations in edpykota and fixed some minor
-          problems with LDAP.
-          
-    - 1.24alpha13 :
-    
-        - Introduced the pkusers command line tool to manage users and  
-          users groups. This command doesn't deal with print quota entries,
-          which continue to be managed through the edpykota command line
-          tool.
-          
-        - Major rewrite and incompatible changes to command line options
-          in edpykota. This command now only deals with print quota
-          entries. Printers, users (or users groups) now have to be created
-          first using pkprinters or pkusers.
-          
-    - 1.24alpha12 :
-    
-        - Introduced the 'duplicatesdelay' directive to specify after
-          which duration two duplicate jobs are not considered duplicate
-          jobs anymore.
-          
-        - Introduced the 'balancezero' directive to specify any value  
-          as the balance limit instead of 0.0. This can allow admins to
-          give a few free credits to users, for example.
-          
-    - 1.24alpha11 :
-    
-        - Huge speed improvements when modifying billing codes and
-          printers.
-        
-        - Both pkbcodes and pkprinters now display the percent done
-          for all actions.
-          
-        - The pkinvoice invoice generator command line utility is now
-          included.
-          
-    - 1.24alpha10 :   
-    
-        - Huge speed improvements when deleting users, printers, and
-          billing codes.
-          
-    - 1.24alpha9 :
-    
-        - Preliminary support for MySQL, thanks to Matt Hyclak.
-        
-    - 1.24alpha8 :
-    
-        - The 'preaccounter' configuration directive was introduced to control
-          which parser to use for precomputation of the job's size. When unset,
-          the internal parser is used just like it was previously. See
-          conf/pykota.conf.sample for more details.
-          
-        - Now subprocesses launched through the overwrite_jobticket directive
-          can also output 'CANCEL', to represent the user's own choice to
-          cancel the print job.
-          
-    - 1.24alpha7 :
-     
-        - pkbanner now handles new print limiting modes correctly.
-        
-        - The cupspykota backend wrapper now accepts to be interrupted
-          with a kill -INT. This causes an immediate and clean abort
-          of the current print job.
-          
-        - Matt Hyclak contributed the possibility to store the printing
-          history in a MySQL database. See the contributed/ directory
-          for details.
-          
-        - Added 2006 to the copyright's years.
-        
-    - 1.24alpha6 :
-    
-        - Fixed internal SNMP and PJL handling code for very fast
-          printers : PyKota didn't see them going from 'idle'
-          to 'printing' to 'idle' again.
-          
-        - Now waitprinter.sh accepts SNMP version number and 
-          community name as arguments, thanks to Brandon
-          Holbrook.
-          
-        - Now command line errors and Ctrl+C repectively cause
-          PyKota commands to exit with status -2 and -3.
-          
-    - 1.24alpha5 :
-    
-        - All command line tools now accept -A | --arguments filename.args
-          as a way to bypass the shell's maximal command line size :
-          just put each argument on a line by itself in a file, and
-          pass the file's name as the -A | --arguments command line
-          option's argument. For now this won't be documented in
-          commands' helps.
-          
-        - dumpykota can now dump the complete database in XML 
-          format.
-          
-    - 1.24alpha4 :
-    
-        - Added support for the SQLite3 backend.
-          See pykota/initscripts/sqlite/README.sqlite
-        
-    - 1.24alpha3 :
-    
-        - Fix for mailandpopup.sh : smbstatus can't be run setuid, 
-          so we regain priviledges before running an external 
-          mailto directive.
-        
-    - 1.24alpha2 :
-    
-        - Introduce the "onbackenderror" directive in pykota.conf, to
-          control if the user must be charged or not whenever a real
-          CUPS backend fails. The default value is 'nocharge'.
-          Set it to 'charge' if you think your users can cause a CUPS
-          backend to fail.
-          
-        - Now mark original backends related problems as such in the 
-          printing history. Modified printquota.cgi and pykota.css
-          to make them be more visible.
-          
-    - 1.24alpha1 :
-    
-        - Fixed a problem which caused backend errors to be ignored.
-        
-        - The sample LDIF file now contains the two necessary user
-          entries to have an LDAP PyKota Admin and an LDAP PyKota
-          ReadOnly user. The sample configuration files were updated
-          to contain the default passwords used in the LDIF file.
-          
-        - dumpykota is now more strict when checking arguments.   
-        
-    - 1.23 :
-    
-        - Many minor bug fixes and code cleaning.
-        
-        - Improved documentation.
-        
-        - Added Polish translation.
-        
-        - Improved French and Swedish translations.
-        
-    - 1.23beta :
-    
-        - Now the mailto directive is honored in all cases where the job is
-          denied or a warning has to be issued, and the correct reason
-          can be sent back to the user.
-          
-        - The PYKOTAREASON environment variable, if defined, contains the  
-          textual reason why the job was denied or a warning has to be
-          issued.
-        
-    - 1.23alpha31 :
-    
-        - Added support for --maxjobsize, --passthrough and --nopassthrough
-          in pkprinters. These modes are now also honored when printing.
-          
-        - Allows the admin to restrict the number of print queues which will
-          be treated by pkturnkey by passing queues' names as additionnal 
-          arguments on pkturnkey's command line.
-          
-        - pkturnkey now supersedes pkhint with the help of the -c | --doconf
-          command line option.   
-          
-    - 1.23alpha30 :
-    
-        - Database changes : you MUST use upgrade-to-1.23.sql again if you
-          use PostgreSQL, or copy the new schema and restart your LDAP
-          server if you use LDAP.
-          
-        - The -C | --comment command line switch was added to edpykota to  
-          attach textual information to modifications done to a user's
-          account balance.
-          
-        - The -l | --limitby command line switch to edpykota was modified  
-          to allow 'noquota', 'nochange', and 'noprint'. See the edpykota
-          command's help or manual page for details.
-          
-        - The -i | --ingroups command line switch to repykota allows  
-          PyKota Administrators to only lists members of the specified
-          group or groups (separated with commas).
-          
-        - The -I | --increase command line switch to edpykota allows
-          to increase or decrease page limits.
-          
-        - Added the precomputed job's size and price to the history
-          for controlling purpose.
-        
-    - 1.23alpha29 :
-    
-        - Fixed a small problem with billing codes.
-        
-        - Exports some environment variables earlier, to render the script
-          launched by the overwrite_jobticket directive more powerful.
-          
-        - Now autopykota also creates print quota entries for the user on the
-          printers groups the current printer is a member of.
-          
-    - 1.23alpha28 :
-    
-        - Added users groups management to pkturnkey.
-        
-        - Fixed umask in setup script.
-        
-    - 1.23alpha27 :
-    
-        - Replaced the --dryrun command line option by the --force
-          command line option in pkturnkey, with exactly the opposite
-          effect (for security reasons).
-          
-    - 1.23alpha26 :
-    
-        - Allows parametrized pjl and snmp hardware accounting methods,
-          to be able to respectively set the TCP port and the SNMP
-          community.
-          
-    - 1.23alpha25 :
-    
-        - Added a --dryrun command line switch to pkturnkey.
-        
-        - Improved pkturnkey's general usability.
-        
-        - Added a manpage for pkturnkey.
-        
-    - 1.23alpha24 :
-    
-        - Allows different databases to be used depending on the
-          user's rights. This allows PyKota admins to directly
-          use a master LDAP server for read+write, while letting
-          normal users using the replicas for readonly access.
-          NB : using different storage backends is also possible,
-          but you're on your own there.
-          
-    - 1.23alpha23 :
-    
-        - Fixed a problem with banner accounting.
-    
-        - Introduction of the new 'pkturnkey' command line tool.
-        
-    - 1.23alpha22 :
-    
-        - The cupspykota backend was almost entirely rewritten from scratch.
-          It's now much more readable, maintainable, etc...
-          
-        - LPRng support is OFFICIALLY dropped for now. LPRng users are  
-          advised to download earlier releases or purchase the
-          PyKota v1.22HotFix1 Official release. LPRng support 
-          MIGHT be re-added later.
-        
-    - 1.23alpha21 :
-     
-        - Fix for IPP requests which contain more than a single 
-          job-originating-host-name attribute.
-          
-    - 1.23alpha20 :
-    
-        - Added the overwrite_jobticket directive. See pykota.conf.sample
-          for how to use it.
-          
-    - 1.23alpha19 :
-    
-        - Fixed an LDAP filtering problem when managing billing codes.
-        
-        - Added the unknown_billingcode directive. See pykota.conf.sample
-          for how to use it.
-        
-    - 1.23alpha18 :
-     
-        - Added the dump_bfd.php contribution. 
-        
-        - Several fixes in the internal PJL accounter.
-        
-        - Now autopykota doesn't create unneeded print quota entries anymore.
-        
-        - Increased the timeout in the PJL hardware accounting code to
-          accomodate some printers (HP5000 at least).
-          
-    - 1.23alpha17 :
-    
-        - pkpgcounter is now distributed separately only. This
-          means that people must now download and install pkpgcounter
-          v1.56 or higher prior to being able to run PyKota.
-          
-        - Removed all the autoconf/automake stuff which was outdated  
-          and confusing.
-          
-    - 1.23alpha16 :
-      
-        - Extracted the GPL blurb from all commands' help, and use
-          a static version only once. This saves space big time, and
-          eases future translations.
-          
-    - 1.23alpha15 :
-    
-        - pkbcodes now works with the PostgreSQL backend.
-          NB : PLEASE RUN upgrade-to-1.23.sql AGAIN !!!
-        
-    - 1.23alpha14 : 
-    
-        - Logs a warning when the user/group doesn't exist when running
-          edpykota.
-          
-    - 1.23alpha13 :
-    
-        - Minor fix for user groups because of latest database changes.
-        
-    - 1.23alpha12 :
-    
-        - Big database changes, use the migration scripts !
-        
-    - 1.23alpha11 :
-    
-        - Small fix to the PCL3/4/5 parser for some drivers.
-        
-    - 1.23alpha10 :
-    
-        - Fixed a bad exception name in cupspykota when parsing IPP messages.
-        
-        - Improved the IPP messages module : it can now generate IPP messages
-          in addition to parsing them.
-        
-    - 1.23alpha9 :   
-    
-        - The denyduplicates directive now accepts a command line as an
-          argument beside yes/no. The command is launched and must
-          print either ALLOW or DENY to its standard output. Then the
-          job gets allowed or denied by PyKota.
-          This will allow user interaction in the near future.
-          
-        - Introduced the new 'striptitle' directive to remove ugly prefixes
-          from print job's titles whenever a new print job is submitted.
-          
-        - Fixed internal SNMP accounter for printers which only have a life time
-          page counter, and not a volatile page counter.
-          
-    - 1.23alpha8 :
-    
-        - The data dumper can now summarize payments and history with the
-          help of the --sum command line option (or checkbox in the CGI).
-          
-        - The message used when the job's filename, title and options are 
-          hidden because of the privacy directive is now translated at
-          retrieval time, instead of at saving time.
-          
-        - Minor fix in the LDAP backend code.  
-          
-    - 1.23alpha7 :
-    
-        - Improvements to the internal PJL and SNMP accounter : now should
-          support more printers and waste less time.
-          
-    - 1.23alpha6 :
-    
-        - The data dumper's start= and end= date filtering options now
-          accept a positive or negative offset to be added to the special
-          keywords 'yesterday', 'today', 'now', 'tomorrow'. 
-          e.g. : dumpykota --data history start=yesterday-5 end=today
-          
-    - 1.23alpha5 :
-    
-        - The data dumper's start= and end= date filtering options now accept 
-          the special keywords 'yesterday', 'today', 'now' and 'tomorrow'.
-          
-    - 1.23alpha4 :
-    
-        - The data dumper now accept start= and end= to specify the starting
-          and ending dates to dump the history.
-          
-    - 1.23alpha3 :
-    
-        - The destination link for the logo used in CGI scripts is 
-          configurable.
-          
-        - Data dumper improved : it's faster and now datas are correctly 
-          escaped.
-        
-        - The URL to the logo displayed in the CGI scripts is configurable.
-        
-    - 1.23alpha2 :
-    
-        - Fixed edpykota --prototype with balance.
-        
-        - Major rewrite of the IPP message parsing code to definitely
-          fix the job-originating-hostname IPP attribute problem.
-        
-    - 1.23alpha1 :   
-    
-        - Sets current username to the user CUPS runs as instead of "root"
-          when printing test pages from CUPS' web interface (because
-          the username is empty in this case).
-          
-        - Fix for strange values in job-originating-hostname
-        
-    - 1.22 : 
-    
-        - Big improvements to the documentation.
-        
-    - 1.22beta :
-    
-        - Improved stability in pykotme and pykotme.cgi.
-        
-        - Fixed a permission problem in pykotme and pykosd.
-        
-        - Fixed an inconsitency between SQL and LDAP backends'
-          behavior in edpykota.
-          
-        - Improved stability and allowed tracebacks in CGI scripts.
-        
-        - Improved pykotme.cgi
-          
-    - 1.22alpha8 :
-    
-        - Fixed history retrieval for nonexisting printers or users.
-        
-        - Clicking on the billing code in printquota.cgi's job history
-          now shows all jobs matching this billing code.
-          
-        - Fixed the dump in CUPS' page_log format which didn't
-          dump the oldest entry.
-          
-        - The data dumper now accepts billingcode= and hostname= as
-          filters when dumping the job history.
-          
-        - The job billing code if present is now saved into the database,
-          and exported to subprocesses as the PYKOTAJOBBILLING environment
-          variable.
-          
-        - Ctrl+C now makes PyKota commands exit without a traceback.
-        
-        - Fixed an i18n problem with Python 2.1
-        
-    - 1.22alpha7 :
-    
-        - Fixed some problems with the retrieval of the history from LDAP.
-        
-    - 1.22alpha6 :
-    
-        - Early errors now produce meaningful error messages (finally !)
-        
-    - 1.22alpha5 :
-       
-        - SNMP and PJL improvements with regard to PowerSave / StandBy.
-        
-    - 1.22alpha4 :
-    
-        - Fixed charset problem under MacOSX.
-        
-        - Allows pkbanner to accept more info to display on its 
-          command line.
-          
-    - 1.22alpha3 :
-    
-        - Fixes some case related problems with some LDAP backends.
-        
-        - Fixes some problem for printers which directly go from
-          "idle" to "warmup" and never to "printing" before
-          returning to "idle".
-          
-        - Some permissions settings may have prevented cupspykota
-          from parsing cupsd.conf, this is now fixed.
-          
-    - 1.22alpha2 :
-    
-        - Introduction of the web enabled print quote generator.
-        
-        - Fixed a potential race condition when several backend
-          wrappers were present in CUPS' backend directory.
-          
-        - Fixed dumpykota's output in CUPS' page_log format to better
-          match CUPS format.
-          
-    - 1.22alpha1 :
-    
-        - Import into Subversion.
-        
-    - 1.21 :
-    
-        - Improved documentation.
-        
-        - Improved dependencies checker.
-        
-        - Updated some translation files.
-        
-    - 1.21beta2 :
-    
-        - Fixed an LPRng specific bug.
-        
-        - Several improvements on stability issues with manually modified
-          LDAP trees.
-          
-        - Documentation improvements.  
-        
-    - 1.21beta :
-    
-        - Prepared translation files for next release.
-        
-    - 1.21alpha27 :
-    
-        - Allows software() (no arguments) to the software accounting
-          directive. This saves a lot of CPU since the job is not
-          parsed again : the precomputed size is used directly in this
-          case.
-          
-        - epykota's --prototype option now works fine with accounts
-          limited by balance.
-          
-    - 1.21alpha26 :
-    
-        - Fixed the handling of the 'maxdenybanners' directive.
-        
-        - Introduced the 'denyduplicates' directive.
-        
-        - Fixed some database related glitches.
-        
-    - 1.21alpha25 :
-    
-        - The job's size is now always precomputed, even when
-          'enforcement' is not set to 'strict'.
-          
-        - Introduction of the new 'trustjobsize' configuration directive
-          to workaround some problematic printers. See the sample
-          configuration file for details.
-          
-    - 1.21alpha24 :
-    
-        - Big database structure changes. An upgrade script
-          is now included for PostgreSQL. LDAP users may just
-          want to copy the new schema in place.
-          
-        - edpykota now recognizes the -o | --overcharge command line
-          option to set an overcharging or undercharging factor
-          on each print job's cost for a particular user.
-          
-        - repykota's output format has changed an is not limited to  
-          80 characters wide anymore. People who used to parse 
-          repykota's output in their own tools are strongly advised
-          to parse dumpykota's output instead.
-          
-        - Introduction of the new 'maxdenybanners' configuration directive
-          to allow up to N (the directive's value) deny banners to be
-          printed even if the print account is forbidden to print.
-          
-        - Better detection of the number of copies in the PostScript parser.
-        
-    - 1.21alpha23 :
-    
-        - Traditional Chinese translation added.
-    
-        - Several fixes and performance improvements with the LDAP backend.
-        
-    - 1.21alpha22 :
-    
-        - edpykota's --delete command line option doesn't consider
-          '*' to be the default argument anymore :-)
-          
-    - 1.21alpha21 :
-    
-        - dumpykota.cgi can now be run as a normal user as opposed to 
-          a PyKota administrator. No read access to pykotadmin.conf is
-          necessary anymore. This CGI scripts now honors the REMOTE_USER
-          environment variable just like printquota.cgi does, see 
-          the file cgi-bin/README for details.
-          The command line tool dumpykota must still be run by a PyKota 
-          administrator.
-          
-        - Fix exception's name error due to a change in recent versions 
-          of PygreSQL.   
-          
-    - 1.21alpha20 :
-          
-        - Big bug fix wrt the datelimit field which was never reset.
-          
-    - 1.21alpha19 :
-    
-        - Introduction of the new dumpykota.cgi CGI script, which
-          allows third party tools like phpPrintAnalyzer to be
-          interfaced in real time with PyKota. To use it you
-          may have to change your web server's configuration,
-          please see pykota/cgi-bin/README
-          
-    - 1.21alpha18 :
-    
-        - Now dumpykota can dump the job history into CUPS' page_log
-          format (even when the printing system is LPRng). This allows
-          people to use tools like PrintAnalyzer or phpPrintAnalyzer 
-          (two completely different beasts) with PyKota.
-          
-    - 1.21alpha17 :
-     
-        - Fixed field type's name in XML dumps.
-        
-        - Now drops priviledges to user 'pykota' when launched as root
-          (directly or as a CUPS backend), if such an user exists.
-          
-        - Fixed PCL3/4/5 parser for some drivers' output.
-        
-    - 1.21alpha16 :
-    
-        - fixed several recently introduced bugs in LDAP backend code,
-          thanks to Matt Hyclak.
-          
-    - 1.21alpha15 :
-      
-        - Normalized field names between LDAP and PostgreSQL backends
-          in dumpykota's output.
-          
-        - dumpykota filtering capabilities are now supported within
-          the LDAP backend too.
-          
-    - 1.21alpha14 :
-    
-        - dumpykota now supports extended filtering possibilities
-          with the PostgreSQL backend (LDAP support will come soon).
-          
-    - 1.21alpha13 :
-    
-        - Added a --debug command line option to pkpgcounter, so
-          that people may see what really happens, and what will
-          be available in the future :-)
-          
-    - 1.21alpha12 :
-    
-        - Fixed a bug with non standard pkbanner command lines.
-        
-        - Now logs as errors the differences between precomputed and 
-          computed job sizes. **CUPS only for now**
-          
-    - 1.21alpha11 :
-    
-        - Now user and group print quota entries can be stored directly
-          below the user or group with the LDAP backend, using them
-          as branches. Thanks to Stefan Wold for the patch.
-          See the sample configuration file for details.
-          
-        - TLS is now supported with the LDAP backend. Thanks to Stefan
-          Wold for the patch.
-          See the sample configuration file for details.
-          
-        - edpkota now accepts the -U | --used value command line argument
-          to preset the page counters to an initial value. Thanks to
-          Wilson Roberto Afonso and Matt Hyclak for the patch.
-          
-    - 1.21alpha10 :
-    
-        - Now automatically reconnects up to three times if the LDAP server
-          returned an error, possibly due to a timeout.
-          
-    - 1.21alpha9 :
-    
-        - Now searches the configuration files in 'pykota' system user's
-          home directory. The 'pykota' system user and group have
-          to be created by the system administrator, and given 
-          sufficient permissions to PyKota's configuration files.
-          
-    - 1.21alpha8 :
-    
-        - Added the new reject_unknown directive to reject the
-          creation of user or groups which are unknown to the system.
-          
-    - 1.21alpha7 :
-    
-        - Introduction of the pkmail email gateway.
-        
-    - 1.21alpha6 :
-    
-        - Fix for LPRng filenames.
-        
-        - Added Turkish translation thanks to Baris Cicek.
-        
-    - 1.21alpha5 :
-    
-        - Improved ESC/P2 miniparser for Stylus Photo printers.
-        
-        - Implemented the --savetoner command line option to pkbanner.
-        
-        - Improved pkbanner's help and messages.
-        
-    - 1.21alpha4 :
-    
-        - Fixed job's data file detection code for LPRng.
-        
-        - Fixed a problem with PJL and PowerSave mode, 
-          thanks to Wilson Roberto Afonso.
-        
-    - 1.21alpha3 :
-    
-        - PyKota can now generate its own banners, and either account
-          for them or not, depending on newly introduced directives
-          in pykota.conf
-          Thanks to Matt Hyclak for the patch.
-          
-    - 1.21alpha2 :
-    
-        - Installation script is now non interactive again, as it should
-          have stayed from the beginning. Dependencies checking can
-          be done by launching the checkdeps.py command.
-          
-    - 1.21alpha1 :
-    
-        - added an IPP messages miniparser. Extraction of the client
-          hostname is now considered to be fiable, at least until
-          the CUPS developpers change something...
-        
-    - 1.20 :
-    
-        - Version number changed.
-        
-    - 1.20beta :
-    
-        - Norwegian (Bokm� preliminary translation added.
-        
-        - German translation was finalized.
-        
-        - Greek translation was finalized.
-        
-        - For urgent legal reasons, a "privacy" directive has been added 
-          to pykota.conf, to hide jobs' title, filename and options
-          in the history.
-          
-        - Minor changes in the debian directory.
-        
-    - 1.20alpha27 : 
-    
-        - Fixed many problems with translation files. In particular
-          the Brazilian Portuguese translation file was incorrectly
-          installed into the french "breton" locale directory.
-          
-        - Finished French translation.  
-          
-    - 1.20alpha26 :
-    
-        - LPRng support code should now better detect network
-          printers' hostnames or IP addresses.
-          
-        - Fix for recently introduced bug in LPRng support.
-        
-        - Fix for incorrect locale setting when starting.
-        
-    - 1.20alpha25 :
-    
-        - pkprinters allows --list to normal users, but require user
-          to be a PyKota administrator when another command line 
-          option is used.
-          
-        - pkhint doesn't use absolute path to search for helper commands
-          anymore.
-          
-        - Spanish translation ready for 1.20.   
-        
-    - 1.20alpha24 :
-    
-        - Now warnpykota only warns users limited by balance once.
-        
-        - Now warnpykota only warns users who have ever printed,
-          to not cause confusion to users who have just opened
-          their account.
-        
-        - Prepared help messages for translations.
-        
-    - 1.20alpha23 :
-    
-        - Add workaround for locale problem.
-        
-    - 1.20alpha22 :
-    
-        - Hopefully final fix for data encoding charset.
-        
-        - edpykota now refuse to work if the user is not a PyKota admin.
-        
-        - Fixes a recently introduced bug with users groups and PostgreSQL.
-        
-    - 1.20alpha21 :
-    
-        - Now dumpykota refuses to launch if the current user is not
-          a PyKota administrator (a PyKota administrator is an user
-          allowed to read the pykotadmin.conf file).
-          
-        - Now any PyKota administrator can use repykota and warnpykota
-          with additionnal arguments, not only the root user.
-          
-        - Improved documentation a bit.
-        
-    - 1.20alpha20 :
-    
-        - Reduced delay in internal SNMP and PJL_over_TCP handlers
-          from 2 to 1 second.
-        
-        - dumpykota can now output XML.
-        
-    - 1.20alpha19 :
-    
-        - Improved user groups and user groups quotas dumps in dumpykota.
-        
-        - Finished implementation of LDAP support in dumpykota.
-        
-        - The md5 sum of the job's datas is now available as an 
-          hexadecimal digest in the PYKOTAMD5SUM environment variable.
-          
-        - The description, filename, title, and options fields
-          are now stored as UTF-8 strings in both LDAP and PostgreSQL.
-          Proper charset is used during extraction from the database.
-          
-    - 1.20alpha18 :
-    
-        - Experimental autopykota command to initialize user
-          account and quota entries on first print while not 
-          resetting the balance value if not needed.
-          
-        - Added the new "winbind_separator" directive to strip
-          out the Samba/Winbind domain name while printing if
-          needed (Off by default).
-          
-    - 1.20alpha17 :
-    
-        - Added --hardreset command line option to edpykota.
-        
-        - Fixed problem with accented chars in title, filename
-          or options and LDAP backend.
-          
-    - 1.20alpha16 :
-    
-        - Internal handling of socket based PJL queries over
-          port tcp/9100 is now available with the magic
-          'pjl' value in the hardware accounter.
-          
-    - 1.20alpha15 :
-    
-        - LDAP pykotaAccountBalance objects were always created
-          attached to the pykotaUser objects. This is now
-          fixed and the value of balancebase in pykota.conf
-          is now correctly used.
-          
-    - 1.20alpha14 :
-    
-        - Belgian translations added (copy of the french ones).
-        
-        - External hardware accounter now loops until
-          a result can be read correctly.
-          
-        - pkhint now suggest the internal snmp handling instead
-          of the external one.
-          
-    - 1.20alpha13 :
-     
-        - Hardware accounter now accepts the special
-          'snmp' value, meaning ALL is done from main code
-          without launching any subprocess.
-          You need the http://pysnmp.sf.net Python module
-          for this to work (tested with v3.4.2)
-          
-        - Increased delay between two loops iterations  
-          to 2 seconds in waitprinter.sh to diminish
-          CPU load.
-          
-    - 1.20alpha12 :
-    
-        - waitprinter.sh rewritten from scratch to wait
-          for printer status stabilization.
-        
-    - 1.20alpha11 : 
-    
-        - Generic data dumper 'dumpykota' introduced.
-          Works only with PostgreSQL backend for now.
-          
-    - 1.20alpha10 :
-    
-        - Added fix for incorrect job's size computation when
-          hardware accounting fails.
-          
-    - 1.20alpha9 :
-    
-        - Small fixes wrt subprocesses.
-        
-    - 1.20alpha8 :
-    
-        - Added full support of PCL3 : HP Deskjet printers are now 
-          supported.
-        
-    - 1.20alpha7 :
-    
-        - First draft of PCL3GUI (Deskjet 640C for example) analyzer.
-          Needs more work, but no documentation is available.
-        
-    - 1.20alpha6 :
-      
-        - Improved mailandpopup.sh script.
-        
-        - Small fixes for LPRng.
-        
-        - Now exports PYKOTAPRINTERHOSTNAME for network printers'
-          hostname or IP address. Set to 'localhost' when not
-          meaningful.
-          
-        - Fixed issue with how mod_auth_ldap Apache modules
-          fills the REMOTE_USER environment variable.
-          
-        - Fixed a bug in LDAP user deletion code.
-        
-    - 1.20alpha5 :
-      
-        - Introduces the new configuration directive 'onaccountererror'
-          to specify what must be done whenever the software or
-          hardware accounter fails. Allowed values are 'continue' and
-          'stop' (default). 
-          
-        - Minor fix in software accounter for a recently introduced
-          problem.
-          
-    - 1.20alpha4 :
-    
-        - Added support for more ghostscript devices in ESC/P2
-          analyzer : stcolor, st800, escp, escpc are now supported.
-          
-    - 1.20alpha3 :
-       
-        - Small improvement in PostScript parser to avoid being
-          fooled by a change in number of copies : 
-          The user can't ask for 200 copies of page 1 and 1 copy 
-          of page 2 to fool PyKota anymore : 
-          this would have been accounted for as 1 copy only, but
-          now the maximum value seen is used.
-          
-        - Relax checks for PCL5 header to accomodate some strange
-          printer drivers.
-          
-        - Now hardware accounting method works like software
-          accounting method wrt the subprocess' output.
-          
-        - Hardware and Software accounting stop the print queue  
-          when the accounting subprocess didn't work. This will
-          be configurable in the near future.
-          
-    - 1.20alpha2 :
-    
-        - Now software accounting method reads accounter's
-          answer until a line with a single integer is 
-          obtained or until all of its output has been read.
-          This should fix the problem some people have
-          when strange locale related messages are sent
-          when running subprocesses (Solaris only ?).
-          
-        - First version of ESC/P2 analyzer. Seems to work
-          ok at least with 'epson', 'epsonc', 'eps9mid' 
-          and 'esp9high' ghostscript devices. Needs more
-          work to correctly analyze other devices.
-        
-    - 1.20alpha1 : 
-    
-        - Fixed problem with number of copies in PCLXL parser.
-        
-        - Fixed problem with number of copies in PCL5 parser,
-          when number of copies was set outside of and before first
-          page.
-        
-        - Added workaround for number of copies directly set in
-          PostScript code.
-          
-        - Added german translation.
-        
-        - Fixed problem on first print for user group quota when
-          "enforcement: strict" is used.
-        
-        - Fixed interpolation problem in french translation.
-        
-    - 1.19 :
-    
-        - Updated existing translations.    
-        
-        - Added final Thai and Greek translations.
-        
-        - Minor last minute bug fixes.
-        
-    - 1.19beta :
-    
-        - LPRng support for both software and hardware accounting seems
-          to be OK.
-          
-        - Translation files fixed because of fuzzy matching problem.  
-        
-        - Fixed path to Swedish translation: 'sv' instead of 'se'.
-        
-        - Added first draft of Thai translation.
-        
-        - Fixed some minor bugs with Pychecker.
-        
-    - 1.19alpha35 :
-    
-        - Generic PDL analyzer now supports Binary PostScript documents
-          in addition to DSC compliant ones.
-        
-    - 1.19alpha34 :
-    
-        - LPRng support : software accounting seems to work fine,
-          but hardware accounting doesn't work yet.
-   
-    - 1.19alpha33 :
-    
-        - pykosd now accepts command line arguments. Enjoy !
-          NB : due to a bug in xosd, you need xosd version 2.2.8
-          or higher if you don't use the default C locale.
-          
-    - 1.19alpha32 :
-    
-        - Early (not working) version of the LPRng support rewrite.
-        
-        - Saner default configuration file.
-        
-    - 1.19alpha31 :
-    
-        - Fixed a double Python2.1 incompatibility with newer versions,
-          which prevented the PCL5 and the PCLXL parsers to work with
-          this older version of Python.
-          
-    - 1.19alpha30 :
-    
-        - Introduction of preliminary version of the pykosd command
-        
-        - Usernames, Groupnames and Printernames can now contain
-          ANY character, expected '/' and '@'.
-        
-        - Integrated most of the Debian work from Sergio 
-          Gonz�z Gonz�z
-          
-    - 1.19alpha29 : 
-    
-        - PCLXL parser should now correctly handle number of
-          copies set for each page.
-          
-        - Added testsuite for generic PDL analyzer.
-        
-        - Typo fixed in PCLXL parser.
-        
-        - Correctly dispatches error messages depending on the
-          situation : tools which can be run interactively will
-          ALWAYS output their logs to stderr, excepted for
-          their DEBUG messages, for which the "logger:"
-          directive as set in pykota.conf will be honored.
-          Tools which can't be run interactively will ALWAYS
-          honor the "logger:" directive as set in pykota.conf
-          
-    - 1.19alpha28 :
-    
-        - The description field for printers can now be set,
-          and is displayed in reports.
-          
-        - Fixed a small problem in SQL backend code.
-          
-        - Improved pkhint
-        
-        - First working PCL6 (aka PCLXL) parser !
-          Doesn't handle copies yet.
-        
-    - 1.19alpha27 :
-    
-        - Additionnal 10% speed increase in PCL5 parser for GhostScript
-          generated files (untested yet with other PCL files).
-          
-        - Reintroduced the use of mmap in PCL5 parser : this speedups
-          PCL5 parsing by almost 4 times.
-          This 4x with the 3x below give us in fact a twelvefold increase
-          in performance for PCL5 parsing !
-          
-        - The Python accelerator Psyco is now used if available
-          in the generic PDL parser : it speedups PCL5 parsing by
-          almost three times automagically. 
-          
-    - 1.19alpha26 :
-    
-        - Fixed PCL5 parser according to the sources of rastertohp.
-        
-        - Fixed number of copies handling in PCL5 parser : the number
-          of copies could vary from page to page.
-          
-        - Added more debug information to PCLXL parser.  
-        
-    - 1.19alpha25 :
-    
-        - Added new "description" field to printers in both
-          PostgreSQL and LDAP. No code to handle this yet.
-          
-        - Reversed the fix for power save mode in printers :  
-          no paper or tray open would have caused people to
-          be undercharged.
-          
-        - Preliminary version of MySQL initialization script.
-          
-    - 1.19alpha24 :
-    
-        - Native PDF parsing code now works perfectly with
-          Python 2.1 and above, and is way faster than before.
-          GhostScript is not used anymore to convert PDF to PS,
-          because PDF is parsed directly.
-          
-    - 1.19alpha23 :
-    
-        - Fixed waitprinter.sh wrt PowerSave mode and some
-          printers. Thanks to Ryan Suarez.
-        
-        - Smart PDL analyzer now recognizes PDF too : two
-          PDF parsing methods are used : a native one which
-          is very fast but requires Python 2.3 or above, and
-          a slower one which uses Ghostscript. PyKota detects
-          automatically which method to use depending on your
-          version of Python.
-        
-        - All tracebacks now include PyKota's version number.
-          
-    - 1.19alpha22 :
-    
-        - Ensures that the file pointer for job's data is 
-          reset to the start of the job's datas after the
-          job's size pre-computation phase.
-          
-        - Improved PostScript detection code for bad drivers
-          which don't correctly switch languages between PJL
-          and PS.
-       
-        - Even better debugging code.
-        
-    - 1.19alpha21 :
-    
-        - Additionnal check.
-        
-    - 1.19alpha20 :
-    
-        - More complete logging messages wrt accounters.
-        
-        - Now catches early failures occuring when the configuration
-          files are parsed.
-        
-    - 1.19alpha19 :
-    
-        - Fixed over-verbose exits when displaying help
-          or version.
-          
-        - Extended some PATH in the shell scripts  
-        
-        - Deleting an user now also deletes his payments history.
-        
-        - Doesn't explicitely ignore SIGCHLD anymore. This seems to
-          cause problems.
-
-    - 1.19alpha18 :
-    
-        - History of payments is now stored in the database, and
-          updated each time an user's balance is modified with
-          edpykota --balance. This history represents each time
-          the user was given some positive or negative credit,
-          but doesn't reflect price paid for jobs, which appear
-          in the jobs history instead.
-          
-        - Jobs history web reports now include the job's size in
-          bytes. Also columns were reordered to render the report
-          more easily readable.
-          
-    - 1.19alpha17 :
-    
-        - Mysterious bug (program exited unexpectedly without leaving
-          any log message) which occured once in a while when
-          cancelling jobs should be fixed now.
-          
-        - New 'crashrecipient' directive. Disabled by  
-          default. See sample configuration file to see how
-          to activate it. It is suggested that you activate it.
-          
-        - New PYKOTAJOBSIZEBYTES environment variable exported,  
-          which contains the job's size in bytes. Empty jobs
-          are now denied. This value is now stored in the job
-          history (but not yet displayed from the web interface)
-          
-        - Preliminary work on payments storage : the PostgreSQL  
-          and LDAP schemas should be OK now, but no code is written
-          yet to support this functionnality.
-          
-    - 1.19alpha16 :
-    
-        - the newuser and newgroup LDAP specific directives now accept
-          a second parameter to attach(), "fail" or "warn". If no entry
-          is found to attach PyKota attributes to, and "fail" was used,
-          then action is aborted and program exits in error. If "warn"
-          is used, a new entry is created but a warning message is logged.
-          
-        - The job's originating hostname is now stored in the database,
-          and exported as PYKOTAJOBORIGINATINGHOSTNAME in the environment.
-        
-    - 1.19alpha15 :
-    
-        - The old pykota filter is now removed. This means that
-          currently PyKota doesn't support LPRng anymore, but 
-          LPRng support will be re-added, improved, in the near future.
-          
-    - 1.19alpha14 :
-    
-        - PYKOTAPRECOMPUTEDJOBSIZE and PYKOTAPRECOMPUTEDJOBPRICE 
-          are now exported as environment variables.
-          
-        - Heavy CPU usage is now completely fixed it seems, by 
-          introducing some 0.01 second sleeping when nothing to do.
-          
-        - Pre-computation of the job's size is now only
-          done when enforcement is "STRICT", this saves
-          CPU for people who don't want to use this new
-          feature.
-          
-        - New 'enforcement' directive which accepts either
-          STRICT or LAXIST. See sample configuration file
-          for details.
-          
-    - 1.19alpha13 :
-    
-        - Get back to an old version of the polling loop which
-          worked fine, but non-optimally. Will be optimized
-          as time permits.
-          
-    - 1.19alpha12 :
-    
-        - Job's size is now precomputed unconditionnally using 
-          the generic PDL analyzer.
-          NB : This value is not yet used to pre-allow/deny the
-          job.
-        
-    - 1.19alpha11 :
-    
-        - The pykota filter is now completely deprecated and
-          can't be used anymore. LPRng users MUST download 
-          an older version of PyKota. CUPS users MUST use
-          cupspykota. Better support for LPRng will come
-          in the near future.
-          
-    - 1.19alpha10 :
-    
-        - pykotme now uses generic PDL Analyzer directly instead
-          of spawning a new process.
-          
-        - Improvements to generic PDL Analyzer.
-        
-        - 25% Speedup in PCL parser. Getting more of the Python version
-          will probably be difficult, since the completely table driven 
-          parser I wrote is slower than the original algorithm. Then,
-          the original algorithm is still used for now.
-          Probable that more speed could be achieved using mmap, at the
-          expense of severe memory consumption.
-        
-        - configuration simplifications : the "accounter" directive's
-          'hardware' arguments now accepts what was in the "requester"
-          directive as it's content. The "requester" directive is not
-          supported anymore. See sample configuration file for details.
-        
-    - 1.19alpha9 :
-       
-        - pkpgcounter is now just a wrapper around the PDLAnalyzer class
-        
-        - pykotaOptions LDAP attribute now accepts non-ascii characters
-          too.
-          
-        - First try at cupspykota main loop rewrite
-        
-    - 1.19alpha8 :
-    
-        - 'querying' accounting method is now called 'hardware'
-        
-        - 'external' accounting method is now called 'software'
-        
-        - 'stupid' accounting method doesn't exist anymore
-        
-        - 'snmp' requester doesn't exist anymore
-        
-        - code simplifications in external requester
-        
-    - 1.19alpha7 :
-     
-        - Database schema change (both LDAP and PostgreSQL) to
-          allow storage of the job-originating-hostname attribute.
-          An SQL upgrade script is present. The code is not yet
-          capable of setting/retrieving this attribute. Support
-          for this functionnality will be added in the future.
-          
-    - 1.19alpha6 :
-    
-        - problems connecting to SMTP servers are now catched.
-        
-        - pykotme now uses pkpgcounter to compute the size of the
-          job. This modification adds PCL5 and soon PCLXL (PCL6)
-          support. You can now get quotes for PCL in addition to 
-          PostScript.
-          
-        - pkpgcounter now includes first try at PCLXL parser.  
-          It is currently disabled until it's finished.
-          
-    - 1.19alpha5 :
-    
-        - cupspykota polling loop fix for MacOSX (at least)
-        
-        - logging subsystem now logs PID too, to ease diagnosing
-          problems under heavy load.
-          
-        - pkpgcounter enhancements.
-        
-        - pkprinters --skipexisting now tells pkprinters to not
-          modify existing printers when --add is used.
-          pkprinters logs a warning message whenever --add is
-          used and a printer already exists.
-          
-        - LDAP schema now allows accented chars in pykotaFileName
-          and pykotaTitle attributes.
-        
-    - 1.19alpha4 :
-    
-        - a bad copy&paste prevented pkpgcounter to work at all, this
-          is now fixed.
-          
-        - improved PCL support in pkpgcounter, with the use of
-          HP PCL/PJL Reference Set
-          PCL5 Printer Language Technical Quick Reference Guide
-        
-        - pkpgcounter now uses mmap to speed things up : duration
-          is halved with the sample 87 pages PCL document I use for
-          testing.
-          
-    - 1.19alpha3 :
-    
-        - pkprinters now accepts the --list command line argument
-          to list informations about printers.
-          
-    - 1.19alpha2 :
-    
-        - pkpgcounter is now included as a smart external
-          accounter which can handle both PostScript and PCL.
-          
-    - 1.19alpha1 : 
-    
-        - PYKOTALIMITBY environment variable is now exported too.
-        
-        - Inclusion of Michele Baldessari's work on autotools.
-        
-    - 1.18 :
-    
-        - Improved documentation
-        
-    - 1.18beta2 :
-      
-        - Fix for raw jobs with cupspykota
-        
-    - 1.18beta :
-    
-        - Small fix for new waitprinter.sh script
-        
-        - Better tracebacks on error conditions
-        
-        - Improved translations
-        
-        - Improved documentation
-        
-    - 1.18alpha15 :
-
-        - waitprinter.sh replaced by a new and possibly faster
-          and more powerful one.
-    
-        - Names can now begin with a digit.
-        
-        - Stability improvement for quotas set on printers groups.
-        
-    - 1.18alpha14 :
-    
-        - Catches more (all ?) problems with SMTP servers instead
-          of breaking.
-          
-        - Italian translation added.
-        
-    - 1.18alpha13 :
-    
-        - Pre and Post hooks are now available in the pykota
-          filter as well.
-          
-        - The pykota filter doesn't check last user's quota
-          anymore when delayed hardware accounting is used : 
-          this will be done anyway the next time the last 
-          user will print again. This saves some database
-          queries which are unneeded.
-        
-    - 1.18alpha12 :
-    
-        - Pre and Post hooks to external commands with many 
-          many environment variables available are useable 
-          from the cupspykota backend.
-          See sample configuration file for details and help.
-          
-    - 1.18alpha11 : 
-    
-        - Hopefully final fix wrt groups (users and printers)
-        
-    - 1.18alpha10 :
-    
-        - Fixed nested printer groups accounting.
-        
-        - Fixed user groups + printer groups problem.
-        
-    - 1.18alpha9 :
-    
-        - Fix for LDAP problem when job price was 0.
-        
-        - Fix for empty user groups with LDAP.
-        
-        - Preliminary version of the snmpprinterstatus command added.
-        
-    - 1.18alpha8 :
-    
-        - Don't retrieve data when not needed.
-          This avoids many database queries.
-        
-    - 1.18alpha7 :
-    
-        - New experimental ldapcache directive to improve
-          LDAP caching.
-          
-    - 1.18alpha6 :
-        
-        - New configuration directive added : maildomain
-          to specify the domain to send mail to when user 
-          email address is not set in PyKota database.
-          
-        - More complete email message headers.  
-          
-    - 1.18alpha5 :
-    
-        - Debian packaging specific files, contributed by
-          Peter Hawkins are now included in the project's tree.
-          
-        - Preliminary work on future low-level LDAP caching to speed
-          up modifications (at least).
-          
-    - 1.18alpha4 :
-    
-        - Applied some of the modifications suggested by
-          Peter Hawkins, for better Debian integration.
-          Most notably cupspykota, pykota, and the shell
-          scripts are now installed into /usr/share/pykota
-          instead of into /usr/bin
-          BEWARE : double check that your symbolic link
-          to cupspykota is correct, and that your pykota.conf
-          file use correct path for the shell scripts like
-          waitprinter.sh and al.
-          
-        - pkhint command added, to help in configuring correct
-          accounting method for PyKota.
-          
-    - 1.18alpha3 :
-    
-        - Fixed a rare bug in cupspykota backend which gave 
-          incorrect "CUPS backend died abnormally" messages.
-        
-    - 1.18alpha2 :
-    
-        - Added the pkprinters command line tool to manage printers
-          exclusively.
-        
-    - 1.18alpha1 :
-    
-        - Preliminary work on Relationnal Database Independance.
-        
-        - Sample report made from OpenOffice.org added as PDF and SXC.
-        
-    - 1.17 :
-    
-        - Finalized release.
-        
-    - 1.17alpha2 : 
-    
-        - Fix stupid software accounting bug in the CUPS backend.
-        
-    - 1.17alpha1 :
-    
-        - User/Group deletion code in edpykota rewritten.
-        
-    - 1.16 :
-    
-        - Preliminary documentation on how to use OpenOffice.org
-          to create personnalized reports for PyKota + PostgreSQL.
-          
-        - Spanish installation guide for CUPS+PyKota+PostgreSQL
-          added to the documentation. Doesn't yet document v1.16
-          though.
-        
-        - Portuguese Portuguese translation replaces Brazilian 
-          Portuguese Translation. Brazilian portuguese 
-          translation is still available under the 'br' locale.
-        
-    - 1.16beta3 :
-    
-        - Swedish translation added.
-        
-        - Small fix in documentation.
-        
-    - 1.16beta2 :
-    
-        - Small fix for job cancelling code while job already
-          printing in CUPS backend.
-          
-        - Big fix wrt printing policies for unknown users.  
-        
-    - 1.16beta1 :
-    
-        - Manpages upgraded.
-        
-    - 1.16alpha26 :
-    
-        - Job price is now computed like this :
-        
-          SUM((NbPages * PricePerPage) + PricePerJob)
-          
-          For current printer and all the printers groups it is 
-          a member of, if any.
-          
-          This may be difficult to grasp, but offers unprecedented
-          flexibility.
-          
-    - 1.16alpha25 :
-    
-        - Email address can be set at user creation time,
-          using the following syntax : 
-          
-            $ edpykota --add username/email@yourdomain.com
-        
-    - 1.16alpha24 :
-    
-        - CGI script now can show the printing history.
-        
-        - Bug wrt number of copies should be fixed.
-        
-        - Major code refactoring => It is now possible to
-          automatically add printers on first print.
-        
-    - 1.16alpha23 :
-    
-        - Fixed potential accuracy problem if a user printed on
-          several printers at the very same time.
-        
-    - 1.16alpha22 :
-    
-        - edpykota now allows adding printers to printer groups
-        
-    - 1.16alpha21 :
-    
-        - Allows the dot in user and printer names.
-        
-        - Printer groups are now cached too.
-        
-    - 1.16alpha20 :
-    
-        - Fixed several small bugs with the help of PyChecker.
-        
-    - 1.16alpha19 :
-     
-        - Fixed a bug in PostgreSQL backend's code.
-        
-    - 1.16alpha18 :
-    
-        - Initial code for printer groups support. Printer groups have
-          to be added with external tools like psql or gq for example.
-          Printer groups seems to work fine with users. Untested with user 
-          groups for now.
-
-        - Several minor visual problems fixed in reports.
-        
-        - Fixed a bug in LDAP date handling.
-        
-        - Fix for LDAP problem with some combination of OpenLDAP + Python-LDAP
-          + some particular settings.
-          
-        - mailandpopup.sh shell script added. See sample configuration file
-          for details.
-        
-        - Several environment variables are now exported when executing 
-          external commands (accounters, requesters, mailers) :
-           
-            PYKOTAUSERNAME => user who is printing
-            PYKOTAPRINTERNAME => printer on which the job is being sent
-            PYKOTATITLE => Job's title
-            PYKOTAFILENAME => Job's filename
-            PYKOTACOPIES => number of copies asked
-            PYKOTAOPTIONS => print command options (-o with CUPS)
-          
-    - 1.16alpha17 :
-    
-        - Added portugues translation.
-        
-        - Major code refactoring in accounters.
-        
-    - 1.16alpha16 :
-    
-        - Code refactoring, and addition of a real HTML reporter, to 
-          have nice looking and useful web based reports (in the future).
-        
-        - Added utolower configuration option to convert all usernames
-          to lowercase during printing. 
-          
-    - 1.15alpha15 :
-    
-        - Now includes the papwaitprinter.sh shell script to wait for
-          AppleTalk enabled printers.
-          
-    - 1.16alpha14 :
-    
-        - Now printing on a printer not defined in the Quota Storage,
-          results in the job being cancelled or stopped, depending
-          on the printing system.
-          
-    - 1.16alpha13 :
-    
-        - Small bugfix wrt Python v2.1
-        
-        - If username is an empty string, user root is assumed.
-        
-        - 'postgresql' is not recognized anymore as a storage backend,
-          you have to use 'pgstorage' instead. 'postgresql' used to
-          be supported for compatibility with very old PyKota versions,
-          this is not the case anymore.
-          
-    - 1.16alpha12 :
-    
-        - Job price added to job history, to keep accounting correct
-          if a printer price per page or per job is modified and the
-          history is not reset : the history would have given a false
-          amount of money charged before the printer's prices were
-          modified, this addition solves the problem.
-          
-    - 1.16alpha11 :
-    
-        - Some preliminary modifications to the database structure for 
-          PostgreSQL and OpenLDAP. A script to upgrade a PostgreSQL
-          database is now provided. LDAP attributes now support
-          eq, pres and sub indexes. 
-          
-        - Job history now contains additional informations :  
-          number of copies, filename, title and print options.
-          
-    - 1.16alpha10 :
-        
-        - Some modifications done to external policy handling.
-          See sample configuration file for details.
-    
-        - Spanish translation added.
-        
-    - 1.16alpha9 :
-    
-        - mailto can be set to external(...) to warn users above
-          quota with any command of your choice (e.g. linpopup).
-          Several parameters are available, see sample configuration
-          file for details.
-          
-    - 1.16alpha8 :
-    
-        - Now cupspykota transmits SIGTERMS to the original  
-          backend when the user deletes a job being processed.
-          
-        - The documentation is now licensed under the terms of the
-          GNU GPL too.
-          
-    - 1.16alpha7 :
-    
-        - The CUPS backend is now fully functionnal (it seems).
-        
-        - From now on, the use of the pykota filter with CUPS 
-          is deprecated. The pykota filter still has to be
-          used with LPRng though.
-        
-    - 1.16alpha6 :
-    
-        - Bug fixed : when edpykota was used to add a printer
-          with no user or group name, a bad user/group name "*" was
-          added to the database.
-          
-    - 1.16alpha5 :
-    
-        - New CUPS backend supports device enumeration !
-          This means that NO manual CUPS configuration has to
-          be done. All can now be done from CUPS web interface.
-        
-    - 1.16alpha4 :
-    
-        - New CUPS backend added. 
-        
-    - 1.16alpha3 :
-       
-        - Minimal FAQ document added.
-        
-    - 1.16alpha2 :
-    
-        - CGI script now partially supports browser's language preference
-        
-    - 1.16alpha1 :
-    
-        - Ensures that the LDAP connection is really closed at end.
-        
-        - More complete error messages in case of LDAP operation failure.
-        
-    - 1.15 :
-     
-        - Documentation improved.
-        
-    - 1.15beta :
-    
-        - Command line tools now accept multiple printer
-          names or wildcards, separated with commas.
-          
-    - 1.15alpha9 :
-    
-        - External policy can be used to auto-add unknown users 
-          and any other interesting things you may want to do. 
-          WARNING : You can't auto-add printers for now. 
-          They have to be created manually before.
-          Look at sample configuration file for examples.
-          
-    - 1.15alpha8 :
-    
-        - Job history can be disabled if needed.
-          This feature may be useful for people who use the LDAP
-          backend and don't want their LDAP tree to grow out of
-          control.
-        
-    - 1.15alpha7 : 
-    
-        - More work done on caching wrt groups.
-        
-    - 1.15alpha6 :
-    
-        - Performance bottleneck with LDAP solved.
-        
-    - 1.15alpha5 :
-    
-        - Caching mechanism for all database queries.
-
-    - 1.15alpha4 :
-    
-        - Problem with Python 2.3 fixed. Needs some definitive 
-          modification.
-          
-    - 1.15alpha3 :
-    
-        - CGI script now tries to restrict view when the 
-          REMOTE_USER environment variable is set. This allows
-          people to protect its use with .htaccess files.
-          When unprotected, or if REMOTE_USER is 'root', then 
-          unrestricted access is granted.
-          NB : REMOTE_USER is automatically set by the web server
-          (e.g. Apache) when a page with restricted access is viewed.
-          
-    - 1.15alpha2 :
-    
-        - Better detection of LPRng.
-        
-        - Outputs a warning if printing system is unknown.
-        
-    - 1.15alpha1 :
-    
-        - Bug fix in SQL code.
-        
-    - 1.14 : 
-    
-        - The PostgreSQL database connection is now always closed before
-          exit. The LDAP database connection too, but it didn't suffer
-          from the problem anyway, AFAICT.
-        
-    - 1.14beta2 :
-    
-        - An LDAP-specific configuration field was introduced, usermail.
-          Use it to specify which LDAP attribute contains a valid email
-          address for the user. See sample configuration file for
-          details. 
-        
-    - 1.14beta :
-    
-        - Two new LDAP-specific configuration fields were introduced,
-          newuser and newgroup. Use them to specify if you want to add
-          quota information to existing entries or elsewhere.
-          See sample configuration file for details.
-          
-    - 1.14alpha9 :
-    
-        - Documentation improved.
-        
-        - pykotme now also prints the user's account balance value
-          if the user is registered in the Quota Storage and his
-          limiting factor is "balance".
-          
-    - 1.14alpha8 :
-    
-        - bin/waitprinter.sh is now included to wait for
-          SNMP enabled printers to be idle again before
-          asking for their internal page counter.
-          See sample configuration file for details.
-          
-    - 1.14alpha7 :
-    
-        - edpykota now doesn't check if the user/group is above
-          quota. The check is only done at print time. This 
-          prevents the sending of email messages when creating
-          user quotas if quota is already reached at creation
-          time.
-          
-    - 1.14alpha6 :
-    
-        - Configuration file split and moved to /etc/pykota/pykota.conf
-          and /etc/pykota/pykotadmin.conf to prevent simple users to
-          have Read/Write access to the Quota Database.
-          Don't forget to :
-          
-                $ chmod 640 /etc/pykota/pykotadmin.conf
-                
-        - storageuser and storageuserpw configuration fields reintroduced
-          for the same reason.
-          
-        - Code cleaning for future implementation of email addresses 
-          support in the PostgreSQL and LDAP backends.
-          
-    - 1.14alpha5 :
-        
-        - Big bug fixed when changing the prices for a printer
-        
-    - 1.14alpha4 :
-    
-        - When adding an user, the user itself and its account balance
-          are now added in the same LDAP entry. Before they were added
-          as two different LDAP entries.
-          
-    - 1.14alpha3 :
-    
-        - Email field added to PostgreSQL database. An upgrade script
-          is included in initscripts/postgresql.
-        
-    - 1.14alpha2 :
-    
-        - Typo fixed when using the --prototype option to edpykota
-        
-    - 1.14alpha1 :
-    
-        - Poor man's treshold included : users with a low account
-          balance (below 1.0 by default, configurable) are sent
-          a warning message.
-          
-        - All warning messages to users are now configurable.  
-          NB : Warning messages to the administrator are not.
-        
-    - 1.13 :
-    
-        - Some small fixes wrt group handling. 
-        
-        - The whole module code was passed through PyChecker and
-          several small code inconsistencies were fixed,
-          as well as a bug in the groups code.
-          
-    - 1.13alpha1 :
-    
-        - Bug fix wrt LDAP.
-        
-    - 1.12 :
-    
-        - More complete test added in edpykota.
-        
-    - 1.12alpha2 :
-    
-        - The previous bug fix was incomplete. This is corrected.
-        
-    - 1.12alpha1 :
-    
-        - Small bug fix.
-        
-    - 1.11 :
-    
-        - Now includes the pykotme command line tool, to produce
-          printing quotes for users.
-          
-    - 1.10 :
-    
-        - Bug fixed wrt quota reports when print limiting is by 
-          account balance.
-          
-    - 1.09 :
-    
-        - Translations finalized.
-        
-        - Manpages updated.
-        
-        - Installation documentation improved wrt LDAP support.
-        
-    - 1.09beta2 :
-    
-        - The CGI script for quota reports works again, and
-          is much more powerful.
-        
-    - 1.09beta :
-    
-        - edpykota finalized
-        
-    - 1.09alpha2 :
-    
-        - LDAP schema modified a bit. Please upgrade.
-        
-        - LDAP backend works !
-        
-        - repykota and warnpykota allow the root user to pass
-          users or groups names on the command line. Users 
-          and groups names may contain wildcards.
-          
-        - repykota and warnpykota only reports or warns the
-          current user when launched by non-root users.
-          
-        - Minor bug fixes.  
-    
-    - 1.09alpha1 :
-    
-        - More work on LDAP storage backend. Many options
-          were added to /etc/pykota.conf to give some
-          hints to the LDAP storage backend.
-          
-        - Severe database access optimizations were done by
-          rewriting most of the Quota Storage backends drivers.
-      
-    - 1.08 :
-    
-        - Major bug fix wrt LPRng support for remote jobs.
-        
-        - Major bug fix wrt increase/decrease account balances.
-        
-    - 1.08alpha8 :
-    
-        - Code refactoring.
-        
-        - A single user/password pair is used to connect
-          to the database backend. The storageuser configuration
-          field, and its associated passwords storageuserpw, are 
-          not used anymore.
-          
-        - You can now set PyKota in debug mode, see sample configuration  
-          file for details. 
-          WARNING : only Quota Storage backend queries are logged in 
-          debug mode, for now.
-        
-    - 1.08alpha7 :
-    
-        - Very latest LDAP schema.
-        
-        - Code enhancement wrt easy pluggability of PyKota attributes
-          and object classes into an existing LDAP directory.
-        
-    - 1.08alpha6 : 
-    
-        - Minor bug corrections
-        
-        - More work on LDAP : new schema
-        
-    - 1.08alpha5 :
-    
-        - More good work on LDAP storage.
-          repykota now works reasonably well with the sample LDAP directory.
-        
-    - 1.08alpha4 :
-    
-        - LDAP schema included. 
-          THIS IS JUST FOR PEOPLE TO DISCUSS ABOUT THIS.
-          LDAP SUPPORT DOESN'T WORK YET, AND THE SCHEMA
-          MAY CHANGE IN THE FUTURE. PLEASE TELL US
-          WHAT YOU THINK ABOUT THIS SCHEMA ON THE 
-          MAILING LIST.
-          
-    - 1.08alpha3 :
-    
-        - External accounting methods were partly rewritten :
-         
-          - No more "broken pipe" should happen.
-          
-          - They now take care of the number of copies
-            This may be unneeded though, if the postscript
-            file already does this, because this would
-            overcharge users (number of copies counted
-            two times). NEEDS MORE TESTING.
-            
-          - The sample configuration file now contains  
-            an external accounting method example which should
-            work with all DSC compliant Postscript files.
-            
-        - Some small bugs were fixed.    
-        
-    - 1.08alpha2 :
-    
-        - Now works with net-snmp v5.0 and above.
-          It already worked, but the sample configuration 
-          file didn't contain appropriate values...
-        
-    - 1.07 : Release of the Shame !
-    
-        - The external accounting methods driver was left out of 
-          the CVS tree. Nobody could use it since it wasn't included !
-          
-    - 1.06 :
-    
-        - Severe bug fixed : if you had a printer in 
-          power saving state which couldn't answer immediately, 
-          a bug was triggered.
-          It was caused by a bad copy/paste which
-          forgot to import a Python module at run time.
-          
-    - 1.05 :
-    
-        - External accounters are finally available !
-          This means that you can plug any page accounting
-          method you like by setting the appropriate
-          'accounter' field in /etc/pykota.conf
-          See the sample conf/pykota.conf.sample to 
-          learn how to do.
-          
-          NB : Both 'external' and 'stupid' accounting methods
-               account a job size just before *this* job is 
-               sent to the printer. 
-               The original 'querying' method accounts a job
-               size just before *the next* job is sent to
-               the printer.
-        
-    - 1.05alpha3 :
-    
-        - A 'stupid' and unreliable accounting method was
-          implemented to serve as an example on how to
-          do this sort of things. This method only counts
-          the 'showpage' statements in the input data.
-          See sample configuration file for details.
-          Pluggable accounting methods work, but I advise
-          you TO NOT USE THIS ONE WHICH IS JUST AN EXAMPLE.
-          It is not reliable enough to be used.
-          Use the 'querying' accounting method instead.
-          
-    - 1.05alpha2 :
-    
-        - Pluggable accounting methods.
-        
-        - Better error handling.
-        
-    - 1.05alpha1 :
-    
-        - SECURITY file added to help improve PyKota's security.
-        
-        - Extracting the printer's internal page counter is now
-          tried several times, waiting several seconds between
-          two tries. This lets the time to warm up for some printers 
-          which don't answer when they are sleeping (my Apple 
-          LaserWriter 16/600 PS is in this case, maybe others too)
-          
-        - Small display bug fixed in repykota
-          
-    - 1.04 :
-    
-        - Default print policy for users/groups unknown from 
-          the print quota system is now DENY instead of ALLOW,
-          since ALLOW can generate inaccurate results
-          (incorrect job sizes charged to the wrong persons)
-          
-        - LPRng support works !
-        
-        - A bug was introduced some time ago wrt printers' default
-          policy for unknown users. It is now corrected.
-        
-        - repykota now displays prices per job and per page for each
-          printer, if they are defined.
-          
-        - Minor display bug fixed in repykota.
-        
-        - Problem when running repykota with an empty database was fixed.
-        
-    - 1.03 :
-    
-        - Upgrade script included for earlier versions.
-          Please look inside the initscripts subdirectory.
-          THE DATABASE SCHEMA HAS CHANGED, PLEASE UPGRADE.
-          
-        - repykota now reports account balances too.
-        
-        - PyKota now has a nice logo, see the logos
-          subdirectory.
-        
-        - Manual pages were finally updated.
-        
-        - Group quotas seem to work now !
-        
-        - The new database schema allows to keep an history of all
-          jobs as well as charge users per page and/or per job, 
-          and track users' account balance.
-          
-        - edpykota now accepts much more command line options to  
-          use the new functionnalities. See edpykota --help for
-          details.
-          
-        - The installation script now allows to install the sample
-          configuration file during first installation.
-          
-        - More group quota code works, but still not finished.  
-        
-        - The CGI script displays a link to PyKota's website.
-        
-        - The job history is now kept, this will allow per-period
-          reports in the future.
-          
-        - After having modified the quota for an user with edpykota,
-          a quota check is done to eventually warn the user/admin about
-          a quota which is too low to print.
-          
-        - A workaround is provided for HP Printers : their internal
-          page counter is only saved to NVRAM in a 10 increment, so
-          if you switch them off and then on, the reported page counter
-          may be lower than the real number of pages printed.
-          See http://web.mit.edu/source/third/lprng/doc/LPRng-HOWTO-15.html
-          We unconditionnally set the last job's page count to 
-          abs(int((10 - abs(lastcounter(snmp) - lastcounter(storage)) / 2))
-          in this case. 
-          For a more accurate accounting, never switch your HP printers
-          off.
-          
-        - A fix is provided for printers which only have a volatile  
-          page counter (reset to 0 every time you switch the printer on)
-          This should allow PyKota to work reasonably fine with HP Laserjet
-          4L/5L/6L, not perfect, but better than nothing.
-          See http://web.mit.edu/source/third/lprng/doc/LPRng-HOWTO-15.html
-          For a more accurate accounting, never switch your HP printers
-          off. This is untested, please report any problem.
-          
-        - A bug was fixed when edpykota --add was used with users who already
-          had a quota on the specified printer.
-          
-        - A small display bug in repykota was introduced in preliminary 
-          1.03 versions, and fixed later on.
-          
-        - Some minor bugs which happened in rare situations were fixed.
-        
-        - Support for AppleTalk printers was added, see sample configuration
-          file for details.
-          
-        - Users and group printing can now be controlled (limited) either by  
-          print quota or by account balance.
-        
-    - 1.02 :
-    
-        - The installation script now checks for software availability
-          and in case a software is missing asks the user if he
-          wants to continue with the installation or abort it.
-          
-        - The configuration file pykota.conf is now expected to be 
-          found in /etc instead of in /etc/cups
-          The installation script prompts the user to see if he
-          wants to move an old configuration file to the new location
-          if needed.
-          
-        - Improved documentation.
-        
-        - You can now set the tcp/ip port on which the Quota Storage
-          Server is listening, see sample configuration file for details.
-        
-        - Better general error handling.
-        
-        - Upgrade script for pre 1.01 PostgreSQL database schema is now
-          included as well.
-        
-    - 1.01 :
-    
-        - The configuration file now accepts an option   
-          to choose the recipient(s) of the email messages :
-          
-            - DevNull means no one will receive them.
-            - User means only the user will receive them.
-            - Admin means only the admin will receive them.
-            - Both means the User and the Admin will receive them.
-            
-        - The configuration file now uses hard-coded default values
-          when an option is not set. See sample configuration file
-          for details.
-          
-        - Manual pages are included since 1.00, but I forgot to    
-          add this information to this file.
-          
-        - Redistribution terms for the official package have  
-          softened and are now fully GPL compatible : 
-          unrestricted modification is now allowed even for
-          the version number.
-          
-    - 1.00 :
-    
-        - edpykota now accepts a --noquota option. This
-          disable quota checking while still doing page
-          accounting. This is really useful for people
-          who don't want to limit their users but want
-          to know how much pages they print.
-          
-        - Some untested scripts were added to retrieve
-          the life time page counter of non-SNMP printers.
-          
-        - Every directory now has a specific README file.  
-        
-    - 0.99 :
-    
-        - Under some circumstances while the user wasn't allowed
-          to print, he didn't receive any email message. It is
-          now fixed.
-          
-        - When an user wasn't allowed to print, the quota for
-          the previous user wasn't updated. This is now fixed.
-          
-    - 0.98 :
-    
-        - Correctly handle the case where the printer is switched off.
-        
-        - Small bug wrt syslog fixed.
-        
-    - 0.97 :
-    
-        - edpykota accepts wildcards on its command line for users/groups too
-          if the --add option is not set, e.g. :
-          
-              $ edpykota --printer lp --softlimit 50 --hardlimit 100 "jer*"
-              
-        - If no user name is passed at all, then a default wildcard of "*"
-          which means apply the command on ALL users for this printer is used.
-          
-        - Small bug fixes.
-        
-    - 0.96 :
-
-        - Options requester, policy, admin, adminmail and gracedelay can now
-          be set either globally or per printer. The printer option has
-          priority if both are defined.
-
-        - More powerful configuration parser.
-        
-        - If all options are defined globally, there's no need to 
-          define a section for each printer in the configuration
-          file anymore. Just define a [global] section and it's ok.
-
-    - 0.95 :
-
-        - External requesters for printers finally added.
-
-        - Full internationalization (english and french are supported)
- 
-        - More complete quota usage report
-
-        - CGI script to access to the quota usage report
-
-        - Several bugs fixed.
-
-
-    - 0.9 : 
-
-        - First public version
-
