509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
ó
Afc           @   sö  d  d l  Z  d  d l Z d  d l Z d  d l 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 i d d 6d d 6d d 6d d 6d d	 6d d
 6d d 6d d 6d d 6d d 6d d 6d d 6Z 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# i	 e d 6e d 6e" d	 6e" d
 6e d 6e  d 6e! d 6e" d 6e# d 6Z$ d- d3 d. „  ƒ  YZ% d/ d4 d0 „  ƒ  YZ& d1 „  Z' d2 „  Z( e( ƒ  d S(5   iÿÿÿÿNt    s   gopher.micro.umn.eduiF   t   0t   1t   2t   3t   4t   5t   6t   7t   8t   9t   +t   ss   <TEXT>s   <DIR>s   <CSO>s   <ERROR>s   <BINHEX>s   <DOS>s
   <UUENCODE>s   <SEARCH>s   <TELNET>s   <BINARY>s   <REDUNDANT>s   <SOUND>s   
s   	c         C   sh   | s t  } n* t | ƒ t d ƒ k r9 t j | ƒ } n  t j t j t j ƒ } | j |  | f ƒ | S(   NR    (   t   DEF_PORTt   typet   stringt   atoit   sockett   AF_INETt   SOCK_STREAMt   connect(   t   hostt   portR   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   open_socket)   s    	c         C   s:   t  | | ƒ } | j |  t ƒ | j d ƒ | j d ƒ S(   Ni   t   r(   R   t   sendt   CRLFt   shutdownt   makefile(   t   selectorR   R   R   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   send_request3   s    c         C   s)  t  |  | | ƒ } g  } x | j ƒ  } | s6 d GHPn  | d t k rS | d  } n | d t k rp | d  } n  | d k r€ Pn  | s‘ d GHq n  | d } t j | d t ƒ } t | ƒ d k  rÕ d	 | f GHq n  t | ƒ d k rú d
 | d f GHn  | j d | ƒ | j | ƒ q W| j	 ƒ  | S(   Ns   (Unexpected EOF from server)iþÿÿÿiÿÿÿÿt   .s   (Empty line from server)i    i   i   s   (Bad line from server: %r)s   (Extra info from server: %r)(
   R   t   readlineR   R   t   splitfieldst   TABt   lent   insertt   appendt   close(   R   R   R   t   ft   listt   linet   typechart   parts(    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   get_menu:   s6    

c         C   s    g  } t  |  | | | j ƒ | S(   N(   t   get_alt_textfileR%   (   R   R   R   R(   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   get_textfileX   s    c         C   s³   t  |  | | ƒ } x� | j ƒ  } | s0 d GHPn  | d t k rM | d  } n | d t k rj | d  } n  | d k rz Pn  | d  d k r— | d } n  | | ƒ q W| j ƒ  d  S(   Ns   (Unexpected EOF from server)iþÿÿÿiÿÿÿÿR   i   s   ..i   (   R   R    R   R&   (   R   R   R   t   funcR'   R)   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyR-   ^   s     c         C   s,   t  |  | | ƒ } | j ƒ  } | j ƒ  | S(   N(   R   t   readR&   (   R   R   R   R'   t   data(    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt
   get_binaryq   s    
c         C   s@   t  |  | | ƒ } x' | j | ƒ } | s. Pn  | | ƒ q Wd  S(   N(   R   R0   (   R   R   R   R/   t	   blocksizeR'   R1   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   get_alt_binaryx   s    c          G   sû   t  } t } t } t |  ƒ } | d k rA |  d rA |  d } n  | d k rd |  d rd |  d } n  | d k r‡ |  d r‡ |  d } n  | d k rŸ t d ‚ n  y t | | | ƒ WnA t j k
 rá } d G| GHt j	 d ƒ n t
 k
 rö d GHn Xd  S(   Ni    i   i   i   s   too many argss   Socket error:s
   
[Goodbye](   t   DEF_SELECTORt   DEF_HOSTR   R#   t   RuntimeErrort   browse_menuR   t   errort   syst   exitt   KeyboardInterrupt(   t   argsR   R   R   t   nt   msg(    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   browserƒ   s&    	c         C   sþ  t  |  | | ƒ } xåd GHd Gt |  ƒ GHd G| Gd G| GHHx‰ t t | ƒ ƒ D]u } | | } | d | d } } t j t | d ƒ d ƒ d G| Gt j | ƒ r° t | GHqN d	 t | ƒ d
 GHqN WHx” y t d ƒ } Wn t	 k
 rð Hd  SX| sû d  Sy t j
 | ƒ }	 Wn t j k
 r,d GHqË n Xd |	 k  oJt | ƒ k n sZd GHqË n  PqË W| |	 d } | d } | d d !\ }
 } } t j | ƒ rñt | } y | |
 | | ƒ Wqöt t j f k
 ríd Gt j Gd Gt j GHqöXq d GHq Wd  S(   Ns   ----- MENU -----s	   Selector:s   Host:s    Port:i    i   i   t   :s   <TYPE=t   >s   Choice [CR == up a level]: s#   Choice must be a number; try again:s   Choice out of range; try again:i   i   s   ***s   Unsupported object type(   R,   t   reprt   rangeR#   R   t   rjustt   typenamet   has_keyt	   raw_inputt   EOFErrorR   t
   atoi_errort   typebrowsert   IOErrorR   R9   R:   t   exc_typet	   exc_value(   R   R   R   R(   t   it   itemR*   t   descriptiont   strt   choicet
   i_selectort   i_hostt   i_portt   browserfunc(    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyR8   ™   sR    
""

c         C   sÛ   d  } y8 t j d d ƒ } t | ƒ } t |  | | | j ƒ Wn t k
 r\ } d G| GHn X| rp | j ƒ  n  t ƒ  } | sƒ d  St | ƒ } y t |  | | | j ƒ d GHWn t k
 rÌ } d G| GHn X| j ƒ  d  S(   Ns   ${PAGER-more}t   ws   IOError:s   Done.(	   t   Nonet   ost   popent	   SaveLinesR-   t   writelnRL   R&   t   open_savefile(   R   R   R   t   xt   pR?   R'   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   browse_textfileÇ   s&    		c         C   sŸ   x˜ d GHd Gt  |  ƒ GHd G| Gd G| GHHy t d ƒ } Wn t k
 rN HPn Xt j | ƒ } | sh Pn  d | k r d GHq n  t |  t | | | ƒ q Wd  S(   Ns   ----- SEARCH -----s	   Selector:s   Host:s    Port:s   Query [CR == up a level]: s   	s"   Sorry, queries cannot contain tabs(   RC   RH   RI   R   t   stripR8   R"   (   R   R   R   t   query(    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   browse_searchÝ   s"    c         C   sp   |  r d Gt  |  ƒ GHn  t | ƒ t d ƒ k r? t  | ƒ } n  t j d | d | ƒ } | rl d G| GHn  d  S(   Ns	   Log in asR    s   set -x; exec telnet t    s   Exit status:(   RC   R   RZ   t   system(   R   R   R   t   sts(    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   browse_telnetñ   s    c         C   sF   t  ƒ  } | s d  St | ƒ } t |  | | | j d ƒ | j ƒ  d  S(   Ni   i   i    (   R^   t   SaveWithProgressR4   t   writeR&   (   R   R   R   R'   R_   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   browse_binaryû   s    	c         C   s   t  |  | | ƒ d  S(   N(   Rk   (   R   R   R   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   browse_sound  s    R\   c           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   R'   (   t   selfR'   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   __init__  s    c         C   s   |  j  j | d ƒ d  S(   Ns   
(   R'   Rj   (   Rm   R)   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyR]     s    c         C   s%   |  j  j ƒ  } | r! d G| GHn  d  S(   Ns   Exit status:(   R'   R&   (   Rm   Rg   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyR&     s    (   t   __name__t
   __module__Rn   R]   R&   (    (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyR\     s   		Ri   c           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   R'   (   Rm   R'   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyRn     s    c         C   s1   t  j j d ƒ t  j j ƒ  |  j j | ƒ d  S(   Nt   #(   R:   t   stdoutRj   t   flushR'   (   Rm   R1   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyRj     s    c         C   s&   H|  j  j ƒ  } | r" d G| GHn  d  S(   Ns   Exit status:(   R'   R&   (   Rm   Rg   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyR&      s    (   Ro   Rp   Rn   Rj   R&   (    (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyRi     s   		c          C   s2  y t  d ƒ }  Wn t k
 r% Hd  SXt j |  ƒ }  |  s? d  S|  d d k r¹ t j |  d ƒ } y t j | d ƒ } Wn' t k
 r¡ } t | ƒ Gd G| GHd  SXd Gt | ƒ Gd GH| S|  d d	 k rÞ t j	 j
 |  ƒ }  n  y t |  d ƒ } Wn' t k
 r} t |  ƒ Gd G| GHd  SXd
 Gt |  ƒ Gd GH| S(   Ns<   Save as file [CR == don't save; |pipeline or ~user/... OK]: i    t   |i   RX   RA   s   Piping throughs   ...t   ~s	   Saving to(   RH   RI   RY   R   Rb   RZ   R[   RL   RC   t   patht
   expandusert   open(   t   savefilet   cmdR`   R?   R'   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyR^   '  s6    c          C   s
  t  j d r" d GHt  j d ƒ nä t  j d rW t t  j d t  j d t  j d ƒ n¯ t  j d rÛ y- t j t  j d ƒ }  d } t  j d } Wn4 t j k
 rÇ t  j d } t  j d } d }  n Xt | | |  ƒ n+ t  j d rÿ t d t  j d ƒ n t ƒ  d  S(   Ni   s(   usage: gopher [ [selector] host [port] ]i   i   i   R    (   R:   t   argvR;   R@   R   R   RJ   (   R   R   R   (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   testE  s$    (
(    (    ()   R   R:   RZ   R   R5   R6   R   t
   T_TEXTFILEt   T_MENUt   T_CSOt   T_ERRORt   T_BINHEXt   T_DOSt
   T_UUENCODEt   T_SEARCHt   T_TELNETt   T_BINARYt   T_REDUNDANTt   T_SOUNDRF   R   R"   R   R   R,   R.   R-   R2   R4   R@   R8   Ra   Rd   Rh   Rk   Rl   RK   R\   Ri   R^   R|   (    (    (    s+   /usr/lib64/python2.7/Demo/sockets/gopher.pyt   <module>   s\   	
								.			
					