Short:    Ultimate Online-Filelister for Transamiga
Author:   s_supp@ira.uka.de
Uploader: s_supp@ira.uka.de
Type:     comm/bbs

! IMPORTANT INFORMATION ! Keyfiles available NOW !

================================ History ===================================

V1.0  - 25.07.94 : First public release

V1.1  - 29.07.94 : The CONTINUE-prompt now has also an entry in the
                   language files (thanks to Chris).
                   Demarking in the download-menu no more cause a crash.

NOT PUBLIC RELEASED VERSIONS

        31.07.94 : Filelister now recognices idle timeout.
        04.08.94 : GetFile was rewritten to C. This causes a speed
                   improvemt while pattern searching up to 7 times.
        10.08.94 : GetFile can now search through the complete fileline.
                   This mean you can also search for a descriptions,
                   dates and filelenths. Patterns are also possible.
                   New parameter : CompleteLine or CL

V1.2  - 12.08.94 : Serious bug while using the timer.device removed.
                   Filelister should no longer drop out users with the
                   idle-timeout-message when they call a filelist. Thanks
                   to Thomas for the BlitzBlank source.

NOT PUBLIC RELEASED VERSIONS

        12.08.94 : LOADINDEX was replaced by a C-Tool (ReadFLData). It
                   sorts the index up to 8 times faster.

        15.08.94 : ReadFLData (Index-Load-Replacement) acknowledges if
                   an index is already in memory. GetFile no more says
                   a listed file doesn't exist.

        27.08.94 : Filelister know uses the right system-path of TA every-
                   time and get the right idle time.

        28.08.94 : Example.Trans corrected. Thanks to Michael Schaffner.

V1.3  - 18.09.94 : The moment is here :-) Filelister can be registered
                   and this version will check if there's a correct
                   keyfile.

V1.31 - 21.09.94 : Bug removed while using command key stacking with
                   country specific keys (J/A/...). ReadFLData got a
                   workarround for Kickpascal. Protocolnames now should
                   have the correct name :-)
                   New versions : Filelister[_NC]
                                  ReadDLData[020/040]
                                  FreeFLData

V1.32 - Testversion, not released.

