NT4/private/sdktools/symref
2020-09-30 17:12:29 +02:00
..
data First commit 2020-09-30 17:12:29 +02:00
inc First commit 2020-09-30 17:12:29 +02:00
srdaem First commit 2020-09-30 17:12:29 +02:00
srmep First commit 2020-09-30 17:12:29 +02:00
symref First commit 2020-09-30 17:12:29 +02:00
dirs First commit 2020-09-30 17:12:29 +02:00
readme First commit 2020-09-30 17:12:29 +02:00
rel.cmd First commit 2020-09-30 17:12:29 +02:00

SYMREF - symbol database maintainer
-----------------------------------

SYMREF (and the remainder of the package) provide a mechanism where a
database of symbols in a subdirectory tree are kept as up-to-date as
possible and allow fast retieval of the symbols through a Z/MEP
extension as well as a command line program.

The components are:

    SRDAEM.EXE - the daemon that manages the database.	By default, he
	looks in the current directory for the database files
	database.sym/database.ref.  To specify a databasse by name, it
	must be the last parameter on the command line.

	To create an empty database, use SRDAEM -c <database name>

	Once the database has been initialized, the daemon may be run
	with START SRDAEM -daemon <database name>

	You may ^C the daemon, but you run the risk of losing recent
	database updates.  See SYMREF for shutdown instructions.

	Two switches control the "flushing" and "syncing" behaviour of
	the daemon.

	By default, the database, when dirty, is flushed to disk every
	minute.  This is to guard against powerfails, buggy kernels, ^C
	by random users, etc.  To change this, specify -f NNNN after
	-daemon to specify an interval of NNNN seconds between flushes.

	Also by default, every hour the daemon will synchronize it's
	knowledge about the subdirectory trees with the actual trees on
	disk, looking for files that have been deleted, added, or
	modified.  To change this behaviour, specify -s NNNN after
	-daemon to specify an interval of NNNN seconds between syncs.

	SRDAEM may be run on any machine.  Obviously, if SRDAEM is
	expected to index files that exist on another machine, the
	workstation service must be started on the machine where SYMREF
	runs as well as making sure that the server is started on
	machines that SYMREF is going to examine.

	NOTE:  if SYMREF/SRMEP is run on a machine that is different from
	a server and if files on that machine are indexed by the daemon,
	each drive X: that contains indexed files must be shared at the root
	as ROOTX.  See sample scripts at the end.


    SYMREF.EXE - a command that hands commands to the database.  The
	commands are:

	symref symbol		    causes daemon to interrogate database
				    and files to look for occurances of the
				    symbol.

	symref -d new-database	    causes daemon to switch to a new
				    database file.

	symref -f symbol	    just lists files where symbol occurs

	symref -i dirs		    Adds the specified directories to
				    the set of directory trees watched
				    over by the daemon.  All files whose
				    extentions are NOT in the extention
				    "hit" list are indexed by the
				    daemon.

	symref -ie exts 	    adds file extentions to the "hit" list.
				    Files with these extentions are not
				    indexed.

	symref -ig symbols	    marks the specified symbols in the
				    database as noise words meaning they
				    will not be content indexed.

	symref -s scope 	    sets scope for filtering files when a
				    symbol is being located.  SYMREF/SRMEP will
				    only return files that are contained in
				    the directory hierarchy underneath the
				    scope. This is stored in WIN.INI.

	symref -S server	    sets machine name for server.  This
				    is stored in WIN.INI.

	symref -shutdown	    causes SRDAEM to flush, close database,
				    and exit

	symref -sync		    causes SRDAEM to check all
				    timestamps look for files that have
				    been added/deleted as appropriate.

	SYMREF/SRMEP and SRDAEM do not need to run on the same machine.
	If they do run on the same machine, SYMREF -S is not needed to
	specify the server.  If SRDAEM runs on a different machine from
	SYMREF/SRMEP, you need to do SYMREF -S <server>.

	SYMREF will always return local names if possible for file names.

    SRMEP.DLL - a Z/MEP extension that interrogates SRDAEM and instructs
	SRDAEM when files get changed.	To load, place this file into a
	directory on your libpath and make the assignment "load:srmep".
	The extension will define a new function sr-locate that has the
	following syntax:

	<sr-locate>
	    visit next reference of a symbol

	<arg>textarg<sr-locate>
	    find first reference to the named symbol

	<arg><sr-locate>
	    find first reference to the symbol beginning with the cursor

	<arg><meta><sr-locate>
	    refresh server/scope information from WIN.INI.

	sr-locate is assigned to alt+s

	IMPORTANT NOTE: once a parent directory of a file is in the
	database, you do not need to do anything special to get changes
	to the file into the database.	When Z/MEP saves the file, it
	informs the server and the server immediately reindexes the
	file.

Some sample scripts for getting this whole package to run:

    Installing SYMREF on a client/daemon machine:

	copy SYMREF.EXE \nt\bin
	copy SRDAEM.EXE \nt\bin
	copy SRMEP.DLL \nt\bin

    Creating a database (with default name in current directory):

	SRDAEM -c

    Starting the daemon on you local machine (not allowing others to
    access your database):

	NET START RDR
	START SRDAEM -daemon

    Starting the daemon on machine FOOBAR that will be shared by a bunch
    of people:

	NET START RDR
	NET START SRV
	START SRDAEM -daemon

	; and then on each client

	NET START RDR
	SYMREF -S FOOBAR

    Starting a local machine that will run SYMREF/SRMEP and will contain
    files that SRDAEM will index on drives C: and D: but is NOT running
    SRDAEM:

	NET START RDR
	NET START SRV
	NET SHARE ROOTC=C:\
	NET SHARE ROOTD=D:\

The files IGNORE.C, IGNORE.TXT, IGNORE.ASM contain some symbols that can be
ignored for various types of files.  IGNORE.EXT contains some extentions that
are best ignored.

Comments/bugs/praise to MarkZ.

13-Jan-1992
    Nt version.

20-Jan-1992
    Subdirectory-centric version.