Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) (02/03/90)
Submitted-by: Eddy Carroll <ECARROLL%vax1.tcd.ie@CUNYVM.CUNY.EDU>
Posting-number: Volume 90, Issue 043
Archive-name: util/bbsindex-1.0/part03
#!/bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 3 (of 3)."
# Contents: bbsindex.doc
# Wrapped by tadguy@xanth on Fri Feb 2 14:54:43 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'bbsindex.doc' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'bbsindex.doc'\"
else
echo shar: Extracting \"'bbsindex.doc'\" \(36686 characters\)
sed "s/^X//" >'bbsindex.doc' <<'END_OF_FILE'
X
X BBSINDEX -- generates BBS-PC! file listings
X
X (C) Copyright Eddy Carroll, December 1989
X
X
XINTRODUCTION
X
X BBSindex is a utility for use with the BBS-PC! bulletin board package.
X It reads in the UDHEAD.DAT file database and allows you to list its
X contents in a wide variety of ways. It has its own script language
X which allows great control over the output produced.
X
X BBSindex can perform the following operations on the file database:
X
X - Sort the files into order by Name, Size, Date or any other field
X - Select files matching specified criteria
X - Print file lists, using a user specified format string
X - Determine which files are currently present in the download dirs
X - List files that are in the download dirs but not the database
X
X The script language allows you to combine these to perform tasks such
X as the following:
X
X - Produce file lists similar to those produced with the BBS-PC!
X catalogue command, but sorted into any order. For example, BBS-PC!
X won't let you list all the files in a given directory sorted into
X alphabetical order. BBSindex will. With BBSindex, such lists can
X be generated automatically and regularly (e.g. daily), and made
X available to the BBS users through a menu item. The same file can
X be locally uploaded into the file section for users to download.
X
X - Produce a list of files on and off line, just like BBS-PC!'s ChkFile
X utility. In addition, BBSindex can spot files which are online but
X which have a filesize different to that in the file catalogue. Such
X files are most likely corrupt.
X
X - Build AmigaDOS batch files to perform maintenance tasks, such as
X moving all the files in a particular section from whatever disk
X directories they are currently located in into a new directory, or
X moving all the files which are in the BBS-PC! download directories
X but are NOT in the file catalogue to somewhere else.
X
X Without further ado, let's move on to the program itself.
X
X
XUSAGE
X
X The command template for bbsindex looks like this:
X
X bbsindex {options} scriptfile ...
X
X You must always specify at least one script file to be executed. If
X BBSindex can't find the file you asked for, it will look for a
X similarly named one with a .SCR suffix. If you specify several files,
X BBSindex will execute them in sequence as if they were a single
X continuous file. Any settings, open files etc. are maintained across
X multiple script files. This can be both a help and a hinderance; if
X you are careful not to make scripts to reliant on default settings,
X you shouldn't have any problems.
X
X BBSindex allows you to change some of its default settings via command
X line options. These can all be changed via script commands as well,
X but it is sometimes convenient to be able to alter them independently of
X the script. The available options are listed below. Note that for those
X options that take a parameter, there must be a space between the option
X letter and the parameter.
X
X -c filename
X This option allows you to specify the name of the configuration
X file BBSindex should read to locate BBS-PC!'s download directories.
X By default, it looks for the file CFGINFO.DAT in the current
X directory. If you are running BBSindex from a directory other than
X BBS-PC's home directory, you may need to use this option.
X
X -d filename
X This option lets you specify the name of the file in which BBS-PC!
X stores all the information about its file database. By default,
X BBSindex will look for the file UDHEAD.DAT in the current directory.
X
X -f "string"
X This option lets you change the format string used when outputting
X file listings. See the discussion of the FORMAT command for a full
X explanation of what to use here.
X
X -h
X This prints out a brief help screen listing the command line
X options.
X
X -n
X This option stops BBSindex from putting up AmigaDOS requesters
X (such as "Please insert volume FOO: in any drive"). It can be
X useful if some of the BBS download directories are not currently
X mounted, and BBSindex tries to access them.
X
X -s
X This option causes any OPEN or APPEND commands to be ignored,
X resulting in all output going to the screen. This is useful for
X seeing the output from a script that normally goes to a disk file.
X
X -t
X This option enables trace mode, which is useful for debugging large
X scripts. Before each command in the script is executed, it is
X printed to the screen. See the discussion of the TRACE command for
X more information on the output produced, and its usefulness.
X
X An alternative method of running BBSindex is provided, to make it
X possible to setup a menu option within BBS-PC! which will invoke
X BBSindex automatically. This can be done using menu function 111
X (Run External Program). However, BBS-PC! doesn't allow parameters to be
X passed to programs started in this manner. To get around this, BBSindex
X can be renamed to BBscript. When it is run as BBscript, it ignores any
X command line parameters and instead looks for a script file called
X BBSindex.scr in the current directory. This is particularly useful if
X you are running the system remotely, and don't have easy access to the
X local keyboard.
X
X There are a few things to look out for. You should run BBSindex in the
X same directory as BBS-PC!'s CFGINFO.DAT and UDHEAD.DAT files (unless you
X override these defaults with -c and -d, or via the appropriate script
X commands). In addition, if you want BBSindex to know which files are
X online and valid, you need to give the CHECKFILES command in the script.
X This deliberate step is needed because checking all the files can take
X some time on a large system, and is not always required. You should also
X ensure that your CLI stack size is set to around 10000 or so. If
X BBSindex runs out of stack, it will tell you so; restart it with a
X larger stack.
X
X BBSindex needs a lot of memory to run -- around 300K altogether when
X processing a 200K database. This is because the entire database file is
X kept in memory while processing. Of course, people with a 200K file
X database are likely to have extra memory as well, so this shouldn't be
X a huge problem, though it may prevent you from running BBSindex from
X within BBS-PC!. In any case, BBSindex doesn't crash when it runs out
X of memory, it prints an error message, frees up all its resources and
X exits cleanly. It does likewise if you press CTRL-C, which can be used
X to abort at almost any time. (Sorting can't be interrupted, because the
X overhead of checking for CTRL-C would make it significantly slower.
X Sorts are pretty quick anyway, since they are done completely in memory).
X
X By now, you're probably wondering what actually goes into the script
X file that BBSindex interprets. The next section describes this in
X detail. You can also look at the example script files which accompany
X BBSindex for a few ideas. Try running them with the -s option to make
X them send output to the screen.
X
X
XSCRIPT FILES
X
X A script file is simply a standard text file which contains a list
X of BBSindex commands to be executed. It is similar to a standard
X AmigaDOS batch file, though quite a bit more flexible in its layout.
X
X You normally put one command on each line (blank lines are fine of
X course), but you can have multiple commands on a single line if you
X seperate them with a semicolon (`;'). Commands are case insensitive
X (everything is converted to uppercase internally). You can build up
X extra long command lines by ending each physical line with `\'. The
X following newline will then be ignored, and the command continued
X on the next line. Anything after a `#' to the end of a line is
X treated as a comment.
X
X Many commands take parameters. Multiple parameters are seperated
X by commas or spaces. If you want to include spaces or lowercase
X characters in a parameter (usually the case), you need to surround it
X with quotes. You can use either single or double quotes; if you use
X single quotes, the string inside can contain double quotes and vice
X versa.
X
X BBSindex allows you to define constants, which can then be used later
X on as part of a command. It can be useful to assign items subject to
X change (such as output filenames) to constants at the start of the
X script file, and to use these constants throughout the rest of the file.
X Changing a filename then becomes a simple matter of altering the
X constant definition, rather than having to hunt through the script file.
X
X You define a constant by saying
X
X name = value
X
X where name is any identifier up to 20 characters, and value is a
X single string. If value is surrounded by quotes, they are stripped off,
X but the case of the text inside is retained. To use the constant, you
X just say $(name) anywhere in a command, even within quotes. Any `$'
X character which isn't immediately followed by an open parenthesis is
X left unchanged.
X
X For example, you might say at the start of a script
X
X Filename = "Sys:BBS/Amiga.Files"
X
X and then later on, you could use it to open a file:
X
X OPEN $(Filename)
X
X As with everything else, constant names are case insensitive.
X
X
XSCRIPT COMMANDS
X
X This section contains a list of the commands recognised by BBSindex. If
X you make an error in a script, you'll get an error message listing the
X name of the script file, the line the error occurred on, and a brief
X explanatory message.
X
X To start with, here's a brief synopsis of all the commands. Below this,
X each command is described in detail.
X
X Command Name Description
X ~~~~~~~~~~~~ ~~~~~~~~~~~
X APPEND "name" Append future output to the end of file "name"
X CHECKFILES Scan BBS-PC!'s file directories
X CLOSE Close current output file, reverting to screen
X CONFIG "name" Specify full pathname to access the CFGINFO.DAT file
X DATABASE "name" Specify full pathname to access the UDHEAD.DAT file
X ECHO "string" Output "string" to the current output file
X EXEC "command" Execute an AmigaDOS command
X FOREIGN List all the files not in BBS-PC's file catalogue
X FORMAT "string" Specify the format to print file listings in
X IGNORE file ... Specify files to ignore when doing CHECKFILES
X LIST List all the files matching the SELECT criteria
X MACRO name/ENDM Define a new macro called name
X MSG "string" Display "string" on the screen
X NOREQUEST Stop AmigaDOS putting up error requesters
X OPEN "name" Direct future output to file "name"
X RESET Reset the file counters used by SCAN and LIST
X SCAN Update counters as LIST, but don't print any output
X SELECT criteria Specify criteria to use when listing files
X SORT index ... Sort database under the specified fields
X TRACE [ON | OFF] Turn on or off trace mode
X
X
XAPPEND Filename
X
X Opens an existing file as the current output file. Any output from
X BBSindex will be appended to the end of this file, until it is closed.
X When no file is open, output goes to the screen. If a file is already
X open when this command is given, then it will be closed before the
X new file is opened.
X
X
XCHECKFILES [dir1, dir2, ...]
X
X Causes the BBS-PC! file directories on the local disk to be scanned,
X so that it can determine which files are online and which are not. It
X also compares the size of each file in the catalogue with its size on
X disk, and if the two are different, sets the invalid flag for that file.
X This is a reasonable indication that the file may be corrupt.
X
X CHECKFILES need only be done if you want to use the %f, %i, %p or %v
X options of FORMAT, or you want to use the FOREIGN command. A single
X CHECKFILES checks all the files, so it need only be done once. Future
X occurances of CHECKFILES are ignored.
X
X By default, BBSindex looks in the CFGINFO.DAT file to find out the
X location of the BBS-PC! file directories. CFGINFO.DAT should be in the
X current directory, unless the -c option has been given to specify a
X different location for it.
X
X If you give a list of directories to CHECKFILES, then these directories
X are scanned instead of those in CFGINFO.DAT, and the latter doesn't
X need to be accessed.
X
X
XCLOSE
X
X Closes the current file (if any) for output. Any future output gets
X sent to the screen. It is not necessary to specifically close files
X when you are finished with them (unless you really do want the output
X to start being displayed on the screen) since BBSindex will close
X files automatically when it exits.
X
X
XCONFIG "filename"
X
X Tells BBSindex where to find the BBS-PC! configuration file, which
X contains the directory paths for the upload/download file directories.
X This file is only accessed if you give a CHECKFILES command and don't
X specify any directories; if you don't intend doing a CHECKFILES, you
X don't need to worry about BBSindex being able to find the configuration
X file. By default, BBSindex looks for the file CFGINFO.DAT in the
X current directory.
X
X Be careful to specify the full filename of the configuration file,
X not just the directory name.
X
X
XDATABASE "filename"
X
X Tells BBSindex where to find the BBS-PC! file database. The commands
X CHECKFILES, SORT, LIST and SCAN will all cause the file database to be
X read in. The DATABASE command can be given at any stage before this.
X Afterwards, it has no effect. If you don't give a DATABASE command,
X then the file UDHEAD.DAT in the current directory is used.
X
X
XECHO "string" [NOLINE]
X
X Outputs "string" to the current file, or if no output file is open, to
X the screen. "string" can contain any of the escape characters (such
X as `\n') listed under FORMAT. It can also contain any of the following
X special symbols:
X
X %b The number of bytes used by files printed by the last LIST
X %k The number of Kilobytes used by files printed by last LIST
X %m The number of Megabytes used by files printed by last LIST
X %n The number of files printed by the last LIST command
X %d Today's day (Monday for example)
X %t Today's time
X %ux Creates underline, see FORMAT for more details
X %w Today's date (01-Jan-90 for example)
X %{...} Formats substring, see FORMAT for more details
X
X %B, %K, %M and %N are also available; these are similar to %b, %k,
X %m and %n, but they are the sums for all the files printed since the
X last RESET command, rather than the last LIST command. This allows you
X to keep a running count of the total number of files printed in the
X system.
X
X By default, a newline is automatically output after the string. This
X can be suppressed by including the NOLINE parameter.
X
X
XEXEC "command"
X
X Executes the specified AmigaDOS command. The output from the command is
X directed into the current output file. If you don't want this to happen,
X you can specify redirection to NIL: as part of the command string. For
X example
X
X EXEC "makedir >nil: ram:t"
X
X will try and make a directory in RAM:, and if it fails, you won't see
X anything. The EXEC command can be particularly useful if you've just
X used the FORMAT command in conjunction with LIST to generate an AmigaDOS
X script file -- you can then do
X
X EXEC "Execute Scriptfile"
X
X and the script file will be executed on the spot. If you do this,
X remember to close the script file you've just generated before you try
X to execute it.
X
X
XFOREIGN
X
X Outputs a list of all the files which are present in BBS-PC!'s download
X directories, but are not present in the file catalogue. The output is as
X specified using FORMAT, but only some of the options are applicable. In
X particular, the following are valid:
X
X %d Disk filename
X %c Descriptive text saying what directory the file is in
X %f Full disk filename
X %n The disk filename again
X %p Disk pathname
X %x File size in bytes
X %k File size in K
X %w Date file was last modified
X
X These have been chosen so that the default output format will list the
X files in a sensible fashion.
X
X This command can be useful if you want to track down all files which
X are not directly related to the bulletin board. For example, the
X following script generates an AmigaDOS script to move all the non-BBS
X files into a common directory called Random on DH1:
X
X #
X # Script to move all files not related to the BBS-PC! file
X # catalogue out of the download directories.
X #
X CHECKFILES # Check all files
X ECHO ";\n; AmigaDOS script to cleanup BBS file directories\n;"
X FORMAT "copy %f to dh1:random\ndelete %f\n"
X OPEN ram:execute.script
X FOREIGN
X CLOSE
X
X When you run this, the output is a script in RAM: which you can then
X execute using the AmigaDOS Execute command. Alternatively, you could
X add the command EXEC "Execute RAM:execute.script" to the end of the
X above script, and then the script itself would move the files.
X
X
XFORMAT "string" [NOLINE]
X
X Determines the format of each line printed by the LIST command. The
X format string is very similar to that used by C's printf() function. It
X contains normal characters, plus any of the following special symbols:
X
X %a Number of times file has been accessed
X %b{} File type {Binary,Text}
X %c Comment associated with file
X %d Filename the file is stored under on disk
X %f Full pathname of the disk copy of the file
X %i{} File status {Online,Offline}
X %k File size in K
X %l{} File origin {Local,Remote}
X %n Filename as it appears in the file database
X %o Uploader's name (owner)
X %p Path of the directory containing the file on disk
X %r Directory number
X %s Section name
X %ux Produce underline using x as underline char
X %v{} File contents {Valid,Invalid}
X %w Upload date (when)
X %x File size
X %y Number of the disk directory the file is stored in
X %{...} Format substring
X
X A number may optionally be placed between `%' and the appropriate
X character. This will cause the output value of the symbol to be padded
X or truncated to that width. By default, the output is aligned to the
X left but if the number is prefixed with `-', output is aligned to the
X right.
X
X Symbols followed by {} are boolean values, which can be either TRUE or
X FALSE. When such a symbol appears in the format string, it should be
X immediately followed by two substrings enclosed in { and } and separated
X by a comma. If its value is TRUE, then the first substring is used; else,
X the second substring is used. For example, if you want to make a list of
X files, and say whether each one is valid or invalid, you might use:
X
X "%20n%v{,(Invalid)}"
X
X which would print each filename, and if it was invalid, would follow it
X with the string "(Invalid)", starting in Column 20. If the file was
X valid, only the filename would be printed.
X
X A special option is `%{', which allows you to format a substring within
X the main string. This can be of value if you want to have several items,
X one after the other with no gaps between each, but with the total width
X of all the items not exceeding a set width. What occurs inside the
X braces after `%' can be any valid format string, which could itself
X contain `%{}'s (though it's hard to think of a situation where you would
X need to do this). So, "%40{%s,%r,%o}" would print the section, directory
X number and owner name one after the other, with the total being padded
X or truncated to 40 characters.
X
X The other unusual option is `%u', which reproduces the character
X following it a number of times equal to the length of the last string
X output using FORMAT. If `%{...}' has just been used, then the length of
X the substring is used instead. This is handy if you want to underline
X something but are not sure how long it is (or you just want to save some
X typing). For example, to underline a filename, you could use:
X
X FORMAT "%{%n}\n%u-"
X
X This outputs the filename as a substring (thus remembering the length),
X and a newline, and then underlines the filename using ------. When using
X `%u', the "length" number that can appear between the `%' and the format
X character has a slightly different meaning. `%6u' outputs an extra 6
X underline characters, and `%-6u' outputs 6 fewer characters.
X
X The `%i' and `%v' options only make sense if the CHECKFILES command has
X been given earlier. They indicate whether or not the file is online and
X whether it is valid. A file is online if it can be found in any of
X BBS-PC!'s file directories. It is valid if its filesize on disk matches
X its filesize in the file catalogue. If it doesn't, then there is a good
X chance it has been corrupted.
X
X The `%y' option gives the number of the disk directory in which the
X file is stored. This is the position of the disk directory as it
X appears in BBS-PC!'s CFGINFO.DAT file. In particular, the "new uploads"
X directory is numbered 0. (Note that this is different to the directory 0
X in which all uploads are located within BBS-PC!).
X
X The following escape sequences can also appear in the format string:
X
X \n End of line
X \e Escape
X \E CSI (0x9b)
X \t Tab
X \nnn Octal number with the appropriate value
X
X Any other characters after a `\' are treated as normal. This can be used
X to escape certain characters that have special meaning, such as `\'
X itself and `%'. `\{' and `\}' do not work within `{...}' (for boolean
X values and substrings) unfortunately. If you are giving the format
X string from the command line and you are using a DOS shell other than
X the CLI, you might need to type `\\' in order to get the shell to pass a
X single `\' to BBSindex. Note that while `\E' can be useful for
X generating ANSI colour codes (as in `\E33m' to change the colour to
X colour 3 for example), BBS-PC! does not recognise `\E', even though
X AmigaDOS does. Hence, for public BBS files, you are better off using
X `\e[33m' which gives the same effect. For more details on ANSI escape
X sequences, see the BBS-PC! or AmigaDOS manuals.
X
X By default, a newline is automatically added to the format string. This
X can be overridden by including the NOLINE parameter after the string.
X
X The default output format string is
X
X FORMAT "%15n %w %-6x-%b{B,T} %c"
X
X This produces a file listing which is identical to the listing BBS-PC!
X gives when you ask for a file catalogue.
X
X
XIGNORE Filename Filename ...
X
X Specifies a list of files to ignore when CHECKFILES is executed. If you
X have some files in the file catalogue which are updated by external
X programs, their filesizes are likely to differ from the filesizes
X recorded in the BBS-PC! file catalogue. By listing such files here, you
X can tell CHECKFILES that it is okay for the filesizes to be different
X and they will then be marked as valid (and hence won't appear in any
X operations you do on invalid files).
X
X You can use multiple IGNORE commands if you have a lot of files falling
X into this category; however, only IGNORE commands which occur before
X CHECKFILES have any effect.
X
X
XLIST
X
X Scans through the the file catalogue (as sorted using SORT) and outputs
X the list of files which match the criteria specified with SELECT,
X according to the format string defined using FORMAT. Output is sent to
X the current file (opened with OPEN) or if none exists, to the screen.
X
X In addition, some internal counters are updated. These counters record
X the number of files listed and the total number of bytes occupied by
X those files. A seperate set of counters record the total number of files
X listed since the start of the script (or the last RESET command). This
X is useful for building cumulative totals. See the ECHO command for more
X details.
X
X
XMACRO name
X command 1
X command 2
X ...
XENDM
X
X Defines a macro command. When this command is used later on, it gets
X replaced by the list of commands between the MACRO and ENDM markers.
X The macro text can contain the special symbols $1 to $9 which will
X expand to the parameters given to the command. For example, a macro to
X sort and list the files in a specified directory in a given section
X might look like this:
X
X MACRO Listdir # Section, Directory, Descriptive Text
X MSG "$2, " noline
X ECHO "%{$2. $3}\n%u-" # Display header, and underline it
X SELECT Section = $1 AND Directory = $2
X LIST
X ENDM
X
X To use this, you would then give a command like:
X
X Listdir 1, 4, "General Files"
X
X to list the files in Directory 4 of Section 1. Note that the comma is
X optional (it gets turned into a space internally anyway) but can make
X things more readable. Also note that any text surrounded by quotes has
X the quotes removed (but the text case retained) when it is substituted.
X This is to allow $ substitution to occur within strings in the macro
X without getting lots of extra quotes everywhere. If you need to get a $
X itself inside the macro, you can use `$$'. In fact, `$' followed by any
X non-numeric character will simply return that character.
X
X Macros are a very powerful feature; used sensibly, they can reduce the
X size of your script files by a significant amount, allowing you to
X express a complicated sequence of commands in only a single line. If you
X have many command sequences which are very similar, it is well worth
X taking the time to learn to use macros effectively.
X
X
XMSG "string" [NOLINE]
X
X Outputs "string" just like the ECHO command, except that the string
X always goes to the screen, even when an output file is open. This
X provides a useful way to print informative messages saying what is
X happening, while processing a big script.
X
X
XNOREQUEST
X
X Stops AmigaDOS from putting up requesters when it can't find a disk
X volume, or when a disk error occurs. This can be useful if you are
X running BBSindex in a batch environment, where you most likely won't be
X around to click Retry or Cancel in the requester. It is also useful if
X you are running BBSindex remotely (from within BBS-PC! as a menu option).
X
X
XOPEN Filename
X
X Opens a new file for output. Any output from BBSindex will be directed
X to this file until it is closed. When no file is open, output goes to
X the screen. If a file is already open when this command is given, then
X it will be closed before the new file is opened.
X
X
XRESET
X
X Resets the counters used by the %B, %K, %M and %N options of the ECHO
X command. See the descriptions of SCAN and ECHO for more details.
X
X
XSCAN
X
X Scans the file database, counting files that match the SELECT criteria
X just like LIST. Unlike LIST, it doesn't produce any output. It does
X however update the counters which keep track of the number of files
X printed. This is very useful if you want to produce a file listing which
X displays the number of files in the system at the start of the file,
X followed by the files themselves. You can do that as follows:
X
X SCAN
X ECHO "Amiga BBS File Catalogue, a total of %n files are online\n\n"
X LIST
X
X SCAN counts the files so that %n will be the correct number in the ECHO
X command, and then LIST actually lists them. Of course, if you wanted to
X print the number of files at the bottom of the list, the LIST command
X by itself would be adequate, and you would not need to use SCAN.
X
X
XSELECT expression
X
X Selects which files should be printed on the screen when the LIST
X command is given. The expression you give can include any of the
X keywords recognised by the SORT command, plus the boolean operators
X AND, OR and NOT, and the special keyword ALL (which is always true). In
X addition, the keywords Text, Remote, Offline and Invalid are recognised
X as opposites to Binary, Local, Online and Valid.
X
X The following arithmetic operators are supported:
X
X = <> > < >= <=
X
X These can be combined together with strings and numbers and grouped
X with parenthesis to produce a full expression. During LIST, any files
X which match the expression are listed. For example, to select all the
X binary files in Section 3, and Directories 4-10, you could use
X
X SELECT Section = 3 AND Directory >= 4 AND Directory <= 10 AND Binary
X
X Note that the eight boolean fields (Binary, Text, Online, Offline,
X Local, Remote, Valid and Invalid) don't need to be tested against
X anything, since they already evaulate to a boolean result. For example,
X Local will evaluate to TRUE if the file being checked was uploaded
X locally.
X
X For date comparisons, recent dates are treated as being "larger"
X than older dates. For example, to list all files uploaded during
X December of 1989, you could say
X
X SELECT Date >= "01-Dec-89" AND Date <= "31-Dec-89"
X
X String comparisons are case insensitive, and standard wildcards are
X supported. A `?' in a string will match any single character, and a `*'
X will match any number of characters (including none). For example
X
X SELECT Name = "*.ZOO" AND Section = 3
X
X selects all the zoo files in section 3. The pattern "?????" would match
X all names five characters long. If you wanted to select all the files
X which were archived using a common file archiver, you might use:
X
X SELECT Name = "*.ZOO" OR Name = "*.ARC" OR Name = "*.LZH"
X
X If you want to use <, >, <= and >= with wildcard matching, you need to
X be careful. Bear in mind that < and > exclude exact matches, whereas
X <= and >= include exact matches. As an example, let's see use a file
X called "FOO". The comparison "FOO" < "F*" is not particularly well
X defined, but will probably be FALSE. On the other hand, "FOO" <= "F*"
X will always evaluate to true, since the `=' portion is true.
X
X Let's finish off with some more examples of selections. To select all
X the text files in section 3, you could use:
X
X SELECT Section = F and Text
X
X Now, let's select all the binary files in section 3, and also all the
X text files in section 3 that end with .ZOO or .ARC (such a requirement
X might come about because some versions of BBS-PC! have a bug which
X makes ZMODEM uploads look like Text files):
X
X SELECT Section = 3 and (Binary or Name = "*.ZOO" or Name = "*.ARC")
X
X As a final note, be aware that the more complicated the expression, the
X longer it will take to do a LIST (or SCAN). You can help speed things
X up by arranging that the condition most likely to be FALSE is at the
X front of the expression. For example, use
X
X SELECT Size > 102400 and Name <> *.ZOO
X
X when selecting all non-ZOO files in the system greater than 100K, rather
X than the other way around.
X
X
XSORT index [, index, index ...]
X
X Sorts the file list into an order determined by the list of indices
X given. When output is being generated, it is sorted according to the
X indices specified here. The following indices are valid:
X
X Access Number of times a file has been accessed (number)
X Binary Whether the file is binary or text (boolean)
X Comment File comment (string)
X Date Upload date (date)
X Directory Directory number (number)
X DiskDirNum Number of the file directory on disk (number)
X DiskName Name of the file on disk (string)
X KSize File size in K (number)
X Local Whether the file was uploaded locally (boolean)
X Name File catalogue name (String)
X Online Whether the file is online (boolean)
X Owner Uploader's name (String)
X Pathname Pathname of disk file (String)
X Section Section number (number)
X Size File size in bytes (number)
X Valid Whether the filesize is valid (boolean)
X
X Each index can optionally by followed by a `+' or `-', to indicate the
X direction of sorting. The default (+) is to sort in ascending order.
X Descending order is selected using `-'. As many indices as are listed
X are considered significant while sorting.
X
X The default sorting order is Name which sorts files by name. An
X alternative index might be Section, Directory, Name which would sort
X the files into seperate sections, then into seperate directories within
X each section, and finally into alphabetical order within each directory.
X
X You can sort files into chronological order by using Date as the sort
X key, or into reverse chronological order (i.e. newest files first) by
X using Date- as the key.
X
X Note that the CHECKFILES command sorts the database into alphabetical
X order by disk name before it starts scanning the disk. If you have given
X a SORT command before this, then CHECKFILES will sort the files a second
X time back into the order you specified. You can avoid the time overhead
X this involves (which is not actually that much) by not using SORT until
X after CHECKFILES.
X
X
XTRACE [ON | OFF]
X
X Turns on or off trace mode. When tracing is turned on, all the commands
X thereafter will be output to the screen before they are executed. This
X can be useful for tracking down a problem with a script. In particular,
X the commands which make up a macro will be printed individually each
X time the macro is executed, with $1 to $9 replaced by the actual
X parameters. Constants will also be replaced by their current value.
X Tracing can be turned on globally by specifying the -t option on the
X command line; TRACE ON and TRACE OFF are most useful when you have a
X large script file and you don't want to have to trace through all of it.
X
X
XHISTORY
X
X V0.99 Initial beta release. Several bugs, and a few inconsistencies.
X
X - Vigilant beta testers proved that nothing works first time :-)
X - Kudos to Lattice's catch.o for making life a bit more bearable
X (and also to CodeProbe of course).
X
X V1.0 First official release.
X
X - Improved memory allocator to handle small requests by
X allocating a large chunk and working from that. This should
X help decrease memory fragmentation.
X - Added support for constants
X - Added IGNORE keyword to allow "dynamic" files to avoid being
X marked as invalid.
X - Reworked the documentation a bit, so that it wasn't quite as
X disorganised.
X - Toyed with the idea of allowing scripts to be specified on
X the command line (like sed) but decided wasn't worth the
X effort for now.
X
X
XDISTRIBUTION
X
X BBSindex may be freely distributed for non-commercial purposes, as long
X as no profit is made from doing so. It may be distributed with
X commercial software only with the express written agreement of the
X author. Specific permission is granted to Fred Fish to include BBSindex
X in his fine public domain library.
X
X
XAUTHOR
X
X Please direct any praise, criticism, general suggestions or
X large sums of money to:
X
X Eddy Carroll
X ecarroll@vax1.tcd.ie (Trinity College, Dublin, Ireland)
X
X Also, please feel welcome to pay a visit to Infomatique BBS, of
X which I am a co-sysop:
X
X Phone: +353-1-302970 (Ireland)
X Speeds: V21/22bis/23
X Times: 24 hours/day
X
X 110 Megs of online storage, large Amiga and IBM file database.
X Membership is free. If you call, mention where you got the number.
END_OF_FILE
if test 36686 -ne `wc -c <'bbsindex.doc'`; then
echo shar: \"'bbsindex.doc'\" unpacked with wrong size!
fi
# end of 'bbsindex.doc'
fi
echo shar: End of archive 3 \(of 3\).
cp /dev/null ark3isdone
MISSING=""
for I in 1 2 3 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 3 archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0
--
Submissions to comp.sources.amiga and comp.binaries.amiga should be sent to:
amiga@cs.odu.edu
or amiga@xanth.cs.odu.edu ( obsolescent mailers may need this address )
or ...!uunet!xanth!amiga ( very obsolescent mailers need this address )
Comments, questions, and suggestions s should be addressed to ``amiga-request''
(only use ``amiga'' for submissions) at the above addresses.