V1.33 - 06.10.94 : Thanks to Thomas for reporting a serious bug that
                   allowed standard users to mark files out of the Sysop-
                   Area ! (Patternmarking was possible :-((( )

V1.4  - 19.10.94 : Because of nerving users ( ;-) ), you can now select
                   the areas to list while new/search/all-files scan.
                   Simply say NO to the question to scan all areas.

V1.41 - 09.11.94 : Filelister, TACfl, ReadFLData sometimes crashes with
                   some Files.BBS of the AmiNet-CD Vol. 4. The reason was
                   that there're line longer than 100 characters. Thanks
                   to Harald Meinzer for detailed reporting.

============================== Documentation ===============================

                       Transamiga FileLister V1.41
                       ---------------------------

                    written 1993/94 by Mathias Supp

          Sysop of the Amiga Inside I Line 1: ++49(0)721-854112
                                      Line 2: ++49(0)721-841292
                                      Line 3: ++49(0)721-841230

                reachable via : 2:2476/539.0@fidoclassic (Line 1)
                                2:2476/39.0@fidoclassic  (Line 2)
                                2:2476/40.0@fidoclassic  (Line 3)
                                39:173/50.0@amiganet     (Line 1)
                                39:173/51.0@amiganet     (Line 2)
                                39:173/52.0@amiganet     (Line 2)
                                s_supp@ira.uka.de
                                mathias@amiga_inside.schiele-ct.de

         Modem : 1. ZyXEL U-1496E Plus - 1200-19200bps [V32(bis),ZyX]
                 2. Digitech LC288VFC  - 1200-28800bps [V32(bis),VFC]
                 3. Digitech LC288VFC  - 1200-28800bps [V32(bis),VFC]
                          Release : 09.11.1994

=============================== Copyright ==================================

Filelister is shareware. All rights a reserved by the author.

The test version of FileLister has no limits except of a nerv text at the
start and the end of EVERY filelist call.

Shareware donation : for Germany     DM25.-
                     other countries $US20.- (postal costs included)

How to register :
-----------------
Send the donation to the following address :
Mathias Supp
Görresstr. 29
76185 Karlsruhe
Germany

or use your bank : Badische Beamtenbank
                   BLZ: 66090800
                   KNr: 3426580

Send me also your COMPLETE name and address.

============================== Introduction ================================

In 1993 May, 19th I started programming a filelist replacement for Trans-
amiga in Pascal. Although I have programmed an ARexx version of such a
utility in the beginning of 1993, I was frustrated about the speed ARexx.
Therfore I converted my first 3000 lines to Pascal.

Filelister wasn't developed to save memory ! If you haven't at least 1MB
of free fast memory when TA was started you shouldn't use Filelister. As
there are many possible memory configurations you have several options to
waste your memory ( ;-) ) and get speed improvement.

Because of the problem of memory fragmentation on low memory machines the
archive contains a little ARexx utility to check your largest free block.
Dependent on this block this program resets your machine to get cleaned
memory.

You need at least 18452 Bytes of Stack.

Filelister was tested with enforcer and mungwall which tells no hits !

============================== Installation ================================

- copy FileLister or FileLister_NC to BBS:Bin/
  (if you use the NoCheck version rename it to FileLister)

- copy FileLister.Cfg.Deutsch or FileLister.Cfg.English to BBS:Configs/
  and rename it to FileLister.Cfg

- copy ReadFLData.0x0 depending on your system to BBS:Bin/ and rename
  it to ReadFLData

- copy FreeFLData to BBS:Bin/

- look at Example.trans, duplicate it and change the ARexx commands
  dependent of the wanted action (or use my examples; see later)

- copy DeleteMarks.trans to BBS:Rexx/ (sorry, german only so far :-( )

- copy FL.Help* to BBS:Text/ (ATTENTION : default = german, delete
  FL.Help[.255][.ANSI] and remove ".english" from the english language
  filename to get english as default

- copy #?.FL.Lang to BBS:Configs/

- copy GetFile to BBS:Bin/

- edit FileLister.Cfg at BBS:Configs and look at the descriptions of
  the keywords

- edit your "File.Cmds" and set an unused character for the filelist
  commands; additionally set access to 256 for this lines
  Example : File.Cmds
  ; ********************** *** ********
  G Good-Bye (Log off)       0 --------
  Q Quit to Main Menu        0 --------
  H Help With Commands       5 --------
  A Change Area              5 --------
  K Kill File              250 --------
  ~ Files in Current Area  256 --------
  ~ New Files              256 --------
  ~ Download File          256 --------
  ~ Search File List       256 --------
  M Move File              250 --------
  U Upload File             10 --------
  V View Archive Contents    5 --------
  ~ Entire File List       256 --------
  R Read Text File           5 --------
  I Information on File      5 --------
  ~ Browse Mode Toggle     256 --------
  ~ Clear Marked Files     256 --------

- create/edit "File.Rx" and add the FileLister commands
  Example : File.Rx
  ; ********************** *** ******** **************************************
  E list new files           5 -------- NewFiles.trans
  F list files               5 -------- AllFiles.trans
  S search files             5 -------- SearchFiles.trans
  D download Files           5 -------- Download.trans
  L delete marks             5 -------- DeleteMarks.trans

- replace all original filelist calls in your rexx programms (especially
  logon.trans !)

- if you want to use TACFl, look at the archiv :-)

- more informations on "starting filelister"

=========================== Contents of Archive ============================

  - FileLister             : The programm
  - FileLister_NC          : The program WITHOUT stack/subrange/...-checking
                             Be carefull, because in the case of a program
                             error your machine will crash surely.
                             Advantage : higher execution speed
  - FileLister.DOC         : This documentation
  - FileLister.DOK         : German documentation without installing infos
                             (sorry) and the complete history of Filelister
  - FileListerTech.DOK     : Technical infos for developers
                             (sorry, german only at the moment)
  - History.DOC            : History since first public release
  - Example.trans          : Example ARexx script how to call Filelister
                             Additional the scripts for the above "File.Rx"
                             - NewFiles.trans
                             - AllFiles.trans
                             - SearchFiles.trans
                             - Download.trans
  - Logoff.trans           : Necessary entries for logoff.trans
  - CheckMem.Rexx          : Tests largest free memory block
  - Reset                  : Does it :-)
  - DeleteMarks.trans      : Script to unmark files. Will be soon replaced
                             with a Pascal version.
  - Upload.Trans           : Example when using "MemoryLamer NO"
  - FileLister.Cfg.Deutsch : Example config for filelister with german and
  - FileLister.Cfg.English   english comments.
                             ALL keywords are documented. If Filelister
                             doesn't find this it use an implemented
                             standart config which is the same as this
                             sample config.
  - Deutsch.FL.Lang        : Example file for german text output
  - English.FL.Lang        : Example file for english text output
  - FL.Help*               : The online help texts
                             Format : FL.Help[.Access][.Language][.ANSI]
                             Included help texts :
                             FL.Help
                             FL.Help.ANSI
                             FL.Help.255
                             FL.Help.255.ANSI
                             FL.Help.Deutsch
                             FL.Help.Deutsch.ANSI
                             FL.Help.255.Deutsch
                             FL.Help.255.Deutsch.ANSI
                             FL.Help.English
                             FL.Help.English.ANSI
                             FL.Help.255.English
                             FL.Help.255.English.ANSI
  - TACFl156.lha           : Filelist generator which can create an index
                             file for Filelister and can use its memory
                             when an INTERNAL sorted index was created
  - MakeIndex              : Example script to create an EXTERNAL sorted
                             index for Filelister. Only usefull if there is
                             not anough memory to usw an INTERNAL sorted
                             index. (see LOADINDEX ARexx command)
  - ReadFLData.0?0         : Replacement for LOADINDEX-Command. Loads an in-
                             ternal fileindex into the memory. Should be
                             executed BEFORE starting any filelisters !
                             Template : ReadFLData CONFIGPATH/A SHOWNEW/K
                                                   NOTININDEX/K
                             ATTENTION : ShowNew and NotInIndex should
                             have the same values as specified in
                             Filelister.Cfg !!
  - FreeFLData             : deallocate memory from ReadFLData
  - GetFile                : Helps you to find files very quickly when
                             using an INTERNAL sorted index.
                             Execution : GetFile NAME/A/M
                             OS2.x+ patterns are allowed. This is version
                             2.2.

================================ Filelist ==================================

  General :
  ---------

  Independent of your choise (Mark, Info) in the prompt, you can enter
  one of the four possible types of file selecting :

  1. number (stays before each fileline)

  2. number range (e.g. 1-5 for selecting the files from number 1 to 5)

  3. filename (who guessed ? ;-) )

  4. pattern (OS2.x+ compatible filepattern)
     Features :  * or #?  - matches all
                 #x       - matches any amount of x (even 0 !)
                 ?        - matches one character
                 [a-d]    - matches characters a to d
                 a|d      - matches a or d
                 ~x       - matches unequal x
     Examples : ff(99[1-9]|1000).lha => ff991.lha to ff999.lha & ff1000.lha
                recent[0-9]#[0-9]    => recent00... to recent99...

  All types of selecting can be used at one time by using "," or spaces.
  e.g. : 1,xx,ff#? 5-10 "name,extension"

  In this example you can see the situation, if a file has a "," in its
  name. For this case there are quotes. Characters between quotes will
  be used as you write them.


  Cursor keys
  -----------

  While prompt is displayed, you can use your cursor keys to mark or
  unmark certain files. Simply choose cursor up or the numeric keys
  (Up,Home,End,PgUp,PgDn) to step through the screen. If there was more
  than one page shown, you can go back with SHIFT+Up or the numeric key
  9 and forward with SHIFT+Down or the numeric key 3.

  RETURN or SPACE marks and demarks a selected file.

  Marked files are shown with a star between the number and the filename.
  So you'll see imediately which files are marked and which not.


  Mark prompt
  -----------

  Trying to mark one file twice will cause a request if you'll want to
  unmark this file. Otherwise files will be listed with length and
  total length of all marks. Marked files also get stars like cursor
  marking does.


  Info prompt
  -----------

  Some files may have a long description that contains more informations.
  1. extact length in bytes
  2. uploader name
  3. long description of the file (has no 40 characters limit)

  ANSI users won't loose the displayed lines above because Filelister
  completes the screen after returning to the prompt.


  Fake prompt (Co-)Sysop function
  -----------

  Sometimes there may be uploads which are fakes, old in the bad case
  or special wanted uploads, very new upload in the good case. This
  subroutine gives you the possibility to give the user certain credits
  for his upload :
  - After activation you'll ask for the user's name. If
    the .Desc-file contains the right name you can simply press RETURN.
    Otherwise enter the name of the user.
  - Faker now tells you the correct file length in bytes
  - Then you can enter an integer-value (-32768 ... 32767) to be multi-
    plied to the file length and added to the user's upload value.
  - You get the informations of the actions (new upload value etc.)
  - Because Faker sends a mail to the user when you add/subtract uploaded
    bytes from him, you can enter a max. 50 characters reason for your
    behaviour.
  - If you entered a negative value to be multiplied to the file length,
    you can immediately delete this file


  Delete prompt (Co-)Sysop function
  -------------

  Normally self documenting, but although some infos :
  If you select more than one file (e.g. you enter "1-10" or a pattern)
  you'll get a request for deletion for each file, except you entered
  "A" for all. After "A" you can say goodbye to all selected files
  Maybe you're fast anough to break with Space or CTRL+C. :-)
  "Q" lets return you to the prompt.


  Changedesc prompt (Co-)Sysop function
  -----------------

  Simply changes the short description of a certain file. If there is
  no downloadcounter, Filelister adds the default (Filelister.Cfg).


  ATTENTION : If you use one of the (co-)sysop functions, changes will
              be done at the lowest state (Files.BBS/directories/
              .Desc-files). Filelister don't recognize these actions !
              (not yet :-) ) Be carefull when using this features in a
              multiline BBS.


  Download menu
  -------------

  Shows you marked files and displays a mark prompt. It has the same
  function as the mark prompt in the list except of setting/unsetting
  the star.

