@DATABASE "changes.guide"
@NODE "MAIN" "CNet Changes/Readme"
@TOC "MAIN"

         @{b}-= CNET AMIGA PROFESSIONAL BULLETIN BOARD SYSTEM V4.X =-@{ub}

         Continued development by @{" Ray Akey " LINK "RAY1"} and @{" Todd H. Knight " LINK "TODD1").

          Now coded by Ray Akey under the auspices of @{" ZenMetal " LINK "ZENMETAL"}.

                                @{"     News     " LINK         "NEWS"}

   @{" Changes v4.1                 " LINK    "CHANGES41A"}        @{" Changes v4.11                " LINK   "CHANGES411B"}
   @{" Changes v4.12a               " LINK   "CHANGES412A"}        @{" Changes v4.12c               " LINK   "CHANGES412C"}
   @{" Changes v4.12d               " LINK   "CHANGES412D"}        @{" Changes v4.13                " LINK    "CHANGES413"}
   @{" Changes v4.13b               " LINK   "CHANGES413B"}        @{" Changes v4.20                " LINK    "CHANGES420"}
   @{" Changes v4.21                " LINK    "CHANGES421"}        @{" Changes v4.22                " LINK    "CHANGES422"}
   @{" Changes v4.23                " LINK    "CHANGES423"}        @{" Changes v4.24                " LINK    "CHANGES424"}
   @{" Changes v4.24a               " LINK   "CHANGES424a"}        @{" Changes v4.24d               " LINK   "CHANGES424d"}
   @{" Changes v4.24e               " LINK   "CHANGES424e"}        @{" Changes v4.24f               " LINK   "CHANGES424f"}
   @{" Changes v4.24g               " LINK   "CHANGES424g"}        @{" Changes v4.24h               " LINK   "CHANGES424h"}
   @{" Changes v4.25                " LINK    "CHANGES425"}        @{" Changes v4.25a               " LINK   "CHANGES425a"}
   @{" Changes v4.26a               " LINK   "CHANGES426a"}        @{" Changes v4.26b               " LINK   "CHANGES426b"}
   @{" Changes v4.26c               " LINK   "CHANGES426c"}        @{" Changes v4.26d               " LINK   "CHANGES426d"}
   @{" Changes v4.26dR2             " LINK "CHANGES426dR2"}        @{" Changes v4.26eR1             " LINK "CHANGES426eR1"}
   @{" Changes v4.26f               " LINK   "CHANGES426f"}        @{" Changes v4.26g               " LINK   "CHANGES426g"}
   @{" Changes v4.26h               " LINK   "CHANGES426h"}        @{" Changes v4.26i               " LINK   "CHANGES426i"}
   @{" Changes v4.26j               " LINK   "CHANGES426j"}        @{" Changes v4.26k               " LINK   "CHANGES426k"}
   @{" Changes v4.27                " LINK    "CHANGES427"}        @{" Changes v4.27a               " LINK   "CHANGES427a"}
   @{" Changes v4.27b               " LINK   "CHANGES427b"}        @{" Changes v4.28                " LINK    "CHANGES428"}
   @{" Changes v4.28a/b             " LINK   "CHANGES428b"}        @{" Changes v4.28c/d             " LINK   "CHANGES428d"}
   @{" Changes v4.29a               " LINK   "CHANGES429a"}        @{" Changes v4.29c               " LINK   "CHANGES429c"}
   @{" Changes v4.31/4.32           " LINK    "CHANGES431"}        @{" Changes v4.33                " LINK    "CHANGES433"}
   @{" Changes v4.33-4.35           " LINK    "CHANGES435"}        @{" Changes v4.36                " LINK    "CHANGES436"}
   @{" Changes v4.37                " LINK    "CHANGES437"}        @{" Changes v4.38                " LINK    "CHANGES438"}
   @{" Changes v4.39                " LINK    "CHANGES439"}        @{" Changes v4.40                " LINK    "CHANGES440"}
   @{" Changes v4.41/4.42           " LINK    "CHANGES441"}        @{" Changes v4.43                " LINK    "CHANGES443"}
   @{" Changes v4.44                " LINK    "CHANGES444"}        @{" Changes v4.45                " LINK    "CHANGES445"}

   @{" Future Notes                 " LINK        "FUTURE"}        @{" Important Addresses/Numbers  " LINK     "ADDRESSES"}

@{b}---@{ub}
Amiga, C=, Commodore and Amiga Technologies are trademarks of Gateway 2000.
SAS/C is Copyright © 1988-1995 SAS Institute, Inc.
CNet Amiga is trademark and © ZenMetal Software.

-- All CNet changes/documentation written and updated by Ray A. Akey

@ENDNODE

@NODE "NEWS" "News"

                      @{b}NEWS OF CNET AMIGA V4.X@{ub}

10-Jan-98
---------
We now have a new domain, "cnetbbs.net" which is our own CNet BBS domain.
CNet systems worldwide can be reached through cnetbbs.net.  If you would like
your system listed as a machine on our domain, please contact rakey@cnetbbs.net
for more information. A list of cnet systems on this domain will be listed in
the near future.

   We also have some new e-mail support addresses, as follows:

   bugs@cnetbbs.net ................... bug-reports
   suggestions@cnetbbs.net ............ ideas and sugestions for the future
   rakey@cnetbbs.net .................. Ray Akey's (mine) personal e-mail address
   thknight@cnetbbs.net ............... Todd Knight's personal email address

...to quote a line from one of my favorite movies, "They're heeeeeeeeeere!"

@ENDNODE


@NODE "CHANGES445" "Changes V4.45"

                             Changes for v4.45
                             -----------------

1.  Increased efficiency of initial account caching during Control boot.

2.  Fixed the infamous OLx!;blah;EU;FIx bug.

3.  Corrected some subboard path conflicts that could cause crashes or possibly
    corrupt item data files.

4.  Began internal telnetd code.

5.  Release v4.45 prematurely (before telnetd completion) so sysops may once
    again have a stable release to work with.

6.  Various vote fixes made by Kelly Cochran (vote is his baby ;)

7.  Changes to the following vote-related BBSTEXT lines:

	1526:You do not have access to add vote topics.n1
	1547:n1Kill topic %d (%s): are you sure [Y/n]? ?1
	1572:n1Topic %d does not exist.n1
	1581:Maximum # of choices (minimum 2): 
	1582:Number of floats: 	
	1584:You do not have access to examine vote topics.n1
	1593:n1Topic %d does not exist.n1
	1594:         %3d %sn1
	1599:n1Invalid topic %dn1

@ENDNODE


@NODE "CHANGES444" "Changes V4.44"

                             Changes for v4.44
                             -----------------

1.  Fixed GETUSER 13/14 (z->MyMail and z->MyNewMail) updating when mail items
    are moved or deleted from INBOX.

2.  Fixed a bug that may have caused crashes/software failures when
    ^C was used to interrupt NNTPGet.

3.  Sum of file sizes in each subboard now displayed when entering a file
    area.

4.  Changes to BBSTEXT lines 817-818

       817:c7: c5%4d c7file  (%ld bytes) 
       818:c7: c5%4d c7files (%ld bytes) 

5.  Account cacheing addded to CNet to provide faster loading of user accounts
    and generally faster operation of mail, news and file posting and any
    activities which reference user/account data..

6.  Cache size configuration options added to CNet Config/Limits.  You may
    specify a number of accounts to be dynamically cached or check "Cache all"
    to have all accounts cached.  For maximum efficiency, if you have the RAM
    to spare, cache all accounts; otherwise specify a number of accounts to
    cache where each cached account (currently) = 686 bytes.
    
       eg. a cache setting of 50 would use a maximum of 38300 bytes of
           memory at all times; assuming there are at least 50 users in your
           system user data. Note that this figure could change in the future
           as other data is added to the CNet UserData structure.

7.  The following functions are new to cnet.library:

       struct CNUserCache *UCacheInitUser(short account);
       
         Initializes a cache entry for the user belonging to the specified account.
         Do NOT call this function on a previously initialized user.  Check
         for this case by using UCacheLookup() first.

         Returns:

              pointer to struct CNUserCache on success.
              NULL on failure.
       
       struct CNUserCache *UCacheLookup (short account);

         Obtain the existing cache entry for the specified user account.

         Returns:

              pointer to struct CNUserCache if user is already cached.
              NULL if user is not cached.

       short UCacheRead ( short account, struct UserData *user, short numaccounts);

              Read a sequential block of user accounts from the CNet user
              cache.

              This function will be later expanded to support random
              block access via CNet range format.

              If a user is not already cached, it will be cached and a pointer
              to the the cache entry returned.

              tips: specify numaccounts=1 to read a single account.

                    To read a BLOCK of accounts, the "user" variable must be a
                    block of memory at least as large as
                    numaccounts*sizeof(struct UserData)

       short UCacheWrite ( short account, struct UserData *user, short numaccounts);

              Write a sequential block of user accounts to the CNet user cache.

              If a user is not already cached, it will be cached and return a
              pointer the the updated cache entry.

              tips: specify numaccounts=1 to write a single account.

                    To write a BLOCK of accounts, the "user" variable must be a
                    block of memory at least as large as
                    numaccounts*sizeof(struct UserData)

       void UCacheDispose(void);

              Under normal usage, this function should never be required and
              its use other than for CNet shutdown purposes will most likely
              degrade system performance.

              Control calls this function to free all cache memory before
              exiting.

       Note that the user cache is PRIVATE data.  You cannot safely "walk"
       the user cache list as it is private cnet.library memory.  You CAN
       "emulate" walking the cache/userlist by using UCacheLookUp() in a loop
       from 1 to myp->Nums[0]

       Note that LockAccount() and UnLockAccount() support CNet cache
       functions.  You are not required to use the above functions if
       you only wish to lock, access/copy and then unlock user data.

       The CNUserCache structure can be found in SDK/include/users.h.

8.  AMaint now filters MCI in logged subboard names.

@ENDNODE


@NODE "CHANGES443" "Changes V4.43"

                             Changes for v4.43
                             -----------------

UPDATE NOTE:   IF YOU HAVE NOT **PREVIOUSLY** DONE SO, RUN THE UPDATE
               EXECUTABLE CNET:UPDATE/442 IN AN AMIGADOS SHELL AFTER
               INSTALLING EITHER CNET VERSION 4.42 or 4.43.

UPDATE NOTE 2: YOU MUST RUN THE AMIGADOS EXECUTABLE CNET:UPDATE/443 IN
               AN AMIGADOS SHELL AFTER INSTALLING BUT BEFORE RUNNING CNET
               VERSION 4.43.

1.  #?-task iconify/menufy and window positions are now only saved when
    the Control screen menu WRITE SETUP is selected.  This means, you position
    your task GUIs where you want them, iconify, menufy or leave the windows
    open and then select the Control WRITE SETUP menuitem and the states of the
    tasks are saved.

2.  Fixed garbage text that was printed when "DS" is used.

3.  Fixed file selecting in DM/DMaint/CNetCommander.

4.  Mail-task ARexx port fixed.

5.  Corrected a typo in the CNET:REXX/#?mailtask#? scripts where the mail-task
    ARexx port was wrongly addressed as MAILTASK_RX instead of MAILTASK_RX.1

6.  Added LOCAL VIEWER string to Archiver configuration.  If this setting is
    not empty and the online user is in LOCAL MODE, the command used here will
    be used to view/examine a file when the [E]xamine command is used within
    CNet and CNetCommander.

    For example, you may set up a .guide ArcType and have the local viewer
    set as "MultiView %s" for OS3+ or "AmigaGuide %s" for OS2.1+.  When a
    .guide file is examined, Multiview or AmigaGuide will be used to view the
    file.  When regular remote online users use examine, the archive will be
    examined using the regular archive view command.

7.  ViewTypes added to Archiver View command.  Due to the rising need to view
    non-native CNet file types (eg. Amigaguide, HTML, etc) to users, this
    setting has been added to CNet.  This allows you to set more than just
    a "piped" AmigaDOS shell command to be used for archive "viewing".

    For example, for the View command, you may set "Moretext %s" at the command,
    and set the ViewType (the button just to the left of the view command)
    to "Shell" and the user now has interactive control over the viewer;
    allowing him to use his keyboard to "control" the viewer.

    NOTE: All previous VIEW types should be set to "PIPE" unless you change
          to a method other than output redirection, which is the only
          method that previously existed.  The update executable "443"
          sets all old archiver view types to PIPE.

    NOTE 2: "redirection" is simply a way of piping output-only 
             text to CNet Amiga for display.  Redirection can
             be distinguished over other types by the presence of a
             greater-than operator (>) in a view command.

              eg:

                  type >%s "%s"

              as opposed to:

                  mycommand %s "%s"

             the former type is a PIPE redirection where the latter is either
             a Shell, CNetC or ARexx command.

    A rough guide of deciding which ViewType you need is:

        1. Run the command in a regular AmigaDOS shell (unless the command is
           a CNetC executable or ARexx script).

        2. If the command is interactive, allowing you to use your cursor (or
           other) keys to control the program, then you should set the ViewType
           to SHELL and use the following view command template as a guide:

               view_command "%s"

        3. If the command simply displays the output to your shell then set the
           ViewType to PIPE and use >%s in your view command as per the
           following guide:

               view_command >%s "%s"

    Following are the Viewer settings for a .guide file-type:

        View Command: MoreText "%s"
        View Type:    Shell
        Local Viewer: AmigaGuide "%s"

8.  GETUSERs 13 and 14 are now set at logon and updated when new mail is
    received.

9.  dmaint bug fixed where ESC key caused unusual/hazardous results by
    issuing improper commands when arrow/cursor keys used thereafter.

10. Changes to BBSTEXT line 502.

       502:n1Total Space: c7%d%% q1of c7%6s q1Used.q1  c7%7s q1Free.n1

11. Fixed repetetive printing of info about EACH partition upon subboard entry.

12. For those who liked seeing info about all partitions, a "PARTS" command
    has been added to the new base, new message, and browse menu section of
    BBSMENU.  You may use this command to obtain info about your BaseX:
    partitions.

    If you use the PArts command in a subboard, you will see info only about
    all valid partitions of that subboard.

    If you use the PArts command at the "main" menu, you will see info about
    all available partitions, from 0 to the number configured as "max BaseX:
    partition", in CNet Config.

13. Added BBSTEXT line 2525.

       2525:n1Partition c7%dq1: c7%d%% q1of c7%6s q1used, c7%7s q1free.

14. Fixed potential security problem in dmaint.

15. Added "lastcommand" ARexx command to CNETREXXn ARexx port.  This command
    is used to find out the last command entered by the user on any given
    port.

16. Fixed bug where use of BOTLOGON ARexx command did not un-blank/dim the
    CNet port.

17. Read log (RL) command made non-re-entrant.

18. ARexx "OLM" command added to BBS ports (portname CNETREXXn where
    n=a valid port number)

    Syntax: OLM <from port> <message text>

    If <from port> is 100, then the OLM is treated as a system OLM.

       ex. Send an OLM to port 0, adressed as if it were from
           the user on port 1:

           address CNETREXX0
           OLM 1 This is an OLM test

       ex. Send a SYSTEM OLM:

           address CNETREXX0
           OLM 100 This is an OLM test

19. First compile of 030 versions of key CNet executables.

20. Implemented a "hiwater" method of receiving usenet news using the
    USEHIWATER option of NNTPGet.  With this option you MUST still supply the
    NEWNEWS arg of NNTPGet.

    Many ISPs disable the NEWNEWS command in order to reduce the CPU usage
    of their local-machine NNTP server and reduce the load on their system.

    The USEHIWATER option should be used ONLY if your ISP has disabled the
    NEWNEWS command of their NNTP news server as the NEWNEWS command is still
    the most efficient (fastest) method of receiving new news.

     eg. NNTPGet S=news.myserver.com NEWNEWS USEHIWATER
     
         OR
         
         NNTPGet S=news.myserver.com N U

    You may, of course, omit the news server part of this command if you have
    your news server configured in CNet Config/Defaults/News Server

@ENDNODE


@NODE "CHANGES441" "Changes V4.41/4.42"

                        @{b}Changes/fixes for v4.41/4.42@{ub}

UPDATE NOTE: YOU MUST RUN THE AMIGADOS SHELL EXECUTABLE CNET:UPDATE/422 IN
             AN AMIGADOS SHELL AFTER INSTALLING BUT BEFORE RUNNING VERSION
             4.42.

1.  [J]oin command (join subboards, not join conference) hits fixed.

2.  Fixed MimeEd screen problem with non-lace workbench configurations.

3.  file-task now adds a filenote to received DCC files: "From: <nick>"

