Changeset 1542

Show
Ignore:
Timestamp:
06/17/04 15:26:51 (20 years ago)
Author:
jalet
Message:

Better exception handling code

Location:
pykota/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/bin/cupspykota

    r1541 r1542  
    2424# 
    2525# $Log$ 
     26# Revision 1.63  2004/06/17 13:26:50  jalet 
     27# Better exception handling code 
     28# 
    2629# Revision 1.62  2004/06/16 20:56:34  jalet 
    2730# Smarter initialisation code 
     
    642645        return retcode     
    643646     
     647def crashed(message) :     
     648    """Minimal crash method.""" 
     649    import traceback 
     650    lines = [] 
     651    for line in traceback.format_exception(*sys.exc_info()) : 
     652        lines.extend([l for l in line.split("\n") if l]) 
     653    msg = "ERROR: ".join(["%s\n" % l for l in ([message] + lines)]) 
     654    sys.stderr.write(msg) 
     655    sys.stderr.flush() 
     656 
    644657if __name__ == "__main__" :     
    645658    # This is a CUPS backend, we should act and die like a CUPS backend 
     659    retcode = 0 
    646660    if len(sys.argv) == 1 : 
    647661        # we will execute each existing backend in device enumeration mode 
     
    680694                            fullname = fullname[1:-1] 
    681695                        print '%s cupspykota:%s "PyKota+%s" "PyKota managed %s"' % (devicetype, device, name, fullname) 
    682         retcode = 0 
     696        retcode = 0                 
    683697    elif len(sys.argv) not in (6, 7) :     
    684698        sys.stderr.write("ERROR: %s job-id user title copies options [file]\n" % sys.argv[0]) 
     
    686700    else :     
    687701        try : 
    688             # Initializes the backend 
    689             kotabackend = PyKotaBackend()     
    690             retcode = kotabackend.mainWork() 
     702            try : 
     703                # Initializes the backend 
     704                kotabackend = PyKotaBackend()     
     705            except SystemExit :     
     706                retcode = -1 
     707            except :     
     708                crashed("cupspykota backend initialization failed") 
     709                retcode = 1 
     710            else :     
     711                retcode = kotabackend.mainWork() 
     712                kotabackend.storage.close() 
     713                kotabackend.closeJobDataStream()     
    691714        except : 
    692715            try : 
    693716                kotabackend.crashed("cupspykota backend failed") 
    694717            except :     
    695                 pass 
    696             retcode = 1 
    697          
    698         try : 
    699             kotabackend.storage.close() 
    700         except (TypeError, NameError, AttributeError) :     
    701             pass 
    702              
    703         try : 
    704             kotabackend.closeJobDataStream()     
    705         except NameError, msg :     
    706             sys.stderr.write("ERROR: PyKota's CUPS backend wrapper didn't initialize correctly : %s\n" % msg) 
    707             sys.stderr.flush() 
    708             retcode = 1 
     718                crashed("cupspykota backend failed") 
     719            retcode = 1     
    709720         
    710721    sys.exit(retcode)     
  • pykota/trunk/NEWS

    r1541 r1542  
    2222PyKota NEWS : 
    2323 
     24    - 1.19alpha22 : 
     25     
     26        - Even better debugging code. 
     27         
    2428    - 1.19alpha21 : 
    2529     
    26         - Additionnal check 
     30        - Additionnal check. 
    2731         
    2832    - 1.19alpha20 : 
  • pykota/trunk/pykota/tool.py

    r1541 r1542  
    2222# 
    2323# $Log$ 
     24# Revision 1.102  2004/06/17 13:26:51  jalet 
     25# Better exception handling code 
     26# 
    2427# Revision 1.101  2004/06/16 20:56:34  jalet 
    2528# Smarter initialisation code 
     
    424427            sys.stderr.flush() 
    425428            sys.exit(-1) 
     429             
    426430        try : 
    427431            self.debug = self.config.getDebug() 
     
    466470        for line in traceback.format_exception(*sys.exc_info()) : 
    467471            lines.extend([l for l in line.split("\n") if l]) 
    468         msg = "ERROR : ".join(["%s\n" % l for l in ([message] + lines)]) 
     472        msg = "ERROR: ".join(["%s\n" % l for l in ([message] + lines)]) 
    469473        sys.stderr.write(msg) 
    470474        sys.stderr.flush() 
  • pykota/trunk/pykota/version.py

    r1541 r1542  
    2222# 
    2323 
    24 __version__ = "1.19alpha21_unofficial" 
     24__version__ = "1.19alpha22_unofficial" 
    2525 
    2626__doc__ = """PyKota : a complete Printing Quota Solution for CUPS and LPRng."""