=========================== Starting Filelister ============================

Even FileLister is written in Pascal it can be made resident with
"RESIDENT BBS:Bin/FileLister FORCE"

Filelister knows two parameters : BBSLINE/A/N,CONFIG/K

BBSLine : number of the BBS line
Config  : name of the filelister config file
          (default : BBS:Configs/FileLister.Cfg)

If you're using MEMORYLAMER NO _and_ USEINDEX YES you MUST load the index
manually via ARexx. First you have to start Filelister with the linenumber
as the parameter.
Example :
run bbs:bin/FileLister 0
waitforport FILELISTER.0
rx "address 'FILELISTER.0' 'LOADINDEX bbs:configs/transamiga.cfg'"
                        ^ for Line 0

Do this after Transamiga was started.

============================= ARexx commands ===============================

NEWFILES        : Call newfiles scan

ALLNEWFILES     : Call newfiles scan of all areas

AREAFILES       : Show files of the actual area

ALLFILES        : Show files of all areas

LISTFILES       : Show files and ask if list all or actual area

SEARCHFILES     : Call searchfiles scan

DOWNLOAD        : Call download routine

MARK            : Does the same as in the filelist except the screen
                  outputs !
                  Parameters :
                  - Number (if something was lister before)
                  - Pattern (ATTENTION : no break possible until done)
                  - Name
                  - some of the above separated by komma or space
                  mit der Ausnahme, dass KEINERLEI Bildschirmausgaben
                  Example :
                  RX "ADDRESS 'FILELISTER.0' 'MARK ff901.lha,ff80?.lha'"

