=============================================================================== VSoup1.2.8 NNTP/POP3/SMTP client 19-Apr-1997 =============================================================================== Copyright (c) 1996-1997 by Hardy Griech TTaabbllee  ooff  CCoonntteennttss ================================== 1 Introduction to VSoup 2 Legal Issues 3 Features 4 Installation 4.1 Environment Settings 4.2 VSoup And YarnIo Troubleshooting 5 Command Line Options 5.1 Global Options 5.2 News Receiving Options 5.2.1 Note Concerning The -K And -N Options 5.3 Mail Receiving Option(s) 5.4 URLs 5.4.1 Brief Description Of NNTP/POP3/SMTP 5.4.2 Evaluation Order Of URLs 5.5 News Reception 6 Diagnostics 7 Utilities 7.1 YarnIo 7.1.1 YarnIo.Set 7.1.2 LoginIsp 7.1.3 LogoutIsp 7.2 OwnSoup 7.3 QSoup 7.4 ConvSoup 7.5 ModifyEmxH 7.6 RmHigh 8 Files 8.1 The Newsrc File 8.2 The Score File 8.2.1 Regular expression syntax 8.3 Other Files 9 Insufficiencies, Bugs & Plans 10 Author & Acknowledgements 11 History 12 FAQ 11  IInnttrroodduuccttiioonn  ttoo  VVSSoouupp ============================================== VVSSoouupp11..22..88 is a multithreaded network mail and news client program for OS/2 Warp with TCP/IP (or the Internet Access Kit) installed. It transfers mail and news fetched from a PPOOPP33 server and NNNNTTPP server respectively to packets in SSOOUUPP format. It can also send messages in SSOOUUPP reply packets to NNNNTTPP / SSMMTTPP servers. VVSSoouupp is especially designed to work with YYaarrnn, but it is probable that VVSSoouupp will work with most offline newsreaders which expect SSOOUUPP as their input and output. The program requires the eemmxx run-time DLLs. You can get these from e.g. ftp://ftp.leo.org/pub/comp/os/os2/leo/gnu/emx+gcc/emxrt.zip The eemmxx0099cc run-times or newer are required. eemmxxrreevv should show at least revision 50 for the DLLs. VVSSoouupp may work with an earlier version such as eemmxx0099bb, but keep in mind that there were many changes in the DLLs concerning multithreading / sockets since eemmxx0099aa. ------------------------------------------------------------------------------- !!!!! MAKE SURE THAT YOU ARE USING THE CORRECT EMX DLL-VERSIONS !!!!! ------------------------------------------------------------------------------- 22  LLeeggaall  IIssssuueess ============================ This program is heavily based on ideas and modules from Chin Huangs (cthuang@io.org) Souper15. Thanks to him for both SSoouuppeerr and YYaarrnn. PPLLEEAASSEE NNOOTTEE TTHHAATT BBUUGG RREEPPOORRTTSS AANNDD EEVVEERRYYTTHHIINNGG EELLSSEE CCOONNCCEERRNNIINNGG VVSSOOUUPP SSHHOOUULLDD BBEE DDIIRREECCTTEEDD TTOO HHAARRDDYY GGRRIIEECCHH ((RRGGRRIIEECCHH@@SSWWOOLL..DDEE)),, NNOOTT TTOO CCHHIINN HHUUAANNGG!! SSttaannddaarrdd  DDiissccllaaiimmeerr -------------------------------------- VVSSoouupp is free software; you can redistribute it and/or modify it under the terms of the GGNNUU General Public License (GPL) as published by the Free Software Foundation; either version 2, or (at your option) any later version. For more details about the GPL see the file CCOOPPYYIINNGG contained in this archive. VVSSoouupp is distributed in the hope that it will be useful, but WWIITTHHOOUUTT AANNYY WWAARRRRAANNTTYY; without even the implied warranty of MMEERRCCHHAANNTTAABBIILLIITTYY or FFIITTNNEESSSS FFOORR AA PPAARRTTIICCUULLAARR PPUURRPPOOSSEE. See the GGNNUU General Public License for more details. WWaarrnniinngg -------------- Some news sites might see VVSSoouupp as a news sucking utility and might feel offended by its use. The intention is that VVSSoouupp is to be used to receive news for your personal use from a reasonable number of newsgroups. Misuse of this program could conceivably result in a general ban on the use of this or similar programs to the detriment of responsible VVSSoouupp users who certainly don't want a general ban of VVSSoouupp. 33  FFeeaattuurreess ==================== - Multithreaded news receiving is supported, anything between 1 and 10 threads can be started (default 4), and in addition there are several possible strategies for fine tuning. Multithreading gives a speed gain of 200%-500% depending on the overall speed of the connection and the number of threads; on the other hand multiple connections have a communication overhead (i.e. the connections must be established, the groups selected). Estimated loss is around 5%... - all the packets are exchanged in SSOOUUPP format files, i.e. offline readers expecting as input format either SSOOUUPP or UUSSEENNEETT batch format can be used together with VVSSoouupp. - VVSSoouupp generates a status message as incoming mail. (this is not in the SSOOUUPP standard, but is recognized by YYaarrnn). Normally this message is only generated in case of failure (eg., cannot select newsgroup) or when special events occur (eg., when new newsgroups are added), but the generation can be forced to always occur by means of a command line option. - VVSSoouupp will show some statistic information about data transfer. - Specification of the required servers is easy by using URLs on the command line. - It is possible to filter articles by header lines before retrieving the body text, see score file handling. VVSSoouupp allows regular expression for both group and header patterns, article length is treated special. - VVSSoouupp detects too low throughput or stuck connections. - VVSSoouupp knows about NNNNTTPP authentication. - YarnIo, a script to do VVSSoouupp operation safely (without risk of message loss etc.) is included in the archive. YarnIo is capable of simultaneously receiving news from up to nine separate NNNNTTPP news servers, posting news to NNNNTTPP, receiving mail from up to nine PPOOPP33 servers and sending mail to SSMMTTPP. - Other utilities included are OwnSoup This, with the help of the YYaarrnn iimmppoorrtt program, redirects news articles matching a specific pattern into a separate mail folder which will show up when you read your mail with YYaarrnn. For example you can search newsgroups for any mention of your name or any mention of a program you are interested in. QSoup This appends mail and news messages to the YYaarrnn _r_e_p_l_y _p_a_c_k_e_t file for transmission by VVSSoouupp. ConvSoup This transforms all articles from binary SSOOUUPP format to mailbox/USENET format. - FAQ included. - source code included. - freeware according to GPL (without any warranty for correct function etc.). 44  IInnssttaallllaattiioonn ============================ This section describes the installation of VVSSoouupp on a step by step basis. Steps (1)-(4) are for preparation to ensure that you have a system configuration which can run VVSSoouupp11..22..88. The installation instructions assume that you intend to run VVSSoouupp with the help of YarnIo. If you wish to use VVSSoouupp on its own for example to benefit from multithreaded news reception, but do not need YarnIo, simply skip the steps (7)-(11) and parts of (6). Anyway you can use YYAARRNNIIOO..CCMMDD as an example. If you experience any problems take a look at the troubleshooting section. If you are upgrading an older VVSSoouupp version, you should have a look at the history section for hints on important changes. 1. your system must be one of the following: - OS/2 2.x with TCP/IP (not tested but should work) - OS/2 3.0 (Warp) with the 'Internet Access Kit' installed - OS/2 3.0 (Warp Connect) with TCP/IP installed - anything above 2. get the latest version of the eemmxx runtime library and install it or check your current installation with eemmxxrreevv. This should show a revision level higher than or equal to '50'. If you are not intending to use YarnIo, then add an environment setting of SSEETT EEMMXXOOPPTT==--hh4400 to your CCOONNFFIIGG..SSYYSS as noted in the environment settings section below. 3. check your environment variables according to the environment settings section below. 4. check your %%EETTCC%%\\SSEERRVVIICCEESS file to ensure that it contains the following lines: smtp 25/tcp mail #Simple Mail Transfer smtp 25/udp mail #Simple Mail Transfer pop3 110/tcp #Post Office Protocol - Version 3 pop3 110/udp #Post Office Protocol - Version 3 nntp 119/tcp readnews untp #Network News Transfer Protocol nntp 119/udp readnews untp #Network News Transfer Protocol Most probably the %%EETTCC%%\\SSEERRVVIICCEESS file is located either in xx::\\TTCCPPIIPP\\EETTCC or xx::\\MMPPTTNN\\EETTCC. If you need to specify non-standard port numbers, you should do that in the command line. Check the URL specification. 5. unzip the VVSSOOUUPP112277..ZZIIPP archive in a temporary file directory (%%TTMMPP%% is a good place). 6. copy the following files into a subdirectory of your choice (using a subdirectory contained in the PPAATTHH statement is always a good choice): - VVSSOOUUPP..EEXXEE, the VVSSoouupp executable - YYAARRNNIIOO..CCMMDD, the YarnIo script - YARNIO.SET, the YarnIo configuration file Note: YYAARRNNIIOO..CCMMDD & YARNIO.SET must reside in the same subdirectory and must have the same filename, except the extension... - If you want YarnIo dial automatically, then you should also copy LOGINISP.CMD and LOGOUTISP.CMD as templates for your own connect/disconnect scripts. - OWNSOUP.EXE and/or QSOUP.EXE and/or CONVSOUP.EXE should be copied if required. - If you want to have help available, then copy also the documentation: either VVSSOOUUPP..IINNFF or VVSSOOUUPP..TTXXTT (both have the same content but different format). - If you are interested in the source code, move it also to a specific subdirectory. 7. review the Command Line Options section below and edit the YARNIO.SET configuration file according to your specific needs. Also read the comments in YARNIO.SET. Note: the setup of YARNIO.SET is required only once. In future, updates will be made by amending YYAARRNNIIOO..CCMMDD. 8. If you wish YYAARRNNIIOO..CCMMDD to dial for you, you must also setup the scripts LOGINISP.CMD and LOGOUTISP.CMD to reflect your needs. Another option is to use your dialer to call your ISP (provider) and start YarnIo after the connection has been established. The disadvantage of doing it this way is that after completion of YarnIo the dialer will not hang up immediately. Note: If you have only FAT drives you have to rename LOGOUTISP.CMD to something else. Therefor you have to change the hhaanngguuppIISSPP setting in YARNIO.SET too. 9. setup the directory structure for YarnIo: %HOME%ÄÄ yarn - subdirectory containing Yarn config file : ÃÄÄ in - root of YarnIo input subdirectories ³ ÃÄÄ mail - primary subdir for EMail reception ³ ÃÄÄ mail2 - optional #2 subdir for EMail reception ³ ÃÄÄ : : ³ ÃÄÄ mail9 - optional #9 subdir for EMail reception ³ ³ ³ ÃÄÄ news - primary subdir for news reception ³ ÃÄÄ news2 - optional #2 subdir for news reception ³ ÃÄÄ : : ³ ÀÄÄ news9 - optional #9 subdir for news reception ÃÄÄ out - subdirectory for EMail&news transmission : In each of the NNEEWWSS subdirectories you will need to create an appropriate NNEEWWSSRRCC file as detailed in the Newsrc File section. The ....MMAAIILL, ....MMAAIILL22 until ....MMAAIILL99 subdirectories have to be created only. They should be left empty. The number of subdirectories depend on the number of servers you wish to poll. 10. change the following line in the Yarn-config file (%%HHOOMMEE%%\\YYAARRNN\\CCOONNFFIIGG): reply-packet=%HOME%\yarn\out\reply.zip If this is omitted or is incorrect then transmission of replies will not be possible, because YYaarrnn will move its output to a place where VVSSoouupp does not expect it! Of course %%HHOOMMEE%% should be replaced by the actual value of HHOOMMEE. 11. if you have setup LOGINISP.CMD and LOGOUTISP.CMD, start YarnIo directly. Otherwise first dial-in to your ISP and then start YarnIo. When you first start using VVSSoouupp I recommend that you add the --MM option to each call of VVSSoouupp (e.g. in YARNIO.SET) to force generation of the status mail. This can be a good debugging aid... 44..11  EEnnvviirroonnmmeenntt  SSeettttiinnggss ------------------------------------------------ Environment variables are set in your CCOONNFFIIGG..SSYYSS by lines such as: SET ETC=D:\TCPIP\ETC Also they can be set in a dedicated script, which calls VVSSoouupp11..22..88. EEMMXXOOPPTT This are the settings for the eemmxx runtime DLLs. Recommended setting of this variable should contain --hh4400 to allow 40 file handles (not required, if you are calling VVSSoouupp through YarnIo). EETTCC This is needed for accessing the TCP/IP configuration contained in the file %%EETTCC%%\\TTCCPPOOSS22..IINNII. If --ii is specified in the command line, EETTCC is not required. HHOOMMEE your home directory (can also be specified on the command line). If HHOOMMEE is not defined, it defaults to the current directory. MMAAIILLEERR command for transmitting EMails (the EMail is piped into the stdin of MMAAIILLEERR). If VVSSoouupp should do the job, MMAAIILLEERR must be undefined. NNNNTTPPSSEERRVVEERR hostname of the nntp server (can also be specified in the command line). This variable is, in my opinion, obsolete and remains only to avoid compatibility problems. PPOOSSTTEERR command for transmitting news (the article is piped into the stdin of PPOOSSTTEERR). If VVSSoouupp should do the job, PPOOSSTTEERR must be undefined. TTMMPP points to the subdirectory which holds temporary files (VVSSoouupp generates ssoouupp_<_x_x_x_x_>..ttmmpp as temporaries, with _<_x_x_x_x_> being a number between 0000 and 9999). If TTMMPP does not exist, the temporaries will be generated in the current subdirectory. TTZZ setting of your time zone (e.g. mine is MMEETT--11MMEESS). Due to a bug in the eemmxx runtime, the setting of this variable is critical for correct functioning of the eemmxx C library revision 50. Check the eemmxx runtime documentation for the syntax of the TTZZ settings. An incorrect setting of TTZZ can also cause errors if you appear to be getting mail before it was sent. 44..22  VVSSoouupp  AAnndd  YYaarrnnIIoo  TTrroouubblleesshhoooottiinngg ------------------------------------------------------------------------ some simple checks can be carried out: - read the FAQ section. - if VVSSoouupp does not run at all, initiate VVSSoouupp with VVSSOOUUPP --??. This should output the usage information to the screen. If it does not, you have to check your system configuration. Otherwise you should try to call VVSSoouupp in its different modes directly from the command line to check all your command line options. - generate the VVSSoouupp status mail with --MM and check if it tells you the expected file locations and server names. - is the configuration file YARNIO.SET correct and in the same directory as YYAARRNNIIOO..CCMMDD? - is the subdirectory setup correct for YarnIo? - does the ppiinnggHHoosstt command work as expected? Issue the program via RREEXXXXTTRRYY to check the return values in connected/disconnected case. - if you have a setup including LOGINISP.CMD and LOGOUTISP.CMD you can also check if they work. Run LOGINISP.CMD from a command line - login should be performed. Then run LOGOUTISP.CMD - logout should be performed. Now also the YarnIo auto-dial/hangup should work... - connect to your ISP and try YYAARRNNIIOO --RRCCVVMMAAIILL --SSEENNDD --RRCCVVNNEEWWSS22. This will start only the YYaarrnnIIoo RRCCVVNNEEWWSS window (hit ctrl-ESC and open it). News reception should be performed as expected, at the end iimmppoorrtt to yarn will be initiated (after that 30s pause). You can check all single YarnIo modes this way. - is VVSSoouupp called in each window started by YarnIo? 55  CCoommmmaanndd  LLiinnee  OOppttiioonnss ============================================ This section describes the VVSSoouupp command line options in detail. An example is presented first. EExxaammppllee -------------- VSoup -m -h d:\yourHomedir nntp://your.news.server This would start VVSSoouupp telling it not to fetch mail (i.e. to collect news only) using a home directory called dd::\\yyoouurrHHoommeeddiirr from a news server named yyoouurr..nneewwss..sseerrvveerr. The llooggiinniidd and ppaasssswwoorrdd would by default be taken from your TCP/IP configuration. 55..11  GGlloobbaall  OOppttiioonnss ------------------------------------ --hh_<_d_i_r_> sets the home directory for the VVSSoouupp operation. You can also specify your home directory through the environment variable HHOOMMEE. --ii ignore the settings of the TCP/IP configuration. --mm do not fetch mail. --MM generate the VVSSoouupp status mail ..\\SSTTSSMMAAIILL..MMSSGG in any case. Default is to generate the message in case of error only. --nn do not fetch news. --rr read only mode. Only the ..\\AARREEAASS, ..\\0000**..MMSSGG, ..\\0000**..IIDDXX files are written (e.g. %%HHOOMMEE%%\\NNEEWWSSTTIIMMEE, %%HHOOMMEE%%\\NNEEWWSSRRCC are not written). Also the EMails are not deleted from the PPOOPP33 server. Main purpose for this option is debugging. --ss send replies. Do not use this option in combination with --mm or --nn, if you do it will be ignored. --TT_<_n_> throughput must be higher than _<_n_>, otherwise transfer will be aborted. Throughput is checked against the limit _<_n_> every 10s after data transfer has begun. If 6 samples show not enough throughput, VVSSoouupp will be aborted. Default is '0 bytes/s', i.e. it will be checked for a stuck connection. Use --TT--_<_n_> to check your throughput conditions. Special case is --TT--11, which disables throughput check. 55..22  NNeewwss  RReecceeiivviinngg  OOppttiioonnss ---------------------------------------------------- --aa add new newsgroups to the %%HHOOMMEE%%\\NNEEWWSSRRCC file. If there are any new groups on the server, the generation of the status message will be forced. The new newsgroups will be added in the unsubscribed state. --cc[[nn]] catchup: mark every article as read except for the last nn ( default is 10). --kk_<_n_> set maximum news packet size to n KBytes (default is no limit). _<_n_> indicates the total amount of received messages, not the size of a single message (this can be done through scoring). --KK_<_f_i_l_e_> set the name of the score file (see note below concerning -K/-N options). --NN_<_f_i_l_e_> set the name of the NNEEWWSSRRCC file (see note below regarding -K/-N options). --SS_<_n_> receiving strategy (_<_n_>=0..2). Speed increases (at least it should) in the direction 0 to 2, danger of receiving crossposted articles increases also from 0 to 2. The default of 1 is ok for most cases, but this parameter is an issue of fine tuning! How the strategy parameter operates: --SS00 groups are read sequentially, i.e. all threads are fetching articles from only one group. --SS11 if one thread goes into waiting state the next group will be accessed - only small modification of the above. --SS22 VVSSoouupp tries to keep all threads busy. I.e. each thread accesses one dedicated group, groups are read in parallel (if there are no more groups to access, the waiting threads are used for parallel reading from one group). Recommendation: - If you have a lot of groups with small amount of articles per fetch and only a little bit cross-posting, --SS22 will be the best option for you. If you allow reception of crossposted articles (see option --xx), --SS22 will be best for you in any case. - if you are accessing groups with large articles (i.e. cost of double reception of crossposted articles is high), --SS00 will be the best for you. --tt_<_n_> receive the news with _<_n_> threads, i.e. connect to the NNNNTTPP server _<_n_> times (limits are 1-10, default 4). --uu create news summary. Output can be found in the ..\\0000**..IIDDXX files. Be aware that the summarized articles are marked as read (one way to get out of this, is to call VVSSoouupp with --rr). --xx do not process news Xref headers, i.e. allow reception of crossposted articles. 55..22..11  NNoottee  CCoonncceerrnniinngg  TThhee  --KK  AAnndd  --NN  OOppttiioonnss -------------------------------------------------------------------------------------- If you are using the --hh option then use of either of the options --KK or --NN is not recommended, because behavior is not very transparent. If the --hh option is placed behind the --KK / --NN options the result will not be as expected - VVSSoouupp (and SSoouuppeerr) will revert to SSCCOORREE and NNEEWWSSRRCC in the new specified home directory. If --KK / --NN options are placed behind the --hh option and do not contain absolute paths, they will not be located in the home directory specified by --hh. This is confusing and will be fixed in a future release. IITT IISS BBEETTTTEERR AANNDD CCLLEEAANNEERR TTOO UUSSEE --HH AANNDD SSEETTUUPP TTHHEE SSPPEECCIIAALL SSCCOORREE//NNEEWWSSRRCC FFIILLEESS IINN TTHHAATT SSUUBBDDIIRREECCTTOORRYY!! 55..33  MMaaiill  RReecceeiivviinngg  OOppttiioonn((ss)) -------------------------------------------------------- --DD If specified, VVSSoouupp will logout and login after reception of each EMail, thus effectively forcing deletion of the letter on the PPOOPP33 server. This is useful, if your connection to the PPOOPP33 server is aborted often and your mailbox is full. Normal behaviour is to retrieve EMail without disconnecting/connecting. 55..44  UURRLLss ---------------- The addresses of the hosts are given in UUnified RResource LLocator (URL) form. These do not fully conform to the standard, so a short explanation follows: - nnnnttpp::////[[UUsseerrIIdd[[::PPaasssswwoorrdd]]@@]]nnnnttpp--hhoosstt[[::ppoorrtt]] defines the address of your NNNNTTPP server (i.e. news server). UUsseerrIIdd and PPaasssswwoorrdd can be given if required for AUTHINFO. - ppoopp33::////[[UUsseerrIIdd[[::PPaasssswwoorrdd]]@@]]ppoopp33--hhoosstt[[::ppoorrtt]] defines the address of your PPOOPP33 server. UUsseerrIIdd and PPaasssswwoorrdd are usually required. - ssmmttpp::////[[UUsseerrIIdd[[::ppaasssswwoorrdd]]@@]]ssmmttpp--ggaatteewwaayy[[::ppoorrtt]] defines your SSMMTTPP gateway. UUsseerrIIdd and PPaasssswwoorrdd are not required, in fact they are ignored by VVSSoouupp11..22..88! The URL-feature makes VVSSoouupp different to SSoouuppeerr1166, which wants to see a %%HHOOMMEE%%\\NNEEWWSSAAUUTTHH file for NNNNTTPP authorization. Notes: 1. It is not intended to implement other protocols like hhttttpp or so. 2. If ppoorrtt is not specified, the actual port number is taken from the %%EETTCC%%\\SSEERRVVIICCEESS file. This is the recommended way of port number handling. 55..44..11  BBrriieeff  DDeessccrriippttiioonn  OOff  NNNNTTPP//PPOOPP33//SSMMTTPP ---------------------------------------------------------------------------------- Mail can be compared to the postal service, just like a letter. EMail-reception is handled through PPOOPP33 server (ppoopp33:://// prefix), transmission through SSMMTTPP gateways (ssmmttpp:://// prefix). News messages are more like broadcasting, everybody will 'hear' your message. News messages are transmitted and received via NNNNTTPP servers (nnnnttpp:://// prefix). Perhaps it is a little bit confusing, that you can also deliver news via EMail service (just like the YYaarrnn list). The other way around is not possible... Anyway, please don't mix up news and EMail (your EMail might be news, but in these terms they remain EMails). 55..44..22  EEvvaalluuaattiioonn  OOrrddeerr  OOff  UURRLLss ------------------------------------------------------------ VVSSoouupp evaluates URLs in the following order: 1. take all information from the 'Internet Connection for OS/2' notebook settings 2. check the NNNNTTPPSSEERRVVEERR environment settings Note1: NNNNTTPPSSEERRVVEERR is a URL without leading nnnnttpp:://// Note2: there are no environment variables for the SSMMTTPP / PPOOPP33 setup. 3. command line options If you specify only e.g. nnnnttpp::////yyoouurr..nneewwss..sseerrvveerr in the command line (without userid/password), the userid and password from the TCP/IP configuration are taken as a standard value. 55..55  NNeewwss  RReecceeppttiioonn ------------------------------------ For news reception you have the following options (which cannot combined): - either process ..\\CCOOMMMMAANNDDSS (..\\CCOOMMMMAANNDDSS exists), - or catch-up the newsgroups (--cc option), - or create newsgroups summary (--uu option), - or receive the news in the standard way (no specific option). New newsgroups are added to the %%HHOOMMEE%%\\NNEEWWSSRRCC file, when news is received in the standard way and the command line option --aa is given. 66  DDiiaaggnnoossttiiccss ========================== VVSSoouupp returns with an exit code of 11, if any operation failed. Otherwise return code will be 00. Failing operations are: - bad command line options, - bad setup (e.g. no EETTCC set, but 'Internet Connection' settings requested), - bad OS (e.g. D*ø@!S), - user hit ^C or ^BREAK, - throughput check failed (e.g. connection broken), - could not setup connection (e.g. server not defined, server does not exist, server is down, etc.), - there was no ..\\RREEPPLLIIEESS file and you have requested --ss, - ..\\RREEPPLLIIEESS contains an illegal entry, - ..\\MMAAIILL..MMSSGG or ..\\NNEEWWSS..MMSSGG is malformed, - could not deliver news article, e.g. NNNNTTPP server did not allow it, - could not deliver mail, e.g. PPOOPP33 authentication failed, - MMAAIILLEERR / PPOOSSTTEERR contains illegal value, - there is no NNEEWWSSRRCC file, ..\\SSTTSSMMAAIILL..MMSSGG -------------------------- In case of an error condition the status message ..\\SSTTSSMMAAIILL..MMSSGG will be generated. Under the following additional cases ..\\SSTTSSMMAAIILL..MMSSGG will be generated too: - VVSSoouupp was called with the --MM option (force ..\\SSTTSSMMAAIILL..MMSSGG generation), - VVSSoouupp was called with --aa and there were new newsgroups on your NNNNTTPP server, - VVSSoouupp could not select a newsgroup specified in NNEEWWSSRRCC, - VVSSoouupp could not select a newsgroup specified in ..\\CCOOMMMMAANNDDSS, - a newsgroup specified in ..\\CCOOMMMMAANNDDSS was not contained in NNEEWWSSRRCC, - there was another command than sseennddmmee contained in ..\\CCOOMMMMAANNDDSS, - a specified (--KK_<_f_i_l_e_>) score file does not exist. - ..\\RREEPPLLIIEESS contained an illegal (i.e. not understood by VVSSoouupp11..22..88) reply type. Legal reply types are 'b' and 'B', - ..\\RREEPPLLIIEESS contained an illegal (i.e. not understood by VVSSoouupp11..22..88) reply kind. Legal reply kinds are ""mmaaiill"" and ""nneewwss"". FFuuttuurree  eexxtteennssiioonnss ---------------------------------- The following failing operations are NOT yet implemented fully: - there was no EMail in your PPOOPP33 mailbox, - there were no new news, - you have requested --ss, but a message file is missing (VVSSoouupp deletes message files immediately after successful delivery. Note that if you need two runs to deliver all your messages e.g. one file will be missing on the second attempt. This is considered ok). It is possible, that diagnostics code will change in the future. Return codes with a cleared bit 0 (like 0,2,4,...) will indicate a non-fatal condition, return codes with a set bit 0 will indicate fatal conditions. 77  UUttiilliittiieess ====================== This section describes the several utilities contained in VVSSOOUUPP112277..ZZIIPP archive in more detail. For most users only the YarnIo files will be of interest. 77..11  YYaarrnnIIoo -------------------- As stated before YarnIo - actually consisting of YYAARRNNIIOO..CCMMDD, YARNIO.SET and optionally of LOGINISP.CMD and LOGOUTISP.CMD - is responsible for safe VVSSoouupp I/O operations. The script(s) handle(s) the complete I/O between YYaarrnn and the internet world. Newsgroups are read from up to nine NNNNTTPP servers, mail/news packets are transmitted and mail is received again from up to nine PPOOPP33 servers - all simultaneously. Actions can be disabled individually (type YYAARRNNIIOO ?? for more information). The script should be started directly after the connection has been established. It is also possible to let YarnIo dial out to establish the connection. To do this you must provide the two scripts LOGINISP.CMD and LOGOUTISP.CMD (see the installation section). Most items of the user configuration are in a file called YARNIO.SET. It contains the settings for the initialization of the external programs including VVSSoouupp, iimmppoorrtt ... calls. YYoouu WWIILLLL nneeeedd ttoo aammeenndd tthhee ddeettaaiillss iinn tthhee YYAARRNNIIOO..SSEETT ffiillee.. Sorry, but the directory structure must be set up manually! You should follow the structure given above in the installation section. 77..11..11  YYaarrnnIIoo..SSeett -------------------------------- For configuration of YarnIo, YARNIO.SET is required. YARNIO.SET must reside in the same directory as YYAARRNNIIOO..CCMMDD and must have the same filename prefix (i.e. YYAARRNNIIOO). YARNIO.SET contains the statements which determine how YYAARRNNIIOO..CCMMDD is to call the several commands. To give you an idea what must be configured in YARNIO.SET, an example follows. There is a YARNIO.SET contained in the archive, which includes more comments. : '@SET NNTPSERVER=' preImportProg = 'ownsoup -q rgriech stuff4me OwnTemp' importProg = 'import.exe -u' soupProg = 'vsoup.exe' soupSend = soupProg '-s nntp://xmt.nntp.server' soupRcvNews = soupProg '-mai' '-h' rcvNewsDir 'nntp://1st.nntp.server' soupRcvNews2 = soupProg '-mai' '-h' rcvNews2Dir 'nntp://2nd.nntp.server' soupRcvMail = soupProg '-n' pingHost = 'slipwait 2 2>&1 > nul' connectISP = 'cmd /c loginisp.cmd NOWAIT' hangupISP = 'cmd /c logoutisp.cmd' unzipProg = 'unzip.exe -oq' zipProg = 'zip -0mq' : RReemmaarrkkss -------------- - Instead of sslliippwwaaiitt you could also use the command ''ppiinngg xx..yy..zz 11 22>>&&11 >> nnuull''. The host xx..yy..zz in ppiinnggHHoosstt must NNOOTT be contained in the %%EETTCC%%\\HHOOSSTTSS, because otherwise ppiinnggHHoosstt will return unexpected results. - Do not remove the option ''--hh'' rrccvvNNeewwssDDiirr from the ssoouuppRRccvvNNeewwss line or the option ''--hh'' rrccvvNNeewwss22DDiirr from the ssoouuppRRccvvNNeewwss22 line. - If you are not interested in a service (e.g. ssoouuppRRccvvNNeewwss22), set the corresponding variable to '' (empty string). - If required, you can change the environment settings in YARNIO.SET, e.g. the above ''@@SSEETT NNNNTTPPSSEERRVVEERR=='' clears an existing NNNNTTPPSSEERRVVEERR environment variable. - To enable news server #3..#9, you have to add ssoouuppRRccvvNNeewwss33..ssoouuppRRccvvNNeewwss99 lines into YARNIO.SET. Use ssoouuppRRccvvNNeewwss22 as a template. Of course you have to set up the corresponding Newsrc Files in the respective subdirectories. For PPOOPP33 server #2..#9 you have to set up ssoouuppRRccvvMMaaiill22..ssoouuppRRccvvMMaaiill99. You have to create the corresponding subdirectories manually. For setting up the correct subdirectory structure see also the Installation section. 77..11..22  LLooggiinnIIsspp ---------------------------- LOGINISP.CMD is an optional script, which allows YarnIo to dial in to your ISP. The following example script will connect using the internet dialer. If you are a customer of Advantis the script will work for you without any changes - of course you have to insert the correct aaccccoouunntt uusseerr ppaasssswwdd information. /* LoginIsp - rg211096 Login to your ISP. If Option NOWAIT is given, the command will not wait until connection has been established. You have to do the following configuration: - the line '...logoutisp...' must show the effective logoff script - the line '...start...' must show the effective call of the dialer - the line '...ping...' must show a pinger to check connection */ call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' call SysLoadFuncs TRACE('') option = ARG(1) DO FOREVER '@cmd /c logoutisp.cmd' '@start dialer.exe account user passwd '-m' IF option = 'NOWAIT' THEN LEAVE DO j = 1 TO 20 rc = SysSleep(3) '@ping www.cdrom.com 2>&1 > nul' IF rc = 0 THEN EXIT END j END EXIT Note1: You will find an almost identical LOGINISP.CMD in the VVSSOOUUPP112277..ZZIIPP archive. Note2: This LOGINISP.CMD requires a working LOGOUTISP.CMD. 77..11..33  LLooggoouuttIIsspp ------------------------------ LOGOUTISP.CMD is an optional script, which allows YarnIo to disconnect from your ISP. The following example script will disconnect using the internet dialer. If you are a customer of Advantis the script will work for you without any changes - other than maybe changing ddiiaalleerr and ccoommPPoorrtt. This script is a little bit more complicated than LOGINISP.CMD, because it will 1. block itself to avoid multiple instances of itself 2. wait until the dialer has been closed 3. force a disconnect of the modem through switching DTR An almost identical version of the script is contained in the VVSSOOUUPP112277..ZZIIPP archive. /* LogoutIsp - rg211096 Logoff from your ISP. The lines dialer/dialerClose,comPort must be configured */ call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' call SysLoadFuncs dialer = 'c:\tcpip\bin\dialer.exe' dialerClose = dialer '-c' comPort = 'com3' TRACE('') parse source . . compCmdName cmdName = filespec('name',compCmdName) tmpDir = value('tmp',,'os2environment') lockFile = '' IF tmpDir = '' THEN SAY 'please define %TMP% for locking' CmdName ELSE DO lockFile = tmpDir || '\logout.sem' if stream( lockFile,'c','open write') \= 'READY:' then DO SAY CmdName 'already active...' EXIT END END if isActive(dialer) then do SAY 'logging off...' '@start /min' dialerClose rc = SysSleep( 2 ) DO FOREVER IF \isActive(dialer) THEN LEAVE call HangupNow rc = SysSleep( 2 ) END end call HangupNow IF lockFile \= '' THEN DO rc = stream( lockFile,'c','close' ) rc = SysFileDelete( lockFile ) END EXIT HangupNow: '@mode' comPort || ',dtr=on > nul' '@mode' comPort || ',dtr=off > nul' '@mode' comPort || ',dtr=on > nul' RETURN isActive: PROCEDURE prog = ARG(1) '@pstat /c | RXQUEUE' prog = TRANSLATE(prog) found = 0 DO ii = 1 TO queued() PULL line IF POS(prog,TRANSLATE(line)) \= 0 THEN do found = 1 LEAVE END END RETURN found 77..22  OOwwnnSSoouupp ---------------------- OwnSoup, with the help of the YYaarrnn iimmppoorrtt program, redirects news articles matching a specific pattern into a mail folder. OwnSoup can be seen as a notification program to allow easy tracking of news threads you are involved in. SSyynnttaaxx ------------ oowwnnssoouupp [[--hh]] [[--bb]] [[--qq]] _<_p_a_t_t_e_r_n_> _<_g_r_o_u_p_n_a_m_e_> _<_o_u_t_p_u_t_f_i_l_e_> where [[--hh]] search for _<_p_a_t_t_e_r_n_> in header of article only, [[--bb]] search for _<_p_a_t_t_e_r_n_> in body of article only. The subject line of the header is considered to be part of header and body. If --hh or --bb is not specified the default is to search the complete article, [[--qq]] be quiet. Only the number of matches found will be displayed, _<_p_a_t_t_e_r_n_> is your search pattern which should be defined according to the regular expression syntax, _<_g_r_o_u_p_n_a_m_e_> is a dummy groupname to allow easy filtering. All the matching articles will contain the header line XX--oowwnnssoouupp:: _<_g_r_o_u_p_n_a_m_e_>, _<_o_u_t_p_u_t_f_i_l_e_> is the name of the temporary outputfile (the ..MMSSGG-extension will be added by OwnSoup). The generated _<_o_u_t_p_u_t_f_i_l_e_> will be registered in the ..\\AARREEAASS file, thus iimmppoorrtt will also find the _<_o_u_t_p_u_t_f_i_l_e_>. Note that the _<_o_u_t_p_u_t_f_i_l_e_> will be deleted after the iimmppoorrtt so that the actual name you choose is almost unimportant. EExxaammppllee  SSeettuupp  ooff  OOwwnnSSoouupp ------------------------------------------------ - Assuming a script is used when importing news, directly before iimmppoorrtt is called, a line calling OwnSoup is placed in the script. This would be something like: ownsoup rgriech stuff4me OwnTemp This example would search for ""rrggrriieecchh"" in the header and body sections of each message, writing matching messages to an output file called OwnTemp after marking them with X-ownsoup: stuff4me The YYaarrnn iimmppoorrtt can now easily filter out any such news articles and put them in a mail folder which in this example we will call ""PPeerrssoonnaall"". The search pattern here is ""rrggrriieecchh"" but a more complex pattern could be used, for example I could search on a pattern of ""rrggrriieecchh||hhaarrddyy..ggrriieecchh"" which would find either my EMail name or my full name. The '.' wildcard is used in place of a space. The pattern must be in quotes because of the '|' character. Note that because no --hh or --bb parameter is set, OwnSoup will search both the header and the body of all messages. If you are using YarnIo, OwnSoup would be called by setting the pprreeIImmppoorrttPPrroogg line in YARNIO.SET. Our example would require the following: preImportProg = 'ownsoup rgriech stuff4me OwnTemp' - To setup a YYaarrnn filter which moves all the messages matching the pattern ""XX--oowwnnssoouupp:: ssttuuffff44mmee"" into the mail folder ""PPeerrssoonnaall"" you would do the following: Set up a filter using the YYaarrnn FFIILLTTEERR..EEXXEE program. When run, this shows a box for details, which you would complete as follows: Ú Mail Rule ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ Rule name: MentionsMe ³ ³ ³ ³ Search in: ( ) From ³ ³ ( ) To ³ ³ ( ) Subject ³ ³ (*) Header ³ ³ ( ) Body ³ ³ ( ) Header and body ³ ³ ³ ³ Search for: X-ownsoup: stuff4me ³ ³ Match case: No ³ ³ ³ ³ Action: (*) Move to folder/newsgroup: Personal ³ ³ ( ) Delete ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ In the ""SSeeaarrcchh ffoorr"" line above, ""XX--oowwnnssoouupp:: ssttuuffff44mmee"" represents the string you wish to search for, i.e. the string that OwnSoup puts in when it finds a match on its own search and ""PPeerrssoonnaall"" represents the name you wish the new mail folder to have. Note that YYaarrnn's filter now only needs to search the header as it is only looking for the ""XX--oowwnnssoouupp:: ssttuuffff44mmee"" line. After this preparation all incoming news articles will be checked for _<_p_a_t_t_e_r_n_> as set in OwnSoup (in this case ""rrggrriieecchh""), and matching articles will be moved into the ""PPeerrssoonnaall"" mail folder. - Of course, you can set up more than one filter and if you wish you could put the output in different mail folders. RReessttrriiccttiioonn ---------------------- Do not set up ""PPeerrssoonnaall"" as a newsgroup, because YYaarrnn would skip the filtered articles in this case due to the MMeessssaaggee--IIDD::. OOtthheerrss ------------ - Articles filtered to ""PPeerrssoonnaall"" can be rreepplliieedd and ffoolllloowweedd uupp. - OwnSoup scans all files contained in ..\\AARREEAASS matching the SSOOUUPP formats ""bb"" and ""uu"", i.e. files containing news articles. The generated file has the binary 8-bit clean mail SSOOUUPP format (""bbnn""). 77..33  QQSSoouupp ------------------ QSoup (pronounce 'queue soup') appends mail and news messages to the YYaarrnn _r_e_p_l_y _p_a_c_k_e_t file for transmission by VVSSoouupp. The messages must contain all required header fields, i.e. QSoup does not manipulate the content of the message, except that it does '\r' stripping and interpretes ^Z as end of message. SSyynnttaaxx ------------ qqssoouupp [[--mm]] [[--vv]] [[--ii]] [[--hh_<_d_i_r_>]] [[--ll_<_f_i_l_e_>]] [[_<_i_n_p_u_t_f_i_l_e_>]] where [[--mm]] the message input to QSoup is a mail, default is news, [[--vv]] be verbose, [[--ii]] ignore all options coming behind the _<_-_i_>. This is useful, if the calling program appends command line arguments which are not known by QSoup, [[--rr_<_f_i_l_e_>]] set the name of the _r_e_p_l_y _p_a_c_k_e_t to _<_f_i_l_e_>. Default is to read the name of the _r_e_p_l_y _p_a_c_k_e_t from %%HHOOMMEE%%\\YYAARRNN\\CCOONNFFIIGG in the line rreeppllyy--ppaacckkeett, [[--ll_<_f_i_l_e_>]] use _<_f_i_l_e_> as the lock file for access control to the _r_e_p_l_y _p_a_c_k_e_t. Default is to use %%YYAARRNN%%\\HHIISSTTOORRYY..PPAAGG, [[_<_i_n_p_u_t_f_i_l_e_>]] is the name of the message file. If omitted, the message will be read from stdin, thus allowing to connect the message provider and QSoup through a pipe. EExxaammppllee  SSeettuupp  OOff  QQSSoouupp  AAnndd  SSeennddmmaaiill ---------------------------------------------------------------------- Using sseennddmmaaiill has several advantages. First, it is a standard tool which is used by many programs for mail delivery (e.g. LLyynnxx). Second, it is very flexible and allows routing of messages depending on their recipients address. The second point is also the weakest point of sseennddmmaaiill: it is hard to configure. This example shows my setup of sseennddmmaaiill. But be warned: I am no sseennddmmaaiill expert and to get this configuration running was a lot of fiddling! My changes to the standard configuration were as follows: - take the original sseennddmmaaiill..uummll from Warp Connect and copy it to %%EETTCC%%\\sseennddmmaaiill..ccff, - insert the following two lines in the very beginning of sseennddmmaaiill..ccff: Cwworkstationname.domain Dwworkstationname.domain - change the OOQQ setting so it reflects the subdirectory of your mail queue (which in fact should not be required, because the mails are received by QSoup immediately), - set the HH??FF??FFrroomm:: field to your EMail address. This will be the default address, if nothing else is specified in the FFrroomm::-header of the message, - in the RRuulleesseett 00 at the end of the first section specify the rule R$+<@$+> $#local $:$1 This will instruct sseennddmmaaiill to direct all mails to the local mailer program. Note that the blanks between the >> and the $$ have to be tabs, - change the local mailer program, so that it shows the following: Mlocal, P=d:\b\32\qsoup.exe , F=lmnDFM, S=10, R=0, A=-m -i $u You have to replace the dd::\\bb\\3322 with the actual QSoup path. If this path is not correct, sseennddmmaaiill will not deliver the mails! After you have done the setup, you should check it with a dummy mail. Type in the following: sendmail -t --->IBM OS/2 SENDMAIL VERSION 1.3.17 --->reading ...\sendmail.cf 10 to: dummy@x.y.z subject: sendmail/qsoup testing Hello ^Z (this is a ctrl-Z!) --->11/09/96 19:01:03 mail delivered from: YourName Now you can check the successful delivery with the command uunnzziipp --CCpp --aaaa rreeppllyy--ppaacckkeett mmaaiill..mmssgg. The output should be something like that: Received: by ibm.net (IBM OS/2 SENDMAIL VERSION 1.3.17/2.12um) id AA3986; ... Date: Sat, 09 Nov 96 18:59:40 +0100 From: YourName Message-Id: <9611091759.AA3986@ibm.net> To: dummy@x.y.z Subject: sendmail/qsoup testing Hello Note, that sseennddmmaaiill inserted the missing DDaattee::, FFrroomm:: and MMeessssaaggee--IIdd:: header lines (the redundant header RReecceeiivveedd:: too). YYoouurrNNaammee should show the correct settings. After successful test you should delete the reply packet file. For the actual 'diff' of my sseennddmmaaiill..ccff and sendmail.umf see also the FAQ. MMiisscceellllaanneeoouuss -------------------------- - If you are using QSoup as a sseennddmmaaiill mailer program you can not setup sseennddmmaaiill as the MMAAIILLEERR of VVSSoouupp (see environment settings). First, this would result in a deadlock during transmit action of VVSSoouupp, because the invoked sseennddmmaaiill would invoke an instance of QSoup, which could not proceed, because the YYaarrnn _r_e_p_l_y _p_a_c_k_e_t would be held by the transmitting VVSSoouupp. Second, this would not be a meaningful configuration, because the mail would loop endlessly in your computer without being ever transmitted to the external world. If other programs require the MMAAIILLEERR environment variable pointing to sseennddmmaaiill and if sseennddmmaaiill is configured to deliver mails to QSoup, one should clear MMAAIILLEERR prior to the ""VVSSoouupp --ss"" call. For YarnIo operation this could be done in YARNIO.SET. - Because QSoup has to unzip/zip the _r_e_p_l_y _p_a_c_k_e_t, do not expect fast operation. Anyway appending a message to the _r_e_p_l_y _p_a_c_k_e_t will be much faster than the actual delivery to the network. - If QSoup is copied to an executable with the name sseennddmmaaiill (SSEENNDDMMAAIILL..EEXXEE) and is invoked as sseennddmmaaiill, QSoup mode defaults to 'get a mail from stdin'. If QSoup is copied to an executable with the name iinneewwss (IINNEEWWSS..EEXXEE) and is invoked as iinneewwss, QSoup mode defaults to 'get a news article from stdin'. All command line options will be ignored in either case. Keep in mind, that the messages must contain all required header fields. - The exact access criteria for _r_e_p_l_y _p_a_c_k_e_t access are as follows: 1. Set %%YYAARRNN%%\\HHIISSTTOORRYY..PPAAGG to writable without access sharing. This operation must be accomplished successfully. %%YYAARRNN%%\\RREEPPLLIIEESS is the default lock file which can be overridden by the --ll_<_f_i_l_e_> option. 2. The RREEPPLLIIEESS file in the _r_e_p_l_y _p_a_c_k_e_t subdirectory must not exist. Criterion (1) blocks QSoup, if YYaarrnn is active. Also this works like a semaphor and prevents multiple instances of QSoup to access the _r_e_p_l_y _p_a_c_k_e_t. Criterion (2) prevents QSoup from accessing the _r_e_p_l_y _p_a_c_k_e_t if it is unzipped, e.g. during ""VVSSoouupp --ss"". Don't forget that an open YYaarrnn or an active ""VVSSoouupp --ss"" blocks QSoup. This means, as long as another application accesses either the lloocckkffiillee or the YYaarrnn _r_e_p_l_y _p_a_c_k_e_t, QSoup can not perform the requested operation. 77..44  CCoonnvvSSoouupp ------------------------ ConvSoup is a small program which converts the VVSSoouupp SSOOUUPP output files, which are in binary format (""bbnn"" & ""BBnn"") into UUNNIIXX mailbox format (""mmnn"") and UUSSEENNEETT batch format (""uunn"") respectively. The output files are written with '\n' as line separator. ConvSoup must be started in the subdirectory that contains the ..\\AARREEAASS and the ..\\**..MMSSGG files. ConvSoup is useful for people who wants to use VVSSoouupp with offline newsreader which do not recognize VVSSoouupp's packet format directly. Although VVSSoouupp complies to SSOOUUPP, some readers only know about UUNNIIXX mailbox and UUSSEENNEETT batch format. E.g. CChhaannggii's RRNNeewwss expects UUSSEENNEETT batch format on its input. 77..55  MMooddiiffyyEEmmxxHH ---------------------------- This script is of interest for people who wants to compile VVSSoouupp on their own. MMOODDIIFFYYEEMMXXHH..CCMMDD is required for multiple inclusion of the ooss22..hh and ooss22eemmxx..hh header files. MMOODDIIFFYYEEMMXXHH..CCMMDD reads form stdin and copies to stdout. Keep in mind, that multiple inclusion of the above mentioned headers is not standard. It is just for my convenience. 77..66  RRmmHHiigghh -------------------- RRMMHHIIGGHH..CCMMDD removes the highlighting from VVSSOOUUPP..TTXXTT. This is useful for people who wants to read the documentation in text mode and have no pager or editor available which understands the poor (wo)mans highlighting used in VVSSOOUUPP..TTXXTT. GGNNUUs LLeessss is an example of a pager that handles the distributed VVSSOOUUPP..TTXXTT correctly. 88  FFiilleess ============== This section describes all the input and output files used and generated by VVSSoouupp in detail. Under normal circumstances %%HHOOMMEE%%\\NNEEWWSSRRCC and %%HHOOMMEE%%\\SSCCOORREE are the only files of interest. For description of YarnIo files, see the YarnIo section. 88..11  TThhee  NNeewwssrrcc  FFiillee -------------------------------------- %%HHOOMMEE%%\\NNEEWWSSRRCC contains the list of newsgroups. ':' behind the name indicates subscribed group, '!' indicates an unsubscribed one. The list of newsgroups can be obtained from the news server by using the --aa option of VVSSoouupp (see FAQ) or can be prepared with a text editor as follows: List the newsgroups you want to receive, one per line, and end each line with a colon. For example: comp.answers: news.answers: rec.humor.funny: VVSSoouupp will keep track of fetched articles by recording the article numbers in this file. SSyynnttaaxx ------------ For anyone who really wants to know, the syntax of the file is as follows: %%HHOOMMEE%%\\NNEEWWSSRRCC ::::== _<_l_i_n_e_s_> _<_l_i_n_e_s_> ::::== _<_l_i_n_e_> _<_l_i_n_e_s_> || eemmppttyy _<_l_i_n_e_> ::::== _<_g_r_o_u_p_n_a_m_e_> _<_s_e_p_> _<_a_r_t_i_c_l_e_-_r_a_n_g_e_s_> ""\\nn"" _<_s_e_p_> ::::== ""!!"" || ""::"" _<_a_r_t_i_c_l_e_-_r_a_n_g_e_s_> ::::== _<_a_r_t_i_c_l_e_-_r_a_n_g_e_s_> "",,"" _<_a_r_t_-_r_a_n_g_e_> || _<_a_r_t_-_r_a_n_g_e_> _<_a_r_t_-_r_a_n_g_e_> ::::== "" "" _<_a_r_t_-_n_u_m_> || "" "" _<_a_r_t_-_n_u_m_> ""--"" _<_a_r_t_-_n_u_m_> _<_g_r_o_u_p_n_a_m_e_> is the name of a group, _<_a_r_t_-_n_u_m_> is a long integer. _<_a_r_t_i_c_l_e_-_r_a_n_g_e_s_> must be sorted in ascending order to be recognized correctly. Blanks are only allowed at the indicated positions. Under normal circumstances, only the _<_s_e_p_> is important to the user for subscribing and unsubscribing groups. 88..22  TThhee  SSccoorree  FFiillee ------------------------------------ The score file specifies criteria used to exclude articles from the VVSSoouupp packet. You can kill articles that have a specific subject, are from a specific poster, or contain a particular string anywhere in the header. Even killing of articles which do nnoott contain a specific pattern in their header is possible with scoring. %%HHOOMMEE%%\\SSCCOORREE is the default score file. The name and subdirectory of the score file can be configured by specifying the --KK_<_s_c_o_r_e_f_i_l_e_> command line option. This allows one single score file for all news servers you wish to access. An entry in the score file, also called _<_s_c_o_r_e_-_s_e_c_t_i_o_n_>, has the format: _<_s_c_o_r_e_-_g_r_o_u_p_> ""{{"" _<_s_c_o_r_e_-_r_u_l_e_> ...... ""}}"" with _<_s_c_o_r_e_-_r_u_l_e_> being one of the following alternatives: 1. _<_s_c_o_r_e_> ""lliinneess"" "">>"" _<_n_u_m_b_e_r_> 2. _<_s_c_o_r_e_> ""lliinneess"" ""<<"" _<_n_u_m_b_e_r_> 3. _<_s_c_o_r_e_> ""ppaatttteerrnn"" ""hheeaaddeerr"" _<_r_e_g_-_e_x_p_> 4. _<_s_c_o_r_e_> ""ppaatttteerrnn"" _<_w_h_e_r_e_> _<_r_e_g_-_e_x_p_> 5. _<_s_c_o_r_e_> ""hheeaaddeerr"" _<_s_t_r_i_n_g_> 6. _<_s_c_o_r_e_> _<_w_h_e_r_e_> _<_s_t_r_i_n_g_> _<_s_c_o_r_e_-_r_u_l_e_>s 11.. and 22.. are for scoring of the article length, 33.. and 44.. are both working with regular expressions (_<_r_e_g_-_e_x_p_>), 55.. and 66.. are working with literal strings (_<_s_t_r_i_n_g_>). 33.. and 55.. are scanning the complete header for the corresponding patterns, 44.. and 66.. are matching its pattern only in the corresponding header line _<_w_h_e_r_e_>. DDeessccrriippttiioonn  ooff  tthhee  ssccoorree--sseeccttiioonn  eelleemmeennttss ---------------------------------------------------------------------------------- _<_s_c_o_r_e_-_g_r_o_u_p_> _<_s_c_o_r_e_-_g_r_o_u_p_> is a regular expression. The contained _<_s_c_o_r_e_-_r_u_l_e_>s are applied to newsgroups which are matched by the _<_s_c_o_r_e_-_g_r_o_u_p_> regular expression completely. If _<_s_c_o_r_e_-_g_r_o_u_p_> is the string ""aallll"", the _<_s_c_o_r_e_-_r_u_l_e_>s are applied to all newsgroups. _<_s_c_o_r_e_-_r_u_l_e_> see above. _<_s_c_o_r_e_> is the score which has been assigned to the _<_s_c_o_r_e_-_r_u_l_e_>. All scores of _<_s_c_o_r_e_-_r_u_l_e_>s matching an articles header are added up and then compared to the _<_k_i_l_l_-_t_h_r_e_s_h_o_l_d_>. If the total score is less than the _<_k_i_l_l_-_t_h_r_e_s_h_o_l_d_>, the article is killed. _<_w_h_e_r_e_> specifies where to search in the header. ffrroomm searches the FFrroomm:: line, ssuubbjjeecctt searches the SSuubbjjeecctt:: line and so on. The special _<_w_h_e_r_e_>-pattern ""hheeaaddeerr"" searches all the lines in the header of the article. _<_r_e_g_-_e_x_p_> is the string in form of a regular expression to search for. _<_s_t_r_i_n_g_> is the literal string to search for. _<_n_u_m_b_e_r_> is a line number to which the actual article length is compared. SSppeecciiaall  ssccoorree--sseeccttiioonnss -------------------------------------------- There are two special _<_s_c_o_r_e_-_s_e_c_t_i_o_n_>s: ""qquuiitt"" stops reading of the score file immedialtely. ""kkiilllltthhrreesshhoolldd"" _<_k_i_l_l_-_t_h_r_e_s_h_o_l_d_> sets the threshold for killing articles, i.e. the lowest limit articles should fulfill to not being killed. The threshold is global (i.e. applies to all groups and rules) and the last occurance of ""kkiilllltthhrreesshhoolldd"" counts. Lines beginning with a '#' in the first non-blank position are treated as comments. RReemmaarrkkss -------------- - All fields are case-insensitive. - After ""hheeaaddeerr"" and _<_w_h_e_r_e_> a colon (""::"") is allowed. - News transmission speed decreases if a score file is used, because an article is fetched then in two steps: HHEEAADD <>, then BBOODDYY <>. Otherwise an article will be fetched in only one single step: AARRTTIICCLLEE <>. Offline-Scoring of YYaarrnn is also more flexible than this online-scoring because you can change your mind about the scores aafftteerr reception of the articles! - It is pretty legal to break the scoring criteria of several _<_s_c_o_r_e_-_g_r_o_u_p_>s in several _<_s_c_o_r_e_-_s_e_c_t_i_o_n_>s. - If ""hheeaaddeerr""--_<_s_c_o_r_e_-_r_u_l_e_>s are applied, the pattern is searched for in the complete header, i.e. one can also match specific header fields. - The _<_s_c_o_r_e_-_g_r_o_u_p_> ""aallll"" is transformed to the regular expression ""..**"". - Although the ""..""s in newsgroup names are meta characters of regular expressions this should not do any harm to 'normal' group matching. E.g. the _<_s_c_o_r_e_-_g_r_o_u_p_> expression ""ccoommpp..ooss..ooss22..pprrooggrraammmmeerr..mmiisscc"" will match only one group in real life. - The score file works on news only. - Check the FAQ for example score files. SSyynnttaaxx ------------ The exact syntax of the score file is as follows: %%HHOOMMEE%%\\SSCCOORREE ::::== {{_<_l_i_n_e_> ""\\nn""}}_* _<_l_i_n_e_> ::::== ''##'' _<_t_e_x_t_> || _<_s_c_o_r_e_-_s_e_c_t_i_o_n_> Lines beginning with a '#' indicates a comment, _<_t_e_x_t_> indicates literal strings. _<_s_c_o_r_e_-_s_e_c_t_i_o_n_> ::::== ""aallll"" ""{{"" _<_s_c_o_r_e_-_r_u_l_e_s_> ""}}"" || _<_s_c_o_r_e_-_g_r_o_u_p_> ""{{"" _<_s_c_o_r_e_-_r_u_l_e_s_> ""}}"" || ""kkiilllltthhrreesshhoolldd"" _<_n_u_m_b_e_r_> || ""qquuiitt"" ""aallll"" indicates, that the following _<_s_c_o_r_e_-_r_u_l_e_s_> is valid for all newsgroups, The regular expression _<_s_c_o_r_e_-_g_r_o_u_p_> limits the _<_s_c_o_r_e_-_r_u_l_e_s_> to specific newsgroups. _<_s_c_o_r_e_-_r_u_l_e_s_> ::::== _<_s_c_o_r_e_-_r_u_l_e_> ""\\nn"" {{_<_s_c_o_r_e_-_r_u_l_e_s_>}} _<_s_c_o_r_e_-_r_u_l_e_> ::::== _<_s_c_o_r_e_> ""lliinneess"" "">>"" _<_n_u_m_b_e_r_> || _<_s_c_o_r_e_> ""lliinneess"" ""<<"" _<_n_u_m_b_e_r_> || _<_s_c_o_r_e_> ""ppaatttteerrnn"" ""hheeaaddeerr"" _<_r_e_g_-_e_x_p_> || _<_s_c_o_r_e_> ""ppaatttteerrnn"" _<_w_h_e_r_e_> _<_r_e_g_-_e_x_p_> || _<_s_c_o_r_e_> ""hheeaaddeerr"" _<_s_t_r_i_n_g_> || _<_s_c_o_r_e_> _<_w_h_e_r_e_> _<_s_t_r_i_n_g_> _<_s_c_o_r_e_> is a number (the score!), _<_n_u_m_b_e_r_> too, , _<_r_e_g_-_e_x_p_> is a regular expression, _<_w_h_e_r_e_> and _<_s_t_r_i_n_g_> are literal strings. Note: ""\\nn"" is the newline character. It is mandatory! 88..22..11  RReegguullaarr  eexxpprreessssiioonn  ssyynnttaaxx -------------------------------------------------------------- The following description has been taken from the mmaann rreeggeexxpp pages (BSD experimental). A regular expression is zero or more branches, separated by ||. It matches anything that matches one of the branches. A branch is zero or more pieces, concatenated. It matches a match for the first, followed by a match for the second, etc. A piece is an atom possibly followed by _*, ++, or ??. An atom followed by _* matches a sequence of 0 or more matches of the atom. An atom followed by ++ matches a sequence of 1 or more matches of the atom. An atom followed by ?? matches a match of the atom, or the null string. An atom is a regular expression in parentheses (matching a match for the regular expression), a range (see below), .. (matching any single character), ^^ (matching the null string at the beginning of the input string), $$ (matching the null string at the end of the input string), a \\ followed by a single character (matching that character), or a single character with no other significance (matching that character). A range is a sequence of characters enclosed in [[]]. It normally matches any single character from the sequence. If the sequence begins with ^^, it matches any single character not from the rest of the sequence. If two characters in the sequence are separated by --, this is shorthand for the full list of ASCII characters between them (e.g. [[00--99]] matches any decimal digit). To include a literal ]] in the sequence, make it the first character (following a possible ^^). To include a literal --, make it the first or last character. 88..33  OOtthheerr  FFiilleess ------------------------------ ..\\CCOOMMMMAANNDDSS -------------------- contains lines with the syntax: ''sseennddmmee'' _<_g_r_o_u_p_n_a_m_e_> _<_a_r_t_i_c_l_e_-_r_a_n_g_e_s_>. ..\\CCOOMMMMAANNDDSS is executed instead of standard fetching of news (see also News Reception). After successful ..\\CCOOMMMMAANNDDSS processing, the file will be deleted. Note: articles which have already been read (marked in %%HHOOMMEE%%\\NNEEWWSSRRCC) will be skipped! %%HHOOMMEE%%\\NNEEWWSSTTIIMMEE ------------------------------ contains the time of the last NNNNTTPP connection. This is for fetching of new newsgroups. If %%HHOOMMEE%%\\NNEEWWSSTTIIMMEE does not exist, aallll currently available newsgroups are fetched from the server when VVSSoouupp was called with the --aa option. %%TTMMPP%%\\SSOOUUPP**..TTMMPP ------------------------------ temporary files for received articles. _* will be replaced by a number in the range 0-9999. If %%TTMMPP%% is not defined, %%TTMMPP%% will be substituted by a '.' ..\\0000**..MMSSGG ------------------ contain the received messages (news articles & EMail). The files are written in the following SSOOUUPP formats: - Binary 8-bit clean news format (""BBnn"") for incoming news. Lines are delimited by a single '\n', - Binary 8-bit clean mail format (""bbnn"") for incoming mails. Lines are delimited by a single '\n'. Note that the format of the message files can be changed to UUNNIIXX mailbox and UUSSEENNEETT batch using ConvSoup. ..\\0000**..IIDDXX ------------------ contain the received newsgroup summaries (--uu option). The files are written in the SSOOUUPP ""iicc"" format. ..\\SSTTSSMMAAIILL..MMSSGG -------------------------- contains the status message generated by VVSSoouupp11..22..88. This file is written in the SSOOUUPP UUNNIIXX mailbox format (""mmnn""). Lines are delimited by a single '\n'. ..\\AARREEAASS -------------- contains the table of contents of the received ..\\0000**..MMSSGG / ..\\0000**..IIDDXX files (+ ..\\SSTTSSMMAAIILL..MMSSGG). ..\\NNEEWWSS..MMSSGG -------------------- contains the news messages that should be sent to the NNNNTTPP server. The following SSOOUUPP formats are supported: ""BB"" Binary 8-bit clean news format. The files are read in binary mode but transferred in text mode to the NNNNTTPP host, ""uu"" UUSSEENNEETT batch format with the area name ""nneewwss"". The files are read in binary mode, thus '\r\n' pairs are treated as two characters (this is not according to RFC1036 but according to Soup12.Html). ..\\MMAAIILL..MMSSGG -------------------- contains the mail messages that should be sent to the SSMMTTPP server. The following SSOOUUPP formats are supported: ""bb"" Binary 8-bit clean mail format. The files are read in binary mode but transferred in text mode to the SSMMTTPP gateway, ""uu"" UUSSEENNEETT batch format with the area name ""mmaaiill"". The files are read in binary mode, thus '\r\n' pairs are treated as two characters (this is not according to RFC1036 but according to Soup12.Html). ..\\RREEPPLLIIEESS ------------------ contains the table of contents of the ..\\NNEEWWSS..MMSSGG / ..\\MMAAIILL..MMSSGG files to be transmitted. Instead of the above file names other names could be used too. 99  IInnssuuffffiicciieenncciieess,,  BBuuggss  &&  PPllaannss ============================================================== IInnssuuffffiicciieenncciieess ------------------------------ - some cmd options, some files are not compatible with SSoouuppeerr1166 - space allocated from the heap is not freed (debugging...) - behaviour for news receiving/posting, mail receiving/posting is not symmetrical, i.e. there is no multithreading except for news receiving... This will be (perhaps) fixed in a future version E.g. start threads for connecting to the hosts for transmission, start a thread for overall transmission, start a thread for overall mail reception. This all will allow parallel operation of sending/receiving NNTP/POP3/SMTP stuff with one single VVSSoouupp. - only one single version (for OS/2) - it is not clear, how to handle '\r\n' pairs in the SSOOUUPP format! Soup12.Html says '\r' should be treated as data, but '\r\n' must be avoided. In Soup12.Html '\r' are counted just like normal data bytes. BBuuggss -------- - version of the eemmxx runtime is not checked! PPllaannss ---------- - remove bugs & insufficiencies - more situation dependent return codes - perhaps more status information on the screen - perhaps the servers IP address will be added to status messages - perhaps write Subject: to ..\\SSTTSSMMAAIILL..MMSSGG for mail reception/transmission - real Bcc: implementation for mailing 1100  AAuutthhoorr  &&  AAcckknnoowwlleeddggeemmeennttss ======================================================== AAuutthhoorr ------------ Hardy GriechErnetstr. 10/177933 LahrGermany EMail: rgriech@swol.de AAcckknnoowwlleeddggeemmeennttss -------------------------------- - FSF for GCC (2.7.2.1 used), EMACS (19.33.1 used), - Eberhard Mattes for the GCC & EMACS ports to OS/2 and the documentation utility eemmxxddoocc, which made the ..IINNFF-file possible, - Chin Huang for YYaarrnn and SSoouuppeerr, - the gamma testers Jim Holcomb, Kay Pyrtek, Phil Crown and Ralph D. Bednarski, - Barrie Smith for rework on the documentation, for many suggestions about documentation and a lot of proof reading! - Timo Maier for his excessive help finding the Warp4 related bug which led to system crashes (see history, VVSSoouupp11..22..77). 1111  HHiissttoorryy ==================== VVeerrssiioonn  11..22..88  ((119900449977)) -------------------------------------------- - new features: - Scoring introduced, see score file. - obsolete features: - The --ll and --LL command line options are obsoleted by scoring. These options allowed length limitations of articles. - bug fixes: - Small bug in pop3.cc which led to undefined/sick error messages. - other internal changes: - In pop3.cc mails are now no longer blocking the areas-files during mail reception. Instead incoming mail is copyied into a temporary file. This is a preparation step to allow simultaneous reception of mail/news. VVeerrssiioonn  11..22..77  ((112200229977)) -------------------------------------------- - new features: - Port specification in URLs is now supported. - ..\\SSTTSSMMAAIILL..MMSSGG now contains a DDaattee:: header field. This allows import of the ..\\SSTTSSMMAAIILL..MMSSGG into a pseudo newsgroup, see also the YYaarrnn ffiilltteerr program. - The SSuubbjjeecctt:: header line of ..\\SSTTSSMMAAIILL..MMSSGG now contains also the server names which are relevant for the requested operation. - The first 40K of temporary files are kept in memory to reduce HDD access (class TTFFiilleeTTmmpp). - National language support (__nnllss__ttoolloowweerr(())) introduced for kill expressions, OwnSoup and hashing. - newsgroup names in kill files are now regular expressions. - new Option --LL_<_n_> allows specification of minimum article length (see news receiving options). - new Option --DD forces deletion of mails on PPOOPP33 server after reception of each mail (see mail receiving options). - RmHigh.Cmd added, which removes the highlighting in VVSSOOUUPP..TTXXTT. - bug fixes: - VVSSoouupp crashed some Warp4 systems (trap address 0140:7d4c or 0140:7e33). This was fixed through serializing some C library calls (rreemmoovvee(()), rreennaammee(()), ooppeenn(()), cclloossee(()), rreeaadd(()), wwrriittee(()), llsseeeekk(()) and ffttrruunnccaattee(())). This problem is most likely device driver related, although nothing specific is known. Thanks to Timo, Stefan, Nate, Rodney, Soenke, Tero and Teng Thiam for their help in finding the problem. - Bug in emxlibcm <= 52 (don't know, what will happen later on): _fd_init() is not threadsafe, i.e. all callers too (open(), socket(), etc). Perhaps This is the cause of the trap problem above (not verified, rg120297) - Incomplete packets are now removed from the SSOOUUPP output. Problems appeared with aborted EMail reception (which writes directly into the SSOOUUPP output and not to a temporary). - --TT--11 no longer shows throughput info (see global options). - Signals were not initialized for mmttGGeettGGrroouupp(()) with option --SS22. - In SSOOUUPP ..\\RREEPPLLIIEESS the types ""bbnn""/""BBnn"" now override the message kind ""mmaaiill""/""nneewwss"", which is required for type ""uu"". - handling of ""mm"" and ""uu"" SSOOUUPP format in ..\\RREEPPLLIIEESS corrected (file positioning was wrong). - "ok, we've read enough..." now displays correctly. - %%-display with --SS11 reading strategy now (more) correct. - handling of "\r\n" delimited reply files corrected. - files are now opened with SH_DENYWR. - missing NNEEWWSSRRCC is no longer fatal (useful for initial setup). - other internal changes: - The threads are no longer killed through DDoossKKiillllTThhrreeaadd(()). Instead, threads are killing themselves (when they are detecting an abort condition) through SSIIGGUUSSRR11. Sockets are being set to OO__NNOONNBBLLOOCCKK to abort current requests. - aasssseerrtt((__hheeaappcchhkk(()) ==== __HHEEAAPPOOKK)) inserted in some places. - nnhhaannddlleess(()) aborts after checking 150 handles. VVeerrssiioonn  11..22..55  ((009911119966)) -------------------------------------------- - Improved Documentation, thanks to Barrie Smith. Documentation now in TXT and INF format available, thanks to eemmxxddoocc. - SSOOUUPP format for iimmppoorrtt has been changed: - ..\\SSTTSSMMAAIILL..MMSSGG has format ""mmnn"" (same as before) - from PPOOPP33 incoming Mails have format ""bbnn"": binary 8-bit clean mail format. This allows from headers in the first column of the mail, i.e. mail handling is now transparent (old was ""mmnn""). - news have format ""BBnn"": binary 8-bit clean news format (old was ""uunn"") To allow the conversion to the old format ConvSoup has been added. - Added OwnSoup which filters news articles containing a specific pattern into a mail folder. - Added QSoup to allow injection of messages into the SSOOUUPP reply packet. - YarnIo changes: - YarnIo now only zips the SSEENNDD packets (this is to allow re-edit of the replies). Received messages are imported via iimmppoorrtt --uu. If you have an older version of YARNIO.SET it must be updated. - YarnIo now supports OwnSoup. To allow operation of OwnSoup the entry pprreeIImmppoorrttPPrroogg has been added to YARNIO.SET. - YarnIo now supports up to nine NNNNTTPP servers for news reception and up to nine PPOOPP33 servers for EMail reception. - --TT--11 disables throughput check completely. - the _<_k_i_l_l_-_s_e_c_t_i_o_n_> for one _<_g_r_o_u_p_> can now be seperated, e.g. the kill file may now contain several ""aallll"" sections. - now article ranges are allowed in the sseennddmmee of ..\\CCOOMMMMAANNDDSS. This is a non-standard SSOOUUPP extension. - bug fixes: - hostname is now fetched through TCP/IP API, no longer from 'internet settings' - it was possible in --SS22 that during final catchup of articles the connections were changing group assignment on each fetched article - catchup did not work as expected. It sets the %%HHOOMMEE%%\\NNEEWWSSRRCC, so that in any case 'n' articles were read afterwards. Display now shows groupLo & groupHi - ^Z was not recognized correctly for %%HHOOMMEE%%\\NNEEWWSSRRCC & %HOME%\KILL - Now again linked dynamically, ths EEMMXX..DDLLLL and EEMMXXLLIIBBCCMM..DDLLLL are required - Lines containing a single '.' were aborting EMails, even if the '.' is actually doubled for transfer. Don't know if this is an SSMMTTPP bug. Appending a blank behind the '.' helped (i.e. ".. " is actually transferred to the SSMMTTPP server). For news articles it works without appending the blank. - sockets are now opened in text mode, because all the RFCs requires \r\n as a line delimiter. VVeerrssiioonn  11..22  ((006611009966)) ---------------------------------------- - first non-beta release - more detailed README - YarnIo enhanced (autodial, disabling specific actions, configuration file, ...) - some changes/enhancements/extensions in ..\\SSTTSSMMAAIILL..MMSSGG, e.g. command line parameters are contain, important server names too... (useful for debugging) - if supported by the NNNNTTPP server, the XHDRs are retrieved to determine holes in the article sequence - throughput check (-T option) now replaces the old timeout detection. It is now working for all operations. - news reading, strategy parameter: --SS00 groups are read sequentially, i.e. all threads are fetching articles from only one group --SS11 the next group will be accessed, if one thread goes into waiting state - only small modification of the above --SS22 it is tried, to keep all threads busy. I.e. each thread accesses one dedicated group, groups are read parallel (if there are no more groups to access, the waiting threads are used for parallel reading from one group) - more robust (but slower) reading of %HOME%\KILL and %%HHOOMMEE%%\\NNEEWWSSRRCC. Because it is slower: clean-up your %%HHOOMMEE%%\\NNEEWWSSRRCC from time to time, if you are using the --aa option - bug fixes: - 'internet connection' settings were never ignored (--ii did not work) - some very minor bug fixes for handling of broken connections - under some circumstances broken SSMMTTPP connection did not produce an error condition - bug in kill file handling fixed (trailing blanks in line were not accepted). Lines in the kill file can now be outcommented through a '#' as the first non-blank character - if getArticle() fails, the according connection will be marked as failed. This lets VVSSoouupp die gracefully, if single connections are cancelled (by whom?) - signal handling changed: VVSSoouupp tries (!) to kill the sub-threads - number of file handles provided by eemmxx is now checked - now compiled with eemmxx0099cc. During this 'port' it became obvious, that streams are not appropriate. Thus all file i/o is done directly via handles (class TFile in mts.cc) VVeerrssiioonn  11..11áá  ((001100999966)) ------------------------------------------ - first public beta - if NNNNTTPP server knows nothing about DATE command, the internal clock will be taken as a reference (required for --aa cmd option only) - 'AUTHINFO USER' / 'AUTHINFO PASS' for nntp server implemented (RFC977 extension). Call VVSSoouupp simply with the nntp-URL nntp://user:passwd@nntpserver - NNNNTTPP NEXT will only be done, if there is a bigger gap between the articles - bug in socket.cc ((char)0xff == (int)-1 !!!) VVeerrssiioonn  11..00áá  ((001100889966)) ------------------------------------------ - Program is now named VVSSoouupp. I am sorry, but the program again requires the eemmxx DLLs (to my opinion no disadvantage, because most of the people will have them anyway). Also there is no support for Win95 (this was not intended and I am not sorry, but I have no Win95 system - and I am happy about that ;-) - Program is now multithreaded for news reading. This gives a speed gain of 200%-500% depending on the overall speed of the connection and the number of threads; on the other hand multiple connections have a communication overhead (i.e. the connections must be established, the groups selected). Estimated loss is around 5%... - Return codes are now much more consistent: on failure an EXIT_FAILURE (1) is returned, on success EXIT_SUCCESS (0) - On failure a status mail is generated. Most of the console messages are redirected into this status mail. The generation of the mail can be forced thru cmd option --MM - If file %%HHOOMMEE%%\\NNEEWWSSTTIIMMEE does not exist, the complete newsgroup list is retrieved from the news server (NNNNTTPP LIST) - Kill files may have comments ('#' in the first position of a line). This is very beta... - Readonly mode is now much more consistent (%%HHOOMMEE%%\\NNEEWWSSTTIIMMEE is not updated, also the sent articles are not deleted) - the default maximum packet size has been changed to unlimited - Small bug in %%HHOOMMEE%%\\NNEEWWSSRRCC handling found (firstUnread was wrong sometimes) - automatic timeout for NNNNTTPP reception 1122  FFAAQQ ============ This sections contains several frequently questions and the corresponding answers. The questions are: ---------------------- WWhhyy ddoo II ggeett ssoommeetthhiinngg lliikkee ''00000000000022..mmssgg:: TToooo mmaannyy ooppeenn ffiilleess''?? and the related question II aamm ggeettttiinngg tthhee mmeessssaaggee ''......nnuummbbeerr ooff tthhrreeaaddss ccuutt......''.. WWhhaatt ddooeess iitt mmeeaann?? VVSSoouupp needs a lot of open file handles. The YarnIo script provides these automatically, but if you are not using this script then it is recommended that you add the following line to your CCOONNFFIIGG..SSYYSS: SSEETT EEMMXXOOPPTT==--hh4400 --cc --nn. This allows 40 open file handles which should be enough. ---------------------- WWhhyy iiss mmyy nneewwss rreecceeppttiioonn ggeettttiinngg ssttuucckk ssoommeettiimmeess?? One common reason is that you are using the wrong (too old) version of the emx-runtime-DLLs. Check them with eemmxxrreevv (should show revisions >= 50) and update them if required. Also you have to avoid a mixture of eemmxx runtime DLLs. ---------------------- AArree tthheerree aannyy ssppeecciiffiicc pprroobblleemmss wwiitthh tthhee ddiiffffeerreenntt vveerrssiioonnss ooff tthhee eemmxx rruunnttiimmeess?? Unfortunately there are! The revision of the runtime DLLs can be obtained via the command eemmxxrreevv. Only the revision numbers of eemmxx..ddllll and eemmxxlliibbccmm..ddlll are important for VVSSoouupp. revision < 40 No way, because nothing of the TCP/IP stuff is included in the C library. revision < 50, >= 40 This is not recommended, although it should work because VVSSoouupp serializes most of the calls to the C library. Nevertheless you should use the newest available revision of the eemmxx0099bb runtimes, because there were many changes/bugfixes in the TCP/IP part. revision = 50 (also > 50) Check the setting of the environment variable TTZZ. It should/must contain a value which is acceptable for the eemmxx C library. Otherwise you will get an SYS3175. Revisions > 50 will not crash due to incorrect setting of TTZZ, anyway they cannot interprete the variable correctly. ---------------------- II ccaannnnoott rreecceeiivvee EEMMaaiill ffrroomm mmyy PPOOPP33 sseerrvveerr?? - Check, if your UserId/Password settings are ok - Check, that your %%EETTCC%%\\SSEERRVVIICCEESS file contains the following lines (see also Installation): pop3 110/tcp #Post Office Protocol - Version 3 pop3 110/udp #Post Office Protocol - Version 3 - Alternatively you can insert the port number in the command line PPOOPP33 URL. ---------------------- II hhaavvee aannootthheerr EEMMaaiill pprrooggrraamm.. TThheerreeffoorr II''dd lliikkee ttoo ddiissaabbllee tthhee RRCCVVMMAAIILL ffeeaattuurree ooff YYaarrnnIIOO.. HHooww ddoo II ddoo tthhiiss?? You simply have to set ssoouuppRRccvvMMaaiill in YARNIO.SET to '' (the empty string). ---------------------- GGiivvee mmee ssaammppllee ssccrriippttss ffoorr ssiimmppllee VVSSoouupp IIOO ooppeerraattiioonn.. Simple Reception: Because this is a simple approach, NNEEWWSSRRCC & SSCCOORREE resides in the %%HHOOMMEE%% directory. - change to a directory for IO operation, e.g. cc::\\vvssoouupp. - call VVSSoouupp, e.g. vsoup -M nntp://your.news.server pop3://your.pop3.server The output of the VVSSoouupp operation will be in the current directory, i.e. in cc::\\vvssoouupp in this example. If your 'internet settings' are setup correctly by your dialer, you could omit the nnnnttpp:://// and ppoopp33:://// specifications in the command line. - feed the received news/EMails and the by VVSSoouupp generated status mail into the database of your newsreader. For YYaarrnn the iimmppoorrtt program will be used (e.g. iimmppoorrtt --uu). If you are using different programs for handling news/EMails, you could do two sequential invocations of VVSSoouupp: vsoup -Mm nntp://your.news.server handle_news_import vsoup -Mn pop3://your.pop3.server handle_mail_import Of course this VVSSoouupp instances could also be started parallel through e.g.: start do_news_reception start do_mail_reception This approach requires a little bit more effort than the sequential one. Check YarnIo as an example. Simple Transmission: - change to the directory where your reply packets (e.g. rreeppllyy..zziipp) reside. If they are zipped (or packed in another way), you have to unzip/unpack them before VVSSoouupp will be called (e.g. uunnzziipp --ooqq rreeppllyy..zziipp && ddeell rreeppllyy..zziipp). - call VVSSoouupp, e.g. vsoup -Ms nntp://your.news.server smtp://your.mail.gateway Failure of transmission should be handled in a proper way, e.g. if ..\\RREEPPLLIIEESS still exists, you have to rezip the not transmitted news/mails (for YYaarrnn IO you have to invoke zziipp --00mm rreeppllyy..zziipp rreepplliieess nneewwss..mmssgg mmaaiill..mmssgg). If your 'internet settings' are setup correctly by your dialer, you could omit the nnnnttpp:://// and ssmmttpp:://// specifications in the command line. - handle the by VVSSoouupp generated status mail (e.g. iimmppoorrtt --uu for YYaarrnn IO). If you are using different programs for handling news/mail, you could do two sequential invocations of VVSSoouupp or you could start two VVSSoouupp parallel (see above). IIOO  ffoorr  YYaarrnn  wwiitthh  ssiimmppllee  ssccrriippttss -------------------------------------------------------------- We assume, that the IO subdirectory is at cc::\\vvssoouupp, the news/EMail reader/writer is YYaarrnn and the server URLs are taken from the 'internet settings', a status mail is generated by VVSSoouupp, the reply packet is stored by YYaarrnn to cc::\\vvssoouupp\\rreeppllyy..zziipp, the NNEEWWSSRRCC & SSCCOORREE (if one exists) are located in %%HHOOMMEE%%: Script for simple reception: c: cd \vsoup vsoup -M import -u Script for simple transmission: c: cd \vsoup unzip -oq reply del reply.zip vsoup -Ms import -u zip -0m reply replies news.msg mail.msg ---------------------- VVSSOOUUPP..TTXXTT ccoonnttaaiinnss ssttrraannggee cchhaarraaccaatteerrss.. WWhhaatt''ss wwrroonngg?? VVSSOOUUPP..TTXXTT uses some kind of poor (wo)mans highlighting. This is obtained through backspacing and overwriting in the ASCII file. Some Viewers or Editors are not capable of handling such files correctly (GGNNUUs LLeessss can do it). Solution is to remove the highlighting with the small script RmHigh. ---------------------- GGiivvee mmee aann eexxaammppllee ssccoorreeffiillee!!?? Here you are: # this is a scorefile for VSoup # all { -1 header microsoft -1 pattern from bill.*gates } all { -1 pattern subject make.*money -1 pattern subject \$\$\$ -1 x-newsreader forte agent } comp.os.os2.mail-news { -1 subject ultimail -1 subject netscape -1 subject help: } .*binaries.* { -1 lines < 50 -1 lines > 3000 } comp\..* { -1 lines > 99 } - First group would kill messages in aallll newsgroups which have - the word mmiiccrroossoofftt somewhere in the header, - or are ffrroomm a guy with a bbiillll-pattern followed somewhere by a ggaatteess pattern, - Second group would again kill messages in aallll newsgroups which have - mmaakkee followed by mmoonneeyy in the ssuubbjjeecctt, - or contain three consecutive $$$$$$ in the ssuubbjjeecctt, - or contain ffoorrttee aaggeenntt in the xx--nneewwssrreeaaddeerr header line. - Third group would kill messages in the ccoommpp..ooss..ooss22..mmaaiill--nneewwss group which have ssuubbjjeecctt lines containing the words uullttiimmaaiill, nneettssccaappee or hheellpp::. - Forth group would kill articles in newsgroups matching ..**bbiinnaarriieess..**, if they contain less than 50 lines or more than 3000 lines. - Fifth group would kill articles in newsgroups matching ccoommpp\\....**, if they contain more than 99 lines. Note, that the newsgroup ccoommpp..ooss..ooss22..mmaaiill..nneewwss will match both the third and the fifth group! Also check scorefile explanation and the regular expression syntax. ---------------------- HHooww ttoo kkiillll hheeaavviillyy ccrroossssppoosstteedd aarrttiicclleess ((aanndd tthhuuss aavvooiidd ssppaammss vveerryy lliikkeellyy))?? Add the following to your score file: # this kills articles posted to more then 4 groups # all { -1000 pattern newsgroups ,.*,.*,.*, } ---------------------- HHooww ttoo ccoonnvveerrtt mmyy oolldd kkiillll ffiillee ttoo tthhee nneeww ssccoorree ffiillee ffoorrmmaatt?? Two rules (but no script...): - insert ""--11"" at the beginning of each rule, - if the pattern on the right side contains a regular expression insert ""ppaatttteerrnn"" behind the ""--11"". ---------------------- II hhaavvee 88 ccoonnnneeccttiioonnss rreeqquueesstteedd ffoorr nneewwss rreecceeiivviinngg ((wwiitthh tthhee --tt88 ooppttiioonn)),, bbuutt tthhee ssttaattuuss mmeessssaaggee ssaayyss tthhaatt oonnllyy 33 tthhrreeaaddss wweerree ccoonnnneecctteedd ssuucccceessssffuullllyy.. WWhhaatt''ss wwrroonngg?? Nothing! Sometimes it takes very long to establish a connection to the news server which means that VVSSoouupp has finished before all requested threads have been connected. It is also possible that a news server might restrict the number of simultaneous connections by one user. I have not heard of this happening, but who knows! ---------------------- II aamm ggeettttiinngg mmaaiillss,, wwhhiicchh aaccttuuaallllyy sseeeemmss ttoo bbee nneewwss aarrttiicclleess!!?? You are using OwnSoup somewhere. If you are using YarnIo for you I/O operations, check in YARNIO.SET the pprreeIImmppoorrttPPrroogg line, which should either be empty ('') or should contain arguments to match your needs (not MMIINNEE as the settings reflect in the sample YARNIO.SET in the archive). ---------------------- II aamm uussiinngg YYAARRNNIIOO..SSEETT.. HHooww ccaann II sseettuupp mmoorree tthhaann oonnee ffiilltteerr wwiitthh OOwwnnSSoouupp?? You have to use the command concatenator in the pprreeIImmppoorrttPPrroogg line of YARNIO.SET, e.g. preImportProg = 'ownsoup -q rgriech stuff4me OwnTemp' preImportProg = preImportProg '&& ownsoup -bq vsoup vsoupstuff VsTemp' This example will search for ""rrggrriieecchh"" in header and body and additionally for ""vvssoouupp"" in the body section of the news articles. In a second step you have to setup the corresponding mail filter with the YYaarrnn ffiilltteerr program. ---------------------- HHooww ttoo mmoovvee tthhee VVSSoouupp ssttaattuuss mmaaiillss iinnttoo aa ppsseeuuddoo nneewwssggrroouupp?? - create a newsgroup with the YYaarrnn utility nneewwggrroouupp, e.g. newgroup VSoupStatus 3 This will create the group VVSSoouuppSSttaattuuss with three days expiration time. - Setup a filter with the YYaarrnn ffiilltteerr. The filter parameters are as follows: Ú Mail Rule ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ Rule name: VSoup Status ³ ³ ³ ³ Search in: ( ) From ³ ³ (*) To ³ ³ ( ) Subject ³ ³ ( ) Header ³ ³ ( ) Body ³ ³ ( ) Header and body ³ ³ ³ ³ Search for: vsoupuser ³ ³ Match case: No ³ ³ ³ ³ Action: (*) Move to folder/newsgroup: VSoupStatus ³ ³ ( ) Delete ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ From now on the VVSSoouupp status mails are put into the newsgroup VVSSoouuppSSttaattuuss. Because the SSuubbjjeecctt:: header also contains the server names, YYaarrnn will automatically sort the status mail/news by action. ---------------------- HHooww ddoo II ggeett aa lliissttiinngg ooff aallll aavvaaiillaabbllee nneewwssggrroouuppss?? Delete the file NNEEWWSSTTIIMMEE in the directory of your NNEEWWSSRRCC file and call VVSSoouupp with the --aa option the next time. After that you will get a status mail and the available groups are appended to your NNEEWWSSRRCC file. Note that groups already contained in NNEEWWSSRRCC will not appear in the status mail. ---------------------- HHooww ttoo cclleeaann uupp tthhee NNEEWWSSRRCC ffiillee?? After a while the NNEEWWSSRRCC will contain many unsubscribed groups if VVSSoouupp will be called with the --aa option. You can get rid off those unsubscribed groups with the following commands: cd 'directory of newsrc' find ":" < newsrc > newsrc.tmp copy newsrc.tmp newsrc del newsrc.tmp ---------------------- HHooww ttoo ssuubbssccrriibbee ttoo aa nneewwssggrroouupp?? - Open the NNEEWWSSRRCC file of the NNNNTTPP server you like to add an subscription, - add the line GGrroouuppYYoouuLLiikkeeTTooSSuubbssccrriibbee:: to the file. On the next import to YYaarrnn, iimmppoorrtt will add the new group to the %%YYAARRNN\\AACCTTIIVVEE file automatically with defaults specified in the %%HHOOMMEE%%\\YYAARRNN\\CCOONNFFIIGG file (kkeeeepp and mmaaxx--kkeeeepp entries). It is not required to invoke the YYaarrnn nneewwggrroouupp command. The new group will also appear in the nneewwssggrroouupp sseelleeccttiioonn lleevveell of YYaarrnn. Keep in mind that there are several NNEEWWSSRRCC files! Some of them are used by VVSSoouupp (especially if you access multiples NNNNTTPP servers), others are used by YYaarrnn (i.e. %%HHOOMMEE%%\\YYAARRNN\\NNEEWWSSRRCC). ---------------------- HHooww ttoo uunnssuubbssccrriibbee aanndd ddeelleettee aa nneewwssggrroouupp?? - Delete the newsgroup from the corresponding NNEEWWSSRRCC file, - if you have one single NNEEWWSSRRCC file or multiple NNEEWWSSRRCC files and none of them contains any longer the respective group you could delete the newsgroup from the %%YYAARRNN%%\\NNEEWWSS..DDAATT database with the YYaarrnn rrmmggrroouupp command. ---------------------- CCaann II aabboorrtt VVSSoouupp ooppeerraattiioonn ssaaffeellyy?? Yes, it is safe to abort VVSSoouupp by ^C or ^BREAK. The following takes place: News reception: VVSSoouupp will save the current NNEEWWSSRRCC contents and the articles are stored after the reception of each single article into the corresponding ..\\0000**..MMSSGG file. The ..\\AARREEAASS file will be left in a proper state for import. EMail reception: The QUIT command will not be sent to the PPOOPP33 server, which means that the mailbox will not be emptied which again means that when you next call you will get the already received EMails of the aborted VVSSoouupp session again. News transmission: Double sent articles are detected by the news server and will be rejected by it. This special type of rejection (435 & 437 error number in NNNNTTPP reply) will be considered by VVSSoouupp as a non-error condition, thus the articles are handled as having been successfully delivered (which in fact they are). EMail transmission: If the VVSSoouupp session has been aborted during EMail transmission, the whole EMail batch will be resent. ---------------------- CCaann yyoouu sshhooww mmee tthhee ''ddiiffff'' bbeettwweeeenn yyoouurr sseennddmmaaiill..ccff aanndd tthhee oorriiggiinnaall sseennddmmaaiill..uummll?? Of course, but you should be capable of reading 'diffs'. Also be aware, that sseennddmmaaiill requires tabs as delimiter between the ruleset fields. *** sendmail.uml Tue Oct 3 23:09:04 1995 --- d:sendmail.cf Sat Nov 9 19:20:30 1996 *************** *** 1,3 **** --- 1,7 ---- + Cwswol.de + Dwswol.de ######################################################################### # # # Sendmail # *************** *** 102,108 **** # # If macro R is undefined, then mail for internal destinations will be # delivered directly ! DDYour.Domain # Internal, directly connected domains # --- 106,112 ---- # # If macro R is undefined, then mail for internal destinations will be # delivered directly ! DD # Internal, directly connected domains # *************** *** 154,160 **** # SMTP read timeout Or15m # Queue directory - this must be changed if TCP/IP is moved! ! OQC:\MPTN\ETC\mqueue # Always queue for safety Os # Time to live in the queue --- 158,164 ---- # SMTP read timeout Or15m # Queue directory - this must be changed if TCP/IP is moved! ! OQd:\ETC\MQUEUE # Always queue for safety Os # Time to live in the queue *************** *** 173,179 **** # HReceived: $?sfrom $s $.by $j ($v/$Z) id $i; $b H?D?Date: $a ! H?F?From: $q H?M?Message-Id: <$t.$i@$j> H?D?Resent-Date: $a H?F?Resent-From: $q --- 177,183 ---- # HReceived: $?sfrom $s $.by $j ($v/$Z) id $i; $b H?D?Date: $a ! H?F?From: Hardy Griech H?M?Message-Id: <$t.$i@$j> H?D?Resent-Date: $a H?F?Resent-From: $q *************** *** 297,302 **** --- 301,307 ---- R$* : $* ; $#error $@ USAGE $: "list:; syntax illegal for... R<@ $+> $#error $@ USAGE $: "user address required" R<$* : $* > $#error $@ USAGE $: "colon illegal in host name part" + R$+<@$+> $#local $:$1 # handle numeric address spec R$* < @ [ $+ ] > $* $#smtp $@ [$2] $: $1 < @ [$2] > $3 numeric... *************** *** 387,393 **** # Msmtp, P=[IPC], F=mDFMuX, S=10, R=0, A=IPC $h ! Mlocal, P=C:\TCPIP\UMAIL\UMAILER.EXE , F=lsm, S=10, R=0, A=-dest C:\TCP... Mprog, P=xxx, A=Required by sendmail but unused --- 392,398 ---- # Msmtp, P=[IPC], F=mDFMuX, S=10, R=0, A=IPC $h ! Mlocal, P=d:\b\32\qsoup.exe , F=lmnDFM, S=10, R=0, A=-m -i $u Mprog, P=xxx, A=Required by sendmail but unused ---------------------- CCaann II uussee VVSSoouupp ttooggeetthheerr wwiitthh CChhaannggii?? Yes, you can use VVSSoouupp as the news feeder for CChhaannggii. For reply transmission CChhaannxx must still be used. The following setup should work: - setup VVSSoouupp for news reception as described in the installation section, - after VVSSoouupp operation ConvSoup must be called, which converts the ..\\0000**..MMSSGG from binary format to the UUSSEENNEETT batch format, - then do a ccooppyy 0000**..mmssgg aallll__iinn__oonnee, - then call the CChhaannggii RRNNeewwss with aallll__iinn__oonnee as input file. The above is not tested! If anybody likes to confirm the procedure, please send me an EMail. Anyway the ..\\SSTTSSMMAAIILL..MMSSGG is not handled by the above procedure. Remark: The question 'why should I use VVSSoouupp together with CChhaannggii?' is triggered by the fact that several news servers do not allow the NEWNEWS command, which is used by CChhaannxx for multithreaded news reception. ---------------------- CCaann II uussee VVSSoouupp ttooggeetthheerr wwiitthh aannootthheerr oofffflliinnee nneewwssrreeaaddeerr tthhaann YYaarrnn//CChhaannggii?? VVSSoouupp can be used as news/mail client for all offline newsreaders which expect SSOOUUPP format as input and generate articles in SSOOUUPP format on the output side. Perhaps ConvSoup has to be used to convert the received messages into the correct data format known by your newsreader. For squish based newsreader there exists a free converter which makes VVSSoouupp usable also for people prefering such readers. Reports of successfully combining VVSSoouupp with other newsreaders than YYaarrnn and the corresponding recipes are highly welcome and (c|sh)ould be submitted to rgriech@swol.de. ---------------------- WWhheerree ttoo oobbttaaiinn mmoorree iinnffoorrmmaattiioonn aabboouutt SSOOUUPP?? For more information about SSOOUUPP refer to Soup12.Html which can be found on the net, e.g. at http://www.eden.com/~combee/soup12.html. ---------------------- WWhheerree aarree tthhee iinntteerrnneett ssttaannddaarrddss ddeessccrriibbeedd?? The internet standards are described in Request For Comment documents (RFC). VVSSoouupp uses the NNNNTTPP, PPOOPP33 and SSMMTTPP standards. A good starting point for RFC reading is e.g. http://ds2.internic.net/ds/rfc-index.html. RFCs of interest are: RFC821 Simple Mail Transfer Protocol, RFC822 Standard for the format of ARPA Internet text messages, RFC977 Network News Transfer Protocol, RFC1036 Standard for interchange of UUSSEENNEETT messages, RFC1460 Post Office Protocol - Version 3. ---------------------- WWhheerree ttoo oobbttaaiinn tthhee llaatteesstt vveerrssiioonn ooff VVSSoouupp?? I will upload public releases of VVSSoouupp to ffttpp..ccddrroomm..ccoomm, ffttpp..lleeoo..oorrgg and ffttpp--ooss22..nnmmssuu..eedduu (Hobbes). The corresponding URLs are: - ftp://ftp.leo.org/pub/comp/os/os2/leo/tcpip/news/vsoup*.zip - ftp://ftp.cdrom.com/pub/os2/new/vsoup*.zip, later on it can be found at ftp://ftp.cdrom.com/pub/os2/internet/vsoup*.zip. - ftp://ftp-os2.nmsu.edu/new/vsoup*.zip, later on it can be found at ftp://ftp-os2.nmsu.edu/os2/internet/vsoup*.zip. Version notification will take place in the YYaarrnn mailing list. The current update frequency is at about one release per month. But this will stabilize in the very near future (09-Nov-1996). EExxppeerriimmeennttaall versions can be downloaded from http://privat.swol.de/ReinhardGriech/vsoup.zip. VVeerryy eexxppeerriimmeennttaall - one could say: alphas - can be obtained from http://privat.swol.de/ReinhardGriech/vsoupbeta.zip. Content of both archives is only an executable of VVSSoouupp. The alpha version could contain perhaps some debugging output. NNeeiitthheerr tthheerree iiss aa gguuaarraanntteeee tthhaatt vveerrssiioonnss ddoowwnnllooaaddeedd ffrroomm tthhiiss ssiittee wwiillll wwoorrkk,, nnoorr wwiillll tthheeyy bbee ssuuppppoorrtteedd iinn aannyy wwaayy ffrroomm mmyy ssiiddee (if anybody likes to call that support...). ---------------------- WWhheerree ttoo oobbttaaiinn tthhee llaatteesstt vveerrssiioonn ooff YYaarrnn?? Best place to check is http://www.vex.net/yarn/. For notification about new versions check the YYaarrnn mailing list. ---------------------- HHooww ttoo ssuubbssccrriibbee ttoo tthhee YYaarrnn mmaaiilliinngg lliisstt?? To subscribe to the mailing list, mail a message to listproc@lists.colorado.edu. The body of the message should be the line ssuubbssccrriibbee yyaarrnn--lliisstt YYoouurr FFuullll NNaammee, assuming YYoouurr FFuullll NNaammee is your full name. If it isn't, substitute your own name.