Index: /pkpgcounter/trunk/pkpgpdls/bj.py
===================================================================
--- /pkpgcounter/trunk/pkpgpdls/bj.py (revision 545)
+++ /pkpgcounter/trunk/pkpgpdls/bj.py (revision 545)
@@ -0,0 +1,72 @@
+#! /usr/bin/env python
+# -*- coding: ISO-8859-15 -*-
+#
+# pkpgcounter : a generic Page Description Language parser
+#
+# (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 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# $Id$
+#
+
+"""This modules implements a page counter for Canon BJ documents."""
+
+import sys
+import os
+import mmap
+from struct import unpack
+
+import pdlparser
+
+class Parser(pdlparser.PDLParser) :
+    """A parser for Canon BJ documents."""
+    def isValid(self) :        
+        """Returns True if data is DVI, else False."""
+        if self.firstblock.startswith("\033[K\002\000") :
+            self.logdebug("DEBUG: Input file is in the Canon BJ format.")
+            return True
+        else :    
+            return False
+            
+    def getJobSize(self) :
+        """Counts pages in a Canon BJ document.
+        
+           Algorithm by Jerome Alet.
+           
+           The documentation used for this was :
+         
+           ghostscript-8.60/src/gdevbj*.c
+        """
+        infileno = self.infile.fileno()
+        minfile = mmap.mmap(infileno, os.fstat(infileno)[6], prot=mmap.PROT_READ, flags=mmap.MAP_SHARED)
+        pagecount = 0
+        pos = 0
+        try :
+            try :
+                while True :
+                    if minfile[pos] == "\033" :
+                        # Look if we've found an initialization sequence
+                        # through the Set Initial Condition command
+                        pageheader = minfile[pos:pos+7]
+                        if pageheader in ("\033[K\002\000\000\017", 
+                                          "\033[K\002\000\000\044",
+                                          "\033[K\002\000\004\044") :
+                            pagecount += 1
+                            pos += 6
+                    pos += 1
+            except IndexError : # EOF ?
+                pass
+        finally :        
+            minfile.close() # reached EOF
+        return pagecount
Index: /pkpgcounter/trunk/pkpgpdls/analyzer.py
===================================================================
--- /pkpgcounter/trunk/pkpgpdls/analyzer.py (revision 539)
+++ /pkpgcounter/trunk/pkpgpdls/analyzer.py (revision 545)
@@ -30,5 +30,5 @@
 import version, pdlparser, postscript, pdf, pcl345, pclxl, hbp, \
        pil, mscrap, cfax, lidil, escp2, dvi, tiff, ooo, zjstream, \
-       qpdl, spl1, escpages03, plain
+       bj, qpdl, spl1, escpages03, plain
 import inkcoverage
 
@@ -164,4 +164,5 @@
                        escp2, \
                        escpages03, \
+                       bj, \
                        pil, \
                        mscrap, \
Index: /pkpgcounter/trunk/bin/pkpgcounter
===================================================================
--- /pkpgcounter/trunk/bin/pkpgcounter (revision 539)
+++ /pkpgcounter/trunk/bin/pkpgcounter (revision 545)
@@ -57,6 +57,7 @@
     * Hewlett-Packard LIDIL (hpijs)
     * Structured Fax
+    * Canon BJ/BJC
 
-The eight latter ones, as well as some TIFF documents, are currently
+The nine latter ones, as well as some TIFF documents, are currently
 only supported in page counting mode.
 
Index: /pkpgcounter/trunk/man/pkpgcounter.1
===================================================================
--- /pkpgcounter/trunk/man/pkpgcounter.1 (revision 539)
+++ /pkpgcounter/trunk/man/pkpgcounter.1 (revision 545)
@@ -34,6 +34,7 @@
 * Hewlett\-Packard LIDIL (hpijs)
 * Structured Fax
+* Canon BJ/BJC
 .PP
-The eight latter ones, as well as some TIFF documents, are currently
+The nine latter ones, as well as some TIFF documents, are currently
 only supported in page counting mode.
 .PP
Index: /pkpgcounter/trunk/NEWS
===================================================================
--- /pkpgcounter/trunk/NEWS (revision 542)
+++ /pkpgcounter/trunk/NEWS (revision 545)
@@ -23,4 +23,6 @@
   * 3.50 :
   
+    - Added support for Canon BJ/BJC documents in page counting mode.
+    
     - Added support for Structured Fax documents in page counting mode.
     
