
U9c       s  d  Z  d Z d Z d k l Z d k Z d k Z d k Z d k Z d Z	 d Z
 d Z d Z d	 Z d
 Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z h  d d <d d <d d <d d <d d <d d <d d <d d <d d <d d <d d <d d  <d d! <d d" <d d# <d d$ <d d% <d d& <Z d'   Z d(   Z d)   Z d* f  d+     YZ d, f  d-     YZ d. f  d/     YZ  d k! Z! d0 e  f d1     YZ" d S(2   s  PRC/PDB file I/O in pure Python.

  This module serves two purposes: one, it allows access to Palm OS(tm)
  database files on the desktop in pure Python without requiring
  pilot-link (hence, it may be useful for import/export utilities),
  and two, it caches the contents of the file in memory so it can
  be freely modified using an identical API to databases over a
  DLP connection.
s0   $Id: prc.py,v 1.10 1999/12/07 10:22:01 rob Exp $s3   Copyright 1998-1999 Rob Tillotson <robt@debian.org>(   s   _NiN   i
   i   l   0Kx i   i   i   i   i   i    i   i@   s    s   names   DATAs   types       s   creatori    s
   createDates
   modifyDates
   backupDates   modnums   versions	   flagResets   flagResources	   flagNewers   flagExcludeFromSyncs   flagAppInfoDirtys   flagReadOnlys
   flagBackups   flagOpens   mores   indexc    sG   x< t  d t |    d r# } |  | d j o |  |  Sn q W|  Sd  S(   Ni    s    (   s   ranges   lens   ss   x(   s   ss   xs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   null_terminated s
      c    s   t  i |  d  d Sd  S(   Ns    i    (   s   strings   splits   s(   s   ss5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys	   trim_null s    c    sj   t  |   | d j o |  | d  }  |  d }  n t  |   | j  o |  d | t  |   }  n |  Sd  S(   Ni   s    (   s   lens   ss   l(   s   ss   ls5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   pad_null s     s   PRecordc      s)   d d d d d  Z  d   Z d   Z RS(   Nc    s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   s   raws   selfs   ids   attrs   category(   s   selfs   attrs   ids   categorys   raws5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __init__ s    			i    s    c    sD   t  |  t  d  j o t |  i |  Sn t |  i | i  Sd  S(   Ni    (   s   types   objs   cmps   selfs   id(   s   selfs   objs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __cmp__ s    c    s   |  i Sd  S(   N(   s   selfs   id(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __hash__ s    (   s   __init__s   __cmp__s   __hash__(    s5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   PRecord s    		s	   PResourcec      s&   d d d d  Z  d   Z d   Z RS(   Nc    s   | |  _  | |  _ | |  _ d  S(   N(   s   raws   selfs   ids   typs   type(   s   selfs   typs   ids   raws5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __init__ s    		s       i    s    c    s_   t  |  t  f   j o t |  i  |  i f |  Sn& t |  i  |  i f | i  | i f  Sd  S(   N(   s   types   objs   cmps   selfs   id(   s   selfs   objs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __cmp__ s    c    s   t  |  i |  i f  Sd  S(   N(   s   hashs   selfs   types   id(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __hash__ s    (   s   __init__s   __cmp__s   __hash__(    s5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys	   PResource s    	s   PCachec      s   d   Z  d   Z d   Z d   Z d   Z d   Z d   Z d   Z d	   Z d
   Z	 d   Z
 d   Z d   Z d   Z d   Z d d  Z d   Z d   Z d   Z d   Z d   Z d d  Z d   Z d   Z d   Z d   Z d   Z RS(   Nc    sS   g  |  _ d |  _ d |  _ d |  _ d |  _ h  |  _ |  i i t  d |  _	 d  S(   Ns    i    (
   s   selfs   datas   appblocks	   sortblocks   dirtys   nexts   infos   updates   default_infos   allow_zero_ids(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __init__ s    						c    s   t  |  i  Sd  S(   N(   s   lens   selfs   data(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys
   getRecords s    c    s   |  i o |  i p t Sd  S(   N(   s   selfs   appblocks   None(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   getAppBlock s    c    s   d |  _ | |  _ d  S(   Ni   (   s   selfs   dirtys   raws   appblock(   s   selfs   raws5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   setAppBlock s    	c    s   |  i o |  i p t Sd  S(   N(   s   selfs	   sortblocks   None(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   getSortBlock s    c    s   d |  _ | |  _ d  S(   Ni   (   s   selfs   dirtys   raws   appblock(   s   selfs   raws5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   setSortBlock s    	c    s   | |  i j Sd  S(   N(   s   ids   selfs   data(   s   selfs   ids5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   checkID s    c    sB   y |  i | } Wn t Sn X| i | | i | i | i f Sd  S(   N(	   s   selfs   datas   is   rs   Nones   raws   ids   attrs   category(   s   selfs   is   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys	   getRecord s
      c    sT   y# |  i i |  } |  i | } Wn t Sn X| i | | i | i | i	 f Sd  S(   N(
   s   selfs   datas   indexs   ids   is   rs   Nones   raws   attrs   category(   s   selfs   ids   is   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   getRecordByID s     c    s9   y |  i | } Wn t Sn X| i | i | i f Sd  S(   N(   s   selfs   datas   is   rs   Nones   raws   types   id(   s   selfs   is   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   getResource s
      c    s   |  i Sd  S(   N(   s   selfs   info(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys	   getDBInfo s    c    s&   d |  _ h  |  _ |  i i |  d  S(   Ni   (   s   selfs   dirtys   infos   update(   s   selfs   infos5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys	   setDBInfo s    		c    s   |  i o | o[ t |  i  o
 d } n= |  i d i d } x | |  i j o | d } qE W| } n t | | | |  } | o | |  i j o |  i i
 |  n |  i i |  d |  _ | Sd  S(   Ni   i    (   s   selfs   allow_zero_idss   ids   lens   datas   xids   PRecords   attrs   cats   rs   removes   appends   dirty(   s   selfs   attrs   ids   cats   datas   xids   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys	   setRecord s     
  
	c    sc   | | f |  i j o |  i i | | f  n t | | |  } |  i i |  d |  _ | Sd  S(   Ni   (	   s   typs   ids   selfs   datas   removes	   PResources   rs   appends   dirty(   s   selfs   typs   ids   datas   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   setResource s    	c    s   xz |  i t |  i  j  o` |  i |  i } |  i } |  i d |  _ | i | j o# | i | | i	 | i
 | i f Sn q Wd Sd  S(   Ni   s    (   s   selfs   nexts   lens   datas   rs   is   categorys   cats   raws   ids   attr(   s   selfs   cats   rs   is5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   getNextRecord s     	(c    s   x |  i t |  i  j  o{ |  i |  i } |  i } |  i d |  _ | i t @o | d j  p | i	 | j o# | i
 | | i | i | i	 f Sn q Wd  S(   Ni   i    (   s   selfs   nexts   lens   datas   rs   is   attrs   attrModifieds   cats   categorys   raws   id(   s   selfs   cats   rs   is5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   getNextModRecords     	+i   c    sK   y# |  i |  i i | | f  } Wn t Sn X| i | i | i f Sd  S(   N(   s   selfs   datas   indexs   types   ids   rs   Nones   raw(   s   selfs   types   ids   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   getResourceByIDs
     # c    s6   | |  i j o t Sn |  i i |  d |  _ d  S(   Ni   (   s   ids   selfs   datas   Nones   removes   dirty(   s   selfs   ids5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   deleteRecords     c    s   g  |  _ d |  _ d  S(   Ni   (   s   selfs   datas   dirty(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   deleteRecordss    	c    sB   | | f |  i j o t Sn |  i i | | f  d |  _ d  S(   Ni   (   s   types   ids   selfs   datas   Nones   removes   dirty(   s   selfs   types   ids5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   deleteResources     c    s   g  |  _ d |  _ d  S(   Ni   (   s   selfs   datas   dirty(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   deleteResources"s    	c    s2   t  d   |  i  } | o | i   n | Sd  S(   Nc    s   |  i S(   N(   s   xs   id(   s   xs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   <lambda>'s    (   s   maps   selfs   datas   ms   sort(   s   selfs   sorts   ms5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   getRecordIDs&s     i    c    s@   x0 |  i d r# } | i | j o | | _ n q Wd |  _ d  S(   Ni    i   (   s   selfs   datas   rs   categorys   frms   tos   dirty(   s   selfs   frms   tos   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   moveCategory+s
     c    s   t  t d   d  S(   Ns   unimplemented(   s   RuntimeErrors   _(   s   selfs   cats5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   deleteCategory1s    c    sT   g  } x5 |  i d r( } | i t @o q n | i |  q W| |  _ d |  _ d  S(   Ni    i   (   s   ndatas   selfs   datas   rs   attrs   attrDeleteds   appends   dirty(   s   selfs   ndatas   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   purge4s     	c    s   d |  _ d  S(   Ni    (   s   selfs   next(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys	   resetNext>s    c    sO   |  i i d d  o4 x$ |  i d r } | i t @| _ q# Wd |  _ n d  S(   Ns   flagResourcei    i   (   s   selfs   infos   gets   datas   rs   attrs	   attrDirtys   dirty(   s   selfs   rs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys
   resetFlagsAs
     (   s   __init__s
   getRecordss   getAppBlocks   setAppBlocks   getSortBlocks   setSortBlocks   checkIDs	   getRecords   getRecordByIDs   getResources	   getDBInfos	   setDBInfos	   setRecords   setResources   getNextRecords   getNextModRecords   getResourceByIDs   deleteRecords   deleteRecordss   deleteResources   deleteResourcess   getRecordIDss   moveCategorys   deleteCategorys   purges	   resetNexts
   resetFlags(    s5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   PCache s6    																								
	s   Filec      sD   e  d d h  d  Z d   Z d   Z d   Z d   Z d   Z RS(	   Nc    s]   t  i |   | |  _ |  i i |  | |  _ d |  _	 | o |  i |  d |  _	 n d  S(   Ni    i   (   s   PCaches   __init__s   selfs   names   filenames   infos   updates   writes	   writebacks   isopens   reads   load(   s   selfs   names   reads   writes   infos5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __init__Ks    			i   i    c    s5   |  i o |  i o |  i |  i  n d |  _ d  S(   Ni    (   s   selfs	   writebacks   dirtys   saves   filenames   isopen(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   closeVs    c    s   |  i o |  i   n d  S(   N(   s   selfs   isopens   close(   s   selfs5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   __del__[s    
 c    sI   t  |  t  d  j o t | d  } n | i   } |  i |  d  S(   Ns    s   rb(   s   types   fs   opens   reads   datas   selfs   unpack(   s   selfs   fs   datas5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   load^s     c !   s  t  |  t j  o t t d   n t i d | t   \ } } } } } } } }	 }
 } } } } } | p$ |	 d j  p |
 d j  p
 | d j  o t t d   n h  t |  d <| d <| d <| t d <| t d	 <| t d
 <| d <| d <| t @d <| t @d <| t @d <| t @d <| t @d <| t @d <| t @d <| t @d <d d <d d <|  _  | t @} | o
 t" } n t$ } g  } t } x t' d |  d r } | | | | !} | | } | p t  |  | j  o t t d   n | o5 t i d |  \ } } } | i, | | | f  nG t i d |  \ } } | d @d ?} | d @} | i, | | | f  qWt  |  } | i/   x | d r \ } } } | | } | d j  o t t d   n | | | !} | } t  |  | j o t t d   n | o& t4 | | |  } |  i i, |  n. t6 | d @| | d  @|  } |  i i, |  qW|  i i/   |
 o | |
 } |
 } n d } |	 o | |	 }  |	 } n d }  |  d j  p
 | d j  o t t d!   n |  oA | |	 |	 |  !|  _9 t  |  i9  |  j o t t d"   n n | oA | |
 |
 | !|  _: t  |  i:  | j o t t d#   n n d  S($   Ns   file too shorts   >32shhLLLlll4s4sllhi    s   invalid database headers   names   types   creators
   createDates
   modifyDates
   backupDates   modnums   versions	   flagResets   flagResources	   flagNewers   flagExcludeFromSyncs   flagAppInfoDirtys   flagReadOnlys
   flagBackups   flagOpens   mores   indexs   bad database headers   >4shls   >lli   i   i s#   bad pdb/prc record entry (size < 0)s   failed to read recordi   i   s2   bad database header (appinfo or sortinfo size < 0)s   failed to read appinfo blocks   failed to read sortinfo block(;   s   lens   datas   PI_HDR_SIZEs   IOErrors   _s   structs   unpacks   names   flagss   vers   ctimes   mtimes   btimes   mnums   appinfos   sortinfos   typs   creators   uids   nextrecs   numrecs   null_terminateds   PILOT_TIME_DELTAs	   flagResets   flagResources	   flagNewers   flagExcludeFromSyncs   flagAppInfoDirtys   flagReadOnlys
   flagBackups   flagOpens   selfs   infos   rsrcs   PI_RESOURCE_ENT_SIZEs   ss   PI_RECORD_ENT_SIZEs   entriess   poss   ranges   xs   hstrs   ids   offsets   appends   auids   attrs   reverses   ofs   qs   sizes   ds	   PResources   rs   PRecords   sortinfo_sizes   appinfo_sizes   appblocks	   sortblock(!   s   selfs   datas   names   flagss   vers   ctimes   mtimes   btimes   mnums   appinfos   sortinfos   typs   creators   uids   nextrecs   numrecs   rsrcs   ss   entriess   poss   xs   hstrs   ids   offsets   auids   attrs   ofs   qs   sizes   ds   rs   sortinfo_sizes   appinfo_sizes5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   unpackdsx     @.
 
 


	 
  



c    s!  t  |  t  d  j o t | d  } n |  i i d  o d t |  i  } n d t |  i  } t	 | d } |  i o | } | t |  i  } n d } |  i o | } | t |  i  } n d } g  } x3 |  i d r& } | i |  | t | i  } q W|  i } d }	 | i d d  o |	 t B}	 n | i d d  o |	 t B}	 n | i d	 d  o |	 t B}	 n | i d
 d  o |	 t B}	 n | i d d  o |	 t B}	 n | i d d  o |	 t B}	 n | i d d  o |	 t B}	 n t i d t | i d d  d  |	 | i d d  | i d d  t | i d d  t | i d d  t | i d d  | | | i d d  | i d d  d d t |  i   }
 | i  |
  g  } g  } |  i i d  } x t$ t% |  i |  d r \ } } | o9 | i | i  | i t i d | i  | i& |   nH | i | i  | i' | i( Bd >| i& B} | i t i d | |   qWx | d r } | i  |  qW| i  d  |  i o | i  |  i  n |  i o | i  |  i  n x | d r } | i  |  qWd S(   s   Dump the cache to a file.
	s    s   wbs   flagResourcei
   i   i   i    s   flagReadOnlys   flagAppInfoDirtys
   flagBackups   flagOpens	   flagNewers	   flagResets   >32shhLLLlll4s4sllhs   namei    s   versions
   createDatel    s
   modifyDates
   backupDates   modnums   types       s   creators   >4shli   s   >lls     N(*   s   types   fs   opens   selfs   infos   gets   lens   datas   entries_lens   PI_HDR_SIZEs   offs   appblocks   appinfo_offsets	   sortblocks   sortinfo_offsets   rec_offsetss   xs   appends   raws   flgs   flagResources   flagReadOnlys   flagAppInfoDirtys
   flagBackups   flagOpens	   flagNewers	   flagResets   structs   packs   pad_nulls   PILOT_TIME_DELTAs   hdrs   writes   entriess   record_datas   rsrcs   maps   Nones   ids   attrs   categorys   a(   s   selfs   fs   entries_lens   offs   appinfo_offsets   sortinfo_offsets   rec_offsetss   xs   infos   flgs   hdrs   entriess   record_datas   rsrcs   as5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   saves      

 	       	 ) 	  
 
 	  (   s   Nones   __init__s   closes   __del__s   loads   unpacks   save(    s5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   FileJs    				](#   s   __doc__s   __version__s   __copyright__s   Pyrites   _s   syss   oss   stats   structs   PI_HDR_SIZEs   PI_RESOURCE_ENT_SIZEs   PI_RECORD_ENT_SIZEs   PILOT_TIME_DELTAs   flagResources   flagReadOnlys   flagAppInfoDirtys
   flagBackups   flagOpens	   flagNewers	   flagResets   flagExcludeFromSyncs   attrDeleteds	   attrDirtys   attrBusys
   attrSecrets   attrArchiveds   default_infos   null_terminateds	   trim_nulls   pad_nulls   PRecords	   PResources   PCaches   pprints   File(    s5   /mit/python/lib/python2.0/site-packages/Pyrite/prc.pys   ? s<   1$				