7ec@swdZddlZddlZddlZddlZejZdZ e Z dej fdYZ dddZdS(sA dumb and slow but simple dbm clone. For database spam, spam.dir contains the index (a text file), spam.bak *may* contain a backup of the index (also a text file), while spam.dat contains the data (a binary file). XXX TO DO: - seems to contain a bug when updating... - reclaim free space (currently, space once occupied by deleted or expanded items is never reused) - support concurrent access (currently, if two processes take turns making updates, they can mess up the index) - support efficient access to large databases (currently, the whole index is read when the database is opened, and some updates rewrite the whole index) - support opening for read-only (flag = 'm') iNit _DatabasecBseZeZeZddZdZdZeZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZeZdZdZeZdZRS(tccCs||_|dk|_|tjd|_|tjd|_|tjd|_d|_yt |jd}Wn<t k rt |jd}|j |jWdQXn X|j |j dS(Ntrtdirtdattbaktw(t_modet _readonlyt_ostextsept_dirfilet_datfilet_bakfiletNonet_indext_opentIOErrort_chmodtcloset_update(tselft filebasenametmodetflagtf((s/usr/lib64/python2.7/dumbdbm.pyt__init__0s    cCsi|_yt|j}Wntk r<|j |_nVXt|_|Dx<|D]4}|j}tj |\}}||j|s