4.  Added BBSTEXT lines 2435-2524.

       2435:ITEM UPDATED:
       2436:From: %s
       2437:[DIR]
       2438:%ld
       2439:c7%3d. %s%-24.24s %s%9.9s q1
       2440::2c7%s:0q1
       2441:n1c4[c7Dc4]c6eletec4, [c7Ec4]c6xaminec4, [c7*c4]=c6Select, c4[c7RETURNc4]=c6Nextn1
       2442:n1FileMaint: 
       2443:n1Delete %s? [Y/n/a/q] 
       2444:YNAQ
       2445: {}
       2446: {}
       2447: All!n1
       2448: Quit!n1
       2449: %s deleted.n1
       2450: n1Could not delete %s because:
       2451: Directory %s not empty.  You must delete the files within first.n1
       2452: n1unknown error.
       2453: n1Press any key..g1n1
       2454: c5
       2455: c2
       2456:c1
       2457:c6
       2458:n1You are already at the root directory.n1
       2459:n1That directory is empty.n1
       2460:QP XHBZUDMCARNILK  <-- hotkeys for ANSI mode; corresponds with menu hotkeys [] below
       2461:z1                                                                              z0
       2462:z4                                                                              z0
       2463:z1c7[ENTER]=Examine, [UP], [DWN], [Q]uit, [P]arent, [Space]=Select, [X], [H]elpz0
       2464:z1c7[B]=BBS command, [Z]=Search, [U]ploadz0
       2465:z1c7[D]elete, [M]ove, [C]opy, M[a]kedir, [R]enamez0
       2466:z1c7[N]ew path, F[i]lenote, Volume [L]ist, [K]=Run doorz0
       2467:z4Path: %-50.50s %21.21sz0
       2468:%ld selected
       2469:f1
       2470:z4Directory empty!z0
       2471:z4Internal error; can not find item. :(z0
       2472:z4%sz0
       2473:%s selected
       2474:%s unselected
       2475:Max selections per batch reached.
       2476:%-25.25s %9ld %-38.38s
       2477: {}
       2478: {}
       2479:>
       2480: 
       2481:z4c3BBS Command: cf
       2482:z0
       2483:Invalid command..w1
       2484:Not empty. You must delete the files within first!
       2485:failed
       2486:unknown
       2487:%s deleted
       2488:z4c3Makedir: cf
       2489:z4c3New Path: cf
       2490:%-35.35s %-38.38s
       2491:z4c3Filenote: cf
       2492:%s is read-only
       2493:[3J
       2494:z4c3Examining %s..cf
       2495:CNet Commander Help
       2496:Volume/Assign list
       2497: %s
       2498: [DIR] %s
       2499: [VOL] %s
       2500: [ASN] %s
       2501:z4c3Getting directory %s..cf
       2502:z4c3Move to/as: cf
       2503:%s moved as %s
       2504:z4c3Copy to/as: cf
       2505:z4c3Rename as: cf
       2506:z4c3Amiga[D]OS/[C]NetC/[A]Rexx or [P]aragon? cf
       2507:z4c3%s door path/filename: cf
       2508:AmigaDOS
       2509:CNetC
       2510:ARexx
       2511:Paragon
       2512:{}
       2513:{}
       2514:{}
       2515:{}
       2516:{}
       2517:z4c3Search pattern (wildcards allowed): cf
       2518:z4c3Recurse into subdirectories? [N/y] ?0 cf
       2519:z4c3Searching.. please be patient..cf
       2520:z4c3Upload filename: cf
       2521:z4c3Uploading..cf
       2522:z4c3That command cannot be executed in local mode.cf
       2523:!
       2524:Directory empty.

5.  Added BBSMENU item "DM" to the "2; Available Everywhere" section.

6.  Added BBSMENU SECTION "47; User Filedir Maintenance"

7.  3RD PARTY PROGRAMMERS/CODERS:

    Added new cnet.library API functions for reading/scanning/searching
    directories and the DOS volume/assign list.  Here are the prototypes
    (also see sdk/include/protos/cnet_protos.h).

    IMPORTANT NOTES

       For better door functionality, all functions used by CNetReadDir() are
       also accessible to the CNet door programmer. You may use these
       functions to build (or add to) your own directory lists or even get
       an assign/volume list. However, There are some things to note:

       Be aware that the TOP entry of a CNetFileEntry list is just a directory
       PLACEHOLDER.  This placeholder is a CNetFileEntry structure with
       it's filename field being that of the full path to the directory
       represented by the list.  The parent variable of this list placeholder
       should be set to the parent list (if any) that is to be linked to.  If
       the parent variable is NOT set (eg. CNetFileEntry.parent==NULL), then
       the user cannot regress any further "back" than the current directory.

       Also note that YOU must create this header yourself by calling
       CreateDirEntry(), assign your list pointer to the pointer returned and
       then you MUST strcpy() (or sprintf()), to the filename variable, the
       full path to the directory under examination.  If you do not fill the
       header entry with the full path, CNetReadDir() may not work correctly.

       Also note that if you use CNetReadDir() to read a directory, you do not
       have to worry about creating the list placeholder.  CNetReadDir does
       this internally. The only time you need to worry about creating the
       list header is if your are building a filelist by hand.

       If you want to ADD to a CNetFileEntry list (eg. after using CreateDir()
       to create a new directory or after having a file copied to a directory
       represented by the current list) you can do so simply by calling
       InsertDirEntry(), but **ONLY after** either creating the list header and
       attaching it as the FIRST structure in your linked list of
       CNetFileEntry structures or by having already called CNetReadDir()
       previously.

       The CNetFileEntry structure is defined in sdk/include/files.h.

       See ReadDirTest.c for example CNetReadDir() usage.

       See ReadDirTest2.c for an advanced example of creating a filelist using
       the discrete cnet.library functions.

    Prototypes/Descriptions:

       struct CNetFileEntry *CreateDirEntry (struct FileInfoBlock *fib);

         Allocate memory for a CNetFileEntry structure and return pointer to a
         mem block or NULL if fail.  CreateDirEntry expects a
         pointer to FileInfoBlock structure.  This structure is used/filled by
         dos.library's Examine()/ExNext() functions.  You may also "fake" a
         FileInfoBlock by allocating memory and filling the FilInfoBlock
         structure variables, therafter call CreateDirEntry().  CreateDirEntry
         is "directory aware" in that CNetFileEntry's ftype variable is set to
         1 for directories and 0 for regular files.  Other internal uses set
         ftype to 2 for volumes and 3 for assigns.

       void InsertDirEntry (struct CNetFileEntry **list, struct CNetFileEntry *newentry);

         Insert a CNetFileEntry into a list, sorted alphabetically; DIRS first.

       struct CNetFileEntry *CNetReadDir (char *path, UBYTE recurse);

         Read a complete directory into a linked list of CNetFileEntry structures with
         parent/child directory retention and next and previous file entry linking;
         with recurse option.

       void CNetDisposeDir (struct CNetFileEntry **list);

         Free the COMPLETE file list tree as returned by CNetReadDir() or created
         using CreateDirEntry()  calls.

       struct CNetFileEntry *GetDirEntry (LONG ordinal, struct CNetFileEntry *list);

         Get a pointer to the CNetFileEntry specified by the ordinal number, with the
         first usable file entry being entry number 1.

       LONG CountDirEntries (struct CNetFileEntry *list);

         Count the number of entries on the current list (not including parent and
         child entries nor including the "path placeholder/header" entry)

       struct CNetFileEntry *FindParent (struct CNetFileEntry *list);

         Return a pointer to the PARENT dir if found; else returns pointer to the
         same list passed as list arg.

       struct CNetFileEntry *NextDirEntry (struct CNetFileEntry *list, struct CNetFileEntry *nowentry);

         Return a pointer to the next file entry or NULL if none.

       struct CNetFileEntry *PrevDirEntry (struct CNetFileEntry *list, struct CNetFileEntry *nowentry);

         Return a pointer to the previous file entry or NULL if none.

       struct CNetFileEntry *HeaderEntry (struct CNetFileEntry *anyentry);

         Return a pointer to the header file entry.

       struct CNetFileEntry *LastEntry (struct CNetFileEntry *anyentry);

         Return a pointer to the last file entry in the list or NULL if list empty.

       LONG EntryOrdinal (struct CNetFileEntry *entry, struct CNetFileEntry *list);

         Return the ordinal number of the specified file entry pointer, relative to
         the top of the current list.

       struct CNetFileEntry *GetVolAssList(void);

         Get a list of system volumes and assigns and return a pointer to the
         list.

       struct CNetFileEntry *CNetSearchEntry (struct CNetFileEntry *list, struct CNetFileEntry **destlist, char *pattern, UBYTE recurse);

         Search a CNetFileEntry list for files matching an AmigaDOS file pattern.

         Includes option to search sub-directories (recurse).

         Do to recursion and addition of the "matches" to a single tier list,
         this function allows you to specify a list pointer (destlist) to which
         the matches will be attached and returns a pointer to that same
         list.  If no destination list pointer is passed, a new linked list
         is created and a pointer to that list returned if matches are found.

         Also note that the full path to the matched entry is set as the
         CNetFileEntry filenote.  This was done to allow easy display of
         the filename (using FilePart()) in a fixed width output string
         while allowing SelectAndDownload(CNetFileEntry.filename) to be used
         for selecting and downloading resultant matches.

         See the SDK/EXAMPLE_SOURCE directory example "CNetFileFind.c" for
         indepth usage of CNetSearchEntry().

8.  Removed the 20 archiver limitation.

@ENDNODE


@NODE "CHANGES440" "Changes V4.40"

                        @{b}Changes/fixes for v4.40@{ub}

1.  cnSMTPd VRFY command now allows user@host input where recognized hostnames
    for the local system are any of the hostnames defined in config/smtpd.

    Note that cnSMTPd VRFY replies with the hostname configured in the
    config/MAIN page.

    Also, since cnSMTPd does not do forwarding, users at other hosts are not
    examined and thus an error (case: unknown user) is returned to the
    querying system.

2.  CNetIRC now re-sets the Where/Doing field after a successful "everywhere
    command" is used.  Some BBS functions previously changed this field and
    CNetIRC did not reset it.

3.  Commodity status of Control now complete. The "Hide Interface" button
    of Exchange will remove ALL "visible" indications that Control is running,
    whether it be iconified or GUI opened.  The "Show Interface" button of
    Exchange notifies Control to makes its GUI visible.  The "Remove" button
    of Exchange quits Control WITHOUT the "Are you sure you want to quit
    Control" prompt being displayed.

4.  Bug-fix ..  Cron could be executed while already running.

5.  Fixed a mail yanking bug where the mail "TO" user was not filled in the
    resulting QWK packet.

6.  Fixed a memory leak (present since CNet v4.0) where, in some cases, memory
    allocated for events would not be freed. Memory would slowly trickle away
    at the rate of a low number of bytes (multiplied by the number of events
    configured) every 3 seconds. This bug could have had the potential to eat
    large amounts of memory if you had many events configured and in a
    contiguous time block (eg. no "rest" time between events).  After fixing
    and testing with over 50 events configured, this bug is history and no
    more memory leaks exist.

7.  Fixed a bug where some events would not be executed.

8.  Fixed bug induced in v4.39 that caused uploads to get the wrong
    description and/or possibly write the wrong description (and AmigaDOS
    filenote) on other files.

9.  Amaint, by default, now UPDATES items if their file size or AmigaDOS date
    has changed.  To disable this feature, use the amaint "noupdatefiles" arg.

    Note that this feature now tags MISSING files also so, if you choose not
    to disable this feature, the "missing" door is no longer required unless
    you want to specifically find/mark only missing files without requiring
    other duties of amaint.

10. Mail spool files were being corrupted.  New format for spool files prevents
    this. Spool files created before this fix cannot be recovered.

11. Fixed discrepancy in the cnet TIME command where user logon time and
    length of time online did not corroborate.

12. sysdata:log/UUMAIL added for logging of internet mail imports by mail-task
    and/or iuumail.

@ENDNODE

@NODE "CHANGES439" "Changes V4.39"

                        @{b}Changes/fixes for v4.39@{ub}

1.  Fixed enforcer hits/port lockup when "/server <server name>" was used in CNetIRC.

2.  Fixed Control & *-tasks public screen handling.  No longer does Control keep
    a lock on the public screen it opens on.  Un-Iconify/Menufy now arbitrates
    the task/Control window to the public screen again.

3.  Fixed internet mail import (UUMAIL) so that "corrupt" mail items do not
    cause mail-task/iuumail to skip good messages in incoming user e-mail batches.

4.  CNet version numbering of myp->s1 is now consistent with "VERSION" reply.

      eg.  VERSION = 4.28c     myp->s1 = 4283
           VERSION = 4.29a     myp->s1 = 4391
           VERSION = 4.39      myp->s1 = 4290

      Note how the last digit of s1 is the numeric representation of the letter
      in the CNet version string.

5.  Control display quirk fixed where IDLE TIME may have been displayed as
    excessively large (and incorrect)  values.

6.  OLM prompt now displays the number of OLMs waiting to be displayed.
    Currently, this counts system OLMs.  This may or may not change in the
    future.

7.  Change to BBSTEXT line 895.

<New format for bug-fixes begins>

8.  Fixed bug-report #60 - "ML twice in a row causes potential lockups"

9.  Fixed bug-report #119 - "If you use ML to move an area into an empty
    subdir, it will not work."

10. Changes to BBSTEXT lines 1780-1781.

11. Fixed bug-report #127 - "Any direct/msg/file area that exists on main level
    will not have proper prompts set when entered."

12. Expanded CNet's "SubDoing" facility to it's most powerful state.  If you set a
    doing for a SUBDIRECTORY in the "EL"  VDE of that subdirectory, you are now
    setting the "Where" string for the whole sub-tree.  Any subboard that does not
    have a SubDoing set, will have it's doing set to the nearest parent
    subdirectory SubDoing string.

    To elaborate;  Consider the following subboard tree:
    
             Aminet -
                     |
                     |-- biz
                     |
                     |-- comm -
                               |- bbs
                               |- cnet
                    
    If only the aminet subdir has a SubDoing of "Aminet mirror" set on it, this
    Subdoing will be displayed when entering any of the tree elements below it.

    However, if the subboard "bbs" has a SubDoing also, in entering the bbs
    subboard, that Subdoing string will be displayed.  Entering any other subdir
    or subboard in that tree structure will get the aminet default subdoing
    string displayed.

    Further consider that, if the "comm" subdir also has a SubDoing of "BBS software"
    set on it, only it and any of it's child subboards (eg. "cnet" in this example)
    would have that doing displayed, when entered. The "bbs" subboard would still get
    it's custom SubDoing displayed and, all subboards and subdirs above the "comm"
    directory would get the default aminet SubDoing displayed.

13. Fixed bug-report #128 - "OLMs are @#$%ing up SplitChat"

14. Fixed bug-report #130 - "Config/defaults/SMTPd timeout can only be set to
    a value greater than or equal to 61.  (60 seconds and up are valid values)

15. Fixed bug-report #131 - "In user-ed, date settings required HH:MM to be
    added to input date strings and gadget would not accept them."  Limitation
    removed.  Only DD-MMM-YY are now required.

16. Fixed bug-report #132 - "Using MO in mail to move an item into the same
    folder it's already in will delete the item."  RESTRICTION IMPOSED: You
    may not move a mail item to the same folder it is already in.

17. Change to BBSTEXT line 720.

18. Fixed bug-report #133 - "If you have an area dropped, GO will not find it."

19. Fixed bug-report #134 - "Control hangs when iconified or menufied and is
    sent ARexx message/command."

20. Fixed bug-report #140 - "OLM count is decreasing even for redisplayed OLMs (./Again command)."

21. (no bug-report #) Fixed MORE? prompt that was prematurely displayed after reading each OLM.

22. Fixed bug-report #142 - "If you read a file item and then try and "AT" it at
    the "respond" prompt, nothing happens."

23. Fixed bug-report #139 - "BBS is not giving file/byte credit rewards to file
    uploader when another user downloads their uploads."  Note: rewarding WAS
    working but no mail mail was being sent for notification of reward.

24. Imported mail is now sorted by IMPORT date rather than SENT date when
    Newest First or Newest Last are set in EP.

25. Fixed bug-report #137 - Mail is now sorted by RECEIVED (import) date rather
    than sent date.

26. Added VRFY command to SMTPd.

27. Auto-anonymous FTP added to cnFTP with mail-address sent automatically
    for anonymous logins.  Over-ride defaultemail address using the P=<pass>
    option.

28  DOSOLM now has an "I=IGNOREOWN" switch to prevent DOSOLM from sending
    an OLM to the "F=FROM" port.

    For those who don't know what DOSOLM is, it is an AmigaDOS door/command
    that allows you tosend OLMs to/from online users from CLI/Shell and/or
    ARexx/AmigaDOS scripts.

    DOSOLM will now be bundled with CNet Amiga.  Note that DOSOLM is still a
    "Metal Software" product and is included as a "contributor" item.

29. The "F=FROM" argument to DOSOLM can now be a port RANGE.

30. Boot dates added to Control and each BBS port.  These dates are currently
    in the status text displayed when the CNet [T]ime command is used online.

31. Changes to BBSTEXT lines 287-291.

32. BBSTEXT lines 2411-2420 added.

33. coders: New function in cnet4.library; CNetUpTime()
    This function is used to form a string which states the amount of time,
    elapsed since some past time, relative to "current time".

        syntax:

           output_str_ptr=CNetUpTime(output_string, time_diff_in_secs)

        CNetC example:

           char utstring[70]; // "xxx years, xxx weeks, xxx days, xxx hours, xxx minutes and xxx seconds" possible
                              // more space required if you use MCI in BBSTEXT
           ULONG uptime;
           uptime=CNetTimeNowDiff(CNetImplodeTime(&z->BootDate));
           CNetUpTime(utstring, uptime);
           sprintf(z->ABuffer, "Time passed since port booted: %s\n", utstring);
           CNC_PutA();

        More compact version of above example:

           char utstring[70];
           ULONG uptime=CNetTimeNowDiff(CNetImplodeTime(&z->BootDate));
           sprintf(z->ABuffer, "Time passed since port booted: %s\n", CNetUpTime(utstring, uptime));
           CNC_PutA();

        NOTE:  if no time has passed (eg. no time diference), a blank string
               ("") will be returned.

        NOTE2: This function, like most other CNet library functions, requires
               Control to be running.

35. CNetUpTime() routine implemented in ReadOLM() to replace lame
    "xx:yy mins ago" text.

34. Changes to BBSTEXT lines 893, 898 and 920.

35. Toss now states that it is already running if executed a second time.
    Previously, it exited without the verbosity.

36. Fixed quirk in cnet:close in which a "garbage" option (eg. "cnet:close dsflkj")
    caused all ports to be closed.

37. UserInfo gadget is now enabled when an online user is selected and disabled when
    an unoccupied port, offline port or no port is selected.

38. Command UPTIME added to the end of BBSMENU section "2; Available everywhere".

39. BBSTEXT lines 2426-2427 added.

40. AmigaDOS "UPTIME" command created for use in scripts and local/offline
    situations.

@ENDNODE

@NODE "CHANGES438" "Changes V4.38"

                        @{b}Changes/fixes for v4.38@{ub}

1.  Added RESUME to cnFTP.

2.  Added BBSTEXT line 2402.

3.  Added REGET command to BBSMENU section 46 (CNet FTP Menu).  This command
    is usually unnecessary as CNEt auto-detects existing files but has been
    added for a complete implementation.  This command may also be used
    instead of "get" to FORCE resume of a file.

4.  NEW split-screen chat added to Chat Chat (CC)!!  Use CTRL-T to toggle your
    preferred chat mode.  Chat mode preference is saved at logoff after toggled
    while in chat.  Because of this there is no need for a chat preference item
    in EP so don't go looking for one. :)

5.  BBSTEXT lines 2403-2409 added.

6.  Change to BBSTEXT line 929.

7.  Changes to BBSTEXT line 2406.

8.  CNetIRC now respects a user's private real name status.

9.  IMP AmigaDOS/script fidonet msg processing fixed.

10. Mail alias kill "name" field expanded to the proper maximum length.

11. CNetIRC was previously reading too many characters in the server field,
    NULLing out the server name.

12. Cleanup of some file-task DCC quirks such as removing completed and aborted
    requests from the file-task process/queue listview.

13. Carrier drop in ARexx doors no longer results in an enforcer hit.

14. Where/doing field of control was not updating due to a subboard bug in
    which amaint and, any other doors that operated on subboards, locked up.

@ENDNODE

@NODE "CHANGES437" "Changes V4.37"

                        @{b}Changes/fixes for v4.37@{ub}

1.  CPS display added to cnFTP transfer status.

2.  Mailing-list gated msgs are now showing in NM scan.

3.  Change to BBSTEXT line 2396.

4.  Added "SMTPD Temp" path to Config.  MAKE SURE you set this variable to
    a large partition in case a large (eg. MEGABYTES) e-mail is received.
    If SMTPD TEMP is not specified, "T:" is used as default.

5.  Trailing digit now added to attachment filename (to create unique
    filename) only if the file-attach exists in unmolested state.

6.  CNetIRC Channel list is now cleared when changing servers.

7.  Entering "GO <unknown go key>" in a Door/List area no longer results in CNet
    returning to MAIN after pressing return at the GO prompt.

8.  Removed enforcer hit(s) that occurred when user used upload file-attach.

9.  Fixed "More?" prompt during mail alias list.

10. Fixed enforcer hit(s) that occurred in CNetIRC when users had no servers
    configured and pressed ENTER to connect to the default server.

11. CNet's identd was sending "-1@domain" if there was no ROOT USERNAME defined
    in CONFIG/DEFAULTS.  CNet now sends "bbsuser@domain" if ROOT USERNAME is
    not set.

12. Fixed file-task ARexx port which was previously not responding unless the
    file-task window was opened. The result of this bug was that the calling
    process/task (that ran the arexx script for file-task) locked up.  This
    was most noteable in CNetIRC duting a DCC send/get.

13. New ONLINE install/reference/maintenance manual. See http://www.tggh.net/~rakey


@ENDNODE

@NODE "CHANGES436" "Changes V4.36"

1.  A dedicated CNet FTP client has been added!  This client accepts
    CLI, CNetC, BBSMenu and MCI lanched args.  An arg template can be found on
    BBSTEXT line 2380.

    argument template:

	R=RemoteSite,P=RemotePort,D=RemoteDir,L=LocalDir,S=ControlScriptName,
        L=LoginName,P=LoginPass,A=Account,G=GetFilename,O=AutoQuit

    Arguments should be separated by spaces.  Arguments that may have a space
    embedded within should be enclosed in double quotes (").

    There are a lot of "to-dos" for this client.  This first alpha/release is
    to get something out there so that CNEt sysops do not have to sacrifice
    the security of their systems by allowing their users to use ncFTP online.

    There is no cnFTP SEND command yet.  Send will be implemented for the next
    alpha/beta release.

    Note: Downloaded files, gotten using the FTP "get <filename>" command
          are downloaded to the users' MAIL:USERS/<mail_id>/FILES/ directory
          where <mail_id> is the user's UUCP/MAIL-ID.

2.  Added BBSTEXT lines 2364-2394 (see !bbstext_stock)

3.  Added BBSMENU section 46.  (see !bbsmenu_stock)

4.  Background file-task transform should now process files that are not
    a testable format.

5.  Progress output added to FTP get.

6.  Added BBSTEXT lines 2395-2398.

7.  Changes to BBSTEXT line 2390.

8.  Added carrier check (!!) to cnFTP.

9.  Added remote connection check to commands affecting remote site (LS, GET, etc).

10. Added Menu systext:menu/ftp

11. Added FTP "SEND" support.

11. Added BBSTEXT lines 2399-2401.

12. Changes/Additions to entire BBSMENU section "46;CNet FTP Menu".

@ENDNODE

@NODE "CHANGES435" "Changes V4.33-4.35"

                    @{b}Changes/fixes for v4.33-4.35@{ub}

1.  Added DCC STATUS listview to file-task.  This listview shows ALL active
    DCC sessions.

2.  Bugfix where DCC listview display was trashed when file-task menufied or
    iconified and re-opened.

3.  Added DCC logging.  Add the following log entry to config/logs:

		LOG NAME: DCC
		  LOG ID: 414

4.  Added new cnetircvar ARexx hooks to CNetIRC as described below.

      "cnetircvar p" returns the PortData address of the current port.
      "cnetircvar m" returns the MainPort address.

5.  Fixed DCC SEND bug which effectively doubled the number of bytes sent.

6.  Fixed a Toss problem where out-of-zone echomail was being sent to bad if
    the zonegate had the same node number as the receiving node.

7.  Fixed mail bug in which FIDONET file-attaches were not being added to
    outbound .FLO file.

8.  Fixed port lockup problem when using BBS commands (eg. backslash \ commands)
    while in CNetIRC.

9.  Fixed Control guru when "Control ?" was used and bad/unknown arguments
    were entered.

10. Vote rewritten as a 3rd party project by Kelly Cochran. (thanks Kelly).

11. Fixed mail upload-attach description prompt.

12. NO SIGNATURES flag was being ignored by Usenet News subboards.


13. User mail ID is now configurable by the USER at login.  After initially
    set by the user, only the SYSOP may change mail ID.

14. ANSI detect is now an external door, supplied as C source and found in the
    SDK/Examples/ directory of your CNet archive.  To add it to your system,
    simply replace BBSTEXT line 22 with the following:

       #2cnet:doors/ansidetect}

    Make sure to copy ansidetect from sdk/Example_source/ to cnet:doors/

15. Users can no longer YANK the messages in another user's mailbox during
    MailVerify (MV).

16. Fixed cTelnet problem where port in pre-configured host list was not being
    used during connect.  You MUST run the update/TelnetUPD435 update executable
    and then use the EH command on ALL configured telnet hosts, fixing the
    telnet port for each host.

    Remember: Usual/default telnet port is port 23.  You should use this number
              unless the host has a custom settting.

17. Changes to BBSTEXT line 2205.

18. Fixed QWK E-Mail uploads which were not importing properly.

@ENDNODE

@NODE "CHANGES433" "Changes V4.33"

                    @{b}Changes/fixes for v4.33@{ub}

1.  Cron screen was left open if non-lace Workbench used.

2.  Added another function CNetEndOfRange() to cnet4.library.
    This function returns TRUE (1) if the current element returned by
    CNetNextRange() is the last element in a CNet range

    For example,

    if the range "1-10,15,30" were passed to CNetFindRange() and, as CNet
    range protocol suggests, CNetNextRange() were called in a for() loop,
    CNetEndOfRange() would return FALSE (0) for all values returned by
    CNetNextRange() until it returned a value of 30.

    There is an example of CNet range usage in the SDK/Examples directory,
    called RangeTest2.c.

3.  CNetPrevRange() added to cnet4.library.  Operation is the same as
    CNetNextRange() but returns the next LOWER element/value in the range.

4.  CNetStartOfRange() added to cnet4.library.  This function returns TRUE (1)
    if the current element/value is the first in the range.

    The example sdk source rangetest2.c has been expanded to show an example
    of this function also.

5.  Fixed a bug with MailID that created MailIDs such as a1, a2, s1, s2
    when the handle or real name contained only a single word.

6.  UserEdit was not accurately displaying the state PRIVS/RECEIVE EMAIL flag
    and (possibly) a few other PRIVS flags..

7.  Config now automatically adjusts the subboard NETWORK affiliation when an
    FTN network is deleted from FTN config.

8.  Changes to BBSTEXT lines 2086-2288.

9.  Added QUIT button to Cron for those who like buttons with keyboard shortcuts.

10. DCC GET and CLOSE are now implemented in CNetIRC.  file-task performs the
    actual DCC file transfer leaving CNetIRC free to do its thing.  This also
    provides the additional safeguard that if a CNetIRC problem occurs, your DCC
    transfer not be affected and vice-versa.  Files gotten with DCC GET are
    stored in the users' mail:users/user_id/FILES/ directory and are currently
    NOT auto-selected to the user's select list but this will be the action taken
    in the final 4.33 release.  Until then, users may use Kelly Cochrane's CINS
    user-dir file-maint to select and download files received with DCC GET.

      NOTE: that CNetIRC uses the script CNET:REXX/DCCGET.REXX to notify file-task
            to get a file from an offering remote user. Please be sure to update
            your system with ALL files in this archive (except systext:#? and
            sysdata:#?) whether or not the file sizes have changed!

     NOTE2: It bears mention that users must use DCC CLOSE if they wish to
            DCC requests from their DCC list/queue after failed or successful
            transfers.  Although, it is not a problem if they do not as each
            port's DCC list is cleaned up when a user logs off the respective
            CNet port/node.

     DCC COMMANDS IMPLEMENTED
     ------------------------

	DCC LIST
	DCC CLOSE <range>
	DCC GET <range>
	DCC SEND <name of file from user file dir>

        where <range> is a typical CNet range (eg. 1,3 or 1-3,6 etc.)

          BUGS: Currently does not complain-to/notify the user if file-task is
                not running.  In the final CNet v4.33 release, users will be
                notified if they cannot DCC SEND/GET at any moment that
                file-task is not running.  DCC chat will be handled by CNetIRC
                itself, when implemented.

    OVERSIGHTS: No DCC RESUME (yet)

@ENDNODE


@NODE "CHANGES431" "Changes V4.31/4.32"

                    @{b}Changes/fixes for v4.31/4.32@{ub}

1.  BBSTEXT/MENU reload trashed pointers so WHO display was corrupt.
    Change to BBSTEXT line 659.

2.  Change to BBSTEXT line 426.

3.  Added systext:menu/mail-attach

4.  New BBSMENU section 45 for mail-attach menu.

5.  CNet now allows uploading to mailbox for file-attach.  To do this,
    enter MAIL SEND (MS) and fill in the recipient and Subject.  At the mail
    flags prompt, press F (for Freq) until it toggles to "SEND".  Press enter
    to continue to the File-Attach menu.

    Note that, currently, only single file-attaches are possible for each mail.
    This limit will definitely be removed in the near future.

6.  Added cnetc.library.  This is the new standard for CNetC door communications
    with CNet.  The same functions that were in empty.c and cnetc.lib are
    available in the shared library cnetc.library.  The shared library versions
    of these functions are preceded by "CNC_".  For example, what was once
    PutText() is now CNC_PutText().   Please see the new empty.c for example
    usage.  Your C door MUST call CNC_InitContext() on startup and
    CNC_DisposeContext() when your door is done communication with it's CNet
    port.  empty.c is wrapper code with these functions already inserted within.

7.  CNetIRC's ARexx port is now fully functional.  Each copy of CNetIRC has its
    own ARexx port, named "CNET_IRCx" where the x is the user's port number. The
    most important and most used ARexx command is the cnetirccmd, shown below.

       ARexx command   Function              Examples
       --------------- --------------------- ---------------------------
       cnetirccmd      send an IRC command   cnetirccmd '/me is away'
                                             cnetirccmd '/" print to user screen'
                                             cnetirccmd '/msg HMetal Hey buddy!'

    A more detailed list of CNetIRC ARexx commands will be made available later.

    Also see the included example ARexx scripts in CNET:IRCREXX for more
    information.

    Please make sure that the script bit is enabled on these ARexx scripts by
    using the AmigaDOS shell command "protect cnet:ircrexx/#? +s"

    Also, to get the default Arexx macros into your /alias list, use the CNetIRC
    command "/e .ircrc.rexx" Once executed, you will see the text
    "*!* INIT .ircrc" printed on your CNetIRC screen.

8.  Fixed the Control SysInfo window activity graph (AG).

9.  Converted all ZenMetal CNetC doors to use cnetc.library format.

10. Added ARexx command "checkolms" which will check if OLMs are waiting
    and display them immediately.  Returns 1 if OLMs are displayed; 0 if
    none were displayed.

11. Added the following CNetC commands:

         CNC_MailSend(account_number)  - sends mail to the specified user
         CNC_ReadLog(logname)          - read the log named logname in systext:log/
         CNC_OpenDisplay(port_number)  - open the port screen for port port_number

12. Added TestOpenDisplay.c example combination CNetC/AmigaDOS door to sdk
    examples drawer.

13. Added file transfer ETA display to Control panel.  ETA appears in the "Where"
    section of the control panel ports display during an upload or download.

14. File-attaches to Internet mail are now MIME-encoded to be included in the
    mail body.  To accomplish this, a file "extension" field has been added
    for each mime type in Mime-Ed.  You may put multiple extensions in each
    mime type.  For example, if you have configured a JPG mime type, you might
    have the following MIME configuration for that type:
    
          Content-Type     : image/jpg
          Encoding         : base64
          Mail Save Method : File-attach
          News Save Method : Leave as body text (not implemented yet)
          Decode Command   : c:base64 decode from %f to %t
          Encode Command   : c:base64 encode from %f to %t
          Subboard ID      : <leave blank>
          File Extension(s): jpg jpeg jfif

    Using this example, when a user uploads a file with a .jpg, .jpeg or .jfif
    extension, it will be encoded using the command,
    "c:base64 endcode from <image_file> to <mime_encoded_file>"

    note: CNet will use the description the user specifies at the "Filenote:"
          prompt, during file-attach upload, as the mime description.  For
          adopted files, CNet will use the EXISTING file description and does
          not (currently) prompt for a (new) filenote.

15. Changes to BBSTEXT lines 2226-2229.

16. Edit Finger (EF) was inserting newlines in the wrong place(s).

17. Dupe subboard GO KEY prompt would not allow changing of the GO KEY if a dupe
    was entered.

18. MCI is no longer filtered in local mail.

19. Fixed Control sysinfo window percentage/graph that was being corrupted on
    refresh.

20. stdio (window) output of TOSS in default verbosity was munged.  Node number
    of packet origin was being overwritten by the number of messages imported.

21. Cron received the BGUI treatment.  ALL CNet GUIs finally use BGUI. Also
    fixed some bugs relating to event execution that may have caused SOME
    events to be skipped.

22. Added a "Last Executed" display to Cron so one can see when an event was
    last invoked.  Note that this "Last Executed" date will be reset whenever
    an event is altered (eg. change of start time, repeat hours, mins, seconds,
    etc.)

23. cnSMTPd timeout now configurable in Config/Defaults/SMTPD Timeout and is
    specified in seconds.  Minimum timeout is 60 seconds and nothing lower
    will be accepted by Config.  If you are experiencing a lot of "Connection
    lost" messages in cnSMTPd log/window, increase this value in 30 seconds
    increments until the problem is resolved.

24. Added ListEvents.c to sdk/ExampleSource drawer.  This example source shows
    all configured events and their attributes.  It is an AmigaDOS Shell
    executable and must be linked with cnet_reg.lib.

25. Added ARexx command SETQUERY to BBS:

           Command: SETQUERY <opts>
           Purpose: Used to set prompt attributes for the ARexx QUERY command.
                    The <opts> decide how the prompt responds to user
                    input.  These opts are the very same arguments that can be
                    specified as flags to the EnterLine() function of CNet.
        Applicable
          to ARexx
          commands: QUERY
                    PROMPT NORMAL

            <opts>: The <opts> arg is a binary word with any of the following bits
                    enabled.

                    TIP: Use
                              BITOR (<string1>,[<string2>],[<padchar>])

                         to set groups of bits or

                              BITSET (<string>, <bit>)

                         to set a single bit in <string>

                         SEE ALSO: ARexx manual and BITWISE OPERATOR section.

                    NAME          PURPOSE OF OPT                         BIT
                    ------------- -------------------------------------- ---
                    ALLCAPS INPUT ......................................  1
                    FILENAME      filter characters #?:\"*;= ...........  2
                    USEINBUFF     use existing INBUFFER ................  3
                    NOLEADSPACE   don't allow leading space in input ...  4
                    CAPWORDSTART  Capitalize the first letter of each
                                  word .................................  5
                    RESTWORDLOWER Convert all others to lowercase ......  6
                    NUMBERSONLY   Allow numeric input only .............  7
                    INPUTBOX      Draw input box (eg. with . at the
                                  end ..................................  8
                    ALLOWMCI      Allow the entry of MCI control
                                  characters ...........................  9
                    HANDLESPECIAL Don't allow ^_`{|}~@ ................. 10
                    XSLASHSTART   Forward slash (/) exits prompt and
                                  sets myz.InputFlags=1 ................ 11
                    XBKSPACESTART Enable BACKSPACE exit prompt ......... 12
                    NOOLMS        Don't allow OLMs to appear ........... 13
                    ALLOWCHAT     Allow other users to break into chat
                                  at prompt ............................ 14
                    NOSPACES      Don't allow spaces in input .......... 15
                    NOCURSORMOVE  Don't allow movement using arrow
                                  keys ................................. 16
                    NOSLASHES     Don't allow / key in input ........... 17
                    NOPATH        Don't allow : or / in input .......... 18

26. Added companion ARexx CLEARQUERY command to clear QUERY bits set with
    SETQUERY.

27. An Arexx command SETROOTNAME was added to BBS ports in v4.28 and the
    documentation for it was overlooked.

    SETROOTNAME sets a new global ROOT USERNAME. Note that this new ROOT
    USERNAME is NOT applied to config and only applies until Control is
    restarted.

28. Added event progress display to Control Panel.  When an event is executing,
    its name and dynamic duration are displayed in the "FROM" and "STATUS"
    fields, respectively.

29. Added duration of event to the event end time in sysdata:log/events so
    you can see how long your events are taking to complete.

30. Added CNET:REXX directory and some example ARexx scripts.

31. Added ARexx command RUNPORT which allows ARexx scripts to trigger Control
    to open/load a port.  RUNPORT requires a single argument in AmigaDOS
    ReadArgs format.

       eg. RUNPORT PORT=x

    where x is the number of the port to load.

    RUNPORT returns "OK" if the port load was successful or the port was
    already loaded.  Returns "FAIL" if the port could not be loaded.

    See cnet:rexx/runport.rexx for a complete example of usage.

    NOTE that the included ARexx script cnet:runport.rexx must exist if you
    want the immediate port loading feature of cron's new "RUN THIS EVENT NOW"
    feature to work.  This runport.rexx script can be altered but must always
    be capable of running the desired port using the command
    "rx cnet:rexx/runport.rexx <portnum>". This is the very command Cron uses
    to load the port to run an event immediately.  Control does NOT use this
    script for port loading.

32. Companion CLOSEPORT Arexx command added to Control.  Args and usage are
    the same as those used for RUNPORT.

    See cnet:rexx/closeport.rexx for an example script.

33. Added "RUN THIS EVENT NOW" capability to Cron to start/test an event
    immediately.  If the port is not loaded, it is loaded on the fly.

34. Control's BOTLOGON Arexx command fixed.  To generate an automatic login,
    use this command.  The script cnet:rexx/botlogon.rexx is an example of
    this command.

    USAGE: BOTLOGON <PORT=x>

    where x is the port number for which to generate a login.

    NOTE that this command brings ** NEW POWER TO CNET AMIGA**. It is now
    possible to have a "Robot user" online at all times.  Using the BOTLOGON
    command and some clever CNETREXXp Arexx command work, you can completely
    automate BBS operations.

    Also note that the BOTLOGIN command generates a login as if you were to
    press the spacebar on the local console.  You can, via the
    ADDKEYS ARexx command, login as any user/password combination this way.

@ENDNODE

@NODE "CHANGES429c" "Changes V4.29c"

                    @{b}Changes/fixes for v4.29c@{ub}

1.  Edit Finger (EF) command was corrupting user finger information.  This
    started happening in v4.29a.

2.  When CONFIG was saved, IMP mailing-list info was invalidated.  Control had
    to be quit and restarted.

3.  Change to BBSTEXT line 2288-2289.

4.  BBSTEXT line 2301 changed to {}

5.  "Include <user> [Y/n/q] prompt" caused port lockups if control was quit
    while a user was at this prompt, or if a user dropped carrier at this
    prompt.

6.  New function PutQMulti() added to cnet.lib.  This function is currently
    used internally for the mail system.  It has the potential of being the
    backbone of an elaborate/powerful "hotkey" processor.

    See the Library reference cnet.lib.doc in the sdk/lib directory for more
    information on PutQMulti.

7.  cnSMTPd was reporting "Error after WS()" instead of "timeout" when a remote
    system was either lagged, excessive non-communication time or had closed
    connection.

8.  Subboards with minimum free bytes before upload set to 0 were not allowing
    any uploads.  Was a problem since CNet/3 days.  New code added so that if
    you set subboard minimum free bytes to 0, CNet will ignore check free-space
    before and during an upload/batch-session.

9.  MailSend to account ranges (eg. "MS 1-") has received a 1000% improvement in
    lookup speed to reduce user-wait times.

10. Mailing-List reply-to addresses that had a trailing space on the end were
    causing problems.  Trailing spaces are now removed.

11. Config and useredit were not opening their screens in proper PAL monitor
    mode on European/overseas systems.

12. Config/Modems/Device name was too short to accept "squirrelserial.device".
    max device name length increased by 1 character to allow this.  To
    avoid shifting of getuser values etc, struct SerPort4->init1 was shortened
    from 50 characters max to 49 characters max.

13. Added mins/hours display to "Idle" display of the WHO command.
    Changes to BBSTEXT lines 907 and 1125-1127.

14. NNTPGet received some much needed attention to increase news import speed.

15. Enforcer hit was generated when initiating upload to direct exchange subboard.

16. Direct exchange subboards were not allowing uploads if minimum free space
    was set larger than 0.

17. Dropping carrier at "Hit RETURN to enter the system:" login prompt caused
    a port lockup.

18. FULL maint users can now edit mail they did not write when using mail verify.

19. Idle time display in WHO was not showing LOGON, TERM nor NEWUSER when a
    port existed in one of those states.

20. TimeIdle variable (used in port idle time calculations) redfined as a ULONG
    to allow for display of longer inactive periods.

21. Fixed log delete bug where a failed delete resulted in no logs being
    readable thereafter.

22. Internet "FINGER" integrated into CNet online finger.  If you have a TCP/IP
    stack running, users may use "FINGER user@internet_host" to get information
    about a user on remote hosts.  "FINGER <local_user>" still works too.
    Information about the remote (user@site) fingered appears in the log for FINGER
    which is previously defined as CNet log ID# 305. Set an "optional filename"
    for this log in Config/logs if you wish to have a separate log for it created in
    your sysdata:logs/ dir.

23. CNetIRC edit server was allowing ridiculous lengths to be used for some
    of the user text/string settings.

24. CNetIRC had the potential to lockup if a user dropped carrier during
    a session.

25. CNetIRC could lockup if your TCP/IP stack connection was lost.

26. Note to Miami users: Be sure that "Down when offline" is enabled in
    Miami's TCP/IP section.

27. Users CNetIRC exit message was not being displayed when they quit CNetIRC.

28. CNetIRC clear screen (eg. /CLS, /C, /CLEAR) command was broken.

29. Added the following log to CONFIG/LOGS:

        LOG NAME: SOCKET
          LOG ID: 413
         PURPOSE: For logging of TCP/IP socket connects, disconnects and
                  general socket I/O information.

    (note this log is currently only used by the Finger command.  It will soon
     be expanded to encompass ALL CNet internet clients)

30. CNetIRC was, at times, not notifying the remote server when a user QUIT
    the server.  This resulted in a "Nickname <nick> already in use" message
    when the same channel was joined during the same IRC session.

31. cnSMTPd was producing software failures if iconified or menufied while a
    session was active.

32. cnSMTPd was not updating a socket connection's list entry when a remote client
    timed out (more than 1 minute of inactivity) or lost connection.  This had
    the appearance of a connection being active/present when it really was not
    connected anymore.


@ENDNODE

@NODE "CHANGES429a" "Changes V4.29a"

                    @{b}Changes/fixes for v4.29a@{ub}

1.  MIME support added to incoming EMAIL.  Using MIMEEd, you can set up your
    own MIME types and associated decoders.
    
    For the decode command, there are some things to note:
    
        use %f for the temporary name that CNet is using as the file to be
        decoded.
        
        use %t for the final filename.
        
           eg. base64 decode from %f to %t

2.  Changes to disallow uploading of files with invalid characters in filenames.
    Changes to lines 402 and 392 of BBSTEXT.

3.  CNet had the potential to allow upload of files named . or .. previously.
    No longer.

4.  cnSMTPd was corrupting mail on some systems running OS V40.

5.  Added byte progress display to cnsmtpd lines and logging of final mail
    size to cnsmtpd log.

6.  EL VDE bug fixed.

7.  W<x> was falsely allowing "long description" to be edited when it really
    served no purpose.  The proper and only way to edit/add a long description
    after the initial "enter long description" prompt has been bypassed is to
    "ED" the item and edit response 0.

8.  Config was not saving IMP config unless a previous cnet:configs/IMP file
    existed.

9.  repair_sub made more verbose by printing subboard names.

10. EL "Network" setting were cycling as "none, usenet, usenet, fido1,
    fido2, etc."  Fixed to cycle as "none, usenet, mailing-list, fido1, fido2, etc."
    Make sure BBSTEXT line 1666 says "MailingList" or similar.

11. Of interest to 3rd party door/utility coders, there are two new cnet link
    libraries in sdk/lib; cnet.lib and cnetc_door.lib. These libraries contain
    many of the functions used in CNet executables which are now available for
    your use.  Library reference in amigaguide format will be released soon.

12. CNet doors and internal modules recompiled to take advantage of new
    cnet.lib and cnetc_door.lib code.  This reduced the size of many
    CNet doors and executables.

13. Type 2 joinlink sessions were not performing initial handshaking properly.

14. QWK import bug fixed.  Added BBSTEXT lines 1757-1758.

15. BBSTEXT line 215 changed.

16. BBSTEXT line 802 changed.

17. Config was sometimes freezing up after pressing SAVE.

18. GetRFCDate() sign for GMT offset was backwards.

19. Mail-task was not creating mail:mimet (mime temp directory) if it did not
    exist.

20. nntpget was showing posts, responses and dupes incorrectly (order not correct).

21. cnSMTPd was not handling empty envelope sender properly.

22. Join was getting an enforcer hit when the last noise in the list was used.

23. cnSMTPd was closing remote connection after receiving a single item rather
    than waiting for possible multiple items and/or remote disconnect.

24. MIME support routines from mail-task added to iuumail.

25. MIMEEd "News save method" was not saving properly.  Please note that, at
    this time, this button has no function.  MIME detection/processing is not
    yet added for usenet news imports.

26. CNetIRC edit server was allowing ridiculous lengths to be used for some
    of the string settings.

         

@ENDNODE

@NODE "CHANGES428d" "4.28c/d Changes"

                     @{b}Changes/fixes for v4.28c@{ub}

1.  Bug fixed where BBSList produced garbage characters in last entry and
    caused enforcer hits.

2.  Change to line 336 of !bbstext_stock.

3.  Fixed unlock which was ot flushing it's output before printing input
    prompts; making unlock appear to be locked up.

4.  Broken "AREA: <area name>" logging in BAD_MSGS reinstated in Toss import
    routines.

5.  Toss altered to handle non-standard/munged packets a bit better.

6.  BGUI Config completed.  wizard.library is no longer required by CNet Amiga.

7.  Fix for bug that allows user to choose who to send mail to if "feedback @login"
    is allowed and "feedback goes to mail #1" is enabled.

8.  Multi-Mail (MM) reinstated.  Changes to bbstext lines 2127-2130 and 2301.

    If mail is sent to a RANGE of users using, for example, the command "MS 1-",
    then the user will be prompted YES/NO for each and every user in the range
    specified.  However, if "MS 1-!" is used, then a global "YES" is assumed.

9.  Also, range mail has been changed and the Multi-Mail flag is applied to any
    mail sent using a range of account numbers or users.  If a user attempts to send
    to more than 1 user per email and the MultiMail proviledge flag is not enabled,
    MailSend is aborted.

10. It is now possible to mail users belonging to a specific access group or
    range of access groups.  To specify an access group or range of access
    groups rather that a user account, the arithmetic plus (+) character is
    added before the access group number.

       eg. MS +31

       The above example would mail all users in access group 31, interactively
       asking the sender if he/she wishes to include each user.

       eg. MS +31!

       This example is the same as the above example except that there is no
       interactive query; ALL users belonging to access group 31 are included.

    other examples:

       MS +1-4
       mail users belonging to access groups 1 through 4.

       MS +1-2,6
       mail users belonging to access groups 1,2 and 6.

       MS +1-2,6;Heavy Metal
       mail users belonging to access groups 1,2 and 6 and also the user with
       the handle "Heavy Metal"

       MS +1-2,6;Electropig;rakey@netrover,com
       mail users belonging to access groups 1, 2, 6, the user with the handle
       "Electropig" and the internet account belonging to "rakey@netrover.com"

    Changes to BBSTEXT line 1522-1523.

11. IMP section of config is now more intelligent.

    If Control is running, instead of requiring that you enter the exact
    GO KEYWORD of the subboard to be associated with the mailing list gate,
    all configured mailing list subboards are listed in a cycle gadget for you
    to choose from.  This cycle gadget is updated dynamically so, if you find
    that you haven't created the mailing list subboard yet: create it and then
    click on ANY entry in the IMP list of Config and the cycle gadget will be
    updated to contain the newly added mailing list subboard go keyword.

    If Control is not running, you MUST enter the full text GO KEYWORD of the
    mailing list subboard, as before.  For absolute error-free GO KEY choice,
    we recommend that you have Control running while setting up your IMP
    mailing list gate(s).

    NOTE: After changing IMP config, you must (still) quit and reload Control
          for your IMP changes to take effect.  this limitation WILL be removed
          soon.

12. New sysop GUI "UserEdit" added to ease local console editing of users!
    If a port is selected, and the UserEd button of Control is clicked,
    the selected port user is auto-selected in UserEd's list.  The UserEd
    GUI is similar to the online "EL" VDE (Visual Data Editor).
    
    UserEd buttons/Gadgets:

       USERS:
       A list of existing BBS users.  Select a username to view
       and that user's account attributes are displayed in the
       initially locked gadgets.  Note that if a user is in LOCK/EDIT
       mode, clicking on any user in this list will cause your changes
       to be abandoned.

       LOCK/EDIT:
       Use this button to LOCK the currently selected user and begin
       making changes to account attributes.
       
       UNLOCK/SAVE:
       Use this button to commit/save any changes made to an account
       since the LOCK/EDIT button was pressed.

       REFRESH:
       Refreshes the UserEd user list and the current user.  Note that
       if you use refresh while a user is locked/edited, you will lose
       any changes made to that user.

       All other buttons, tabs and other gadgets are exactly like their
       online "EL" VDE version in name and attribute.  See your CNet manual
       if you need information on any of these attributes and their
       purpose.

13. (coders) Mailboxes now require locking a semaphore before accessing
    _mhead/_mtext.  The semaphores associated with mailboxes range from
    0 to myp->Nums[0] and are located in a dynamic array of SignalSemaphores
    in myp->MPE->MailSem[x] where x=Account_Number-1.

    Try not to keep these semaphores locked for too long as users logging
    on may need to access their mailboxes and if you have an outstanding
    lock on their mailbox.  eg. lock mailbox, read/write/copy data, unlock
    mailbox.

    See control.h and the MainPortExtension structure for more info.  

14. New function GetRFCDate() added to cnet.library for support of
    internet RFC format dates.  Note that CNet uses locale.library to get
    GMT offset information.  You should set your system timezone using the LOCALE
    preferences editor found in sys:prefs.

    example for coders:

       void main(void)
          {
          char datebuffer[40];
          struct Library *CNetBase;

          if(CNetBase = OpenLibrary("cnet.library", 4L))
             {
             GetRFCDate(datebuffer);
             Printf("RFC date is: %s\n", datebuffer);
             CloseLibrary(CNetBase);
             }
          return;
          }

15. #?-task buffer refresh now more efficient when de-menufiying and de-iconifying.

16. Setting was not being saved for "Command" string gadget of Config/IMP when
    process-type "AmigaDOS/RX script" is used.


                     @{b}Changes/fixes for v4.28d@{ub}
1.  SMTP daemon (cnsmtpd) now included with CNet.  This daemon is one that
    should be run AFTER both your TCP/IP stack AND Control are running.  It
    will accept a maximum of 32 simultaneous SMTP connections. It is also an
    AmigaDOS executable that should be run in any AmigaDOS Shell.

         eg.  run cnet:cnsmtpd

2.  SMTPd section added to Config.  There are currently two lists on this page:

         LOCAL HOSTNAME/ALIASES
         
           This is a list of hostnames/aliases that your system is known as.
           For example, your system may have multiple domain names.  Enter
           all names/aliases that your system is known as in this list.
         
            eg. metalshoppe.dyn.ml.org
                metalshoppe.com
              
                (note that the above examples are not really existant. They are
                 for purposes of illustration only)

           NOTE: An entry for "LOCALHOST" must exist so be sure to add this alias.


         SPAM HOSTS/IPs
         
           This is a list of sites, hostnames and IPs that should be ignored.
           If a system in this list attempts to hit your system via SMTP
           it will be ignored.

            eg. make.money.fast.com
                spam.com

                (note that the above examples are not really existant. They are
                 for purposes of illustration only)

3.  CNetIRC EDIT SERVER fixed.  It was previously possible to specify a server
    number higher than that of the number of servers configured.

4.  TimeZone setting added to Config/defaults.  Please set this attribute
    to the three letter abbreviation of your timezone (eg. CST, EST, etc.)

5.  Control received a new menuitem titled "cnsmtpd" under the menu "Internet"
    When selected, this menuitem will run the cnsmtpd task.

    NOTE:  This menuitem requires that cnsmtpd be located in your CNET: directory.

6.  Added S=RUNSMTPD arg to Control.  To have Control run cnSMTPd when it boots
    use the S arg as follows:

       run <>NIL: Control s

7.  Host Filter editing added to cnSMTPd.  "SPAM" hosts can be added while
    sessions are in progress.  Changes are saved to disk when the Host Filter
    window of cnSMTPd is closed.  cnSMTPd doesn't apply the changes to sessions
    until they are saved to disk.

8.  CNetIRC now allows local "Everywhere" commands to be used.

        eg.  /WHO

9.  CNetIRC status bar fixed in many key locations where it was not refreshing.

10. CNetIRC now displays OLMs when received by the user's port rather than after
    quitting IRC.

11. Amaint enforcer hit removed.

@ENDNODE

@NODE "CHANGES428b" "4.28a/b Changes"

                     @{b}Changes/fixes for v4.28b@{ub}

1.  All task GUIs converted to BGUI layout.  One difference from the
    StormWizard task GUIs is that to save the mail-task window position,
    you must use the menu "MAIL-TASK" menu and select SNAPSHOT WINDOW to save
    window size/position.  Control's Mail, Files, Yanks and News popup menu
    buttons also received a new menuitem, "Snapshot Position" for extended
    control.

2.  Fixed IMP Mailing List Gate bug where only replies were being sent to the
    mailing list address; posts were posted using the regular subboard posting
    mechanism.

3.  Fixed global FTN post/reply bug which caused posts/replies to be sent to
    the wrong network.

4.  All CNet GUIs now have public screen support.  If you run control using
    the PUBSCREENNAME=<screen name> arg, all CNet tasks (eg. mail-task,
    file-task, etc.) will open their windows on the public screen specified
    when spawned by Control - whether at startup or when you use the popup
    menu task buttons.  Each task also has it's own PUBSCREENNAME argument
    that can be added if you choose to run the task(s) via script or by hand.

    PLEASE NOTE that Control does not (yet) open the public screen for you. You
    must use a utility such as ScreenWizard, ScreenManager, Pubby or some other
    public screen utility to initially open the public screen that you want
    CNet to use.

Note: The StormWizard layout library (wizard.library) is still used for CNet's
      "Config" program which will be re-written to use the faster BGUI layout
      engine in a later release.  The Config GUI re-code will take approx. 2
      days to complete.  Therefore, some previously reported bugs must be
      fixed in the meantime.  Please have patience with the current
      StormWizard Config program.  It will be much faster and less buggy once
      converted to BGUI. Once Config is re-written, the buggy StormWizard - as
      far as CNet development goes - will be scrapped.


@{b}Changes/fixes for v4.28a@{ub}
------------------------
1.  Fixed "**NULL POINTER**" that was appearing in mail subject of some mails.

2.  Fix for the amaint bug that results in the user being put in a different
    subboard after completion.

3.  Alternate Control BGUI created using the BGUI.library BOOPSI GUI layout
    library. BGUI may end up taking over since StormWizard could not function
    propely.  You do not have to rename the BGUIControl as Control but you
    may if you like.  BGUIControl, of course, accepts the same CLI args
    that the StormWizard Control did/does.

4.  For the BGUI Control GUI, you can now define which system stats are
    displayed.  The default of "Sysop Mail, Mail1, Calls Logged, Total Calls,
    Current NUsers, Users, Posts Now, Resps Now" can be changed.
    
    To change the items displayed, edit BBSTEXT line 2335.  Each %X represents
    one item on the Control panel stats display. eg. %g represents "Sysop Mail".
    Also, it is critical to note that the order that you put these in is not
    important but there is an order in the layout process.  Each %X is laid out
    as follows:

                    1  3  5  7   9   11
                    2  4  6  8  10   12

    So, "%g%i%q%r%n%s%j%k" is laid out as so:

      Sysop Mail: xxx  Calls Logged: xxx  Current NUsers: xxx  Posts Now: xxx
           Mail1: xxx   Total Calls: xxx           Users: xxx  Resps Now: xxx

    Example 2: "%1%i%q%r%n%s%j%k" is laid out as so:

     Total Sysop: xxx  Calls Logged: xxx  Current NUsers: xxx  Posts Now: xxx
           Mail1: xxx   Total Calls: xxx           Users: xxx  Resps Now: xxx

    NOTE that the difference in example 2 is the change of the first sequence
    from %g to %1 which changed "Sysop Mail:" to "Total Sysop:"

    Here is the list of available variable placeholders for Control's status
    "bevel box" area:

       %1   =   Total FBack            %2   =   Total Mail
       %3   =   Total Mail1            %4   =   Total Posts
       %5   =   Total Responses        %6   =   Total ReadText
       %7   =   Total Doors used       %8   =   Total Newusers & Guest
       %9   =   Total Upload Files     %a   =   Total Upload K
       %b   =   Total Download files   %c   =   Total download K
       %d   =   Total Minutes USE      %e   =   Total Minutes IDLE
       %f   =   Total Charges          %g   =   Current FBack
       %h   =   Current Mail           %i   =   Current Mail1
       %j   =   Current Posts          %k   =   Current Responses
       %l   =   Current ReadText       %m   =   Current Doors used
       %n   =   Current Newusers       %o   =   Current files online
       %p   =   Current files K online %q   =   Calls logged
       %r   =   Total Calls            %s   =   Total users

    NOTE that after changing the Stats lines in bbstext, you must use the
    Control RELOAD TEXT/MENU menuitem and then close (iconify) and reopen
    the BGUIControl window to see your changes.

@ENDNODE


@NODE "CHANGES428" "4.28 Changes"

1.  Config listview problems fixed in Logs, Modems, etc where double-clicking
    on a list item caused an alert.

2.  Config was now allows the addition of a "modem" with no device.name to
    be used as a local port.

3.  One can no longer run Config if the Control panel is locked.  Remember, after
    you select "Lock and Write Setup" in Control's menu, you must use the command
    CNET:UNLOCK to unlock the Control panel.

4.  One can no longer run CRON if the Control panel is locked.  Remember, after
    you select "Lock and Write Setup" in Control's menu, you must use the command
    CNET:UNLOCK to unlock the Control panel.

5.  Fixed File-Task Appicon which was not being properly saved in
    Config/Display/File-Task Appicon.

6.  InterceptMailProcess (IMP) added to CNet.  IMP is destined to be one of the
    most powerful concepts of the CNet mail sub-system. Using the Config/IMP
    section, you can now have CNet look for messages addressed TO or FROM users
    and have that mail processed one of 2 CURRENT ways (may be expanded in the
    future):

           1) by a DOS script specified in the IMP section of config.
           2) by redirecting to a CNet subboard as a mailing list gate
              also configured in Config/IMP.

    Config's IMP attributes will change depending on the type of processing
    is to be done for the TO or FROM address given.

    The "Apparent Recipient" is any string of alpha-numberic characters
    currently matching one of the following: (full AmigaDOS pattern matching is
    supported here).

           1) The "TO:" of an RFC-822 compliant Internet E-Mail.
           2) a FTN (FidoNet) email's TO address.

    The "Apparent Sender" is any string of characters (with full AmigaDOS
    pattern matching) matched in any combination of the following fields/formats:

           1) The "Reply-To:" or "From:" of an RFC-822 compliant Internet E-Mail.
           2) a FTN (FidoNet) email's FROM address.

    Toss, mail-task and iuumail have been altered to support the IMP system.
    As with any new concept or feature, there may be minor bugs. Please
    report any bugs ASAP.

    IMPORTANT IMP EXAMPLE:
    
           The Apparent Sender/Recipient field should COMPLETELY match the
           attribute it is being compared against.  Thus, if one wanted
           to gate the cnet mailing-list to a subboard with a "GO keyword"
           of mailinglist_cnet, look at the "Reply-To:" header of the email
           and find the following:

                 Reply-To: cnet@megalith.dade.fl.us (MailingList 'cnet')

           To successfully gate all mail with a Reply-To like this, you would have
           to use one of the following examples as the "Name/Pattern" of your IMP
           filter:

                 cnet@megalith.dade.fl.us (MailingList 'cnet')
                 #?cnet@megalith.dade.fl.us#?
                 #?MailingList 'cnet'#?

           or any variation thereof. Note that the first possible name/pattern
           is not a "wildcard" pattern and is a COMPLETE match for the whole
           Reply-To.  However, the other name/pattern examples all contain the
           AmigaDOS wildcard pattern (#?).  WildStar (*) support is possible
           if you have enabled Wildstar via a Commodities exchange program (AKA
           commodity).

6.  Mailing List support (gating in/out) added to CNet subboards. To make a CNet
    subboard a mailing list gate:

           1) use the EL command and set the subboard's NETWORK setting to
              "Mailing List".  
           2) Set the "Process Method" in Config/IMP to "Mailing List Gate".
           3) Set the Detect Type to "Apparent Sender" and be sure that the
              Name/Pattern matches or partially matches the "Reply-To"
              address of the mailing list.
           4) Set the "List Address" to the e-mail address of the mailing list.