RESCAN [No]     : Deallocate memor of the last listet files. If "No" is
                  given a certain area will be read again. When using
                  MemoryLamer NO and PutNotInIndex is empty you MUST
                  call this function after EVERY upload. (see Upload.Trans)

LOADINDEX [Cfg] : Loads ALL Files.BBS' and creates a sorted index in the
                  memory. "Cfg" (=Masterconfig of TA !) should be given
                  because TA doesn't give any informations about the master-
                  config when it's offline. The ENV variable "TA.Index"
                  was created (see FileLister_Tech)

                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                  Removed since V1.3 !!!! If you try to use this command
                  Filelister will tell you how to use ReadFLData :-)

QUITFILELISTER
or QUIT         : remove Filelister from memory and free ARexx port

Example to quit Filelister on line 0 :
RX "ADDRESS 'FILELISTER.0' 'QUITFILELISTER'"

============================================================================

Known problems :
----------------

- some messages (from CLI-Commands) are still german
- FilelisterTech.DOK not yet available in english
- Filelister crashes on low stack (should be at least >25kB)

============================================================================

Do to :
-------

There are many things to do :-) If you're quiet good in german, read the
german documentation for more informations.

============================================================================

Thanks to : (in alphabetical order)
-----------
Daniel Baumgartl  (former beta tester)
Thomas Boerkel    (beta tester)
Jens Depenau      (beta tester)
Michael Doerr     (shocked user :-) )
Martin Eitel      (shocked user :-) )
Bernd Ernesti     (shocked user :-) )
Mario Jung        (former beta tester)
Hartmut Meiering  (beta tester)
Sami Radwan       (beta tester and TA developer)
Yves Rausch       (beta tester)
Mathias Supp      (for TACfl ;-) )
Alexander Wiggert (shocked user :-) )

