
U9c       s(    d  Z     d Z " d Z % d k l Z V d k Z d k Z d k Z d k Z X d Z	 Y d Z
 Z d Z \ d Z ^ d	 Z _ d
 Z ` d Z a d Z b d Z d d Z e d Z g d Z i d Z j d Z k d Z l d Z m d Z o 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  Id k! Z! J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    sY     xE 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    s     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      s5     d d d d d  Z   d   Z  d   Z RS(   Nc    s7     | |  _   | |  _  | |  _  | |  _ 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    sP     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      s2     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    sk     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      sP    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 1d   Z 4d   Z >d   Z Ad   Z RS(   Nc    sn     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    sT     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    si     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    sK     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    s2     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 | op  t |  i  o  d } nL  |  i d i d }  x%  | |  i j o  | d } qW 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    sx     | | 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     x  |  i t |  i  j  oo  |  i |  i } |  i } |  i d |  _ | i | j o& | i | | i	 | i
 | i f Sn q	 Wd 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    s]   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    sE   | |  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    sQ   | | 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    sA   &'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    sR   +,x9 |  i d ,r) } -| i | j o .| | _ n q W/d |  _ 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   12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    so   45g  } 7xA |  i d 7r1 } 8| i t @o
 9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    sa   AC|  i i d d  o@ Ex* |  i d Er } F| i t @| _ q, WGd |  _ 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      sY   JKe  d d h  d  Z Vd   Z [d   Z ^d   Z dd   Z d   Z RS(	   Nc    sx   KLt  i |   M| |  _ N|  i i |  O| |  _ Pd |  _	 R| o  S|  i |  T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    sA   VW|  i o |  i o X|  i |  i  n Y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    sX   ^_t  |  t  d  j o _t | d  } n a| i   } b|  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 !   sN  det  |  t j  o et t d   n ft i d | t   \ } } } } } } } }	 }
 } } } } } j| p$ |	 d j  p |
 d j  p
 | d j  o kt t d   n m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 | o; t i d |  \ } } } | i, | | | f  nS t i d |  \ } } | d @d ?} | d @} | i, | | | f  qWt  |  } | i/   x | d r \ } } } | | } | d j  o t t d   n | | | !} | } t  |  | j o t t d   n | o, t4 | | |  } |  i i, |  n4 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 |  oJ | |	 |	 |  !|  _9 t  |  i9  |  j o t t d"   n n | oJ | |
 |
 | !|  _: 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1
 			 	
  	 
 
	
	

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  } x< |  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 \ } } | o? | i | i  | i t i d | i  | i& |   nQ  | i | i  | i' | i( Bd >| i& B} | i t i d | |   qWx# | 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'																	