To install the rel programs from the top level
directory:
the rel programs are distributed as a tape archive,
rel.tar.gz, and compressed with the GNU gzip program, which
is available via anonymous ftp from ftp://prep.ai.mit.edu/pub/gnu/:
gnunzip rel.tar.gz, to uncompress
the tape archive
tar xvf rel.tar, to install the
tape archive
cd to the top of the rel source directory, rel/:
make, to make the
executables
make install, to install the
executables
make installman, to install the
manual pages
To install the rel programs from a directory in the
source tree:
cd to the rel directory
If necessary, alter the comments in the Makefile to
chose an appropriate compiler. The System V, BSD compiler
option should work, but using the GNU gcc compiler option
will be beneficial if using gcc as a development
system.
The Makefile define, FSE_CONTINUE, controls the
program behavior during the file system exceptions, error
opening file, and error opening directory-if defined, the
program will continue under these exceptions, and if not
defined, the program will shutdown under these
exceptions. If the program is running as a server in a
client server architecture, then it is advisable that
FSE_CONTINUE should not be defined, otherwise, it is
advisable that it should.
Note: some compilers may require a -D_POSIX_SOURCE
to be added to CFLAGS in the Makefile (like NextStep, for
example.)
Some older ANSI C compilers do not have a type for
ssize_t, and if this is the case, it should be typedef'ed
as an int in rel.h by removing the #ifndef __STDC__
compiler directive/construct around the ssize_t typedef
(like the older GNU gcc compilers, for example.)
If there are any problems, start by browsing
through the "Porting issues:" section, below.
make
if all goes well, test rel by:
./rel stdio /usr/include
which should list all of the files in the /usr/include
directory that contain "stdio," in order of the files that
contain the most matches-presumably, stdio.h has the most
instances
install the rel executable someplace in the
executable path
install either rel.1 or rel.catman in one of the man
directories
(rel.catman was produced by nroff -man rel.1 > rel.catman)
the sources were maintained with rcs/cvs-the rcs id's
in the sources are valid and can be re-established for
formal maintenence procedures, if desired; see "man rcs" for
details
the file "QA.METRICS"
explains the remedial quality process the sources were
subjected too, (primarily, static analysis, with McCabe and
Halstead metrics provided.) The process is inadequate for
commercial or mercantile applications, but could serve as a
starting reference for a more robust process, if desired,
that should begin with a "code walk through."
The source was written with extensibility as an issue. To
alter character transliterations, see uppercase.c for
details. For enhancements to phrase searching and hyphenation
suggestions, see translit.c.
The program is capable of running as a wide area,
distributed, full text information retrieval system. A
possible scenario would be to distribute a large database in
many systems that are internetworked together, presumably via
the Unix inet facility, with each system running a copy of the
program. Queries would be submitted to the systems, and the
systems would return individual records containing the count
of matches to the query, and the file name containing the
matches, perhaps with the machine name, in such a manner that
the records could be sorted on the "count field," and a
network wide "browser" could be used to view the documents, or
a script could be made to use the "r suite" to transfer the
documents into the local machine. Obviously, the queries would
be run in parallel on the machines in the network for enhanced
performance-concurrency would not be an issue. See the
function, main(), in rel.c for suggestions.
The source documentation begins in rel.c, and is quite
verbose-my apologies. See rel.c for the particulars, and some
extensibility suggestions.
Porting issues:
the program uses POSIX compliant file/directory
handling functions. The structures, types, and functions
used for file/directory handling are:
in searchfile.c:
ssize_t count; /* count of bytes read from the file */
struct flock lockfile; /* file locking structure */
struct stat buf; /* structure to obtain file size */
open (filename, O_RDONLY, S_IREAD)
fcntl (infile, F_SETLKW, &lockfile)
fstat (infile, &buf)
read (infile, (char *) page, count)
(close (infile) != 0)
in searchpath.c:
DIR *dirp; /* reference to the directory for a recursion */
struct dirent *dire; /* reference to directory path */
opendir (name)
readdir (directory->dirp)
closedir (directory->dirp
error messages for system level interrupts are
included in message.c and message.h. This file allows a
significant level of system environment customization. See
message.c for details.
The installation directories can be changed by editing the
EXECUTABLES and MANPAGES definitions in the top level
Makefile. There is additional information in the README and
INSTALL files in each directory of the source tree.
A license is hereby granted to reproduce this software
source code and to create executable versions from this source
code for personal, non-commercial use. The copyright notice
included with the software must be maintained in all copies
produced.
THIS PROGRAM IS PROVIDED "AS IS". THE AUTHOR PROVIDES NO
WARRANTIES WHATSOEVER, EXPRESSED OR IMPLIED, INCLUDING
WARRANTIES OF MERCHANTABILITY, TITLE, OR FITNESS FOR ANY
PARTICULAR PURPOSE. THE AUTHOR DOES NOT WARRANT THAT USE OF
THIS PROGRAM DOES NOT INFRINGE THE INTELLECTUAL PROPERTY
RIGHTS OF ANY THIRD PARTY IN ANY COUNTRY.
So there.
Copyright © 1994-2011, John Conover, All Rights
Reserved.
Comments and/or bug reports should be addressed to:
- john@email.johncon.com
- http://www.johncon.com/
- http://www.johncon.com/ntropix/
- http://www.johncon.com/ndustrix/
- http://www.johncon.com/nformatix/
- http://www.johncon.com/ndex/
- John Conover
- john@email.johncon.com
- January 6, 2004
|