for tests, suggestions, bug report


have fun

Mathias

P.S. : Sorry for my bad school english but I hope you understood what
       I mean.


============================= Archive contents =============================

Original  Packed Ratio    Date     Time    Name
-------- ------- ----- --------- --------  -------------
  216172   59197 72.6% 09-Nov-94 12:57:34  bin/FileLister
  200604   58086 71.0% 09-Nov-94 12:59:00  bin/FileLister_NC
    8136    5081 37.5% 09-Oct-94 11:27:04  bin/FreeFLData
   15292    9114 40.4% 13-Sep-94 16:15:58  bin/GetFile
   12564    7785 38.0% 09-Nov-94 13:12:38  bin/ReadFLData
   12540    7796 37.8% 09-Nov-94 13:13:12  bin/ReadFLData.020
   12540    7797 37.8% 09-Nov-94 13:15:36  bin/ReadFLData.040
     248     182 26.6% 13-Sep-94 16:15:56  bin/Reset
    4726    1680 64.4% 19-Oct-94 19:36:54  Configs/Deutsch.FL.Lang
    4303    1533 64.3% 19-Oct-94 19:37:22  Configs/English.FL.Lang
   11478    4615 59.7% 19-Oct-94 19:37:32  Configs/FileLister.Cfg.Deutsch
    7935    3124 60.6% 19-Oct-94 19:37:38  Configs/FileLister.Cfg.English
   17623    6341 64.0% 09-Nov-94 13:17:44  docs/FileLister.DOC
   38534   13219 65.6% 09-Nov-94 13:21:24  docs/FileLister.DOK
    3154    1258 60.1% 09-Oct-94 11:27:08  docs/FileListerTech.DOK
    2874    1264 56.0% 09-Nov-94 13:19:32  docs/History.DOC
      61      61  0.0% 13-Sep-94 16:15:54  MakeIndex
     362     213 41.1% 13-Sep-94 16:16:16  Rexx/Allfiles.Trans
     985     397 59.6% 13-Sep-94 16:15:54  Rexx/CheckMem.Rexx
    4325    1330 69.2% 13-Sep-94 16:15:54  Rexx/DeleteMarks.trans
     361     218 39.6% 13-Sep-94 16:16:16  Rexx/Download.Trans
     796     361 54.6% 13-Sep-94 16:15:54  Rexx/Example.trans
    1794     703 60.8% 13-Sep-94 16:15:54  Rexx/Logoff.trans
     361     215 40.4% 13-Sep-94 16:16:16  Rexx/Newfiles.Trans
     367     219 40.3% 13-Sep-94 16:16:16  Rexx/Searchfiles.Trans
     452     288 36.2% 13-Sep-94 16:15:54  Rexx/Upload.Trans
   30454   30454  0.0% 08-Nov-94 22:39:52  TACfl157.lha
    3302    1462 55.7% 13-Sep-94 16:15:54  Text/FL.Help
    5564    2387 57.0% 13-Sep-94 16:15:54  Text/FL.Help.255
    5859    2451 58.1% 13-Sep-94 16:15:54  Text/FL.Help.255.ANSI
    5564    2387 57.0% 13-Sep-94 16:15:54  Text/FL.Help.255.Deutsch
    5859    2451 58.1% 13-Sep-94 16:15:54  Text/FL.Help.255.Deutsch.ANSI
    4633    2043 55.9% 13-Sep-94 16:15:54  Text/FL.Help.255.English
    4928    2102 57.3% 13-Sep-94 16:15:54  Text/FL.Help.255.English.ANSI
    3493    1510 56.7% 13-Sep-94 16:15:56  Text/FL.Help.ANSI
    3302    1462 55.7% 13-Sep-94 16:15:54  Text/FL.Help.Deutsch
    3493    1510 56.7% 13-Sep-94 16:15:54  Text/FL.Help.Deutsch.ANSI
    2716    1273 53.1% 13-Sep-94 16:15:54  Text/FL.Help.English
    2905    1316 54.6% 13-Sep-94 16:15:54  Text/FL.Help.English.ANSI
-------- ------- ----- --------- --------
  660659  244885 62.9% 10-Nov-94 03:18:54   39 files
