Show
Ignore:
Timestamp:
02/03/06 18:37:53 (19 years ago)
Author:
jerome
Message:

Ensure that the input file is closed in all cases.
Skip faulty tags (due to unavailable PCLXL Class 3.0 specification) in PCLXL parser

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pkpgcounter/trunk/pkpgpdls/pclxl.py

    r302 r307  
    289289    def reservedForFutureUse(self) : 
    290290        """Outputs something when a reserved byte is encountered.""" 
    291         self.logdebug("Byte at %s is out of the PCLXL Protocol Class 2.0 Specification" % self.pos) 
     291        self.logdebug("Byte at %x is out of the PCLXL Protocol Class 2.0 Specification" % self.pos) 
    292292        return 0     
    293293         
     
    295295        """Passthrough mode, as detailed in PCLXL Feature Reference Protocol Class 3.0 Supplement.""" 
    296296        # TODO : do something here to skip the block. 
    297         self.logdebug("PassThrough marker detected at %s" % self.pos) 
     297        self.logdebug("PassThrough marker detected at %x" % self.pos) 
    298298        return 0 
    299299         
     
    529529        self.pagecount = 0 
    530530        self.escapedStuff = {} 
    531         self.pos = pos = 0 
     531        self.pos = pos = oldpos = 0 
    532532        try : 
    533             while 1 : 
    534                 char = minfile[pos] 
    535                 pos += 1 
    536                 length = tags[ord(char)] 
    537                 if not length : 
    538                     continue 
    539                 if callable(length) :     
    540                     self.pos = pos 
    541                     length = length() 
    542                     pos = self.pos 
    543                 pos += length     
    544         except IndexError : # EOF ? 
    545             self.minfile.close() # reached EOF 
     533            try : 
     534                while 1 : 
     535                    try : 
     536                        char = minfile[pos] 
     537                    except OverflowError :     
     538                        pos = oldpos + 1 
     539                    pos += 1 
     540                    length = tags[ord(char)] 
     541                    if length : 
     542                        if callable(length) :     
     543                            self.pos = pos 
     544                            length = length() 
     545                            pos = self.pos 
     546                        oldpos = pos     
     547                        pos += length     
     548            except IndexError : # EOF ?             
     549                pass 
     550        finally : 
     551            self.minfile.close() 
    546552             
    547553        # now handle number of copies for each page (may differ).