Edit File: gopher.pyc
� ]�7ec�����������@���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��oJt�|���k�n�sZd �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\��� .