-ν
θΆ<c       s   d  Z  d k Z d k Z d k Z d k Z d k Td f  d     YZ d   Z d   Z d   Z	 d   Z
 e d	 j o e
   n d S(
   s)   A class to build directory diff tools on.N(   s   *s   dircmpc      sh   t  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   s   Directory comparison class.c    s>   | |  _  | |  _ t i t i g |  _ d d g |  _ |  Sd S(   s   Initialize.s   RCSs   tagsN(   s   as   selfs   bs   oss   curdirs   pardirs   hides   ignore(   s   selfs   as   b(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   new s     		c    s~   t  t i |  i  |  i  |  _ t  t i |  i  |  i  |  _ |  i i	   |  i i	   |  i
   |  i   |  i   d S(   s0   Compare everything except common subdirectories.N(   s   filters   dircaches   listdirs   selfs   as   hides   a_lists   bs   b_lists   sorts   phase1s   phase2s   phase3(   s   self(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   run s     !!

c    s   g  |  _ g  |  _ xE |  i D]: } | |  i j o |  i i |  n |  i i |  q Wg  |  _ x5 |  i D]* } | |  i j o |  i i |  n qm Wd S(   s   Compute common names.N(   s   selfs   a_onlys   commons   a_lists   xs   b_lists   appends   b_only(   s   selfs   x(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   phase1! s     		
 	
 c 
   s  g  |  _ g  |  _ g  |  _ x]|  i D]R} t i i |  i	 |  } t i i |  i |  } d } y t i |  } Wn t i j
 o }	 d } n Xy t i |  } Wn t i j
 o }	 d } n X| o t | t  } t | t  } | | j o |  i i |  nS t |  o |  i i |  n2 t |  o |  i i |  n |  i i |  n |  i i |  q% Wd S(   s(   Distinguish files, directories, funnies.i   i    N(   s   selfs   common_dirss   common_filess   common_funnys   commons   xs   oss   paths   joins   as   a_paths   bs   b_paths   oks	   statcaches   stats   a_stats   errors   whys   b_stats   S_IFMTs   ST_MODEs   a_types   b_types   appends   S_ISDIRs   S_ISREG(
   s   selfs   b_paths   oks   b_types   b_stats   a_types   a_stats   a_paths   xs   why(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   phase20 s8     			
 c    s7   t  |  i |  i |  i  } | \ |  _ |  _ |  _ d S(   s*   Find out differences between common files.N(	   s   cmpfiless   selfs   as   bs   common_filess   xxs
   same_filess
   diff_filess   funny_files(   s   selfs   xx(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   phase3T s     c    s   h  |  _ x |  i D]x } t i i |  i |  } t i i |  i	 |  } t   i | |  |  i | <} |  i | _ |  i | _ | i   q Wd S(   sό   Find out differences between common subdirectories.
        A new dircmp object is created for each common subdirectory,
        these are stored in a dictionary indexed by filename.
        The hide and ignore properties are inherited from the parent.N(   s   selfs   subdirss   common_dirss   xs   oss   paths   joins   as   a_xs   bs   b_xs   dircmps   news   newdds   hides   ignores   run(   s   selfs   b_xs   xs   a_xs   newdd(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   phase4Y s     	
  c    s9   |  i   x( |  i i   D] } |  i | i   q Wd S(   s,   Recursively call phase4() on subdirectories.N(   s   selfs   phase4s   subdirss   keyss   xs   phase4_closure(   s   selfs   x(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   phase4_closureg s
     
 c    sγ   d G|  i G|  i GH|  i o d G|  i Gd G|  i GHn |  i o d G|  i Gd G|  i GHn |  i o d G|  i GHn |  i o d G|  i GHn |  i o d G|  i GHn |  i o d G|  i GHn |  i	 o d G|  i	 GHn d	 S(
   s2   Print a report on the differences between a and b.s   diffs   Only ins   :s   Identical files :s   Differing files :s   Trouble with common files :s   Common subdirectories :s   Common funny cases :N(
   s   selfs   as   bs   a_onlys   b_onlys
   same_filess
   diff_filess   funny_filess   common_dirss   common_funny(   s   self(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   reportm s      






c    sa   |  i   y |  i } Wn t j
 o d Sn Xx) |  i i   D] } H|  i | i   qA Wd S(   si   Print reports on self and on subdirs.
        If phase 4 hasn't been done, no subdir reports are printed.N(   s   selfs   reports   subdirss   xs   AttributeErrors   keyss   report_closure(   s   selfs   x(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   report_closure s     
	 c    sD   |  i   |  i   x) |  i i   D] } H|  i | i   q$ Wd S(   s"   Report and do phase 4 recursively.N(   s   selfs   reports   phase4s   subdirss   keyss   xs   report_phase4_closure(   s   selfs   x(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   report_phase4_closure s     

 (   s   __name__s
   __module__s   __doc__s   news   runs   phase1s   phase2s   phase3s   phase4s   phase4_closures   reports   report_closures   report_phase4_closure(    (    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   dircmp
 s    	
	
		$					c    s`   g  g  g  f } xF | D]> } | t t i i |  |  t i i | |   i	 |  q W| Sd S(   s¦   Compare common files in two directories.
    Return:
        - files that compare equal
        - files that compare different
        - funny cases (can't stat etc.)N(
   s   ress   commons   xs   cmps   oss   paths   joins   as   bs   append(   s   as   bs   commons   xs   res(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   cmpfiles s      <c    sD   y# t  i |  |  o d Sn d SWn t i j
 o d Sn Xd S(   sw   Compare two files.
    Return:
        0 for equal
        1 for different
        2 for funny cases (can't stat, etc.)i    i   i   N(   s   cmpcaches   cmps   as   bs   oss   error(   s   as   b(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   cmp£ s      c    s=   g  } x, |  D]$ } | | j o | i |  n q W| Sd S(   s4   Return a copy with items that occur in skip removed.N(   s   results   lists   items   skips   append(   s   lists   skips   results   item(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   filter± s       c     sͺ   d k  }  d k } | i |  i d d  \ } } t |  d j o | i d  n t   i | d | d  } | i
   d d f | j o | i   n | i   d S(	   s   Demonstration and testing.Ni   s   ri   s   need exactly two argsi    s   -rs    (   s   syss   getopts   argvs   optionss   argss   lens   errors   dircmps   news   dds   runs   report_phase4_closures   report(   s   syss   getopts   dds   argss   options(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   demoΊ s     		
s   __main__(   s   __doc__s   oss   dircaches   cmpcaches	   statcaches   stats   dircmps   cmpfiless   cmps   filters   demos   __name__(	   s   filters   dircaches   cmpcaches   dircmps	   statcaches   cmpfiless   oss   demos   cmp(    (    s$   /usr/lib/python2.2/lib-old/dircmp.pys   ? s   									