h'dWc@s^dZddlZddlZddlmZmZddlmZde fdYZ dS(s Python package with ctypes wrapper for libadm(3LIB). libadm extvtoc access is provided by a Context Manager. Example: with ExtVTOCContext("c3t4d5") as extvtoc: # update extvtoc here # upon exiting context new extvtoc will be # written to disk. with ExtVTOCContext("c3t4d5", read_only=True) as extvtoc: # examine extvtoc here # will not be written upon exiting context iN(t read_extvtoct write_extvtoc(textvtoctExtVTOCContextcBs5eZdZedZdZdZdZRS(s0Context for examining and altering extended VTOCcCs-d||_| |_d\|_|_dS(Ns/dev/rdsk/%ss2(NN(t_rdskt_writetNonet_fdt_vtoc(tselftctdt read_only((s __init__.pyt__init__5s  cCsutj|jtjtjB|_t}t|jtj |}|dkrht |d|n||_ |S(Nisread_extvtoc: %d( tostopenRtO_RDWRtO_NDELAYRRRtCtbyreftOSErrorR(R tvtocterr((s __init__.pyt __enter__:s"   cCs;t|j|j}|dkr7t|d|ndS(Niswrite_extvtoc: %d(RRRR(R R((s __init__.pytupdateDs cCsd}|jtkr6|jr6t|j|j}n|jrRtj|jn|dkr}t|dtj|ndS(Niswrite_extvtoc: %s( RtTrueRRRR tcloseRtstrerror(R ttypetvaluet tracebackR((s __init__.pyt__exit__Is  (t__name__t __module__t__doc__tFalseR RRR(((s __init__.pyR3s   ( R!tctypesRR t libadm.cfuncRRtlibadm.cstructRtobjectR(((s __init__.pyt)s