
If you make any changes in the modules below, you will have to run a
"make install" in the top level database directory to install the new
executables. Use whoisd.restart after if you have made changes to
whoisd.pl.

checkupd.pl	- syntax check an object


cleandb.pl	- clean database (run periodic by cron)
			- lock
			- create new tmp dir
			- read old database and skip *XX objects
			- make index (classless also if called with -c)
			- remove old database+indices
			- move newly generated stuff there


dbupdate.pl	- do updates (1 email message or STDIN)
			- while enparse() do
			    try and update
			    make acks
			  done
			  send notifications
			  log updates and acks


whoisd.pl	- sit and wait for whois queries
	alarmhandler()	- timeout handling
	makekeys()	- normalize keys
	lookupandprint()- lookup keys and print result
	fastlookup()	- lookup keys and print result (-F)
	whois()		- wrapper around lookupandprint() and
			fastlookup(). Takes care of recursion.
	parse()		- parse arguments
	

netdbm.pl	- index a database file
	main()		- reads an ascii database file and makes an
			index. CAREFUL, it does not lock or protect.
			It will simply overwrite. Used in mirror dbs
			and test dbs.


showdbm.pl	- show DBM index


sortdb.pl	- sort database file on STDOUT
	NOT USED (may not work anymore)


newdb.pl	- create empty database containing COPYRIGHT
	ALMOST NEVER USED

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

If you make any changes to any of the modules below, a "make" in the
top level database directory is sufficient.


adderror.pl	- error/warning messages to/from objects
	adderror()	- adds error message to an object
	addwarning()	- adds warning message to an object
	haserror()	- yes or no
	haswarning()	- yes or no
	rmerrors()	- removes error messages from an object
	rmwarnings()	- removes warning messages from an object


addkey.pl	- add keys to DBM index (low level, really fiddles
		with DBM)
	addkey()	- adds given set of keys to a DBM index with
			given offset
	delkey()	- delete given set of keys from DBM index with
			given offset


authck.pl
	NOT USED

blocks.pl
	NOT USED

checkconf.pl
	NOT USED

checkguard.pl
	NOT USED


cldb.pl		- all routines to handle classles index/lookups
		See README.CLDB for pseudo code.
	converttonormal()- converts "32-bit-int/len" to "prefix/len"
	cla2unikey()	- returns unique keys that match a cla.
	getmspnxl()	- gets string containing all more specifics
			from a certain cla.
	setmspnxl()	- sets string containing all more specifics
			from a certain cla.
	addtomspnxl()	- add a cla to the more specifics of a cla
	deletefrommspnxl()- delete a cla from the more specifics of a cla
	old_to_new()	- convert classful (range or net) to prefix/len
	findlsps()	- find all less specifics of a certain cla
	findmsps()	- find all more specifics of a certain cla
	givemsps()	- give all more specifics of cla found in a
			certain string (costly!)
	inscla()	- insert a cla into the index
	delfromcla()	- delete a cla from the index
	delcla()	- used by delfromcla()


cleanhandledb.pl	- cleans a imaginative handle database
	DOES NOT WORK AT ALL YET!


dbadd.pl	- add/delete/modify an object in a DB file (low level)
		does not deal with indices, just plain ascii database.
	dbadd()		- add an object to an open database
	dbadd_or_modify()- add/modify an object to an open database
	dbdel()		- delete an object from an open database


dbclose.pl	- close DB file and index
	dbclose()


dblock.pl	- lock/unlock database files
	dblock()	- lock a database
	dbunlock()	- unlock a database


dbmatch.pl	- find all offsets matching a set of keys in open
		database
	dbmatch()


dbopen.pl	- open database file/index; open/close classless index
	dbopen()	- open database
	dbclopen()	- open classless index
	dbclclose()	- close classless index


debug.pl	- variable debugging
	NOT USED


defaults.pl	- default options (overridden by configuration)


defines.pl	- general definitions


donetdbm.pl	- read objects and make an index
	donetdbm()	- make index for normal objects
	docldbm()	- make classless index


encmp.pl	- compare two objects, return 1 or 0
	encmp()


