ó
ß8Yc           @   sG   d  d l  Z  d   Z d   Z d   Z d   Z d d d     YZ d S(	   i˙˙˙˙Nc         C   s'   t    } | j |  d  | j   | S(   Nt   r(   t   SHVFilet   opent   parse(   t   filenamet   shv(    (    s    /usr/share/authconfig/shvfile.pyt   read   s    	
c         C   s'   t    } | j |  d  | j   | S(   Ns   r+(   R   R   R   (   R   R   (    (    s    /usr/share/authconfig/shvfile.pyt   rcreate    s    	
c         C   sċ   |  s
 |  St  |   } |  d d k s6 |  d d k rb |  d |  | d k rb |  d | d !}  n  d } xv t rà |  j d |  } | d k  r Pn  | d t  |   k rş |  d | !}  Pn  |  d | !|  | d }  | d 7} qk W|  S(   Ni    s   "t   'i   s   \(   t   lent   Truet   find(   t   st   slent   i(    (    s    /usr/share/authconfig/shvfile.pyt   unescape'   s     8	c         C   sĞ   |  j  d d  }  |  j  d d  }  |  j  d d  }  |  j  d d  }  |  j  d	 d
  }  |  j  d d  }  |  j d  d k s |  j d  d k r§ d |  d }  n  |  S(   Ns   \s   \\s   "s   \"R   s   \'t   $s   \\$t   ~s   \\~t   `s   \\`t    i    s   	(   t   replaceR   (   R   (    (    s    /usr/share/authconfig/shvfile.pyt   escape:   s    *R   c           B   sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C   s   d |  _  d  |  _ i  |  _ d  S(   Nt    (   R   t   Nonet   ft	   variables(   t   self(    (    s    /usr/share/authconfig/shvfile.pyt   __init__F   s    		c         C   sX   | |  _  | d k r* t | |  |  _ n* y t | |  |  _ Wn t k
 rS n Xd  S(   NR    (   R   R   R   t   IOError(   R   R   t   mode(    (    s    /usr/share/authconfig/shvfile.pyR   K   s    	c         C   sp   |  j  s d  Sx\ |  j  D]Q } | j   j d d  } t |  d k  rM q n  t | d  |  j | d <q Wd  S(   Nt   =i   i   i    (   R   t   rstript   splitR	   R   R   (   R   t   linet   vs(    (    s    /usr/share/authconfig/shvfile.pyR   V   s    	c         C   s6  |  j  s y& t j |  j t j t j B|  } Wn t k
 rC d  SXy t j | d  |  _  Wq t k
 r~ t j	 |  d  SXn  y |  j  j
 d  |  j  j   |  j j   } | j d    x6 | D]. \ } } |  j  j | d t |  d  qÈ W|  j  j   t j |  j  j    Wn t k
 r1n Xd  S(   Nt   wi    c         S   s   t  |  d | d  S(   Ni    (   t   cmp(   t   xt   y(    (    s    /usr/share/authconfig/shvfile.pyt   <lambda>n   s    R   s   
(   R   t   osR   R   t   O_RDWRt   O_CREATt   OSErrort   fdopenR   t   closet   seekt   truncateR   t   itemst   sortt   writeR   t   flusht   fsynct   fileno(   R   t   permst   fdt   ordereditemst   namet   value(    (    s    /usr/share/authconfig/shvfile.pyR2   _   s*    	&&c         C   s>   |  j  r: y |  j  j   Wn t k
 r- n Xd  |  _  n  d  S(   N(   R   R-   R   R   (   R   (    (    s    /usr/share/authconfig/shvfile.pyR-   w   s    	c         C   s(   y |  j  | SWn t k
 r# d SXd  S(   NR   (   R   t   KeyError(   R   R9   (    (    s    /usr/share/authconfig/shvfile.pyt   getValue   s    c         C   s£   y |  j  | j   } Wn t k
 r0 t  n X| d k sa | d k sa | d k sa | d k re t S| d k s | d k s | d k s | d k r t St  d  S(	   Nt   yest   truet   tR&   t   not   falseR   t   n(   R   t   lowerR;   t
   ValueErrorR
   t   False(   R   R9   t   val(    (    s    /usr/share/authconfig/shvfile.pyt   getBoolValue   s    
00c         C   s6   | s% | |  j  k r2 |  j  | =q2 n | |  j  | <d  S(   N(   R   (   R   R9   R:   (    (    s    /usr/share/authconfig/shvfile.pyt   setValue   s    c         C   s'   | r d |  j  | <n d |  j  | <d  S(   NR=   R@   (   R   (   R   R9   R:   (    (    s    /usr/share/authconfig/shvfile.pyt   setBoolValue   s    (   t   __name__t
   __module__R   R   R   R2   R-   R<   RG   RH   RI   (    (    (    s    /usr/share/authconfig/shvfile.pyR   E   s   										(    (   R(   R   R   R   R   R   (    (    (    s    /usr/share/authconfig/shvfile.pyt   <module>   s
   				