
    !f!                     ,    d Z ddlZdZd Zd Zd Zd Zy)z:Python sys.excepthook hook to generate apport crash dumps.    Nz/etc/default/apportc                      	 ddl } t        t        d      5 }|j                         }ddd       | j	                  d| j
                        du S # 1 sw Y   (xY w# t        $ r Y yw xY w)z4Return whether Apport should generate crash reports.r   Nzutf-8encodingz^\s*enabled\s*=\s*0\s*$T)reopenCONFIGreadsearchMOSError)r   config_fileconfs      4/usr/lib/python3/dist-packages/apport_python_hook.pyenabledr      si    	&7+ 	&{##%D	&yy3T244@DHH	& 	&  s'   A A&A AA 	A'&A'c                 	   	 |t         fv r 	 t        rt        j                  |||       yyt               s 	 t        rt        j                  |||       yy	 ddl}ddl}ddl}ddl}ddl}ddl	}	ddl
m}
m}m} | s 	 t        rt        j                  |||       yy|j                   j#                  |       }  ||       s 	 t        rt        j                  |||       yy|	j$                  j'                         }t)        |d      rL|j+                         }|dk(  r 	 t        rt        j                  |||       yy|dk(  rt-        ||       n||d<   |t        k(  r$|j.                  t1        |j.                        |d<   |j3                         }|j5                  ||||       |j7                         j9                         |d	<   |j;                  d
dg       |j=                          | |d<   d|v r0t1        t?        |jA                  |       jB                              |d<   	 t        jD                  |d<   |jI                         r 	 t        rt        j                  |||       yy|jK                  tL        tN              5  |jQ                          ddd       d|d<   |jR                  jU                  dd      }	 |jW                  |dd       |jY                  dd|       }| d| d|j[                          d}|j                   j]                  |      rC |
||        |||      r 	 t        rt        j                  |||       yy|j_                  |       |ja                  |jc                  ||jd                  |jf                  z  |jh                  z  d      d      5 }|jk                  |       ddd       t        rt        j                  |||       yy# t        t        f$ r! Y t        rt        j                  |||       yyw xY w# tF        $ r Y w xY w# 1 sw Y   xY w# t        $ r! Y t        rt        j                  |||       yyw xY w# 1 sw Y   xY w# t        rt        j                  |||       w w xY w)z1Catch an uncaught exception and make a traceback.Nr   )increment_crash_counterlikely_packagedshould_skip_crashget_dbus_namez"org.freedesktop.DBus.Error.NoReplyz)org.freedesktop.DBus.Error.ServiceUnknown_PythonExceptionQualifier)file	Traceback
PYTHONPATH
PYTHONHOME)extraenvExecutablePathExecutableTimestamp
PythonArgsno	_HooksRunAPPORT_REPORT_DIRz
/var/crashi  T)modeexist_ok/_.z.crashi  wb)6KeyboardInterruptsys__excepthook__r   
contextlibioosr   	tracebackapport.reportapport.fileutilsr   r   r   ImportErrorr   pathrealpathreportReporthasattrr   dbus_service_unknown_analysiserrnostrStringIOprint_exceptiongetvaluestripadd_proc_infoadd_user_infointstatst_mtimeargvAttributeErrorcheck_ignoredsuppressSystemError
ValueErroradd_package_infoenvirongetmakedirssubgetuidexistsunlinkfdopenr   O_WRONLYO_CREATO_EXCLwrite)binaryexc_typeexc_objexc_tbr+   r,   r-   r   r.   apportr   r   r   r4   nametb_file
report_dirmangled_programpr_filenamereport_files                       r   apport_excepthookra   "   sY    f:)++D x&9  y| x&9 y	   T x&9 Q !!&) v&H x&9 E %%' 7O,((*D;; r x&9 q BB-gv>6:23 w7==#<25gmm2DF./ ++-!!(GV'!J%..0668{|\&BC#)  F*,/BGGFO4L4L0M,NF()	&)hh\F<  !> x&9 ;   j9 	&##%	&"{ZZ^^$7F
	KK
$K? &&c62#Ao%6a		}FK77>>+&#FK8 5 x&9  IIk"YYGGKrzz!9BII!EuMt
 	&LL%	& x&9 _ W% 	\ x&9 _	Z  		
	& 	&  	* x&9 -		& 	& x&9 s   	Q  
Q  "O 8Q  #Q  ;Q  8C'Q   P
 4Q  $Q  >P)Q  9P' AQ  AQ  Q0Q  P&Q  PQ  
	PQ  PQ  P$Q  '	Q0Q  QQ  QQ    R c                 >   ddl }ddl}ddlm}m}m} ddlm} |j                  d| j                               }|sAt        j                  r1t        j                  j                  d| j                         z          y|j                  d      }	g }
 |d      D ]}  } |d	      }|j                  |d
       	 |j                  dd      |	k(  rI|j                  dd      }|j                  dd|g|j                         dk(  }|
j#                  |||f        |
s	d|	 |d<   yd|d<   |
D ]!  \  }}}|dxx   d| d| d|rdnd dz  cc<   # y# ||f$ rG t        j                  r3t        j                  j                  d| d| j                                 Y w xY w)z7Analyze D-Bus service error and add analysis to report.r   N)ConfigParserNoOptionErrorNoSectionError)globz/name\s+(\S+)\s+was not provided by any .servicez/Error: cannot parse D-BUS name from exception:    z%/usr/share/dbus-1/*services/*.service)interpolationzUTF-8r   zD-BUS ServiceNameExecpidofz-sx)stdoutzInvalid D-BUS .service file z: zno service file providing DbusErrorAnalysiszprovided by z (z is  znot zrunning))r   
subprocessconfigparserrc   rd   re   rf   r
   get_dbus_messager)   stderrrU   groupr	   rK   callPIPEappend)rX   r4   r   rp   rc   rd   re   rf   match	dbus_nameservicesservice_fileserviceexerunnings                  r   r7   r7      s   
 HH II:G<T<T<VE ::JJA**,- AI HDE T2\G4	{{?F3y@kk/6:OOWeS$9*//ORVWW  sG <=$ (B9+&N"#&3"#%- 	M!GS'#WIRuDwF(C8LM 	M . 	zz

  2<. A00235 	s   7AEA
FFc                  6   t         j                  d   r+j                  d      sddl} 	 | j	                          d fd}|t         _	        y# t
        $ r< 	 | j                  d      j                  d      rdd n# t        $ r Y Y yw xY wY Uw xY w)zInstall the python apport hook.r   r$   Nz/proc/self/cwdz
 (deleted)ic                      t        | ||      S )N)ra   )rW   rX   rY   rV   s      r   partial_apport_excepthookz*install.<locals>.partial_apport_excepthook   s     7FCC    )
r)   rC   
startswithr-   getcwdFileNotFoundErrorreadlinkendswithr   
excepthook)r-   r   rV   s     @r   installr      s     XXa[Ff'',			}AfX.FD /CN ! 	%56??<0#DS\F 	s5   A 	B'BB	BBBBB)__doc__r)   r   r   ra   r7   r    r   r   <module>r      s*    @ 	 v:r3Ml/r   