endiffs.pl	- calculate difference between 2 objects
	endiffs()	- NOT USED


enkeys.pl	- generate keys from an object
	enkeys()	- wrapper
	getalkeys()	- normal keys
	getipkeys()	- IP address keys


enparse.pl	- read an object and do semantic check and call syntax check
	enparse()	- wrapper
	readsomething()	- read an object
	checkobject()	- semantic check

	
enread.pl	- read an object (assumes object is correct)
	enread()


entype.pl	- determine the type of an object
	entype()


enukey.pl	- determine unique keys of an object
	enukey()
	getukey()	- normalize key


enwrite.pl	- write an object to currently selected output
	enwrite()	- writes an object. Arguments determine
			whether to do long/short form, with/without
			errors, with/without syntactic sugar

	
finddollaris.pl
	NOT USED


handle.pl	- contains nic handle routines (DOES NOT WORK)
	NOT USED


locktest.pl	- simple test to see if locks work
	NOT USED


maintainer.pl	- all maintainer handling
	Maintainer()		- main wrapper
	GetMaintainer()		- looks up and returns maintainer object
	VrfyMaint()		- verifies whether an object fullfills
				maintainer authentication
	CheckMailFrom()		- check MAIL-FROM derivative
	CheckPassword()		- check CRYPT-PW derivative
	NotifyMaintainers()	- handle mnt-nfy attribute
	ForwardToMaint()	- forward update in case of failed auth.
	ForwardTmpFile()	- make tmp file for forwarding mail
	WriteForwardHeader()	- write header for forwarding mail
	SendForwardMails()	- send forwarding mails generated


misc.pl		- various routines used at various places (mainly
		syntax)
	trailzero()	- NOT USED
	isasnum()
	ishandle()
	ishandser()
	isaskeyword()
	isasmacro()
	isclnskeyword()
	ispeerkeyword()
	isnetlist()
	iscommunity()
	isaspref()
	hasdelete()
	isnetnum()
	isipaddr()
	ismask()
	isclnsprefix()
	issubdomname()
	isdomname()
	isname()
	isphone()
	isemail()
	quad2int()
	int2quad()
	isbracket()
	isbrace()
	lock()		- lock a file
	unlock()	- unlock a file


net2net.pl	- various routines to convert one IP notation to the
		other
	net2net()		- wrapper
	clasfn_to_netpre()	- classful net to prefix/len
	clasfr_to_netpre()	- classful range to prefix/len
	netpre_verify()		- check prefix/len
	intnetpre_to_netpre()	- 32-bit-int/len to prefix/len
	netpre_to_intnetpre()	- prefix/len to 32-bit-int/len
	netmask_to_netpre()	- net+mask to prefix/len
	isnet()			- is it an IP addr?
	islen()			- is it a len?
	printip()		- print IP addr


notify.pl	- handle notify attr and lowe level for mnt-nfy
	AddNotify()		- wrapper + preprocess
	DoAddNotify()		- actually add notification (called
				by NotifyMaintainers()
	NotifyTmpFile()		- create a tmp file for new notifier
	WriteNotifyHeader()	- write mail headers to tmp file
	SendNotifications()	- send tmp files as mail


rconf.pl	- read configuration
	rconf()


rfc822.pl	- parse email headers and fill in some vars used
		elsewhere
	parserfc822()


rmdupl.pl	- remove duplicate objects
	NOT USED


syntax.pl	- check syntax of all attributes
	ExistsObject()	- look up an object (for cl, nh and mt)
	checksyntax()	- wrapper (handle ripe-181 continuation lines)
	dosyntax()	- actually check the syntax


syslog.pl	- log to various files
	

template.pl	- handle whoisd template mode (-t)
	Template()


test.pl		- garbage


time.pl		- time routines
	NOT USED


updatecheck.pl	- check updates just before they are added
	updatecheck()	- checks maintainer creation
			- checks dates in "changed" field
			- calls Maintainer verification
			- calls Notification handler
			- add guarded attributes (obsolete)
			- syslog authorise, override and delete
	addguard()	- add guarded attributes (obsolete)


updated.pl	- feeble attempt to make an update daemon
	NOT USED