7.  Change to BBSTEXT lines 1666 and 1867-1870 for mailing list support.

8.  Added help file systext:help/mailinglist.

9   Final fix of the "missing short description" bug when files are moved.

10. Fixed problem that some sysops were experiencing which caused crashes when using
    shortcut keys (eg. Right Amiga '-').

11. Of interest to door coders, more functions appear in cnet.library:

       ------------------------
       Name     : NumFromUnique
       Prototype: short NumFromUnique(char *gokeyword);
       Purpose  : Allows one to find the physical subboard number of the
                  subboard having a go keyword of <gokeyword>.  The physical
                  subboard number is the one used to access the given subboard
                  in the global subboard list.
       Returns  : Physical subboard number pertaining to the given go keyword or
                  -1 if not found.
       Bugs     : None

       EXAMPLE:

               short PhysNum;

               PhysNum=NumFromUnique("FILES");
               if(PhysNum > -1)
                  {
                  sprintf(z->ABuffer, "GO keyword FILES pertains to subboard %s\\n",
                                      myp->Subboard[PhysNum].Title);
                  PutA();
                  }
               else
                  PutText("No subboard found with a go keyword of FILES\\n");


       ------------------------
       Name     : FindOrdinal
       Prototype: struct Node *FindOrdinal(struct List *list, short n);
       Purpose  : Finds the list node pertaining to a given node number.
       Returns  : Pointer to the Exec node pertaining to <n> or NULL (0L)
                  if not found.
       Bugs     : None

       EXAMPLE:

               struct Node *nodeptr;
               struct Node addnode;
               char nodename[10]; // 9 chars max nodename + 1 char for NULL ('\\0') byte
               struct List mylist;

               // list setup
               NewList(&mylist);
               strcpy(nodename, "dummynode");
               addnode.ln_Name = &nodename[0];
               AddTail(&mylist, &addnode); // could have also used AddHead()..

               // FindOrdinal usage..
               nodeptr=FindOrdinal(&mylist, 0);
               if(nodeptr != &addnode)
                  Printf("Error finding node %d\\n", n);
               else
                  Printf("Node %d found; name: %s\\n", n, nodeptr->ln_Name);


       ------------------------
       Name     : InStr
       Prototype: short InStr( char *string, char *isin );
       Purpose  : case insensitive check to see if <isin> is a substring of <string>
       Returns  : 0 if <isin> is NOT a substring of <string>, starting position
                  of match otherwise.
       Bugs     : None

       EXAMPLES:

               if((InStr("Reply-To: rakey@netrover.com", "reply-to: ") == 1)
                  {
                  printf("This is a valid Reply-To line.\\n");
                  }

               if((InStr("Rly-To: rakey@netrover.com", "reply-to: ") == 0)
                  {
                  printf("This is not a valid Reply-To line.\\n");
                  }


       ------------------------
       Name     : AllDigits
       Prototype: short AllDigits( char *string);
       Purpose  : check to see if <string> contains only ASCII digits
       Returns  : TRUE (1) if string is all digits, FALSE (0) otherwise.
       Bugs     : None

       EXAMPLES:

               if(AllDigits("12345678901234567890"))
                  printf("All digits!\\n");
               if(AllDigits("1a3b5c7d9e1f3g5h7i9j"))
                  printf("Oops! Some non-numeric characters present!\\n");


       ------------------------
       Name     : CopyFilterText
       Prototype: CopyFilterText(char *dest, char *source);
       Purpose  : Copies source to destination, removing MCI, carriage returns
                  linefeeds and converting TABS to 3 spaces in the process.
                  This is the function used to prepare text to be displayed in CNet
                  GUI buffers.
       Returns  : None
       Bugs     : None

       EXAMPLES:

                  // print a known BBSTEXT line that has MCI in it
                  PutText(bm[44]);

                  // now Copy/Filter the same line to z->ABuffer and print it
                  // using PutA()
                  // the second printed version will be stripped of MCI and the
                  // control characters mentioned previously.
                  CopyFilterText(z->ABuffer, bm[44]);
                  PutA();

@ENDNODE

@NODE "CHANGES427b" "4.27b Changes"

1.  Re-instated BBSTEXT line 1124 to allow MCI to be executed at the END of
    the new user process.

2.  All background task GUI (mail-task, file-task, etc.) buffers now
    scroll so that the last action performed is visible in the scrollback
    display at all times.

3.  Added Yank-task GUI, very much similar to mail-task, news-task and
    file-task GUIs.

4.  Added window menus for clipboard support to mail-task, file-task, yank-task
    and news-task GUIs to allow buffer contents to be copied to clipboard unit 0.

5.  Added the ability to save all "task" GUI buffers to a file.  This is also
    in a window menu as "Save buffer as.."

6.  Added clipboard support to CNet's Visual editor (VisEd), finally!  Each port
    uses one of 100 separate units of the Amiga clipboard.device.

       eg. BBS port 0 uses clipboard.device unit 1
           BBS port 1 uses clipboard.device unit 2

    this is intenational so that online users do not disturb the contents
    of unit 0 which is used by many other Amiga application programs.

    Some editors, such as CygnusEd allow you to select a clipboard unit to paste
    from.  The sysop may, for example, on port 3 copy a region of text in
    his VisualEditor to the clipboard (using the VisEd REGION MARK and then REGION
    COPY commands) and then, in CygnusEd, select clipboard unit 4 and paste
    from that unit, to insert his VisEd text into CygnusEd.

7.  Config/tasks section added for configuration of mail, news. file and yank
    task.

8.  Added max buffer sizes for all tasks in Config/tasks.  These settings are
    the maximum number of LINES to be buffered in the "status listview" at the
    bottom of each #?-task GUI.  Anything past the number of lines specified
    will result in a first-in/first-out replacement of buffer lines.  A setting of
    0 means that you do not want the task buffers to be trimmed.

@ENDNODE


@NODE "CHANGES427a" "4.27a Changes"

1.  The EnterPassword() function now supports case-sensitive password entry.
    Use the following function or a snippet of this code in your doors, to support
    case sensitivity in passwords:

       void MyGetPassword( void )
          {
          // retain old input case setting
          UBYTE OldCaseFlag=z->NoCaseConvert;

          // set input routine flag to NOT convert password to uppercase
          // this same flag affects the case setting of the OneKey()
          // function also
          z->NoCaseConvert=1;
          EnterPassword();
          
          // restore old input case setting
          z->NoCaseConvert=OldCaseFlag;
          }

    NOTE: the password received by EnterPassword() and, hence, the password
          received by the MyGetPassword() function above is always retained
          in z->InBuffer after calling EnterPassword(). Also note that
          if z->NoCaseConvert is set to 0 (the default) instead of 1, the returned
          password is all uppercase.

2.  DOS arg support added to transpose for use in BBSMENU commands AND CNetC
    Cron events. Tranpose now accepts two DOS arguments; a user account number and
    an access group number to do auto-transpose.

      eg. {CNET:DOORS/transpose 1 31}

    The above would assign account number 1 to access group 31.

    With auto-transpose, the only "priviledge flag" not lost is the
    "SuperUser" flag.  All other flags, limits and priviledges are set to the
    newly assigned access group defaults.

    NOTE: both arguments must be specified and must be NUMERIC.  No
    handle/name parsing is performed for auto-transpose.

3.  The Control panel's Mail, File and News task buttons are now multi-
    function pop up menu buttons that have different functions depending
    on whether the tasks are absent, running, iconified or menufied.

4.  Controversial password echoing removed.  No longer does CNet echo
    a user's password back to them after the newuser process is complete nor
    does CNEt display the user's password as it is entered.  A second password
    prompt now serves as verification that the user entered the intended
    password.

    Changes to BBSTEXT lines 168-170 and 1124-1129 inclusive.

5.  Both iuumail and mail-task's internet email import was ignoring mail files
    that had messages containing \\t (tab) in the "from: " field. Fixed!

6.  Mail-task was not sending spooled email unless an email was written while
    the system was connected to the internet.  mail-task now checks for a valid
    internet connection (via bsdsocket.library) every x seconds in order to
    send spooled internet mail.  The spool-send-timeout is configurable in
    the defaults page of Config as "Mail Timeout (secs).  If there is no spooled
    mail, the connection check is not performed.

7.  File-task has received a GUI much like mail-task and news-task GUIs so that
    it is easier to visualize file-task's test and transform processes.
    Don't forget to copy (or create your own) sysdata:file-task.info if you
    want file-task to be capable of being iconified.

@ENDNODE

@NODE "CHANGES427" "4.27 Changes"

1.  Fixed CNetIRC enforcer hits that occured when no TCP stack was running
    and a user runs CNetIRC.

2.  Mail-task is now capable of posting internet mail directly to a SMTP
    mail server.
    
    The following config settings have been added to CNet config, to
    support SMTP posting:
    
     DEFAULTS:  Mail Server
     OPTIONS:   Send Mail - options: "using external sendmail"
                                     "using internal SMTP"

@ENDNODE

@NODE "CHANGES426k" "4.26k Changes"

1.  Bug fixed in which expire mail caused mail counts to be improperly
    represented.
2.  Fixed Control "stats" display bug which consumed CPU bandwidth.
3.  Added "Posts" and "Responses" statistics display to Control.
4.  Fixed Config bug in which Export-To areas and nodes were flagged
    incorrectly.  Exported areas were denoted with no "+" and non-exported
    nodes were denoted by a "+".

@ENDNODE


@NODE "CHANGES426j" "4.26j Changes"

(This was just a quick bug-fix release consisting of mail-task, news-task
and Config and their associated #?.wizard and #?.cd files.)

1.  Fixed some minor case inconsistencies in Config GUI.
2.  Mail-task and news-task GUIs reworked slightly to allow the windows to
    be compacted even more.
3.  Fixed a major Config ScreenMode bug that was causing TWO Config windows to
    open leaving one window open when Config was closed.

@ENDNODE

@NODE "CHANGES426i" "4.26i Changes"

1.  BBSList and associated amaint bbslist maintenance code re-written.

2.  CBase.library is no longer required for CNet/4.  You may delete
    libs:cbase.library once you are satisfied that you will not be
    regressing to a version of CNet previous to v4.26i.

    Also note that because cbase is no longer used for amaint or bbslist,
    cbase.library is now obsolete.

3.  Fixed cnet.library's HNameToUUCP() bug which caused netmail/email to
    "sysop" to be bounced.

4.  Various Control Panel GUI fixes to optimize speed and correct visible
    quirks due to Control panel window sizing.

5.  CNet's Config GUI received a brand new look designed to enhance
    user-friendliness!  Like all other CNet executables that are GUI-based,
    you must issue the command CD CNET: before running the new config.
    A new "Config" button has been added to the CNet Control panel to allow easy
    Config execution.

@ENDNODE

@NODE "CHANGES426h" "4.26h Changes"

1.  Fixed CNET:CLOSE command and added a new "ALL" argument.

       CLOSE ALL will close all ports one at a time when users logoff.
       CLOSE ALL HANGUP will close all ports and dump users immediately.

2.  Fixed Z search lockups when a file with > 8 line short file description is
    displayed.

3.  Various new Control GUI fixes.  Please notify ZenMetal if there are any
    remaining quirks apparent.

    KNOWN BUG: sometimes, when Control is resized, a few gadgets are not
    refreshed. This includes the window SIZE gadget itself.  The gadgets ARE still
    attached.  Resizing the window again will make the gadget(s) re-appear.
    This is a StormWizard SCROLLER gadget bug which has been reported to HAAGE &
    PARTNER and will be fixed as soon as possible.

4.  Fixed cnfingerd.

@ENDNODE

@NODE "CHANGES426g" "4.26g Changes"

1.  Control Panel, mail-task and news-task all received a new look.  CNet sysop
    GUIs are now created using HAAGE & PARNER's StormWizard 2.0.  You'll notice
    a nicer flow to CNet GUIs and also more Intuition Style Guide compliance.
    The next release, Config and Cron will also receive the new GUI treament
    as well as more bug-fixes reported throughout the v4.26f release.


@ENDNODE

@NODE "CHANGES426f" "4.26f Changes"

1.  Mail filtering at both user-level and sysop-level added.

2.  sysdata:sys.MailKill added.  Use "MK" to edit this file.

    The MailKill file essentially functions as an incoming GLOBAL mail filter.  What
    makes it global is that no matter WHO the incoming mail was addressed to, it
    will never be imported/delivered to anyone on your system.

    You may put handles, real names, network addresses or partial matches for any of
    the aforementioned in the mailkill file.  Mail kill patterns/names
    are entered one pattern per line.  Be VERY careful with auto-killing internet
    mail.  You may essentially short out your complete internet mailing system.
    Be sure to use the proper filter pattern forthe intended mailkill entry.
    
    Each user will also have his own private mail kill capabilities, known as
    a "twit filter".  This is edited by the user using the "MF" (MailFilter)
    command. (but not yet implemented as of CNet v4.26f)

    Kill filters use the familiar AmigaDOS pattern parsing/matching system so,
    if you have a wildstar (*) commodity installed, * may be used in place of #?
    in patterns.  Also the special characters ~()? may be used.  The character
    '?', when used in a pattern represents any character. "#?" represents
    a whole substring of characters. See your AmigaDOS manual for more
    information on AmigaDOS file patterns.

    Changes to BBSTEXT line 1200.

    Example MailKills
    -----------------

    eg. Internet filters:

        single user:                    username@somedomain.ext
        whole domain:                   #?@somedomain.ext
        .org domains:                   #?@#?.org
        .com domains:                   #?@#?.com

        ISP specific kills

        all users at netrover's
        Windsor providership:           #?@windsor#?.netrover.com

        all users at AOL:               #?@aol.com
                           
        psuedo-Class C internet filter: #?@ipbits1.ipbits2.ipbits3.#?
        psuedo-Class B internet filter: #?@ipbits1.ipbits2.#?.#?
        pseudo-Class A internet filter: #?@ipbits1.#?.#?.#?

        NOTE: although Class A, B and C internet IPs have ranges
        of bits for true class A, B and C qualification, ranges are currently not
        allowed in mail filters.

        Ranges WILL be added in the future.


    eg. FTN (Fidonet) filters

        single user:                    username@zone:net/node.point
        user@subnet:                    Spammer@1:246/#?.#?
        whole subnet (all nodes):       #?@1:246/#?.#?
        whole zone:                     #?@1:#?/#?.#?

    eg. Local user filters

        single user real name:          Ray Akey
        single user handle:             Heavy Metal
        single user account:            1
        multiple user account:          1-20
        all local users:                #?

    eg. Short circuit ALL mail on your system (requires 4 patterns)

        #?*#?:#?/#?.#?
        #?@#?:#?/#?
        #?@#?
        #?

    Again, be very careful adding MailKill entries as a few mis-keyed entries
    could result in short-circuiting the ENTIRE mail system on your BBS or,
    at least short-circuiting any one of local, fidonet or internet mail.


3.  Mail-task received additional log window output to support MailKills.
    If a global mailkill has been effected, you will see the message,
    "Global MailKill: <username>" in the Mail-task window.  Additionally,
    you will see information on who the sender was sending the mail to
    immediately under a mailkill message as: Intended recipient: <username>

4.  Implementation of personal user mail filters.  Users use the MAIL;FILTER
    command to edit their personal mail filter list.

    The SYSOP (or any user with the SYSOP MAINTENANCE priviledge flag) may
    edit the filter lists of other users by supplying an additional
    argument (handle, real name, account) to the FILter command.

       eg. MAIL;FILTER Heavy Metal

    Changes to BBSMENU section "17; Mail".  Note the addition of the "FILter"
    command.

    Changes to menu file systext:menu/mail

    Mail filters are entered one per line.
    Mail filters can be an account number or a partial or full user/network
    address.

       examples: Ray Akey@1:246/74          <- single user REAL name
                 Heavy Metal@1:246/74       <- alternate (handle) method for the same user
                 rakey@netrover.com         <- internet address
                 #?@netrover.com            <- all users at ISP netrover
                 1                          <- local account #1 (sysop)
                 Heavy Metal                <- local user

5.  Personal user mail filters added for subject filtering. Additional
    Changes to BBSTEXT lines 278 and 2261-2264.

    The sysop (or any user with FULL maint) can edit user mail filters
    by entering the POST OFFICE FILTER SETTINGS (MAIL;FIL) and then Nx or Sx,
    where x is the user's account number, handle or real name.

    Please note that subject filters can be a specific topic, or may contain
    pattern matching characters (?, #?, *, etc.)

    Any incoming personal mail that has a topic matching any of the patterns
    specified in the recipient's subject mail filters will be ignored by
    CNet.

6.  Added section "43;Mail filters" to BBSMENU (see !bbsmenu_stock).

7.  Added menu file systext:menu/mailfilter.


@ENDNODE

@NODE "CHANGES426eR1" "4.26eR1 Changes"

                          @{b}CHANGES/FIXES FOR V4.26eR1@{ub}

1.  Short descriptions (most importantly, FILE_ID.DIZ) were not being trimmed
    properly after searching for FILE_ID.DIZ or FILES.BBS. Fixed.

2.  Fixed improperly diagnosed disk free-space displays that have been wrong
    since CNet/3 days.

@ENDNODE


@NODE "CHANGES426dR2" "4.26dR2 Changes"

                          @{b}CHANGES/FIXES FOR V4.26dR2@{ub}

1.  Logging of "ABuffer munged" to sysdata:log/execute whenever the BBS
    detects that an external door has corrupted z->ABuffer.

2.  ABuffer munge check now corrects ABuffer in an attempt to reduce system
    crashes.  Sysops should still reboot or reload the troubled port ASAP
    if they see "ABuffer munged but temporarily corrected" in the log
    sysdata:log/execute.  Be sure to check that log 408 exists in the LOGS
    section of CNet Config.  Log 408 should be named "Execute"

3.  Added ANSI detect @ login. Changes in lines 672, 673 and 674 of bbstext.
    Be sure to remove any previously installed ANSI detection doors from BBSTEXT
    line 22.

4.  When moving file items (the MO command), it is now possible to REPLACE an
    existing file of the same name.  Change to BBSTEXT line 1779.

@ENDNODE


@NODE "CHANGES426d" "4.26d Changes"

                          @{b}CHANGES/FIXES FOR V4.26d@{ub}

1.  Logging of "ABuffer munged" to sysdata:log/execute whenever the BBS
    detects that an external door has corrupted z->ABuffer.

2.  ABuffer munge check now corrects ABuffer in an attempt to reduce system
    crashes.  Sysops should still reboot or reload the troubled port ASAP
    if they see "ABuffer munged but temporarily corrected" in the log
    sysdata:log/execute.  Be sure to check that log 408 exists in the LOGS
    section of CNet Config.  Log 408 should be named "Execute"

3.  Added ANSI detect @ login. Changes in lines 672, 673 and 674 of bbstext.
    Be sure to remove any previously installed ANSI detection doors from BBSTEXT
    line 22.

4.  When moving file items (the MO command), it is now possible to REPLACE an
    existing file of the same name.  Change to BBSTEXT line 1779.

@ENDNODE


@NODE "CHANGES426d" "4.26d Changes"

                          @{b}CHANGES/FIXES FOR V4.26d@{ub}

1.  Implemented Personal user configuration in CNetIRC.  Changes to bbstext
    lines 2292-2334.

2.  Fixed bug where invalid fidonet mail addresses were being incorrectly
    interpreted and sent as internet email.

3.  Nodelist searching (COMMAND: mail;nodelist) fixed for Traplist.library
    v5.2 and below.  The newer traplist.library v5.4 NLEnumNode() function
    is broken and cannot be fixed until I receive a new developer package 
    from the Trapdoor people (request in progress).

4.  News-Task is now started by Control.  To stop Control from running this
    task, add the "W" switch to your Control args in CNet-Startup as follows:
    
       run >NIL: <NIL: Control W

                OR

       run >NIL: <NIL: Control NONEWSTASK

5.  SOME **CNETC** DOORS MAY NEED TO BE RECOMPILED/UPDATED.  PLEASE READ THE
    FOLLOWING IN ENTIRETY TO AVOID PROBLEMS.

    The largest BBSTEXT line length restriction has been removed!  The size
    (length) of the internal ABuffer is now (somewhat) dynamically configurable.
    The sysop sets the MAX size of ABuffer in Config/Limits now, in the
    "Output Buffer (ABuffer) size" attribute.

    If you forget to set this in Config/Limits, the BBS will use a value of 256
    by default.

    The value of "ABufferSize" can be anywhere between 256 and 9999 inclusive.
    These limits are enforced by Config/Limits.

    Please be aware that, after making a change to Config/Limits/ABuffer size,
    Control MUST be restarted before the change will take effect.

    As a side note, contrary to what some sysops believe, there is only ONE
    copy of bbstext in memory at any given moment.  CNet does NOT load a
    separate copy of bbstext for each and every port.  If you increase your
    bbstext by 100 characters, it will only take up approx 100 bytes of memory.

    The only exception to the "one bbstext in memory at a time" rule is
    if you are using "forced" or "port specific" bbstexts for different ports,
    or if you are using more than a single "text translation" (eg.
    bbstexts in two languages)

    Another consideration is to be careful not to set ABufferSize TOO large
    as you lose (number_of_ports_loaded * size_of_ABuffer) bytes when ABuffer
    is increased.  CNet previously used 256 bytes.  A value of 1024 is now 
    recommended.  But, by all means, if you have the memory to spare, feel
    free to make it larger.  You are the one who will benefit by the increased
    size by being able to expand bbstext line lengths that much more.

    C CODERS NOTE #1: please note that ABuffer is now a POINTER variable.  That is,
    the memory set aside for ABuffer can now reside anywhere in memory.  Do not
    count on ABuffer being "in" PortData memory space anymore.  It
    is allocated when each port loads.  z->ABuffer now points to the location
    where the buffer was actually allocated.

    C CODERS NOTE #2: Any door(s) you have written, that use z->ABuffer, MUST be
    recompiled.  SOME older doors may work ok as long as they do not use PutA()
    or otherwise access z->ABuffer.  AmigaDOS doors are not affected by this change
    if they do not access z->ABuffer or myp->PortZ[x]->ABuffer.
    A general rule is to check the WHO command after running a door.  If the actual
    port text is not shown, z->ABuffer has been corrupted and the door you ran last
    needs to be updated.  Another symptom that z->ABuffer has been corrupted is that
    the HEADER (eg. Name, date) of mails and posts/responses will not appear but the
    body text of the message will be printed unscathed.

    AREXX CODERS: If your code uses z->ABuffer directly, you will need to
    alter your door so that it gets the 4 BYTE (32-bit) ADDRESS of the ABuffer
    from z->ABuffer and use THAT address to access ABuffer.  The 4-byte address
    that z->ABuffer points to is the start of the actual memory block that
    where ABuffer space begins.  For example, If the number in z->ABuffer is
    1135a278 Hex, and ABufferSize is 1000, then the actual buffer starts at
    1135a278 Hex and ends at 1135a660 Hex.

    ALL CODERS: The sysop-defined ABuffer LENGTH is stored in myp->gc.ABufferSize
                The address of the START of allocated ABuffer memory is stored in
                the pointer z->ABuffer

6.  CNet no longer prompts you to "Enter an OPTIONAL long description" if "AO!" is
    used to adopt files.

7.  System "NEWS" path (eg. news users see at login) is now configurable in
    the PATHS section of CNet Config.  If you have a subboard set up for users
    to read system news, make sure the "data path" of the subboard and the path
    in "Config/Paths/News Path" are the same.

8.  OLMs are now time-stamped (coders: see olms.h for type).  When an OLM is
    displayed by CNet, it will print the elapsed time (mins:secs format) since the
    OLM was received from the sender.

    Changes to BBSTEXT lines 893, 898 and 920.

9.  It is now possible to specify whether specific ports are shown on the WHO
    display whether idle or not.  This is set in CNet Config, in the "modems"
    section, for each port.

    To toggle whether a port is to be shown on the WHO display, select the modem
    number in Config/Modems and click on the list item "Show Port on WHO display."
    To effect this change, all ports must be reloaded (eg. close port and reload -
    Control does NOT have to be restarted!!).


@ENDNODE


@NODE "CHANGES426c" "4.26c Changes"

                          @{b}CHANGES/FIXES FOR V4.26c@{ub}

If you are running a version previous to 4.26a, please see the note in the
changes for 4.26b section - corrupt userdata may ensue if you to not read
that section

Also: install ALL files and libraries present in this package.  Failure to do
so may result in corrupted userdata.


1.  Fixed Edit Mail Alias (MA) Address field to allow longer for internet
    addresses.

2.  CNetIRC completed.  CNetIRC is a complete IRC solution for your users to
    chat using the Internet Relay Chat protocol.  CNetIRC, like other internet
    clients, requires that you have a TCP/IP stack running.  ZenMetal Software
    recommends Miami which is much easier than AmiTCP for sysops to install.
    The Miami demo can be acquired from the ZenMetal support BBS(es) and aminet
    sites worldwide. The Miami demo has a 30 minute connection limit which is
    generally enough time to test a functional setup.  At the time of writing
    Miami's registration fee is $35.00 U.S.

    CNetIRC setup:
   
        1) copy CNetIRC to cnet:doors/internet_support
        2) add cnet:doors/internet_support/CNetIRC as a CNetC door either in BBSMENU or
           as a regular door.

           To add as a menu command:

            - edit cnet:bbsmenu
            - add the following to the END of section 1;Everywhere commands
              remember: the curly brace "{" is actually CTRL-Q
              the x in the command below is an access group number; the minimum
              access required to use the command "IRC"

               IRC `x | {cnet:doors/internet_support/cnetirc}

        3) login and run your CNetIRC door.
        4) Choose the appropriate CNetIRC main menu command.  An explanation
           of the menu sections follows:
           
              1. Terminal Preferences

                 these are the ANSI emulation options.
                 
                    ANSI scrolling
                    uses ANSI scrolling sequences (works well with most terminals.

                    ANSI locking
                    for CNet LOCAL console only.  This emulation requires a
                    terminal that supports the ANSI locking code (ANSI 't')
                    and most PC/Amiga terminals do not.  CNet Amiga, however,
                    does.

                    Simple ANSI
                    a simplified scrolling using minimal ANSI. this is the fastest
                    display setting useful for busy channels.

              2. Add/edit server

                 this is where users configure their "preset" channels.  Users
                 may specify a default channel to join for each and every
                 configured IRC server.

                 some popular IRC servers/channels are:

                 SERVER:PORT                CHANNEL   DESCRIPTION
                 ========================== ========= ========================
                 irc2.magic.ca:6667         #amiga    Amiga users unite
                 babylon.beyondirc.net:6667 #cnet     CNet sysops/CNet support
                 irc.primary.net:6667       #cnet     CNet sysops/CNet support
                 irc.texas.net:6667         #amiga    Amiga users unite
                 irc1.cerf.net:6667         #amiga    Amiga users unite

              3. Delete server

                 use this option to delete a "preset" server that is not
                 needed anymore.

              4. Personal configuration

                 Select this option to change your "identity" in the channels
                 you join.  You may edit Real name and nickname here.

              5. Quit

                 Select this option to Quit CNetIRC.

              6. Sysop configuration

                 Various sysop configuration items.  (not yet implemented)

        5) To login to an IRC server, press ENTER at the main CNetIRC menu prompt.

3.  identd added for internet user identification.  This is required by many
    IRC servers as, if identd were not supported, each user would appear to look
    the same to the remote server. This can lead to many effects, some of which
    are entire domains being K-lined (removed from access to a server) and
    single user bans.  The bottom line is, if you are going to allow your users
    to access IRC, make sure you have an identd server running.  CNet's identd
    has been coded to allow multiple users to use CNetIRC on different ports
    without consequence.

    To configure identd in your TCP stack configuration:

      MIAMI USERS
      -----------
      select, in your miami window, DATABASE and then choose INETD in the
      cycle button. Add the following entry to the list of inetd services:

          Service : auth
          Socket  : stream
          Protocol: tcp
          Wait    : nowait
          User    : nobody
          Server  : cnet:doors/internet_support/identd

      AMITCP USERS
      ------------
      edit/create the file amitcp:db/inetd.conf and add the following entry:

          auth stream tcp nowait nobody cnet:doors/internet_support/identd

    if an AUTH entry already exists, alter it so that it appears as noted
    above.

    Note: identd does not have to be in the CNET: directory.  You may
    put the identd server anywhere you like but be sure to alter the path in
    your TCP stack's database (the configuration lines above) to reflect the
    true path of the identd program.

4.  Added bbstext lines 2292-2330.

5.  Fixed the bug where CNet was reporting UUCP/Mail ID in use when the "used"
    mail id belonged to a killed user. 

6.  Fixed visual editor bug that caused a guru if the title header
    (eg. "On xxx, xxx wrote:") wrapped to two lines.

7.  Added small header to ReadLog text, printed before the log is displayed.
    Change to bbstext line 2283.

8.  Fixed bug where invalid fidonet mail address was being incorrectly
    interpreted and sent as internet email.

9.  Nodelist searching (command: mail;nodelist) fixed for Traplist.library
    v5.2 and below.  The newer traplist.library v5.4 NLEnumNode() function
    is broken.

@ENDNODE

@NODE "CHANGES426b" "4.26b Changes"

                          @{b}CHANGES/FIXES FOR V4.26b@{ub}

CRITICAL NOTE FOR SYSOPS RUNNING 4.26a:

               YOU MUST RUN THE 426B SHELL EXECUTABLE FOUND IN THE UPDATES
               DRAWER OF THIS UPDATE AFTER INSTALLATION!

IF YOU ARE RUNNING 4.25a/4.26 OR PREVIOUS:

               ** DO NOT ** RUN THE 426B SHELL EXECUTABLE FOUND IN THE
                            UPDATE DRAWER
               COPY or MOVE CNET:BBSCONFIG4 to CNET:CONFIGS/BBSCONFIG4
               COPY or RENAME SYSDATA:BBS.UDATA as SYSDATA:BBS.UDATA4


1. Mail ReplyTo preferences moved to mail:users/xxx/prefs/MAIL

   Programmers wishing to read the user's ReplyTo preferences, must read
   this file; it is NOT kept in memory.  The data is saved in ASCII format
   so AmigaDOS FGets() and ANSI fgets() (and other string-oriented file input
   functions) can be used to read the data effortlessly.

2. GETUSER shift experienced with v4.26a reverted back to v4.26 (CNet/3
   compatible) state.

3. !BBSTEXT_STOCK line 2122 inserted and one of the sets of curly brackets
   {} below line 2122 was removed.
   

@ENDNODE

@NODE "CHANGES426a" "4.26a Changes"

                          @{b}CHANGES/FIXES FOR V4.26a@{ub}

CRITICAL NOTE: YOU MUST RUN THE 426A SHELL EXECUTABLE FOUND IN THE UPDATES
               DRAWER OF THIS UPDATE AFTER INSTALLATION!

1.  Version bumped to 4.26a because the CNET_VERSION string for v4.25a was
    prematurely defined as "$VER: CNet PRO 4.26".

2.  Users can now use [W]rite to edit file short descriptions without the sysop
    being forced to enable "Diz Edit before save".

3.  When a port cannot open the required device, The specified port in
    Control's display is no longer locked in its "Loading.." state.

4.  Changes to lines 2141-2142 and 2162-2163 of BBSTEXT for more verbose
    output of FILE_ID.DIZ processing.

5.  New configuration item in Config/Modems: Idle WHO User

    This is the string that will be displayed in each port's "Name/Handle"
    area in the WHO display when no one is logged in to the port.  If no string
    is set here, the text on BBSTEXT line 903 will be displayed as it was in 
    previous CNet versions.

    A good use of this field is to put the phone number for the port in it, or
    perhaps make note that the port is a telnet line or something along
    those lines.


    To accomplish setting this field on local ports which could previously
    not have a "Modems" configuration, CNet will now allow you to create a
    "modem" with its DEVICE name left BLANK.  If the device name is left blank,
    CNet assumes that the port is a LOCAL PORT.

    eg. you can create a dummy port 0 in modems with no device name specified
        and set an "Idle WHO User" string of "Sysop Port 0".

6.  Furthered completion of DIZ processor.  Any text in a description that
    matches COMPLETELY the contents of any line in sysdata:DizStripText
    is removed from the short description.

      eg.  if a FILE_ID.DIZ contained the following:

              ---------------------------------------
              A great new software release!
              We have pirated it so often that no
              one is PAYING for it! Therefore, we
              are morons. --------- A KuElLe GrOuP!
              ---------------------------------------

           ..and DizStripText contained the following lines to be stripped:

              some line
              another line
              /*|------------|*\\
              --------- A KuElLe GrOuP!
              -

           ..the following would be the short description after stripping:

              A great new software release!
              We have pirated it so often that no
              one is PAYING for it! Therefore, we
              are morons.

7.  Addition to line 2282 of BBSTEXT.

8.  Added "Reformat DIZ" option to subboard EL in Diz Options.  This setting,
    when enabled strips successive spaces, tabs and newlines to make the
    final stripped description look "prettier".  It is really only of
    use if the "Use Strip Text" option is enabled.  It CAN be used to
    clean up sloppy DIZ files though, if enabled.

        eg. if the stripped DIZ looked as follows:



              A great new software release!


              We have pirated         it so often that no


              one is PAYING      for it! Therefore, we
              are morons.



            By enabling REFORMAT DIZ, it would clean up the description to
            look like the one below:

              A great new software release!
              We have pirated it so often that no
              one is PAYING for it! Therefore, we
              are morons.

9.  CNet now checks MailBoxClosed status before carbon copying message base
    posts/responses/echomail to users' mailboxes.  If the mailbox is closed,
    the item is not sent to mail-task for carbon mailing.

10. IUUMail is no longer required for CNet/4.  Mail-task now does the job
    that IUUMail previously assumed.  It is all automatic, so no longer
    do you have to create cron events to get iuumail to run.

    To enable mail-task to recognize and import new internet mail, you must set
    TWO CNet attributes in CNet/Config:

       1. Config/Options:  Be sure "Monitor Internet mail" is enabled.

       2. Config/Paths:    Be sure to put here the path to your user internet
                           mail directory (eg. where your mail retrieval
                           software creates the "username" files - usually
                           UUMAIL: 

                           This was made configurable for future expansion.

                           NOTE: Be sure the path that you put here exists.  If
                                 it does not, mail-task will not create it for
                                 you and if it does not exist mail-task will
                                 ignore your "Monitor Internet mail" setting.

    NOTE: iuumail will continue to be distributed with CNet for the next few
    maintenance upgrades, until we get initial reports of any bugs with
    mail-task importing of internet mail. Thereafter, IUUMAIL will be obsolete.

11. Another small internal bug with mail-task GUI and text containing tabs has
    been found and fixed. This should finally end any CPU contention caused by
    an endless loop.

12. CNet will now create the user Web directory mail:users/<MailID>/Web, if
    enabled in Config/Options.  To enable this, go to the Options editor
    of CNet Config and enable "Create user WEB  directory".

    Mike Meyer, The author of Amiga Web Server (AWS), has released a beta
    version of cnetdir.library. For AWS to recognize CNet user web pages, this
    option MUST be enabled in Config/Options.

13. CNet no longer auto-scans for new mail in mail-read. While this was a nice
    idea, it caused too many problems and confusion for the user.  The new
    user-friendly way to FORCE a rescan while in mailread is for the user to
    issue the command "RESCAN" if he/she sees that new mail is received while
    in mailread.

    See the end of !bbsmenu_stock section "7; Read Mail" for changes/additions.

    Changes to lines 2160-2161 and 219 of !bbstext_stock.

    Changes to systext:menu/Mail-Read.

14. Fixed the "New" button in Config/Modems.

15. Minor fixes to Subboard VDE.  Please run the "CNET:VDE" program in an
    AmigaDOS Shell.

16. IUUMAIL/Mail-task received extended parsing to support POP3 imported mail
    batches.

17. Fixed bug that caused port lockup if the username in MailSend (MS) was preceded
    only by a semi-colon.  eg. "MS ;sysop"

18. News-task added.  News-task is a background Usenet news posting daemon
    that is activated when a user posts or replies in an NNTP "usenet news"
    subboard.  Please note that news-task only posts to an NNTP news server.
    If you do not know the NNTP server name of your ISP (Internet Service
    Provider), please contact your provider's technical support person to attain
    this information.

    To activate news-task posting, you must run CNet Config and go to the
    Options editor and make sure that "News-task post" is enabled.  You must
    also configure the NNTP news server name in CNet's Config/Defaults
    section under the item "NNTP news server".

    If news-task posting is not enabled in CNet Config/Options, CNet will use
    "Postnews" as configured on line 2151 of BBSTEXT.

    A description of line 2151 follows:

      POSTNEWS <%s -f %s -r "%s"

      where:

         POSTNEWS - the name of the external command used to post news via UUCP
                    or NNTP or whatever protocol/mechanism your system needs
                    to use to post Usenet news.

                    If you use INetUtils, you can rename NNTPPost as PostNews
                    and place it in your C: directory or any other path'ed
                    directory.  if you do not do this, you must replace
                    the POSTNEWS text with the full path and filename of the posting
                    program (eg. UUCP:C/POSTNEWS)

                    It is understood, from the PostNews author's documentation,
                    that NNTPPost uses the same command line arguments as PostNews
                    so that NNTPPost can be used as a direct replacement for the
                    UUCP PostNews command.

         <%s      - is replaced by the text to be posted.

         -f %s    - specifies the username (eg. UUCP/Mail ID) that the user is known
                    by on your system.  The %s is replaced internally, by CNet,
                    with the user's UUCP/Mail ID (eg. rakey)

         -r "%s"  - specifies the user's REAL NAME.  The "%s" is replaced
                    internally by the user's real name (eg. "Ray Akey")

19. Added "Reply-To" string/variable to each user account.  When the 426a upgrade
    program is executed, this field is filled in automatically as the user's
    mail id (formerly UUCP ID) plus your systems domain name as configured
    in the main window of CNet's Config GUI.  For example, a user residing
    on the system with an Inet Hostname of "tggh.net" and a user name of "rakey"
    would have a "reply-to" default of:
    
       rakey@tggh.net
    
    Your users may wish to change their Reply-To so that CNet uses their "usual"
    email address.  For example, I would change my Reply-To address on tggh.net
    from:

       rakey@tggh.net

    to my real email address:

       rakey@netrover.com

    The user edits his Reply-To in the new MAIL PREFERENCES editor by using
    the command "MAIL;PREFS" at any CNet prompt.

    The user's Reply-To information is currently only used when "news-task post"
    is enabled and when outgoing posts/responses are made in NNTP (Usenet)
    subboard(s).

    When SMTP/SMTPd is integrated into CNet Amiga, this field will also be
    used in outgoing internet email.

20. Getuser offset type 4 added for direct access to MainPort->MPE.  See
    the included control.h for information and variables contained in
    struct MainPortExtension.

21. Added BBSTEXT lines 2283-2291 for mail preferences support/expansion.

22. Added text file systext:new/replyto

@ENDNODE

@NODE "CHANGES425a" "4.25a Changes"

                          @{b}CHANGES/FIXES FOR V4.25a@{ub}

1.  Mail-task AppIcon problems fixed.  Config no longer locks mail-task in
    iconified state.

2.  Mail-task menufy problems fixed.  Config no longer forces mail-task
    to create an AppIcon if mail-task is not already iconified.

3.  Changes to lines 1646-1647 of BBSTEXT.

4.  SubDirName/GO keyword dupe checking now performed when adding
    a new list object (AL).

5.  Repair_Sub was crashing and writing invalid filenotes/short descriptions.
    Should be fixed now.

6.  ReadLog (RL) now shows all available logs if no argument is given.
    BBSTEXT lines 2273-2278 added. Menu systext:menu/log-read added.

7.  CNet now tries 3 times to send a file to file-task for test/txform.
    If it fails the first time, it will try twice more before processing in
    the foreground.  file-task may not be ready for a TE/TR request if it
    is currently scanning newly queued requests.

8.  Fixed a bug in file-task that caused some items to be tested/transformed
    immediately instead of in the background.

9.  Fixed ARexx SAVESCRATCH command which was not saving account/user changes
    properly.

10. Change to bbstext line 521.

11. Fixed bug that caused MailRead to clear the list of mail items if the user
    was already in mail and used the MR command again.

12. Each subboard now has a "Where/Doing" string that allows the sysop/subop
    to set what is shown in the "Where" field in Control and WHO displays.
    The maximum length of this string is 16 characters.
    (programmers: see SubboardType4.SubDoing)

    Note: Be careful using "EL 1-" and setting the "Where/Doing" string as
          it is possible to clear this setting for all subboards object types
          on the current list.  This may be desirable in some cases so it is
          not ghosted in the "EL x-x1" VDE scenario.

13. Small mail-task bug fixed which caused AreaFix messages to be bounced
    back to their origin even though a successful AreaFix request was
    processed and sent to the requesting system.

14. Re-implemented capability of using EL within subboards.  Currently, EL
    may be used only in message/file/subdirectory subboard (object) types.

15. ML (Move List) can now be used to move a subboard object ANYWHERE in your
    Base.  ML can still be used as before, if two list numbers are supplied,
    to swap two subboard on the current list.  However, if only one subboard
    number (on the current list) is passed (eg. ML12), you will be lead
    through the list of subboards and can choose an appropriate place to insert
    the subboard object.  This applies to all subboard object types. whether a
    subdirectory or regular base (eg. file, message, door, executable) subboard.

    Changes to line 1780 of BBSTEXT.

@ENDNODE


@NODE "CHANGES425" "4.25 Changes"

                          @{b}CHANGES/FIXES FOR V4.25@{ub}

1.  MailSend has received extended handling of closed mailboxes. If a user's
    mailbox is closed and he tries to send mail, he/she is led through a
    series of prompts which accomplish any one of the following options,
    in the order listed:

      - Abort the MailSend
      - Set a forwarding account to receive his/her mail.
      - Open his/her mailbox.

2.  Repair_Mail (RRM) can be used by users to repair the mail in their
    own mail folder(s) only.

3.  More mail-task fixes to prevent lock ups.

4.  NNTP/DIZ VDE options are now properly ghosted for non-message/file
    subboard objects.

5.  Access slider in Config/accounting fixed to properly update the Access
    level and Charge/units/value list.

6.  Yank-task fixed so it cannot be ran again if already running.

7.  OLMs that cannot be saved (ie. if user logs off before OLM could be sent)
    now return a prompt asking the sending user if he/she would like to save
    the OLM to the recipient's mailbox.

    This is only done for SINGLE recipient OLMs.  This feature does not apply
    to *BROADCAST* OLMs.

8.  SPECIAL NEW FUNCTIONS FOR CODERS!

        BYTE InputSignalInit(char *portname);
        void InputSignalDispose( void );

    Valuable new support for CNetC doors to receive exec Messages when user
    keyboard input is available.

    One area where CNet has been lacking in the past is for CNetC doors
    to be able to use Wait() and/or WaitSelect() to wait for signals
    from exec and TCP/IP sockets and other exec message layers.  In the past,
    door coders have had to rely on a system of "timeouts" where user input
    is checked after the timeout or "service timer" has expired.  This is very
    inefficent, thus the InputSignalInit() / InputSignalDispose() pair are
    born.

    With this method of "notifying" CNet that a MsgPort exists, both
    regular CNetC doors and CNetC door using their own MsgPorts can
    get the quickest response from user input events.

    The following steps should be taken before calling InputSignalInit():

        1. Create a public MsgPort that CNet will signal when user keyboard
           input is queued.

               struct MsgPort ioport; // this should be a GLOBAL variable

               // port initialization code..
               ioport.mp_Node.ln_Name = "MyPortName";
               ioport.mp_Node.ln_Pri  = 0;
               ioport.mp_Node.ln_Type = NT_MSGPORT;
               ioport.mp_Flags        = PA_SIGNAL;
               ioport.mp_SigTask      = FindTask(NULL);
               if( (ioport.mp_SigBit  = AllocSignal( -1 )) < 0 )
                 {
                 // port could not be created - DO NOT call InputSignalInit()
                 // you may want to exit (as done below) when port creation
                 // fails.
                 GetOut();
                 }
               AddPort( (struct MsgPort *)&ioport );

        2. If the port was created successfully, call InputSignalInit()
           as follows:

               InputSignalInit(ioport.mp_Node.ln_Name); // the same portname
                                                        // used above

        3. Wait for signals from CNet and other exec message layers as
           follows:

               unsigned long signals=0; // declare signal mask that Wait() returns.
                               // this variable can be global but should be
                               // local for improved efficiency and debugging.

               // The following should be part of your exec message
               // handling code..
               signals = Wait(1L << myport.mp_SigBit); // wait for an exec signal

               if(signals & (1L << myport.mp_SigBit)) // is this a signal from CNet to our ioport?
                  {
                  struct CMessage *BBSMessage;

                  // Get waiting message.
                  while(BBSMessage = (struct CMessage *)GetMsg(myport))
                      {
                      // is it the proper message for a CNet user input event?
                      if(BBSMessage->command == CN_USERINPUT)
                          {
                          // char key;

                          // CNet generated keyboard event
                          // you should now get keyboard
                          // input from user, using
                          // key=OneKey();

                          // OR

                          // CNet's EnterLine() function.
                          }
                      ReplyMsg((struct Message *)BBSMessage);
                      }
                  }

        4. Before your door exits, call the function InputSignalDispose()
           as follows:

              InputSignalDispose();

           this function cleans up the internal port used for communication
           with your door.  IF IT IS NOT CALLED, YOU MAY LOCK UP CNET PORTS.
           It is SAFE to call InputSignalDispose() even if InputSignalInit()
           is not called or fails.

    See CNetDoorInput.c for a complete (but simple) example of waiting
    for keyboard input using this new method.  The above code is NOT
    tested so compile errors may be present.  The above examples are
    for illustration purposes only.

    Look in the SDK example_source directory for a sample program
    which uses Wait() within a CNet door.

9.  "MS <notexistant_user>!" no longer goes into an endless loop.

10. Subboard-object-type now checked before yank-task attempts to "lock"
    the path.

11. Updated and expanded commenting in empty.c.

12. Added double-click capability to the main list of configurable
    options.  You can now double-click on Accounting, Archivers, etc,
    rather than clicking and then hitting "edit".

13. Finally, a way to turn off file-task OLMs/mail in Config/Options.
    The only messages you can turn off are the "ok" notifications.  If you
    disable this option, the user will only receive OLMs/mail if there
    was a problem with test or transform.

14. File TEst buffers extended to 255 characters per line.  Tests with
    output lines that wrap due to long path/file names are no longer a
    problem.

15. New license required for CNet.  Contact ZenMetal for your new license.

16. File-task is now passed the physical subboard number to reduce
    the chance of possible error in finding the file to be tested/transformed.



@ENDNODE


@NODE "CHANGES424h" "4.24h Changes"

                          @{b}CHANGES/FIXES FOR V4.24h@{ub}

1.  Fixed shifted GETUSER values back to pre-v4.24g state.  Old doors will
    now work without changes to GETUSER values.
2.  Completed AppIcon and AppMenu support for mail-task.
3.  Mailboxes now default to open for NEWUSERS.  You may have to use
    "EA1-" and change your current users' "Mailbox Open" VDE setting to YES.

@ENDNODE


@NODE "CHANGES424g" "4.24g Changes"

                          @{b}CHANGES/FIXES FOR V4.24g@{ub}

NOTE: CNET:BBSPORT#? files altered and moved to CNET:CONFIGS/BBSPORT#?
      You CANNOT simply move the files. You MUST run the upgrade program
      "424g" from any AmigaDOS Shell before running this version of CNet
      Amiga!

      Be sure to also install the newer libraries before running this
      upgrade executable.

      The upgrade executable can be found in the "UPDATES" drawer of this
      CNet maintenance release.


1.  Mailscan at login now only looks in INBOX to speed up the login process.
2.  Fixed the lost/hidden mail bug.
3.  Mail sorting options implemented in Edit preferences (EP).  Two new
    systexts were added:

       systext:new/mailsort
       systext:help/mailsort

    The available options are:

       Newest last
       Newest first
       Handle/name
       Subject

    Please see the mailsort HELP text for more information about these
    options.

    Added bbstext lines 2250-2256.

4.  Mail is now bounced if the recipient's mailbox is closed.

    ONE case overrides this action.  If the sender and recipient have the
    same account number (eg. mail to self), then the mail CANNOT be
    bounced and therefore is saved to the user's inbox.

5.  Checking of selected file(s). If selection is not found (eg. moved or
    deleted) when SS or DS command is used, the user is informed of this.

    Change in bbstext line 381 to implement the extended verbosity.

6.  Subboard sorting via "EL/Other Flags/Item sort" and the OR command
    should now be working 100%.

7.  Various changes to the Config GUI to fix improperly offset checkbox
    gadgets in Protocols and Archivers windows.

8.  Repair_Sub now BLANKS the Title and SubDirName (aka GO ARG) of subboards
    that are killed as it repairs your subboard structure.

9.  KL command now BLANKS the Title and SubDirName (aka GO ARG) of subboards
    that are killed.

10. Added three new CallHost()'s to empty.c:

       WriteUKeys() - write the Cnet myp->Key structure to disk.
                      See empty.c for a description of this function.
       prototype    - void WriteUKeys( void )
       returns      - none
       example:     - WriteUKeys();
       ---------------------------------------------------------------
       DoANSI()     - Send ANSI codes to the CNet port and remote user.
       protoype:    - void DoANSI(UBYTE n, UBYTE a, UBYTE b)
                         n=the type of ANSI code to be sent. eg. 'H'
                         a=the first argument to the ANSI sequence
                         b=the second argument to the ANSI sequence.
       returns:     - none
       example:     - DoANSI('H', 1, 4);
                      the above call would use the ANSI cursor position
                      code to position the cursor at line 1, column 4.
       ----------------------------------------------------------------
       DoANSIOut()  - Send single ANSI control code to the CNet port and remote.
       protoype:    - void DoANSIOut(UBYTE n, UBYTE a, UBYTE b)
                         n=the type of ANSI code to be sent. eg. 'K'
       returns:     - none
       example:     - DoANSIOut('K');
                      the above call would use the ANSI end-of-line
                      delete code to delete the current line including
                      the character under the cursor.

11. Added feedback/newuser mail check at login for users with sysop
    maint.  Changes to bbstext lines 225-228 and new lines 2257-2260.

12. Return-receipt mail fixed.

13. Fixed a memory leak in mail-task that caused partial mail messages to be
    displayed in mail-task GUI.

14. Device field in Config/Modems extended from 21 characters max to a
    maximum of 40 characters to support longer device names such as
    squirrelserial.device.

15. (repeat of the note at the top of this changes section)
    CNET:BBSPORT#? files changed and moved to CNET:CONFIGS/BBSPORT#?
    You CAN NOT simply move the files. You MUST run the upgrade program
    "424g" from any AmigaDOS Shell before running this version of CNet Amiga! 

    The upgrade executable can be found in the "UPDATES" drawer of this
    CNet maintenance release.

@ENDNODE


@NODE "CHANGES424f" "4.24f Changes"

                          @{b}CHANGES/FIXES FOR V4.24f@{ub}

1.  NOGMT arg added to NNTPGet to prevent NNTPGet from using the GMT
    keyword with servers that may not support it.

        eg.  NNTPGet NEW NOGMT

2.  Internet email addresses with a numeric digit in them are no longer
    treated as an invalid address.

3.  Local echo support added to cTelNet.  Use "mode ECHO" within cTelNet
    to toggle local echo on/off.

4.  A completely re-written Configuration editor (Config) and GUIs. Multiple
    windows can be open in the same instant.  Many windows are now sizable
    and font adaptive.  ARexx control will be added to Config in the future.
    The new Config has been written in a way to allow easy future expansion
    of CNet configuratio items.

5.  Fixed yank-task bug that caused no messages to be yanked.

6.  Fixed RexxLoadEditor bug.

@ENDNODE

@NODE "CHANGES424e" "4.24e (First ZenMetal Commercial Release) Changes"

                          @{b}CHANGES/FIXES FOR V4.24e@{ub}

1.  CopySelf mail no longer generates two copies in SENTMAIL.

2.  Moving files around in BaseX: partitions is now smarter.  The "Move to
    which partition?" prompt now defaults to the base partition with the most
    free bytes.

3.  Duplicate/identical GO keywords are now filtered out for GO arg display
    when "GO <non-existent go key>" is used.

4.  Related to number (3) above, the subboard number for the
    "List, :, /, or Subboard#:" prompt default to the current sub.  That
    is, the one you are moving files in.  Fixes (3) and (4) allow for easier
    cross-partition file relocation in the same subboard.

5.  Door/list type subboards now fixed.  Sysop maint users can see ALL items.
    Regular users see a list only of items they can access in a sequentially
    numbered list, with no "skips" in between numbering.

6.  Transpose is now a BBSMENU command in "1; Maintenance Menu" and also now
    accepts two arguments, a user account number and an access group number
    to do auto-transpose.

      eg. TRANSpose 1 31

    The above would assign account number 1 to access group 31.

    With auto-transpose, the only "priviledge flag" not lost is the
    "SuperUser" flag.  All other flags, limits and priviledges are set to the
    newly assigned access group defaults.

    If no arguments are specified, then the normal transpose is initiated.

    NOTE: both arguments must be specified and MUST be numeric.  No
    handle/name parsing is performed for auto-transpose.

7.  Mail-task GUI no longer flashes uncontrollably when minimized.

8.  Menu added to mail-task window to allow quitting of mail-task using
    Mail-Task/Quit menu.

9.  Mail-task menu added to allow selection of a custom font for mail-task's
    GUI display.

10. Change in BBSTEXT line 802. (see !bbstext_stock)

11. Added snapshot window position to mail-task menu.

12. Fixed "Originally to:" line in FOrward Mail.

13. System OLMs from mail-task now use the user's time form (eg. AM/PM or
    24 hour) for OLM sending on receipt of new mail.  Changes in bbstext
    lines 193, 200, 2136, 2137, 2152, 

14. User logon/logoff broadcast OLMs now use the user's time form also.  Changes
    in BBSTEXT lines 83 and 153.

15. User logon/logoff broadcast OLMs are now NOT sent to the port belonging to
    the user logging off.

@ENDNODE


@NODE "CHANGES424d" "4.24d (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.24d@{ub}

NOTE: v4.24(b-c) were versions tested by a limited "pre-beta" group on the
      internet.  The changes for those are included in both the (a) and (d)
      sections of this guide.

1.  Added text/menu reload from remote (RT) to maintenance section of BBSMENU
    Changes in BBSTEXT lines 1762-1764.

2.  GUI display added to mail-task.  Arguments to mail-task are as follows:

    I=ICONIFY/S,N=NOGUI/S

       I/ICONIFY = tell mail-task to run with it's GUI in "menufied" mode.
                   That is, the "tools" menu of Workbench will have a
                   file-task menu and, when activated, mail-task will open it's
                   GUI. (may not yet be implemented)

       N/NOGUI   = Tell mail task not to use a GUI interface.  All text to
                   be output will be sent to the current output stream (ie.
                   the current CLI/Shell). (may not yet be implemented)

    There are 6 items of information displayed:
    
       TOTAL:   this is the number of total mails processed since mail-task
                was started.

       BOUNCED: the number of mails that were bounced back to the sender
                for various reasons, detailed in the return report. In future,
                the bounced mail report will also be "carboned" to the sysop
                so that he/she is aware of any problems that might be
                immediately repairable.
                
       LOCAL:   the number of mails saved to local users since mail-task has
                been running.

       NET:     the number of combined netmail and internet email sent since
                mail-task has been running.

       STATUS:  the current status of mail-task, whether idle, or processing.

       There is also a buffer window/listview to allow the sysop to scroll
       back and view the activities carried out my mail-task.

    BUTTONS:

       RESET DISPLAY   Clears the buffer window and all mail-task mail counters.

       MENUFY          (may not yet be implemented) allows you to (iconify) the
                       GUI a "Menufied" state.

       Quit            closes down mail-task.  Please note that your system
                       will not process any mail if mail-task is not running!

       CLOSE WINDOW    (may not be implemented yet) allows you to iconify
       GADGET          the mail-task GUI to an AppIcon state.


3.  MailForward fixed and now does not let the user edit an item as it is
    forwarded.

4.  Added ARexx command "reloadtext" to CNet Arexx ports CNETREXXp to allow
    Rexx scripts to force Control to reload bbstext/menu/charges, where
    "p" is the portnumber.

5.  Various fixes to ARexx commands that were holding a lock on files.
    (ie. RexxLoadEditor, RexxSaveEditor, RexxCallEditor, etc,.)

6.  New cnetgui.library added.  This library will expand to contain the
    functions necessary to create the CNet graphical user interfaces.
    Currently, as of v4.24d, this library contains only the function
    CNGTextWidth() which, given a string and a TextAttr structure, returns
    the width of the text string in pixels.  See cnetgui_pragmas.h and
    cnetgui.h for the function prototype(s).

@ENDNODE

@NODE "CHANGES424a" "4.24a (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.24a@{ub}

NOTE: It is unclear to some so please note that both NNTPGet and
      CtelNet have been tested and work fine with the two most often used
      Amiga TCP/IP stacks, Miami and AmiTCP.  Some sysops assumed that these
      clients would only work with AmiTCP.  This is not so.  They work with
      any TCP/IP stack that creates a "bsdsocket.library".  Note also that
      bsdsocket.library is not a physical library. That is, it does NOT exist
      on your hard disk.  It is a logical library that is created by your
      TCP stack.

ALSO: If you have already added pre-defined hosts to CtelNet (ie. using "AH"),
      you must run the update program called CTNCONVERT1 which is located in
      the UPDATE drawer of this distribution.

1.  Added some loggable lines from NNTPGet to BBSTEXT lines 2231-2236 so
    that sysops may customize MCI/ANSI colors in output/logs..

2.  Added KillHost (KH) to CtelNet - change in line 2221 of BBSTEXT.
    Also run the CTLConvert1 program found in the internet_support
    directory of DOORS.  CTelNet1 is a DOS executable that is ran from any
    CLI/Shell.

3.  Added expansion lines 2222-2230 to bbstext.

4.  Added some lines of NNTPGet to bbstext lines 2231-2236.

5.  Line 2237 of bbstext contains the path/filename that the list of active
    newsgroups are saved to when you use the GETACTIVE switch of NNTPGet.
    Change this path/filename to change the location that the active
    newsgroup list is saved to. (default = UUNEWS:ACTIVE)

5.  RUN command prompt extended to allow a command length of 60 characters.

6.  Control now requires that **AT LEAST** CNET:BBSTEXT and CNET:BBSMENU exist.
    If either do not exist, control does not run.

7.  Line 2238 added to bbstext to allow users with sysop maint to override
    return-receipt mail.  NOTE that due to the way that mail is handled in
    CNet/4, it is not possible to make this option a "command" as it was in
    CNet/3. If a user has asked for a return-receipt, you will be prompted
    whether to override the return-receipt via a yes/no "override
    return-receipt," prompt.  This also allow allows sysops to enable
    ALWAYS override without prompt by replacing bbstext line 2238 with the
    following text/MCI:

      n1User has requested a return-receipt - auto-override enabled.=1}

8.  NNTPGet code altered so that it will run without a TCP/IP stack running
    but will notify/log that no stack is running and then exit.  This change
    was made to prevent NNTPGet from displaying a system requester stating
    that "AmiTCP vx.xx must be started first."

9.  Fixed arg parsing for "everywhere commands" in CtelNet.

10. Added MODE command to CtelNet to allow instant mode switching. To
    support this command, BBSMENU received another new section (41).
    Please see !bbsmenu_stock and add this required menu to your
    modified/current bbsmenu.

    Supported modes are listed in systext:menu/ctelnet_modes and the menu
    is available at the mode prompt if "?" is entered.  The user can switch
    modes as follows:

      Telnet> MODE
      Enter MODE command (? for help): Bin
      Negotiating binary mode with remote host.

    (OR)

      Telnet> MODE Bin
      Negotiating binary mode with remote host.

11. NNTPGet modified to notify/log why a NNTP subboard was skipped during
    news transfer. (ie. SUSPENDED status set, etc,..)

12. Predefined hosts are now alphabetized as they are added to CtelNet and
    are displayed in alpha order as well.

13. Changes in BBSTEXT lines 753, 1144, 1145, 1174, 1198 and 1199 to correct
    improper network terminology.  "UUCP" id is now termed "MAIL-ID".

14. Change bbstext line 1672 from "UUCP" to "Usenet News" for proper display
    of the old "UUCP" network affiliation in EL.

15. Control display fixed to show the previously known "feedback" as "Sysop/FB"
    (ie. feedback and msgs-to-sysop are counted as "Sysop/FB mail".  The
    "mail" display of control also changed to appropriately specify "#1 mail".

16. Invalid GO argument operation changed.  If a user enters a non-existant
    GO arg, the current go arguments will be parsed and any that partially
    match the user's entered GO argument will be displayed in alphabetic
    order. The user can then choose one of those, enter a NEW GO arg or press
    enter to continue where they were before entering the GO command.

17. Single byte getuser shift fixed.

@ENDNODE

@NODE "CHANGES424" "4.24 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.24@{ub}

NOTE:  Since the inception of CNet/4, a change was made to log IDs, which
       Ken pletzer did not make us (sysops & ZenMetal alike) aware of.
       Log IDs above 407 were no longer used.  Log ID 408 was previously the
       ReadGFile log ID.  No longer, ReadGFile was grouped into log ID
       405 (ReadText).  Shortly after we (ZenMetal) acquired CNet Amiga,
       I added an "Execute" log to CNet which was given the previously
       unused log ID of 408.  This execute log will contain information
       about any DOS activity which is performed by the AmigaDOS command
       executor (for developers, the Execute() function).  This is the reason
       your old ReadGFile log contains what would seem to be extraneous
       information.  So, please change log ID 408 to "Execute" and note that
       log ID 405 is used for GFile/Text reads.

1.  3.X_to_4.X was not resetting the "magic" value for mail when converting.

2.  "Short Description" lines text was being partially rendered into
    the left hand border of the Config window in Limits.

3.  MailVerify was still sending receipts (RPT:) when items were viewed.

4.  Invalid characters ("?#/" etc.) were being allowed for handle/real
    name.

5.  Version strings are now updated for bugfixed executables and partial
    releases.

6.  Mail is now sorted so that new mail is at the TOP of the list during
    mailread.

7.  First version of the CNetC Telnet client "CtelNet".  Requires
    additions to BBSTEXT lines 2196-

    CtelNet may be added to BBSMENU (as is shown in !bbsmenu_stock)
    and may also be added to text/door lists and others.

    Remember that CtelNet is a CNETC door. You must use MCI door type 2
    (ie. {#4cnet:doors/internet_support/ctelnet}) or choose CNetC door
    type when adding as an online door.

    Text/Doors:  You may specify two args here.  HOSTNAME/IP and/or PORT

         ie.  title: Telnet to The Gnomes Guest House
              filename: cnet:doors/internet_support/ctelnet
              args: gnomes.org 23

         when the user entered the number for this door item, he/she
         would telnet to gnomes.org (The Gnomes Guest House).

         note that the port number is OPTIONAL even if a host is specified.
         CtelNet uses port 23 as default telnet port.

    BBSMENU:  Args may also be specified here (everywhere command section
              example shown).

         ie.  TVRB       |{#2cnet:doors/internet_support/ctelnet vrb.com 23}

         if the user entered TVRB at any CNet prompt, he would telnet
         to vrb.com (Virtual Reality BBS).

         note that the port number is OPTIONAL even if a host is specified.
         CtelNet uses port 23 as default telnet port so if you are required
         to use a port number other than 23, you MUST specify the required
         telnet host port number.

    "RUN" command:

         You may run CtelNet from the CNet RUN command.  You can use any of
         the following commands..

         run;cnet:doors/internet_support/ctelnet
         run;cnet:doors/internet_support/ctelnet HOSTNAME
         run;cnet:doors/internet_support/ctelnet HOSTNAME PORT

         Once ctelnet is running (a TCP/IP stack must be running),
         use "?" to get a menu of the available options/commands.

         Here are the menu commands in a short summary, as seen in the
         systext:menu/ctelnet file:

            Quit       Close current connection if connected, and exit telnet
            Open       Connect to a remote site
            List       List of popular/pre-configured telnet sites
            Close/Bye  Close site currently connected to
            STATus     Current status of telnet environment
            Display    display operating parameters
            ?          This menu file

            Other BBS Commands such as WHO, CHAT, FEEDBACK, MAIL etc, are also available.

            MAINTENANCE COMMANDS
            AH         Add a new host to the telnet host list
            EH         Edit a currently existing host
            NT         Set/enable NetTrace file for debug output


8.  Users who did not have access could see the titles of items within "List"
    type subboards.

9.  New PortData extension (z->PDE) added to prevent GETUSER values
    in PortData/MainPort from shifting as new variables/structures are added.  This new structure
    will be mainly used for internet features/structures but may also be of
    use for other new/internal BBS features.  MainPort may get a similar
    extension at a later date.  Some minor getuser shifting MAY be apparent
    in this release.

    Note that to access this new extension, the FIRST getuser digit must be
    "3".
    
    ie.  1=PortData (struct PortData in ports.h)
         2=MainPort (struct MainPort in ports.h)
         3=PortData extension (struct PortDataExtension in ports.h)

    The first feature to benefit from this new data structure is the newly
    completed CNetC telnet client..  Please see ports.h and telnet.h for more
    info.

@ENDNODE


@NODE "CHANGES423" "4.23 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.23@{ub}

    I have been notified that the "Interface Type" Setting may appear
    to have a bug but it really does not.  When a user first uses EP
    to set the interface type, a garbage value may exist in that variable
    and some invalid text may appear in that setting.  Once the user sets,
    his interface type this garbage will not appear again.  Please have your
    users (even the ones who like the "new way" of CNet/4) set their Interface
    Type to clear any garbage that may exist in this variable.


1.  NEW MESSAGE pointers are now being saved properly (fixed bbs executable
    previously released seperately).

2.  Return receipt mail now does not return a receipt when in VERIFY mode.

3.  Fixed cnfingerd bug where if "skip idle ports on WHO display" was
    selected, cnfingerd did not exit and used excessive CPU cycles.

4.  Fixed FILE_ID.DIZ bug that caused previous description to be imported on
    other files/items that do not contain a FILE_ID.DIZ.

5.  Fixed SUPERUSER display in WHO, both in CNet and cnfingerd.

6.  Fixed various _plan, _plan_sq and _select3 saving to incorrect location.

7.  File SHORT descriptions are now stripped of trailing newlines before
    saving (no more blank lines between items during browse/scan).

8.  Optimized mail-task saving of new mails to reduce "MailCheck" wait at
    login and speed up mail header initialization of saved mail items during
    Mail Read. (sorting planned for next release)

9.  First incarnation of REPAIR_MAIL, a utility similar to REPAIR_SUB
    but this one repairs user mailboxes.  This utility is to be ran during
    maint hours, or any time you (the Sysop) wish, that recovers mail from
    corrupted mailboxes/folders and packs mailfiiles to reduce user wait-time
    during mail header initialization.  ie. during MailRead and "Scanning for
    new/old mail at login."  New command "RRM" added to the end of stock
    BBSMENU section "1; Maintenance Commands."

10. When sending feedback, users are no longer allowed to set mail flags
    (ie. Freq, Copyself, etc,..) just before entering the editor.

11. NNTP Options screen added to subboard VDE to allow configuration of NNTP
    variables.

12. NNTP Subboard Type setting added to NNTP options in subboard VDE.  Don't
    forget to run the executable "VDE" in any CLI/Shell to update your system
    VDE files. Current settings for NNTP Type are:

     SUSPEND:     Causes NNTPGet to skip the subboard and not scan or import
                  new news from your NNTP host.

     FULL IMPORT: NNTPGet imports article headers and message body to your
                  system.

     Future Types: Connect for Body, Connect for Header/Body and
                   Mailing-List.  More on these types when they are
                   implemented.

12. NNTP Max Dupes setting added to NNTP options in subboard VDE.
    NNTP Max Dupes is the number of NNTP IDs to buffer for NNTP duplicate
    message checking.  If you set this value to 200 dupes, then 200 IDs will
    be buffered.  IDs may be up to 256 characters in length so please use a
    reasonable value for Max Dupes.  Only one dupetable will be loaded at any
    instant so you don't have to worry about each dupetable taking up RAM.  A
    simple calculation:

        MAX RAM FOR DUPETABLE = 256*MAXDUPES

    Therefore, if you set 200 as a value for maxdupes, 51200 bytes (51.2k)
    of memory MAXIMUM will be used WHILE IMPORTING NNTP messages, if the
    dupetable is full.  The buffered IDs are variable length so the dupetable
    may vary smaller in size but they will not exceed the guidlines set out
    in the MAX RAM calculation given above.

12. Enforcer hit removed from NNTPGet startup.

13. Changes to BBSText lines 2191-2195 for NNTP VDE support. Curly braces
    {} on lines 2193-2195 are required for future expansion of NNTP Type.

14. Carrier check added to "TO:" and "CC:" prompt of mailsend.

15. Feedback at login no longer allows a return receipt to be requested.

16. CNet/3 to CNet/4 all-in-one conversion program completed.  Users upgrading
    from CNet/3 (3.05c or higher) only have to run ONE executable to upgrade
    to CNet v4.22.

17. Completed CNet Install script (initially for CNet/3 by Bob Maple with
    previous changes by Jim Selleck) to be used with CNet/4. The script should
    work for update versions also..

18. Edit Mail now saves changes.

19. Mail Forward Alias re-implemented.  A single mail alias of "+" allows
    your incoming mail to be CARBON COPIED to another user or network
    address.  Note that you are currently allowed only one mail forward
    alias.  If you specify more than one, the first instance will be used.
    This will change later to allow multiple mail forward aliases.

    Mail Forward Alias Examples

      ALIAS        NAME         ADDRESS
      ============ ============ =================
      +            Ray Akey     @1:246/74

   ...the above alias will cause your received mail to be also sent to
   "Ray Akey@1:246/74"

      ALIAS        NAME         ADDRESS
      ============ ============ =================
      +            rakey        @netrover.com

   ...the above alias will cause your received mail to be also sent to
   "rakey@netrover.com"

      ALIAS        NAME         ADDRESS
      ============ ============ =================
      +            125

   ...the above alias will cause your received mail to be also sent to
   the local user with account number 125.

20. File/Byte credits are no longer added or subtracted if a user has
    unlimited file/byte credits priviledges. (set unlimited setting in Edit
    Account "PRIVILEDGES" VDE).

21. READ MESS TO Handle/Name fixed to include searching in network messages.

22. PowerQuote feature of mail quoting does not munge message anymore.

23. mail alias bbstext change in line 2139.

24. A yank-task bug that arose first in Perspective's CNet v4.0, which
    caused some or all subboards to NOT be yanked was found and fixed (thanks
    to Neil Palumbo for sitting on a dial-in port until 5am with me to hash
    the problem over. :). This bug may or may not have fixed the problem some
    sysops are having with yank CRASHING.  Please let me know if this does
    or does not remedy yank crashing problems.

    Also, to aid in future yank-task debugging/inspection, yank-task
    is now capable of being executed in a CLI/Shell and displays verbose
    information about the current yank job.  If you find yank is giving you
    a problem, "break" the currently running yank-task from any CLI/Shell and
    then run yank in a CLI/shell and observe/report it's output.

       ie. yank-task

    for extended verbosity, use:

       yank-task 1


    3rd party door coders:  DO NOT assume that physical subboard 0
    is the ROOT (ie. main) subboard parent.  To find the root subboard Scan
    the subboard list by accessing myp->Subboard[x].  The root subboard/object
    is designated by bit 64 of the Marker variable being SET.  ie:

         if(myp->Subboard[x].Marker & 64)
            {
            /* first subboard in root/main list found */
            printf("Found first object in main list: %s\\n", myp->Subboard[x].Title);
            }

25. cnfingerd was not creating directory systext:cnfingerd if it did not
    exist.

26. File-task crashing problem should be fixed now.

@ENDNODE

@NODE "CHANGES422" "4.22 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.22@{ub}

   NOTE: You ** MUST RUN UUCPREPAIR ** before using this version of CNet
         Amiga.  Most people having problems with mail receipt is due to the
         UUCP ID being one character too long and UUCPRepair has been designed
         to trap and repair this case.  You, the sysop, will be prompted to
         verify the new UUCP ID to be used.  Many users may not have this
         problem but those with long names (last names) will most certainly
         be affected.  You can either run UUCPRepair before installing
         this version or you may run it after installiation, as long as it
         is ran ASAP.  UUCPRepair can be used at any time and will not
         cause any problems if ran more than once.  If fact, we recommend
         that it be used MONTHLY to check and repair any invalid UUCP IDs.

 Coders: There exists a small mismatch in the headers for NewMailFolder
         (in mail.h) and KeyElement4 (in users.h) where the lengths
         are 10 and 11 respectively.  Please assume a length of **10**
         for NewMailFolder.OwnerID and UserData.UUCP where the actual
         UUCP ID is 9 bytes in length terminated with a single NULL (\\0)
         byte.


1.  vde files are no longer included in the CNet distributions.  From now on,
    you must use the AmigaDOS executable called "VDE" to create your system
    VDE files.

    Simply enter the command CNET:VDE in any CLI/Shell to have your VDE files
    created.  Make sure you first copy the "VDE" command from this distribution
    archive to your CNET: directory!

2.  Fixed bug in ranges using MESS BY "<name or handle>" where only messages
    written by LOCAL users were recognized even if network messages contained
    a user named <name or handle>.

3.  Arj fingerprint in Toss changed to 60 ea 2c 00 1e as the old fingerprint
    wasn't recognizing all arj archives.

4.  ARexx SETMAILSUBJECT is once again working.

5.  The user subboard/message Interface is now configurable between the old
    3.x style and new 4.x style in Edit Preferences (EP).

    If CNet/3 type is chosen, CNet acts like 3.x in that entering a number X
    while in a subboard causes the user to be placed in subboard X in the
    current tree/level.  Users must use Rx (where x is an item number) to read
    a post/item.

    if CNet/4 type is chosen, CNet uses the new format in that by entering
    a number X, CNet will display to the user item X in the current subboard.
    Users will be required to use /x (where x is a subboard number in the
    current subboard tree/level) to move to a new/different subboard.

    To add this capability, changes have also been made to BBSTEXT lines 1173,
    1175, 1184, 1187-1189, 1192 and 1202.  No BBSMENU changes are required.
    See the included !bbstext_stock for an example of the new/changed lines.
    The file systext:new/interface is a file containing an explanation of
    this feature of CNet.

    NOTE: If the file SYSTEXT:NEW/INTERFACE does not exist, the user will not
          be asked for an interface preference and your system will not
          sport a 3.x emulation mode.  All users will be forced to use the 4.x
          style message/subboard interface.

6.  Fixed "Reply to <handle/name>?" in netmail carbon copied from the base.

7.  Added "PowerQuote" to mail quoting.  If a user selects "QUOTE=YES" in
    the mail flags just before entering the editor to reply to a mail
    item, PowerQuoting is used.

    CNet's PowerQuoting features a "smart" quoting system which will NOT
    prepend XX> to already quoted lines.  Therefore, you don't end up with a
    bunch of XX> XX> XX> or XX>XX>XX> text filling up the editor.  Only
    previously unquoted lines will receive the "quote specifiers" which
    are made up of either the first two letters of a user's name/handle
    or the first initial of the user's first and last name in his
    handle or real name.

    PowerQuoting does word wrapping before adding the "quote specifiers"
    therefore reducing text fragmentation.

    PowerQuoting will also be added to CNet's regular Line/VisEd quoting
    (.Q and CTRL-X Q respectively) at a later date.

8.  "Superuser" flag was not being shown properly in the WHO display.

9.  A finger daemon is now included with CNet Amiga.  To use this finger
    daemon, you must configure your inetd to spawn the CNet finger daemon.
    We have not yet looked at Miami but for AmiTCP, you need only do the
    following:
   
    - edit amitcp:db/inetd.conf
    - Delete the current "finger" line from that file.
    - replace it with the following finger daemon command:
    
       finger    stream tcp dos bin - CNet:cnfingerd

    If you don't keep your internet doors/support files in CNET:,
    please remember to change the "CNET:" path, in the cnfingerd
    command above, to the proper path where your cnfingerd resides.

    Miami and other TCP/IP stack users, please consult the related
    documentation, for the software you are using to connect to your
    ISP, for the proper inetd configuration details.

10. BBSTEXT changes: lines 2166-2189 added

11. Bug where CNet "lost" a user when his access was changed due to low
    balance fixed.


@ENDNODE


@NODE "CHANGES421" "4.21 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.21@{ub}

***** You must run the maintenance upgrade program "421" in any DOS CLI/Shell.
      This must be done with CNet completely shut down!  421 is a
      fix to upgrade some mail header variables which needed expansion
      when the subboard structures were changes but didn't get this attention
      at that time.  (3rd party coders: the "UniqueBase" variable of
      MailHeader4 has changed from 21 bytes to 75 bytes in length)

1.  New CNetC door "UUCPRepair" for checking if any UUCP IDs are out of spec.
    When ran as a CNetC Door, will scan your users' UUCP IDs and generate
    error information about the invalid UUCP id and then prompt you for a new
    UUCP id for each user with an invalid UUCP id.

    Invalid UUCP ids can result in failure to receive mail and other system
    messages so, be sure to run this door.

2.  Transpose not saving changes made to user accounts during transpose fixed.

3.  Using ranges when using SCAN (ie. S2-) during mail read was not working
    properly.  Fixed.

4.  MailRead now should not produce "item corrupted" messages unless a mail
    item is truly corrupt.

5.  "GO MAIN" and using a colon (:) to go to main menu from within subboards
    now work correctly.

6.  CNet now has a dedicated background process for testing and transforming
    files immediately after users upload files.  In EL, under "File Testing"
    and "File transform" there is now a "Background" setting in addition
    to the previous, AMaint, Immediate, and None settings.  If you get
    garbage and not "BackGround" in your VDE display, then make sure you
    have updated your BBSTEXT to include the new text in the newest
    !stock_bbstext..  When someone uploads files to your system, the
    background test transform will occur immediately without prompt, if you
    have set the subboard for background test/transform.  If someone enters
    "TE" or "TR" and have access to those commands, they will be given a
    choice whether test/transform is done by the background file-server
    (file-task) or to perform and output test/transform results immediately.

    file-task should be located in or copied to your root CNET: directory.

    NOTE: even if you do not wish to have background processing of tests and
          transforms, you should EL all subboards and verify that your
          File test and file transform settings are correct.  Todd (Electropig)
          and I noticed that some of our Aminet mirror subboards were being
          transformed/tested even though they were set to NONE. The values
          have shifted slightly internally so unless you want subboards,
          that were not supposed to have test/transform enabled, to be
          tested/tx'd at amaint, be sure to EL all subboards.  Don't forget
          that you can mass EL by using EL x-y to edit groups of subboards..

7.  Mail-read expanded to notify the user and re-read the list of mail items
    when new mails are received if the user is currently reading his mail.
    Be aware that this won't happen if they are sitting at the mail-read
    prompt but if they SCAN, read, edit or perform any command, their mail
    item list will be updated.  This is checked before AND after the mail-read
    prompt is displayed.  Later, it will be expanded to update even if the user
    is sitting at the prompt, with no activity..

8.  Fixed bugs where ports were not closing if a user was dumped while
    "close port?" was set and, closing a port while a user was online
    dumped the user but the port did not close.

9.  Mail-bouncing re-implemented in mail-task. If a mail cannot be delivered,
    the originating user's message will be returned with an explanation as to
    why the message could not be delivered.

10. DIZ ADD now implemented.  The format for DIZ extraction and ADD is as
    follows:

    THE DIZ EXTRACT COMMAND
    =======================
      an example for LHA:

         lha x %s %s

      for programs capable of displaying FILE_ID.DIZ to an amigados shell:

         DIZ_utility >FILE_ID.DIZ %s

      In the above (and in ALL diz extract commands in config/archivers),

      - the first %s is replaced by the full path/filename of the file
        that was uploaded or adopted.
      - the second %s is replaced by the actual text "FILE_ID.DIZ"
      - all extraction/processing occurs in a dtempX directory in the
        directory specified in the "Arc Examine Temp" path in config/paths.
        That is, CNet will change directory (CD) to the dtempX directory
        before executing your extract command.  The 'X' in dtempX is replaced
        by the current port number.  ie. If RAM: is set as your arc examine
        temp and you have just uploaded a file on port 1, DIZ processing will
        occur in "ram:dtemp1/".
      - For DIZ processing utilities that are capable of redirecting their
        output directly to an amigados shell/cli, you can use the command
        "DIZ_EXTRACT_PROGRAM >FILE_ID.DIZ %s" where DIZ_EXTRACT_PROGRAM
        is the actual path/filename of the DIZ extract utility. In this case,
        the second %s, as noted above, can be left out.

    THE DIZ ADD FORMAT
    ==================
    In config/archivers is a DIZ ADD command string.  In this string you
    place the command used to add a FILE_ID.DIZ description to the archive
    being described.  By definition, this is where you put the command used
    to add a FILE_ID.DIZ to the file currently being described.

    An example for LHA (others are similar and the %s's mean the same thing)

    DIZ ADD FORMAT
    ==============
      dh0:c/lha r %s %s

    OR

      dh0:c/lha r %s FILE_ID.DIZ

    The FIRST %s is replaced by the full path and filename of the file
    that a FILE_ID.DIZ is being added to.

    The SECOND %s is replaced internally with the text FILE_ID.DIZ and may
    be ignored if you use the second example.

11. Mail that was/is marked as URGENT/HIGHPRI is now reset to regular priority
    when it has been read.

12. Mail-task has been updated to use true file-notification.  Instead of
    checking to see if mail has been filed every 10 seconds, it only scans
    mail:cnetoutbox when a new item has been filed.  This does 2 things:

     1) reduces CPU time during idle periods where no mail whatsoever
        is received.  There no need for file-system activity during these
        periods.
     2) provides IMMEDIATE delivery of mail when received.

13. Some minor code fixes in mail-task that may have caused mail, addressed
    to "SYSOP", meant for the msgs-to-sysop folder to be saved to the sysop
    feedback folder instead.  Don't forget the command "VS" to view messages
    addressed to "SYSOP."  The VS command is the only SYSOP mail command that
    doesn't exit if the msgs-to-sysop folder is empty.  This allows you to
    change folders and view newuser and feedback folders interactively.

@ENDNODE




@NODE "CHANGES420" "4.20 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.20@{ub}

1.  Copies of mail placed in SENTMAIL are no longer flagged as "new" mail.

2.  An invalid GO argument now displays the text in "systext:menu/go" and
    prompts CNet to ask the user if they would like to see a list of valid GO
    arguments for objects/areas that they have access to (changes to BBSTEXT
    lines 336 and 339)

3.  ReadArgs template to toss was missing /S so PKTONLY arg returned "bad
    arguments.  Fixed.

4.  Short description lines expanded to 2 characters in config/limits.
    Note the max of 16 lines.  Be aware that most file_id.diz processors
    only support 12 lines.
5.  DRop/JOin outside of subboards fixed.

6.  Cron bug fixed where the invoke type (ie. Immedite-UDump etc,.) could
    not be changed after an event was added/saved.  Requires the newer
    cnet.library included in this beta package.

7.  Killing of CopySelf mail (saved from the date of this beta install forward)
    will no longer be deducted from the System Activity Monitor (SAM).  Please
    note that CURRENTLY saved SentMail is not affected by this fix so your mail
    counts may be slightly wrong until all previous items in user "sentmail"
    folders are killed.  That is, copyself mail saved previous to your
    installing of this beta will still be deducted from the SAM.  Please
    consider running the COUNT maintenance door when you run amaint to correct
    the SAM variable(s) until you are fairly sure all old sentmail is killed.

8.  Upload resume fixed.

9.  Subboard VDE problem with "Other defaults" fixed.

10. FIRST INCARNATION OF "NNTPGET", the new direct NNTP usenet news
    import utility for CNet/4.  Please note that for this first release
    if you do not use the "NEW" argument, NNTPGet WILL NOT get any news
    from your ISP.  The NEW argument is, for the time being, REQUIRED.
    When the SINCE argument is implemented, one of NEW, SINCE or GETACTIVE
    will be required, but not all at the same time.  Please read the following
    IN ENTIRETY to avoid configuration problems.

    NNTPGet currently requires AmiTCP/IP.  It may also work with Miami and/or
    MultiLink but this has not been verified.  If someone would please let
    me know about the latter two, it would be much appreciated and if it
    does not work with those, I will look into adding support for those
    TCP stacks..

    NNTPGet is designed to directly import usenet news items directly
    into your CNet message base, from your Internet Service Provider.

    Before you run NNTPGet, there are a few things to note:

    i)  The "Go Keyword/Arg" for the usenet/UUCP newsgroup in your
        subboard EL must be the exact name of the newsgroup as found
        in the list of newsgroups supplied by your ISP.  This list can be
        retrived by NNTPGet and will be explained later.

    ii) The "Part0/CD/Net" has a few restrictions if you are using
        NNTPPost (which will later be replaced with another ZenMetal
        CNet support utility).  If you are going to use NNTPPost
        to post usenet news from your system, you will need to create an
        assign of UUNEWS: which will be the base path that articles will
        be placed when they are received.

    EXAMPLE:

        NEWSGROUP NAME AS FOUND IN THE ACTIVE NEWSGROUPS LIST:

                  comp.sys.amiga.programmer

        IN CNET SUBBOARD EL:

                  TITLE: csa.programmer (you can use anything you want here)

          DATA DIR PATH: Base0:csa.programmer (again, use any path you
                                               need for the cnet data files)

           PART0/CD/NET: uunews:comp/sys/amiga/programmer

        GO KEYWORD/ARG : comp.sys.amiga.programmer

                               ****OR****

                         comp/sys/amiga/programmer

                NETWORK: UUCP

        ... all other subboard VDE option are at your discretion.

    NNTPGet accepts some command line arguments when it is ran:

           N=NNTPSERVER/K,P=NNTPPORT/K,N=NEW/S,I=SINCE/K,A=GETACTIVE/S

    Explanation of arguments (all optional):

           NNTPSERVER:  This is the name of the NNTP server for your ISP.
                        for example, my ISP has a domain of netrover.com
                        and their NNTP server has a hostname of
                        NEWS.NETROVER.COM.
                        In this case, I use:  nntpget n=news.netrover.com
                        Please contact your ISP to find out it's news
                        server's hostname.

            NNTPPORT:   Defaults to 119 which is the usual NNTP news port
                        but may be used if your ISP uses another port number
                        for security reasons.


                 NEW:   switch to tell NNTPGet to get only new news since
                        your last session.  If you have not ever done a news
                        import using NNTPGet, it will get all new news since
                        the last 30 days.

               SINCE:   (not yet implemented) specify a date string and
                        NNTPGet will get only the news posted since that date.

           GETACTIVE:   tells NNTPGet to receive the list of currently
                        available newsgroups from your ISP.  It is stored
                        as UUNEWS:ACTIVE so be sure to assign UUNEWS:
                        somewhere on your system.  Most UUCP/NNTP utilities
                        use this directory to save news in a heirarchical
                        format (aka NESTED DIRECTORIES - each directory
                        used as a newsgroup with news items within) for
                        incoming news. The ACTIVE file is in ASCII format and
                        can be read with any text reader or editor.

    If you do not specify an NNTPSERVER, NNTPGet will look for the environment
    variable NNTPSERVER.  So you may set this to assure that NNTPGet uses
    this as a default by entering "SETENV NNTPSERVER <NNTP_SERVER_NAME>"
    and then "copy env:NNTPSERVER ENVARC:" to assure that it is saved
    and set when your system is reset/rebooted.

@ENDNODE




@NODE "CHANGES413B" "4.13b (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.13b@{ub}

1. SENTMAIL folder and "CopySelf" are now re-implemented.  mail-task will
   generate a "copy" of the sent email/netmail in the user's SENTMAIL
   folder if the CopySelf flag is enabled when writing a new mail.
2. "Last Msg Serial" in subboard VDE expanded to allow 9 digits.
3. various fixes for UUNEWS and Toss/ifido importing of items with long
   area/newsgroup subdirnames.
4. The entry in the Logs section of Config,  titled "MaintLog" was changed to
   "ReadLog".  Still retains a log ID of 216.
5. New "RL" (ReadLog) menu command added to the maintenance menu section of
   BBSMENU.  This allows you to create/alias your own unique LOG reading
   commands of simply enter "RL" and you are prompted for a log name to read.
   Note that the path to the log is not entered, only the actual filename
   of the log.  CNet assumes a path of "sysdata:log/".

   An example of creating a log alias has already been provided in BBSMENU.
   Look for the alias "LA" in !BBSMENU_STOCK which is defined as follows:

      LA~RL amaint

6. Toss, IFido and the mail server now filter MCI from Subject and From/To
   fields.

7. Last Message Serial number in "EL" VDE is no longer a large 9 digit
   number (time stamp).  QWK requires that this number be 8 digits or less.
   (this is the reason QWK replies were being filed as posts)  To avoid
   QWK/YANK problems in the future, please do a GLOBAL "EL" and set this
   number to some median number such as 4000 or thereabouts for all
   subboards.  Do not be concerned if there is currently a 9 digit number
   in that field, reset it to some 4 digit number anyways.  CNet message
   filing wil set the "Message ID" to be this number +1 and then increment
   it each time a message is saved.  If you delete all items in a subboard,
   reset this Last Message Serial to 0 and CNet will begin message numbering
   according to that number.  Be aware that QWK uses the Message ID number 
   when filing responses, so try not to change it often or at all
   once reset, or posts/responses may not get linked properly.

8. Repair_sub is now working again and must be located in your cnet:doors/
   directory.

9. Cron now has an option to run and/or close the port, that an event is
   destined to execute on, at the time of event execution.

   There are three options:

      IGNORE:    If the port is loaded already, the event runs as scheduled.
                 If the port is not loaded, the event is skipped,

      RUN:       If the port is loaded, the event runs as scheduled.
                 If the port is not loaded, control loads the port, the event
                 is executed and on completion of the event, the port remains
                 loaded.

      RUN/CLOSE: If the port is loaded, the event runs as scheduled.
                 If the port is not loaded, control loads the port, the event
                 is executed and on completion of the event, the port is
                 closed.

      **NOTE**:  If RUN/CLOSE is enabled and the port is already loaded
                 at the time of event execution, the port  will still be closed
                 after the event executes.

10. Changed minutes.tenths-of-minutes display of next pending event (in
    SYSINFO window of control) to hours, minutes display.

11. Repair_sub now allows a "renumber" argument to force mandatory renumbering
    of MessageIDs.  Try this method if your yanks/QWKs are failing (ie. no
    messages yanked) and you know there are new messages.  Also, please do
    not use the "renumber" argument too often as messages from old QWK packets
    that users have yanked previously to your renumbering may not get filed
    properly and could be filed as new posts rather than responses.  This
    argument should be used only as a last resort (ie. if your
    "LasMessageSerial" for any subboard exceeds 8 digits).

12. mail-aliased "account ranges" no longer include deleted accounts
    (which were denoted by a Handle/RealName of '!')

13. mail-alias [K]ill command was TOO powerful.  Prompts for Name and
    address added to Kill Alias command.  Alias killing is based only on the
    "filled-in" prompts.  That is, if you leave one or two of the prompts
    blank, only aliases with fields matching the remaining information
    are killed.  You can still mass kill aliases by entering only the 
    "Alias" part of the mail-alias.  If all three are left blank, NO
    mail-aliases are killed.

14. PKTONLY argument added to toss which can be used to quickly process
    netmail and areafix requests only.  This can be used to quickly respond
    to areafix requests from remote systems by using the syntax
    
       TOSS PKTONLY

    in your TURNAROUND command for trapdoor and other mailers that support
    this style of quick answering of areafix and netmail messages while the
    remote system is still connected.  There would be no need to wait for
    callback to get replies to your areafix request as they can be now
    processed and answered immediately.

15. Fingerprint added to Toss for decompression of packets compressed
    with ARJ.

    Don't forget to add .ARJ to your ARCHIVERS section of config if you wish
    to support ARJ.  Be sure to use "ARJ e %s" for the Extract Format.

    NOTE: a future beta/release of CNet will have the capability for you to
         define your own archiver "fingerprints" in CONFIG/ARCHIVERS so you
         don't have to wait for new versions of CNet to support newer/popular
         compression formats..

16. AMaint sports four new arguments/options that are specified on the command
    line of cron, in your BBSMENU or wherever amaint is executed from:

    NOUSERPURGE:   tells amaint not to do a user purge

    NOBASEPURGE:   tells amaint not to do a message/file area purge nor
                   adopt orphans (if configured to adopt orphans at maint)

    NOBBSPURGE:    tells amaint not to weed old items in the BBSLIST.

    CURRENTDATE:   tells amaint to use the CURRENT DATE and TIME for the
                   "Post Date" of newly adopted items.  If this option is not
                   present, amaint uses the AmigaDOS date of the file being
                   adopted.

    To set an amaint event using any of these, use the following example
    as a guide for the COMMAND in your CRON configuration for amaint:

                 cnet:doors/amaint nouserpurge nobbspurge

    NOTE: These args cannot be specified at CNET prompts.  They must be
          added in the CRON/BBSMENU command.

17. AMaint now looks for descriptions in the files.bbs file specified on line
    634 of BBSTEXT when a new file is adopted by amaint. If there is a
    %s in line 634, AMaint will (as usual) look in the current subboard
    for the specified files.bbs file or, if there is no %s in line 634,
    AMaint will use the discrete path specified (ie. "DOWNS:files.bbs"
    rather than "%sfiles.bbs") for those who like to keep their files.bbs
    descriptions in a single location/file.

18. AMaint now searches newly adopted files for an existent FILE_ID.DIZ and
    uses that description, rather than the files.bbs description, if present.

19. FILE_ID.DIZ processing is *partially* functioning as of this beta.
    Only the EXTRACTION of DIZ descriptions is functioning at this time.

    Other options are in progress but many people have voiced their concerns
    about getting fixes for current bugs so I felt that at least having the
    extraction of DIZ working at this point, will suffice until the next beta.

    Please make sure you have a valid command configured for your "DIZ
    Extract" command in config/archivers.

      an example for LHA:

         lha x %s %s

      for programs capable of displaying FILE_ID.DIZ to an amigados shell:

         DIZ_utility >FILE_ID.DIZ %s

      In the above (and in ALL diz extract commands in config/archivers),

      - the first %s is replaced by the full path/filename of the file
        that was uploaded or adopted.
      - the second %s is replaced by the actual text "FILE_ID.DIZ"
      - all extraction/processing occurs in a dtempX directory in the
        directory specified in the "Arc Examine Temp" path in config/paths.
        That is, CNet will change directory (CD) to the dtempX directory
        before executing your extract command.  The 'X' in dtempX is replaced
        by the current port number.  ie. If RAM: is set as your arc examine
        temp and you have just uploaded a file on port 1, DIZ processing will
        occur in "ram:dtemp1/".
      - For DIZ processing utilities that are capable of redirecting their
        output directly to an amigados shell/cli, you can use the command
        "DIZ_EXTRACT_PROGRAM >FILE_ID.DIZ %s" where DIZ_EXTRACT_PROGRAM
        is the actual path/filename of the DIZ extract utility. In this case,
        the second %s, as noted above, can be left out.

20. Transpose bug fixed where new privs were not binding after a transpose.

21. BBSTEXT line 2143 is now used to set file patterns for files that are
    NOT to be auto-adopted at maint. The pattern is any AmigaDOS wildcard
    pattern.  Each pattern must be separated by SPACES.  TABs are not
    allowed on this line, nor is MCI.

      EXAMPLE AMIGADOS FILE PATTERNS:

      #?.readme              means not to adopt files with an extension of
                             ".readme"
      file.bbs               means not to adopt any file called "files.bbs"
      (#?.lha|#?.zip)        means NOT to adopt lha and zip files
      ~(#?.lha|#?.zip)       means to only adopt lha and zip files


      The default in v4.13b's bbstext is as follows:

         #?.readme #?.ads files.bbs

      using the default noted above keeps amaint from auto-adopting .readme,
      .ads and files.bbs files.

@ENDNODE

@NODE "CHANGES413" "4.13 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.13@{ub}

NOTE: You must be sure that all ports & control are not running and then
      run the maintenance program "413" before using this version.  The
      413 upgrade executable will convert your sysdata:subboards3 to the new
      sysdata:subboards4 format.  Your subboards3 file will not be deleted
      so that you may still run older CNet releases if you need to.

      Also note that some BBSTEXT/MENU changes were made for this release.
      Be sure to use a text-changer or text "diffing" program to find
      and change/update your bbstext/menu.

1.  Mail Aliases are once again implemented.
    Multiple mail aliases are possible for a single "Alias" to support
    "group mail" so you may define a single alias for many users by
    entering their names one at a time, but using the same "alias" when
    prompted for an alias.  Also, you may use aliases for local (ie. belonging
    to the same system) users as well as network addresses by simply NOT
    specifying an "address" but only the user Name and Alias.  Note that
    ALL aliases still pass through access filters so, just because a user has
    a "network address" defined in one of his/her aliases does not mean that
    the mail will be sent.  If the user does not have network access, then
    the user's network mail alias will not be valid.

2.  Only "Immediate-NoDump" events were working in v4.12d.  Fixed.  All types
    should now work and the "Next Event" field of Control's System Info
    screen should display the time of the next valid event.

3.  OLM's to maint users stating feedback was received, were actually New user
    applications and vice versa. Fixed.

4.  NMAIL to new users sometimes went to NEWUSER (VN) and the new user
    application was lost.  Fixed.

5.  MailSend (MS) now accepts a valid CNet RANGE of accounts.  For example,
    Entering "MS 1-50,75" now allows sending mail to accounts 1 through 50
    including account 75. NOTE that you cannot mix and match account ranges
    with network addresses and user handles/names.  For account ranges to
    work, you must use only valid NUMERICAL account ranges.

6.  Related to number (5.) above, local Account ranges are now allowed in mail
    aliases.  To define a local group of users in a mail alias, simply set your
    alias up similar to the following example: 

      ALIAS        NAME         ADDRESS
      ============ ============ =============
      Range1       1-50,75      [leave blank]

   Therefore, entering "MS range1" would send mail to accounts 1 through 50,
   while including account 75.

7.  Subboard Unique Dirname and paths have been expanded to 3x the previous
    length, with unique dirname having a new maximum of 75 characters rather
    than the previous 21 characters.  Data path has been expanded to 95
    characters from it's previous 40 character limit.

8.  Added "VS" command to View Sysop Mail which are mail items in the
    Msgs-To-Sysop folder of the SYSOP mail directory)  The Msgs-To-Sysop
    folder contains messages that are simply addressed to "SYSOP".  These
    SYSOP messages are usually carbon copied from network echos when unsavvy
    users address their messages to "SYSOP".  They are placed in Msgs-To-Sysop
    to reduce mailbox clutter in your (sysops) real mail folders. However, CNet
    DOES support LOCAL mailing to "SYSOP" and these mails are also placed in
    Msgs-To-Sysop.
   
    NOTE: Items in the msgs-to-sysop folder are counted as FEEDBACK so if your
          "VF" (View Feedback) command returns empty and you still have a
          non-zero feedback counter, check mail-to-sysop using your "VS"
          command before reporting this as a bug.

9.  IUUMAIL bug fixed, where imported mail was directed to the wrong mailbox.

10. The same bug that plagued IUUMAIL was found in TOSS and IFIDO.  All
    fixed.

11. Fixed "checkable" control menuitems (no new users, sysop is in, etc..)

12. Fixed amaint problem of deleting the same users over and over again.

13. systext:vde/subboard has been altered, the subboard VDE has been
    reorg'd and the following new FILE_ID.DIZ processing configuration
    variables exist for EACH subboard:

        DizTypes:  Archive types to allow diz processing on. 0-31 are allowed
                   and match the type in the "Archivers" section of config.
                      ie flag 0 = the first archiver,
                         flag 2 = the second archiver
                         etc,.

        DizSave:   settings: 1 = Save Edited Diz = save/replace edited diz to archive
                             0 = Don't Save Diz  = don't save/replace diz to archive
        UseSentBy: settings: 1 = Add sent-bys    = add sent-bys to description/diz
                             0 = Ignore sent-bys = don't add sent-bys to diz/description
        DizEdit:   settings: 1 = Diz Edit = allow DIZ editing by user
                             0 = No edits = no user diz edits

NOTE: Due to my having to release this beta prematurely, the DIZ processor
      is not yet functional.  I will address the significance of the DIZ
      settings and provide example DIZ strings for config when the DIZ
      functions are implemented, most likely in one of the next two beta
      releases.

@ENDNODE


@NODE "CHANGES412D" "4.12d (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.12d@{ub}

pre-notes: please be patient with these things.  The mail system re-write
           was a large undertaking and these things are bound to pop up in
           something so diverse as the new mail system.  The new system is
           ultimately more powerful than the old one and allows easy internal
           feature expansion. Once fixed, these bugs should not ever resurface.
           I am attacking them as fast and furious as possible.  Please let
           me know if there are any more residual mail bugs ASAP.

           Also this release was much delayed so as to assure that events are
           100% bug-free.  There were many problems with the way Perspective's
           CNet AMIGA v4.0 handled events and these did not become apparent
           until 4.11 when I had events working "in principle" although they
           were very buggy because of the time handling code (ie. the many many
           ChangeDirs to your CNet partition and "env:".  You may still see the
           odd CD to env: but that activity has been reduced by over 800%.

1.  This is once again a full package as the libraries have changed and
    version/revision numbers for the libraries have changed.
    cnet.library and cnet4.library are now correctly numbered (v4.3).
    From this point on, any changes that do not require a complete distribution
    archive will be placed online (at The Metal Shoppe first) as single
    executables to save LD sysops phone charges.
2.  mail-task problem caused lockups.  Fixed.
3.  Added "send mail to ... Is this correct?" prompt after TO and CC
    filled in.
4.  Related to above, FTN (fidonet) netmail "TOs" and "CC's" are now
    expanded to the full remote user and system name for verification by user.
5.  UUCP/FIDO mailsend access was not being checked before allowing mailsends
    to network addresses.
6.  Toss/XFido problem that added some extraneous characters to outgoing msg
    headers fixed.
7.  Toss problem that duped addresses on replies, fixed.
    (ie. Ray Akey@1:246/74@1:246/74)  Old mail may stil "look" broken
    when you reply but new mail is imported fine.
8.  Online maint users now receive notification (System OLM) when feedback or
    new user applications are received/filed.
9.  Quoted text (via the flags you set before entering the editor) during
    mail reply appeared below the user's signature.  Fixed.  It now appears
    above the user's signature.
10. Cron has been updated to include settings for a "start date and time"
    which now gives the capability of "postdating" events to start sometime
    in the future.
11. Cron received "repeat" settings for Days, Hours and Minutes.  These
    settings are use, for example, to cause and event to be repeated every
    x days, y hours and z minutes.
    
      Examples: DAYS=0, HOURS=1, MINUTES=0 to have an event repeat every
                hour.

                DAYS=1, HOURS=0, MINUTES=0 to have an event repeat every
                24 hours.

                DAYS=0, HOURS=1, MINUTES=30 to have an event repeat once
                every hour and 1/2.

                DAYS=1, HOURS=6, MINUTES=0 to have an event repeat every
                day and 1/2.


            Alternatively, you can specify, for example, 48 repeat HOURS
            and Cron will adjust the days, hours and minutes accordingly...

            You can also specify a "start date" as some date in the past
            and Cron/Control will bring the date up to the current date
            (if the event is a "repeat event") automatically, assuring
            that the "repeat time" is strictly followed.

            If you specify a date in the past (ie. 08-Jan-78) for an event
            that is not repeated (ie. no repeat days, hours or minutes set)
            the event will simply be deleted. Please keep this in mind when
            adding "predated" events.

12. Added sysdata:log/events log to allow sysops easy verification that
    events have or have not been executed.



coming: Mail-Aliases (as a few have noticed) are not yet re-implemented but
        should be for the next beta.  They will be more powerful than the
        previous aliases used in versions 4.0-4.10 and will allow full
        editing, deletion and addition.  Aliases will be allowed for ANY
        mail address..   Local, Fidonet, internet etc,..  These also
        will pass through the "Access filter" to be sure a user cannot, for
        example, send fido alias mail if he/she does not have fido mail
        access. I had intended to have Mail-aliases in this release but
        let's face it, you guys needed a fix for your lockup problems
        before Mail aliases were resumed.  Mail-aliases will FOR SURE
        be back in for the next beta (v4.12e).

        FILE_ID.DIZ support.  v4.13 or v414 should have DIZ support fully
        implemented (or at least functional anyways).    I'm sure more
        diz options/features will be added over time.

        The old subboard name restrictions are being lengthened (someday
        REMOVED altogether, but not yet) to allow longer Usenet newsgroup
        names to be used.

        The subboard conversion program is already written and tested but I
        have some work to do in converting existing code to allow/use the
        longer names and also adding/altering the VDE for the new DIZ options.
        If you have suggestions for the DIZ processor, please get them in NOW
        if you want to see them in the first DIZ beta release.

@ENDNODE



@NODE "CHANGES412C" "4.12c (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.12c@{ub}

1.  Getuser offsets had inadvertently shifted in v4.12b.  They are now
    back to normal and are once again compatible with getusers previously
    used in MCI and ARexx doors.   Some getusers may change in the future
    but not nearly as drastically as they mistakenly did in v4.12(a).
2.  Code added to prevent CNet from popping up "please insert volume xxx"
    system requesters when a file/directory cannot be found.
3.  "move read items to trashcan" prompt only appears when there is already
    read items in inbox, feedback or newuser boxes.
4.  "empty trashcan?" prompt only appears when there are messages in trashcan.
5.  User login macros are now all executed BEFORE the "main menu" appears.
6.  The "412" upgrade executable in v4.12b did not work properly on systems
    that used a small stack size as it was created using some previous
    Perspective Software wrapper code. This has changed and stack size is no
    longer a factor for the 412 upgrade executable.
7.  The license window is no longer "activated" when it opens.
8.  Count was not counting any of the mail, feedback or newuser applications.
    Fixed.  When count is processing mail directories, an asterisk is printed
    when a FOLDER is found, and a period is printed when an actual mail/feedback
    or newuser application is found.
9.  Ifido bug fixed where many posts/responses were chained to the end of
    other messages.
10. OLM save to mail was broken.  Fixed.
11. Added "NET" command to mail read, to display information about the
    system from which netmail was sent. NET command added to the end of BBSMENU
    section "7; Mail Read" to enable this command.  Also added display lines to
    the end of bbstext for this feature.

@ENDNODE

@NODE "CHANGES412A" "4.12A (beta - limited release) Changes"

                          @{b}CHANGES/FIXES FOR V4.12A@{ub}

REMEMBER: This IS a limited (4.x registered users only!) beta.  If you aren't
          up for a little bit of testing and a few possible bugs here and
          there, then please do not install this beta until initial reports
          are in from those who are willing/able to beta this release.


   A QUICK NOTE on some things that didn't make it into the code or things
   that I thought may be "fuzzy" to some sysops:

   1. run the executable "412" to update your system to upgrade your
      bbsconfig3 to the new BBSCONFIG4 that v4.12 Control requires.
      If you are running CNet for the first time, or have no users yet
      you do not need to run "412".
   2. Use the included event editor "CRON" to add/edit/remove your
      Events.  You no longer have to shut down control to change your
      events.  The Events section of CNet's "Config" program no longer exists.


CHANGES
-------
1. A completely new/re-written event scheduler!

   Gone is the CBase event-scheduler previously introduced in the 4.x series
   by Perspective Software.

   The command CRON is now used to schedule your CNet events.  It is very
   simple to use and features a font-sensitive interface.  Please be
   aware that some large fonts may corrupt the display.  ZenMetal recommends
   a size 16 or less font for your Workbench SCREEN font.  This is the font
   that CNet/CRON uses for it's interface.  In the future, if problems arise
   for some sysops, if a font larger than size 15 is used for your WB screen
   font, Cron will default to using an 8 point CNet font.  Please let me
   know if the current CRON gives you any display problems.  This is CNet's
   first font-sensitive configuration editor and, if it goes over well, all
   other local GUI editors will be converted to a font sensitive interface.

   The only field/attribute that may seem cryptic about the new cron (and the
   old config event scheduler) is the "valid" setting.  This field holds the
   amount of time (HH:MM) that the event will remain valid, past the "start
   time" of the event.  That is, if the current time is greater than the
   start time PLUS the valid time, the event will be skipped.  If the current
   time is greater than the start time (but less than the start time PLUS the
   valid time) the event will be executed.  Once executed, the event should
   not be executed again until the next day set (via the DAYS checkboxes).
   if anyone comes across any problem where a single event is being executed
   more than once per day (if enabled every day), please notify ZenMetal ASAP.

   Note that the "Name" of the Event is an identifier.  that is, CNet really
   does not use this field.  It is for your recognition only, but each event
   MUST have a Name unique from other Events. You cannot have two events
   named AMAINT, for example.  If you need amaint to run twice a day, call one
   "Amaint1" and the other "Amaint2".

2. A bug crept in v4.11 in which the "W" command did not work properly in
   File bases.  It did not allow editing of short file descriptions.  This
   has been fixed.

3. The mail subsystem has a new filing system.  It looks almost like the
   old 4.x system from the user/sysop point of view but it is much more
   efficient and unlike the CMail-based mail system, the new one does
   not "grow" in size, never to be reduced.  As soon as a mail item is
   killed, you relinquish almost all hard drive space that was allocated
   for that item.  There will soon be a "Repair_Mail" utility to do much
   the same as the Repair_Sub utility does for your message/file bases.
   It will clean up old text and headers that, for some reason, didn't get
   deleted.

   There are some subtle visual changes that you'll notice as time passes.

   Also, Feedback and Newuser mail goes to mail:users/SYSOP/FOLDERS/#?.
   This allows you and your CoSysops to switch between reading feedback and
   newuser mail by simply changing folders.

   Multiple TO's and CC's are now 100% implemented and, when you enter the
   editor, after selecting the appropriate flags for your mail item, the
   FIRST recipient recieves name/handle expansion, in that his is the name
   listed in the "To:" line at the top of Vis-Ed and the line editor. The
   other recipients are still valid but are not expanded.  It would not be
   worth the trouble to lose a line of Vis-Ed display just to print the names
   of ALL the recipients.  Especially when CNet now allows up to 200
   characters for "TO:" and 200 characters for "CC:".  I think the list of
   expanded names would get rather large, even larger than Chesty Morgan. ;)

   Mail is now "distributed" rather than simply saved.  That is, upon saving
   an item, you will be notified that CNet is "dispatching" a copy of the
   mail to each user who was listed in the "TO" and "CC" fields that you
   specified.   At this point, all users' names will be expanded to their
   name, handle, or network address, whichever applies to the type of mail
   being sent.

   Currently (as a holdover from Perspective's v4.0-v4.08), mail-task
   searches for pending mail-requests every 10 seconds.  You will
   (if you use Eddy Carrol's SnoopDOS or some other system activity monitor)
   notice CNet looking for something called ENV:TZ..  This is something that
   SAS/C uses to dicern your timezone.  The timezone setting is the number of
   hours from Greenwich Mean Time (GMT).  Do not concern yourself with this
   as I have not altered any of the time functions and Ken (Pletzer of course)
   did not take this into account when coding CNet's time functions.  If you
   set a time zone for your system, CNet will most likely calculate your
   local time incorrectly...unless you are living 0 hours from GMT :)
   These things will be changed in the future.  In the future, when mail is
   saved, mail task will be notified that there are pending items waiting to
   be processed so that they may be processed as quickly as possible.

   Known mail/folder bug(s): When mail-task files a new item in a folder
   while you are reading/scanning mail items in that folder, CNet does not
   update the mail listing until you quit mail-read and re-enter <<OR>>
   change folders and then change folders AGAIN to go back to your inbox.
   The item is SAVED but it just doesn't appear in your "header listing"
   until you quit mailread or change folders.  This will be fixed for v4.12c.
   I wanted to get this release out to put an end to the "lost mail" problem
   so I felt that this is only a small oversight rather than a "bug" in the
   true sense of the word.

4. Much other internal optimization of code to speed up Toss and other
   areas of CNet.  The event scheduler is going to receive still more
   optimization for the next release.  I mainly rushed this out the door
   before further optimization so as to give Sysops a chance to get their
   events running again.  Also, the new event system does not currently have
   a "repeat" attribute.  That is, events that must run many times during
   the day will either have to be entered more than once (ie. for network
   mail polling, you may want to set up events to poll every hour.. For this,
   you will be required to set up 24 seperate events).  This is only a
   temporary problem as "repeat" hours and minutes will be re-implemented
   in an upcoming release.

5. MCI code ; has been added to allow comments in MCI scripts and BBSTEXT.
   Note that some BBSTEXT lines still do not allow MCI.  Generally, the ones
   that already have MCI in them are safe.  Please netmail/email me if you
   are unsure about certain lines.  Some of the new changes are already
   commented using the format:

     {; this is a comment}

     ^
     |
     CTRL-Q


 Special Notes: For the v4.12b release ONLY, Mail-Aliases have not yet been
 coded back in.  It's an easy thing to insert into the code but I just
 want to get the initial beta of the new mail filing system tested and
 completely up to snuff.  Mail-Aliases will return in v4.12c.  Also, the
 newer quoting style (you know..the quoted text UNDER your reply?) is gone
 but the former 3.x quoting method is still completely active (CTRL-Q in
 Vis-Ed and .Q or /Q in Line-Ed. If any of you want it back, this is also
 simple to add back in.  Just let me know if you want it.  I chose to
 remove it temporarily as many of you (and myself also) didn't like it.  But
 if you want it back in..


3rd Party Developers
--------------------
A CNet Developer's Kit will be released in the hopefully near future.  The
Subboard structures need some attention before I can/will release any of the
header files.  Also, SOME getusers have changed.  If any of your getusers no
longer work, don't panic, just let me know in either the fidonet CNET_BBS,
C-Link CLINKCNETAMIGA, any of the ATechNet CNet echos or by EMail/netmail
and I will reply with the correct getusers to use for this version.
(I expect Dotoran will be the first to contact me :)


...anyways, much, much, MUCH more to come!  We still have some bugs to swat
now that the events and Mail are "seemingly" settled.  Let me know ASAP if you
have any bugs that weren't yet reported, especially those relating to the
new mail-filing system or the new "CRON" event editor or events that won't
run, etc,.  Now that the really major things are fixed, the small bugs (ie
IFido etc) can be tended to and then on to NEW FEATURES that I've been talking
about here and there..


Until the next release..  ENJOY!
-Ray


@ENDNODE


@NODE "CHANGES411B" "4.11 (beta) Changes"

                          @{b}CHANGES/FIXES FOR V4.11b@{ub}

1. Control now boasts a PUBSCREEN argument to allow you to open your control
   panel on an **already opened** public screen.  There are a host of
   utilities out there, some on aminet, to facilitate the opening (and
   closing) of public screens.  CNet Screens (when "Workbench" mode is
   selected) will use the same public screen that control uses.
   
      Syntax:  run >NIL: <NIL: control pubscreen=MYPUBSCREEN




@ENDNODE

@NODE "CHANGES411A" "4.11 (alpha) Changes"

                          @{b}CHANGES/FIXES FOR V4.11@{ub}

Please be aware that this release does NOT fix many of the bugs reported
thus far.  This release is mainly to give you a stable 4.11 so that you
can at least have an operational system up and running.  The next release
will fix many more bugs reported since ZenMetal acquired CNet AMIGA.  Changes
and fixes are outlined below.


NOTE: YOU MUST FIRST INSTALL THE NEW LIBRARIES FOUND IN THE "SYS" SECTION
      OF THIS DISTRIBUTION AND THEN RUN THE 411 EXECUTABLE CONVERSION
      PROGRAM BEFORE RUNNING VERSION 4.11.

      "411" is an AmigaDOS executable that you must run from a Shell or
      CLI process.

      ** ALSO, IMMEDIATELY AFTER YOU RUN 411, YOU MUST LOGON TO YOUR BBS
         AND IMEDIATELY RUN THE CNet/C DOOR "BASE0:DOORS/POINTERS" so that
         your users' handle/UUCP/phone pointers are updated.  If you get
         the message "could not open mailbox (-1)" before running pointers
         do not be alarmed as "pointers" will cure that.

      Be aware that the SYSOP's UUCP id will be altered also.  If
      you wish to change it, please do so after running pointers. 



1. IFIdo/XFido now have their own logs in sysdata:log rather than logging
   their activity to sysdata:log/maint.
2. bbstext lines 781 & 782 changed to allow insertion of mail processing
   programs such as SuperTags to work on the _EdBuff file before it is
   saved.
3. Functions added to CNet.library:
      short   FileExists(char *filename);   /* checks if file exists */
      void   CreateMailDir(char *uucpid);   /* creates user's mail directory if non-existant */

4. User mail directory names are once again the same as their UUCP id.
5. UUCP ID can now only be changed by the SYSOP via "EA" to avoid user abuse.
   Please note that users wityh "full remote maint" can change their own UUCP
   ID.

   CNet sets new users' mailbox names according to the following
   algorithm (UUCP ID is limited to 8 characters MAXIMUM):

   first character   = first initial of FIRST name
   next 7 characters = first 7 letters of LAST name, or less if last name is
                       shorter than 7 characters.

   the string is converted to LOWER case as the UUCP ID is created.

   So, CNet would set UUCP IDs as the following examples show:
   
      First Name            : Ray
      Last Name             : Akey
      resultant CNet UUCP ID: rakey

      First Name            : Todd
      Last Name             : Knight
      resultant CNet UUCP ID: tknight

      First Name            : Jack
      Last Name             : Nicholson
      resultant CNet UUCP ID: jnichols

   The name is then checked with all other UUCP ID's currently in use and
   if a duplicate is found, the LAST character is replaced with a numeric
   digit of ascending order.

6. BMaint altered so that it will create "nested" or hierarchical
   directory structures.  To do this, the "unique subboard name" prompt
   now allows the forward slash (/)

      ie. To create an aminet/biz/misc mirror, simply use the following
          information.

          Title to appear on list:     Miscellaneous Business Soft.
          Name Used On Disk (unique):  aminet/biz/misc
          Path to subboard data files: base0:aminet/biz/misc/

   This also allows your users to enter "GO aminet/biz/misc" to get
   to that subboard.

7. Began removing CNet's dependancy on AmigaDOS commands (ie. delete,
   makedir, etc..)  All base directory structures are now created using pure
   C function calls.
8. Added check for lost QWK/Yank packets when users login.  Previously,
   packets may have been lost in the event of software failures etc,..
9. "_atemp" file is no longer getting packed into yanked email QWK packets.


@ENDNODE

@NODE "CHANGES41A" "4.1 (alpha) Changes"

                          @{b}CHANGES/FIXES FOR V4.1@{ub}

1. CNet/Control now has possible two iconified states.  If Workbench is
   loaded, Control iconifies to an AppIcon.  If the AppIcon cannot be opened,
   the old "Perspective C" window will be used.
2. Related to the above, the default AppIcon imagery is the "Perspective C"
   image.  You can have your own icon imagery used for the AppIcon if you
   create and save your icon as CNET:AppIcon.info. Included in this
   distribution is a file called CNetAppIcon.info.  Copy it to CNET: as
   AppIcon.info to use it.  It is a nice 3d-looking AppIcon image for CNet.
3. Added appicon position setting to Config's "Display" settings.  Click
   on the "Appicon" cycle gadget to open a small "Move me!" window.  Place
   the window where you want your CNet/Control Appicon to appear when
   iconified and then click again on the same button (now having the text
   "Close position window") to save your icon position.  The appicon is
   immediately notified of your changes and moves to it's new location.
4. CNet/Control menus were altered slightly to allow for easier future
   expansion.  The changes are mostly in the visual ordering of the menu
   items.  Please be aware that some menu items received new Amiga-key
   equivalents/short-cuts.
5. Fixed bug in "Missing" that popped up "please insert volume udbasex:".
   This was a hold-over from the days when CNet used a UDBaseX: assignment.
   (addendum: this problem was also simultaneously corrected by Mr. Pletzer
    in the v4.08 public release)
6. Missing no longer attempts to check non-file/message list objects.
   (addendum: this problem was also simultaneously corrected by Mr. Pletzer
    in the v4.08 public release)
7. GO argument is now displayed when a user enters a subboard.
8. Fixed bug that caused problems when attempting to run a port while that
   port is already running. (ie. "run bbs port 3" while port 3 is already
   loaded).
9. CNet no longer pops up requesters when moving files from subboard to
   subboard and the destination partition becomes full.  CNet simply
   states that the file could not be moved.

@ENDNODE


@NODE "FUTURE" "Future Notes"

                 @{b}SOME THINGS TO BE AWARE OF FOR THE FUTURE@{ub}

Note: 4.0x-registered sysops that registered with PERSPECTIVE Software will
      be charged a small transfer fee ($50 US dollars) when v4.5 is released.
      V4.5 will have different keyfiles as well so, once again, you will have
      to contact us for your key.  We'll give details on that in a future
      release.

      A CNet demo will be made available although, technically, the current
      release should function as a demo without the keyfile.

      There is an official support network set up between each of the support
      BBS' mentioned below.  You may make bug reports, suggestions, get
      current pricing information and make constructive complaints about/for
      CNet Development in the "ATechNet" subboards located in the CNet
      Support area of those bulletin board systems.  We are, however, still
      monitoring Fidonet CNET_BBS, C-Link CLINKCNETBBS and the internet
      CNet Mailing List.

      To get on the internet CNet Mailing List, send internet (or gated
      fidonet) email to cnet-request@megalith.miami.fl.us and place the text
      "SUBSCRIBE" (without the quotes) in the body of the message.

      If you have any immediate concerns or complaints, please netmail your
      query to one of the following network addresses or contact one of the
      support systems mentioned in the "Bug Reports/Support" section and we'll
      get back to you ASAP:

          Ray Akey@1:246/74.0
          rakey@netrover.com

          Todd H. Knight@1:246/90.0
          thknight@netrover.com
@ENDNODE


@NODE "ADDRESSES" "Important Addresses & Numbers"

       @{b}DEVELOPMENT/SALES/BUG REPORTS/SUPPORT/SUGGESTIONS/KEY-REGISTRATION@{ub}

Metal Software/The Metal Shoppe BBS
Attn: Ray Akey
411 Bridge Ave.
Windsor, ON
Canada  N9B 2M3

Bus: 519-256-4014
Fax: 519-256-4014 (to send a fax press *51 after my answering machine beeps)
BBS: 519-256-0278 (9600-33600 BPS)
     519-255-7378 (2400-19200 BPS)

Fidonet:  Ray Akey@1:246/74
Internet: rakey@netrover.com


                   @{b}SALES/SUPPORT/SUGGESTIONS/BUG REPORTS@{ub}

Zen Computing/FreeSpace:Negative BBS
Attn: Todd Knight
100 Erie St.S.
Leamington, ON
Canada  N8H 3B3
Fax: 519-322-5893 (to send a fax, press *51 after the answering machine beeps)
Bus: 519-322-5893
BBS: 519-322-0450 (2400-33600 BPS)

Fidonet:  Todd Knight@1:246/90
Internet: thknight@netrover.com

             @{b}AUXILIARY (U.S.) SALES/SUPPORT/NETWORK BUG REPORTS@{ub}

TJ's Unlimited/The Rat's Edge BBS
Attn: Neil Palumbo
P.O. Box #354
North Greece, NY 14515-0354
Business: 716-663-6570
BBS: 716-663-2927 (300-33600bps)
     716-663-0651 (300-14400bps)

Fidonet:  Neil Palumbo@1:2613/323
Internet: npalumbo@frontiernet.net


                         @{b}INTERNET MAILING LIST@{ub}

To get on the CNet Amiga mailing list, which is in no way directly affiliated
with ZenMetal Software, send internet email to the following address:

        address  :  cnet-request@crashb.gil.net
        subject  :  subscribe
        body text:  subscribe your_email_address


@ENDNODE


@NODE "RAY1" "A little about Ray"

                          @{b}A few words about Ray@{ub}

Hey there,

   Ray Akey is the programming force behind Metal Software and does all coding.
license registration and maintenance of CNet AMIGA and is half of ZenMetal
Software.

   Many of you know Ray as he has been coding CNet PFiles (now called DOORS)
for the past 5 years.  Well, what a way to put an end to that, eh?
(oops, some Canadian showing through) ;-)  From here on in, CNet is Ray's only
project.  Development will continue and many things are planned for the
future of CNet.  I hope you all stick around to reap the rewards that
CNet brings to the SysOp community.


Cheers,

Ray.

@ENDNODE

@NODE "TODD1" "A little about Todd"

                          @{b}A few words about Todd@{ub}

   Todd is the second (or first, I'm not picky) half of ZenMetal. Todd is
owner of Zen Computing, an Amiga dealer on the official SMG dealer list.
Some of Todd's work is widely know as the "Pakistani chat guy" who did the
"EP-Chat Sounds" for your enjoyment.

   If you don't have a dealer close to you, give Todd a shout, he'll give
you the best deal he can.

@ENDNODE


@NODE "ZENMETAL" "Introduction to ZenMetal"

                     @{b}An Introduction To ZenMetal@{ub}

   ZenMetal is a partnership formed by Todd Knight and Ray Akey in a joint
venture aimed at continuing the development of CNet AMIGA.  This was and is
the main reason that ZenMetal exists.  We are here to encourage CNet SysOps
to stick with CNet AMIGA and to assure that a quality product such as Cnet
AMIGA exists for the Amiga line of computers.

   I must give a "BIG THANKS" to Neil Palumbo (aka Dark Rat) for letting
me know that CNet was "sort of" available for purchase and that a little
picking and prodding would allow us to take CNet off of Ken's hands. Thanks
to my partner Todd for jumping in with his monetary backing when I asked.

   Ken has, in the past, done a fine job with CNet in general and this
will continue into the future.  The only difference is that ZenMetal has
major plans for better and more support channels and a yearning to make
CNet more connective in the network arena.

...we hope you all remain a part of the CNet vision.

@ENDNODE
