Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

v22i121: xarchie - An X browser interface to Archie, Patch04

3 views
Skip to first unread message

George Ferguson

unread,
Sep 13, 1994, 4:32:51 PM9/13/94
to
Submitted-by: ferg...@cs.rochester.edu (George Ferguson)
Posting-number: Volume 22, Issue 121
Archive-name: xarchie/patch04
Environment: X11, patch
Patch-To: xarchie: Volume 20, Issue 29-52

This patch brings xarchie to version 2.0.10. The complete
xarchie-2.0.10 distribution is available from ftp.x.org in
/contrib/applications as xarchie-2.0.10.tar.gz.

>From the README:
Version 2.0.10 is an interim release to fix a few nagging bugs,
update a few things and generally get the house in order (and
slow the flood of email). The next release of xarchie should be
3.0, and will support the Prospero V5 servers now online. Please
don't email me about 3.0---when it's ready for testing and/or
general use, you'll be the first to know. Also, xarchie has not
yet been tested against X11R6 or updated for it.

Extract this archive to create xarchie.p4, then apply it by doing
patch -p <xarchie.p4
in the xarchie source directory. Don't forget the "-p" flag or the
subdirectories will not get properly patched.

#!/bin/sh
# This is a shell archive (produced by shar 3.49)
# To extract the files from this archive, save it to a file, remove
# everything above the "!/bin/sh" line above, and type "sh file_name".
#
# made 07/05/1994 22:30 UTC by ferg...@moose.cs.rochester.edu
# Source directory /home/diamond/u11/ferguson/src/x/xarchie/Patches
#
# existing files will NOT be overwritten unless -c is specified
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 17507 -rw-r--r-- xarchie.p4
#
# ============= xarchie.p4 ==============
if test -f 'xarchie.p4' -a X"$1" != X"-c"; then
echo 'x - skipping xarchie.p4 (File already exists)'
else
echo 'x - extracting xarchie.p4 (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'xarchie.p4' &&
*** ../xarchie-2.0.9/README Tue Aug 24 11:49:51 1993
--- README Tue Jul 5 17:41:05 1994
***************
*** 2,9 ****
X
X George Ferguson, ferg...@cs.rochester.edu
X
! Last Change: 24 Aug 1993
X
X DISCLAIMER:
X
X This is release 2.0 of xarchie -- an X browser interface to
--- 2,17 ----
X
X George Ferguson, ferg...@cs.rochester.edu
X
! Last Change: 5 Jul 1994
X
+ NOTE: Version 2.0.10 is an interim release to fix a few nagging bugs,
+ update a few things and generally get the house in order (and
+ slow the flood of email). The next release of xarchie should be
+ 3.0, and will support the Prospero V5 servers now online. Please
+ don't email me about 3.0---when it's ready for testing and/or
+ general use, you'll be the first to know. Also, xarchie has not
+ yet been tested against X11R6 or updated for it.
+
X DISCLAIMER:
X
X This is release 2.0 of xarchie -- an X browser interface to
***************
*** 72,77 ****
--- 80,104 ----
X in the manpage.
X
X HISTORY:
+
+ Version 2.0.10 - 5 Jul 1994
+ - Interim release.
+ - Updated documentation to reflect status of v3.0 and X11R6.
+ - Fixed bug in stripping CR's during FTP (ftp.c).
+ <t30...@ee.t.u-tokyo.ac.jp>
+ - Updated server list from archie.funet.fi (Xarchie.ad).
+ - Added default for MAXHOSTNAMELEN (hostname.c).
+ <p...@tfn.com>
+ - Changed tildeExpand() to not modify the string its passed (tilde.c).
+ Based on suggestion by <ro...@stevie.isar.muc.de>
+ - Added non-blocking I/O defs for ultrix (ftp.c)
+ <hur...@pb.com>
+ - Added non-blocking I/O defs for Intergraph (__clipper__ in ftp.c).
+ <mlca...@mikec.b30.ingr.com>
+ - Added non-blocking I/O defs for Alliant (ftp.c).
+ <r...@gscs.com>
+ - Missing close-comment in ftp.h when <arpa/ftp.h> not found.
+ <cc...@hippo.ru.ac.za>,<ro...@panix.com>
X
X Version 2.0.9 - 24 Aug 1993
X - Allow 200 reply for ftp CWD as well as 250 (ftp.c).
*** ../xarchie-2.0.9/Xarchie.ad Tue Aug 24 11:43:57 1993
--- Xarchie.ad Tue Jul 5 17:49:22 1994
***************
*** 17,22 ****
--- 17,23 ----
X ! 27 Jul 1993: Added archie.unipi.it to hostMenu.
X ! Added archie.ac.il to hostMenu.
X ! 24 Aug 1993: Added archie.kr and archie.luth.se to hostMenu.
+ ! 5 Jul 1994: Updated server list (hostMenu) from archie.funet.fi.
X !
X
X ! - - - - - - - - -
***************
*** 812,835 ****
X
X Xarchie*setHostMenu.label: Archie Host
X Xarchie*hostMenu.label: Archie Host
! Xarchie*hostMenuItem0.label: archie.sura.net(1526) (USA-MD)
! Xarchie*hostMenuItem1.label: archie.sura.net (USA-MD)
! Xarchie*hostMenuItem2.label: archie.ans.net (USA-NY)
! Xarchie*hostMenuItem3.label: archie.rutgers.edu (USA-NJ)
! Xarchie*hostMenuItem4.label: archie.unl.edu (USA-NE)
! Xarchie*hostMenuItem5.label: archie.funet.fi (Finland/Europe)
! Xarchie*hostMenuItem6.label: archie.au (Australia)
! Xarchie*hostMenuItem7.label: archie.doc.ic.ac.uk (GB/Ireland)
! Xarchie*hostMenuItem8.label: archie.wide.ad.jp (Japan)
! Xarchie*hostMenuItem9.label: archie.ncu.edu.tw (Taiwan)
! Xarchie*hostMenuItem10.label: archie.nz (New Zealand)
! Xarchie*hostMenuItem11.label: archie.th-darmstadt.de (Germany)
! Xarchie*hostMenuItem12.label: archie.switch.ch (Switzerland)
! Xarchie*hostMenuItem13.label: archie.unipi.it (Italy)
! Xarchie*hostMenuItem14.label: archie.ac.el (Israel)
! Xarchie*hostMenuItem15.label: archie.kr (Korea)
! Xarchie*hostMenuItem16.label: archie.luth.se (Sweden)
! Xarchie*numHosts: 17
X Xarchie*hostMenu*leftMargin: 15
X ! These translations are for popups only
X Xarchie*hostMenu.translations:#override\n\
--- 813,847 ----
X
X Xarchie*setHostMenu.label: Archie Host
X Xarchie*hostMenu.label: Archie Host
! ! Server list from archie.funet.fi as of 21 Jun 1994:
! Xarchie*hostMenuItem0.label: archie.sura.net(1526) USA (MD)
! Xarchie*hostMenuItem1.label: archie.sura.net USA (MD)
! Xarchie*hostMenuItem2.label: archie.ans.net USA (NY)
! Xarchie*hostMenuItem3.label: archie.rutgers.edu USA (NJ)
! Xarchie*hostMenuItem4.label: archie.unl.edu USA (NE)
! Xarchie*hostMenuItem5.label: archie.internic.net USA (NJ)
! Xarchie*hostMenuItem6.label: archie.au Australia
! Xarchie*hostMenuItem7.label: archie.uni-linz.ac.at Austria
! Xarchie*hostMenuItem8.label: archie.univie.ac.at Austria
! Xarchie*hostMenuItem9.label: archie.cs.mcgill.ca Canada
! Xarchie*hostMenuItem10.label: archie.uqam.ca Canada
! Xarchie*hostMenuItem11.label: archie.funet.fi Finland
! Xarchie*hostMenuItem12.label: archie.univ-rennes1.fr France
! Xarchie*hostMenuItem13.label: archie.th-darmstadt.de Germany
! Xarchie*hostMenuItem14.label: archie.ac.il Israel
! Xarchie*hostMenuItem15.label: archie.unipi.it Italy
! Xarchie*hostMenuItem16.label: archie.wide.ad.jp Japan
! Xarchie*hostMenuItem17.label: archie.hana.nm.kr Korea
! Xarchie*hostMenuItem18.label: archie.sogang.ac.kr Korea
! Xarchie*hostMenuItem19.label: archie.uninett.no Norway
! Xarchie*hostMenuItem20.label: archie.rediris.es Spain
! Xarchie*hostMenuItem21.label: archie.luth.se Sweden
! Xarchie*hostMenuItem22.label: archie.switch.ch Switzerland
! Xarchie*hostMenuItem23.label: archie.twnic.net Taiwan
! Xarchie*hostMenuItem24.label: archie.ncu.edu.tw Taiwan
! Xarchie*hostMenuItem25.label: archie.doc.ic.ac.uk United Kingdom
! Xarchie*hostMenuItem26.label: archie.hensa.ac.uk United Kingdom
! Xarchie*numHosts: 27
X Xarchie*hostMenu*leftMargin: 15
X ! These translations are for popups only
X Xarchie*hostMenu.translations:#override\n\
*** ../xarchie-2.0.9/Xarchie.ad.h Tue Aug 24 11:57:16 1993
--- Xarchie.ad.h Tue Jul 5 17:49:30 1994
***************
*** 523,546 ****
X <BtnUp>: notify() unhighlight() MenuPopdown()",
X "Xarchie*setHostMenu.label: Archie Host",
X "Xarchie*hostMenu.label: Archie Host",
! "Xarchie*hostMenuItem0.label: archie.sura.net(1526) (USA-MD)",
! "Xarchie*hostMenuItem1.label: archie.sura.net (USA-MD)",
! "Xarchie*hostMenuItem2.label: archie.ans.net (USA-NY)",
! "Xarchie*hostMenuItem3.label: archie.rutgers.edu (USA-NJ)",
! "Xarchie*hostMenuItem4.label: archie.unl.edu (USA-NE)",
! "Xarchie*hostMenuItem5.label: archie.funet.fi (Finland/Europe)",
! "Xarchie*hostMenuItem6.label: archie.au (Australia)",
! "Xarchie*hostMenuItem7.label: archie.doc.ic.ac.uk (GB/Ireland)",
! "Xarchie*hostMenuItem8.label: archie.wide.ad.jp (Japan)",
! "Xarchie*hostMenuItem9.label: archie.ncu.edu.tw (Taiwan)",
! "Xarchie*hostMenuItem10.label: archie.nz (New Zealand)",
! "Xarchie*hostMenuItem11.label: archie.th-darmstadt.de (Germany)",
! "Xarchie*hostMenuItem12.label: archie.switch.ch (Switzerland)",
! "Xarchie*hostMenuItem13.label: archie.unipi.it (Italy)",
! "Xarchie*hostMenuItem14.label: archie.ac.el (Israel)",
! "Xarchie*hostMenuItem15.label: archie.kr (Korea)",
! "Xarchie*hostMenuItem16.label: archie.luth.se (Sweden)",
! "Xarchie*numHosts: 17",
X "Xarchie*hostMenu*leftMargin: 15",
X "Xarchie*hostMenu.translations:#override\\n\
X <EnterWindow>: highlight() \\n\
--- 523,556 ----
X <BtnUp>: notify() unhighlight() MenuPopdown()",
X "Xarchie*setHostMenu.label: Archie Host",
X "Xarchie*hostMenu.label: Archie Host",
! "Xarchie*hostMenuItem0.label: archie.sura.net(1526) USA (MD)",
! "Xarchie*hostMenuItem1.label: archie.sura.net USA (MD)",
! "Xarchie*hostMenuItem2.label: archie.ans.net USA (NY)",
! "Xarchie*hostMenuItem3.label: archie.rutgers.edu USA (NJ)",
! "Xarchie*hostMenuItem4.label: archie.unl.edu USA (NE)",
! "Xarchie*hostMenuItem5.label: archie.internic.net USA (NJ)",
! "Xarchie*hostMenuItem6.label: archie.au Australia",
! "Xarchie*hostMenuItem7.label: archie.uni-linz.ac.at Austria",
! "Xarchie*hostMenuItem8.label: archie.univie.ac.at Austria",
! "Xarchie*hostMenuItem9.label: archie.cs.mcgill.ca Canada",
! "Xarchie*hostMenuItem10.label: archie.uqam.ca Canada",
! "Xarchie*hostMenuItem11.label: archie.funet.fi Finland",
! "Xarchie*hostMenuItem12.label: archie.univ-rennes1.fr France",
! "Xarchie*hostMenuItem13.label: archie.th-darmstadt.de Germany",
! "Xarchie*hostMenuItem14.label: archie.ac.il Israel",
! "Xarchie*hostMenuItem15.label: archie.unipi.it Italy",
! "Xarchie*hostMenuItem16.label: archie.wide.ad.jp Japan",
! "Xarchie*hostMenuItem17.label: archie.hana.nm.kr Korea",
! "Xarchie*hostMenuItem18.label: archie.sogang.ac.kr Korea",
! "Xarchie*hostMenuItem19.label: archie.uninett.no Norway",
! "Xarchie*hostMenuItem20.label: archie.rediris.es Spain",
! "Xarchie*hostMenuItem21.label: archie.luth.se Sweden",
! "Xarchie*hostMenuItem22.label: archie.switch.ch Switzerland",
! "Xarchie*hostMenuItem23.label: archie.twnic.net Taiwan",
! "Xarchie*hostMenuItem24.label: archie.ncu.edu.tw Taiwan",
! "Xarchie*hostMenuItem25.label: archie.doc.ic.ac.uk United Kingdom",
! "Xarchie*hostMenuItem26.label: archie.hensa.ac.uk United Kingdom",
! "Xarchie*numHosts: 27",
X "Xarchie*hostMenu*leftMargin: 15",
X "Xarchie*hostMenu.translations:#override\\n\
X <EnterWindow>: highlight() \\n\
*** ../xarchie-2.0.9/ftp.c Tue Aug 24 11:51:25 1993
--- ftp.c Tue Jul 5 17:44:43 1994
***************
*** 41,46 ****
--- 41,49 ----
X * 30 Jun 1993: Fixes for Encore Umax (used cpp symbol "umax" as a guess).
X * 24 Aug 1993: Allow 200 reply for CWD as well as 250.
X * Non-blocking IO defs for NeXT.
+ * 5 Jul 1994: Fixed bug in CR stripping.
+ * Hopefully improved size-of-file detection.
+ * Non-blocking IO defs for Ultrix, Intergraph, Alliant.
X */
X #include <stdio.h>
X #include <errno.h>
***************
*** 70,83 ****
X * sgi : From am...@cs.huji.ac.il
X * umax : From Gerry.T...@newcastle.ac.uk
X * NeXT : From j...@zarniwoop.pc-labor.uni-bremen.de
X */
! #if defined(hp300) || defined(NeXT)
X /* Here's for BSD, maybe, but Sys5 can't tell this from EOF. */
X # include <fcntl.h>
X # define MAKE_NONBLOCKING(fd) fcntl(fd,F_SETFL,O_NDELAY)
X # define ITWOULDBLOCK EWOULDBLOCK
X #else
! #if defined(sgi)
X # include <fcntl.h>
X # define MAKE_NONBLOCKING(fd) fcntl(fd,F_SETFL,O_NONBLOCK)
X # define ITWOULDBLOCK EWOULDBLOCK
--- 73,89 ----
X * sgi : From am...@cs.huji.ac.il
X * umax : From Gerry.T...@newcastle.ac.uk
X * NeXT : From j...@zarniwoop.pc-labor.uni-bremen.de
+ * ultrix: From hur...@pb.com from c...@world.std.com
+ * __clipper__: From mlca...@mikec.b30.ingr.com (Intergraph, apparently)
+ * alliant : From r...@gscs.com
X */
! #if defined(hp300) || defined(NeXT) || defined(alliant)
X /* Here's for BSD, maybe, but Sys5 can't tell this from EOF. */
X # include <fcntl.h>
X # define MAKE_NONBLOCKING(fd) fcntl(fd,F_SETFL,O_NDELAY)
X # define ITWOULDBLOCK EWOULDBLOCK
X #else
! #if defined(sgi) || defined(ultrix) || defined(__clipper__)
X # include <fcntl.h>
X # define MAKE_NONBLOCKING(fd) fcntl(fd,F_SETFL,O_NONBLOCK)
X # define ITWOULDBLOCK EWOULDBLOCK
***************
*** 91,98 ****
X # define MAKE_NONBLOCKING(fd) fcntl(fd,F_SETFL,O_NONBLOCK)
X # define ITWOULDBLOCK EAGAIN
X #endif /* umax */
! #endif /* sgi */
! #endif /* hp300 */
X /*
X * Networking includes from Brendan Kehoe (dirsend.c)
X */
--- 97,104 ----
X # define MAKE_NONBLOCKING(fd) fcntl(fd,F_SETFL,O_NONBLOCK)
X # define ITWOULDBLOCK EAGAIN
X #endif /* umax */
! #endif /* sgi || ultrix || __clipper__ */
! #endif /* hp300 || NeXT || alliant */
X /*
X * Networking includes from Brendan Kehoe (dirsend.c)
X */
***************
*** 832,840 ****
X break;
X case FTPS_GETPUT:
X if (FTP_REPLY_PRELIM(ftpc->retcode)) { /* dataconn ready */
X status0(ftpc->reply+4);
! if (sscanf(ftpc->reply,"%*[^(](%d bytes)",&(ftpc->this_size)) != 1)
! ftpc->this_size = 0;
X if (ftpAcceptDataConn(ftpc) < 0) { /* local failure */
X if (ftpc->port != -1) { /* give up */
X DEBUG1("ftpProcessReply: closing port %d\n",ftpc->port);
--- 838,849 ----
X break;
X case FTPS_GETPUT:
X if (FTP_REPLY_PRELIM(ftpc->retcode)) { /* dataconn ready */
+ char *s;
X status0(ftpc->reply+4);
! if ((s=rindex(ftpc->reply,'('))) {
! if (sscanf(s,"(%d",&(ftpc->this_size)) != 1)
! ftpc->this_size = 0;
! }
X if (ftpAcceptDataConn(ftpc) < 0) { /* local failure */
X if (ftpc->port != -1) { /* give up */
X DEBUG1("ftpProcessReply: closing port %d\n",ftpc->port);
***************
*** 1225,1232 ****
X if (ftpc->type == TYPE_A && ftpc->stripcr) {
X DEBUG0("ftpReadData: stripping <CR>\n");
X for (s=t=buf,i=nread; i--; ++s) {
! if (*s != '\r')
X *t++ = *s;
X }
X }
X /* Write locally */
--- 1234,1244 ----
X if (ftpc->type == TYPE_A && ftpc->stripcr) {
X DEBUG0("ftpReadData: stripping <CR>\n");
X for (s=t=buf,i=nread; i--; ++s) {
! if (*s != '\r') {
X *t++ = *s;
+ } else {
+ nread -= 1;
+ }
X }
X }
X /* Write locally */
*** ../xarchie-2.0.9/ftp.h Wed Apr 28 12:07:47 1993
--- ftp.h Tue Jul 5 16:42:58 1994
***************
*** 139,145 ****
X # include <arpa/ftp.h>
X # include <arpa/telnet.h>
X #else
! /* <arpa/ftp.h>
X # define TYPE_A 1 /* ASCII */
X # define TYPE_E 2 /* EBCDIC */
X # define TYPE_I 3 /* image */
--- 139,145 ----
X # include <arpa/ftp.h>
X # include <arpa/telnet.h>
X #else
! /* <arpa/ftp.h> */
X # define TYPE_A 1 /* ASCII */
X # define TYPE_E 2 /* EBCDIC */
X # define TYPE_I 3 /* image */
*** ../xarchie-2.0.9/hostname.c Thu Apr 22 15:40:28 1993
--- hostname.c Tue Jul 5 16:16:15 1994
***************
*** 9,19 ****
X * (c) if it succeeded, call gethostbyname() to "canonicalize"
X * the name (many systems don't return a fully-qualified name,
X * and getdomainname() is a loss.
X */
X #include <stdio.h>
X #include <netdb.h>
X #ifndef MAXHOSTNAMELEN
! #include <sys/param.h>
X #endif
X #include "sysdefs.h"
X #include "stringdefs.h"
--- 9,23 ----
X * (c) if it succeeded, call gethostbyname() to "canonicalize"
X * the name (many systems don't return a fully-qualified name,
X * and getdomainname() is a loss.
+ * 5 Jul 1994: Give default for MAXHOSTNAMELEN.
X */
X #include <stdio.h>
X #include <netdb.h>
+ #ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ #endif
X #ifndef MAXHOSTNAMELEN
! # define MAXHOSTNAMELEN 64
X #endif
X #include "sysdefs.h"
X #include "stringdefs.h"
*** ../xarchie-2.0.9/patchlevel.h Tue Aug 24 11:36:09 1993
--- patchlevel.h Tue Jul 5 17:42:09 1994
***************
*** 12,19 ****
X * Version 2.0.7: 30 Jun 1993
X * Version 2.0.8: 27 Jul 1993
X * Version 2.0.9: 24 Aug 1993
X */
X
X #undef BETA
X #define VERSION 2.0
! #define PATCHLEVEL 9
--- 12,20 ----
X * Version 2.0.7: 30 Jun 1993
X * Version 2.0.8: 27 Jul 1993
X * Version 2.0.9: 24 Aug 1993
+ * Version 2.0.10: 5 Jul 1994
X */
X
X #undef BETA
X #define VERSION 2.0
! #define PATCHLEVEL 10
*** ../xarchie-2.0.9/tilde.c Thu May 13 16:16:26 1993
--- tilde.c Tue Jul 5 16:38:48 1994
***************
*** 3,8 ****
--- 3,9 ----
X *
X * George Ferguson, ferg...@cs.rochester.edu, 23 Apr 1993.
X * 13 May 1993: Cleanups.
+ * 5 Jul 1994: Do it without modifying the stupid original.
X *
X */
X
***************
*** 23,30 ****
X char *file;
X {
X static char filename[MAXPATHLEN];
X struct passwd *pwe;
! char *name,*home;
X
X /* Must start with tilde */
X if (*file != '~')
--- 24,33 ----
X char *file;
X {
X static char filename[MAXPATHLEN];
+ char name[64];
X struct passwd *pwe;
! char *home;
! int i;
X
X /* Must start with tilde */
X if (*file != '~')
***************
*** 32,43 ****
X /* Set default return value in case tilde expansion fails */
X strcpy(filename,file);
X /* Skip tilde */
! name = ++file;
X /* Gather name following tilde (if any) */
! while (*file != '\0' && *file != '/')
X file += 1;
! if (*file != '\0')
! *file++ = '\0';
X if (*name == '\0') { /* ~/... */
X if ((pwe=getpwuid(getuid())) != NULL) {
X home = pwe->pw_dir;
--- 35,51 ----
X /* Set default return value in case tilde expansion fails */
X strcpy(filename,file);
X /* Skip tilde */
! file += 1;
X /* Gather name following tilde (if any) */
! i = 0;
! while (*file != '\0' && *file != '/') {
! name[i++] = *file++;
! }
! name[i] = '\0';
! /* Skip slash (if any) */
! if (*file == '/') {
X file += 1;
! }
X if (*name == '\0') { /* ~/... */
X if ((pwe=getpwuid(getuid())) != NULL) {
X home = pwe->pw_dir;
***************
*** 53,58 ****
X return(filename);
X }
X }
! sprintf(filename,"%s/%s",home,file);
X return(filename);
X }
--- 61,70 ----
X return(filename);
X }
X }
! if (*file != '\0') {
! sprintf(filename,"%s/%s",home,file);
! } else {
! strcpy(filename,home);
! }
X return(filename);
X }
SHAR_EOF
chmod 0644 xarchie.p4 ||
echo 'restore of xarchie.p4 failed'
Wc_c="`wc -c < 'xarchie.p4'`"
test 17507 -eq "$Wc_c" ||
echo 'xarchie.p4: original size 17507, current size' "$Wc_c"
fi
exit 0

--
George Ferguson INET: ferg...@cs.rochester.edu
Dept. of Computer Science VOX: (716) 275-2527
University of Rochester FAX: (716) 461-2018
Rochester NY 14627-0226 http://www.cs.rochester.edu/u/ferguson/

exit 0 # Just in case...
--
// ch...@Sterling.COM | Send comp.sources.x submissions to:
\X/ Amiga: The only way to fly! | sour...@sterling.com
GCS d++(--) h++ s++:+ g+++(?) p? au(*)(0) a w+ v-(*) C++ US+++ P+ L+ 3 N++ K
!W M V-- -po+ Y+ t+ 5++ j- r+ G+ v b+++ D- b-- e+ u+ h- f+ r+++ !n y+++

0 new messages