OKAMI NEWSREADER MANUAL PAGES

NAME
	oexpire: Message deletion program

SYNOPSIS
	oexpire.ttp { options } { newsgroups }

DESCRIPTION
	oexpire expires message on all named `newsgroup's. If no newsgroups
	are named, expires messages on all newsgroup named in the onews.def
	file.
	oexpire reads its configuration file (named in o.inf, oexpire.inf
	by default) to get the expiration criteria for the newsgroups to
	be expired. It then loads the newsgroup's index file and internally
	marks all messages that are to be deleted, either because their
	"killed" flag is set or because they match the newsgroup's expiration
	criteria. oexpire then deletes all marked messages, either by removing
	the message file (SMF database) or by deleting the message from the
	DBF database. It then recreates a new index file that consists only
	of those entries that were left undeleted and expires the thread index
	file (.tix).

	DBF Reorganization

	In the DBF database, a single file contains all the messages of the
	newsgroup. When a message is deleted, it is not removed from the file,
	but its space is marked as unused and may be re-used by successive
	imports. Only when the message at the end of the file is deleted, the
	file shrinks.
	Since normally expiration takes place on a regular basis, there is
	no danger for the database file to get fragmented and grow to infinity.
	Even if many messages are imported and deleted every day, the size of
	the database file should remain constant once it has reached a certain
	size since adjacent unused entries are joined.
	However, it is possible to reorganize the database file, eliminating
	all unused entries. Reorganization takes a good amount of time and
	requires at least the size of the database file to be available on
	the disk. For that reason, it is not recommended to reorganize the
	database after every expiration.
	The default of oexpire is to reorganize the database if more than
	100 entries get unused. This can be changed with the -R option,
	which also allows for the reorganization to be turned off completely.

OPTIONS
	-W
		Prints a message and waits one second before beginning
		expiration. If within that time the ESC key was pressed,
		terminates without further action.
	-I
		Uses the message file date for expiration. The default is
		to use the import date.
	-r
		Deletes all messages that have the "read" flag set. Use this
		if you are in extreme need of disk space.
	-K
		Deletes the newsgroup completely, removing all message, data-
		base and index files and empty directories and removing the
		newsgroup from the onews.def and news.def files
	-e
		Normally, oexpire deletes newsgroups that are empty after
		expiration. With -e, those empty newsgroups will be kept.
	-R nitems
		Reorganizes the DBF database if more than `nitems' entries
		are left unused. See "DBF reorganization" above. Special
		values for `nitems' are:
			0	reorganizes always
			-1	reorganizes never
		`nitems' can be given in one of the following formats:
			- a number, then reorg takes place when at least
			  that number of entries is unused
			- a number followed by a percent sign, then reorg
			  takes place when at least that percentage of the
			  DBF size is unused
			- a number followed by a `k' or 'K', then reorg
			  takes place when that number of kilobytes are
			  unused
		The default value for `nitems' is 80%.
	-d n
		Sets the day limit for the expiration of read messages to
		`n' days, overriding the setting in oexpire.inf.
	-u n
		Sets the day limit for the expiration of unread messages to
		`n' days, overriding the setting in oexpire.inf.
	-s n
		Sets the size limit for expiration to `n' bytes, overriding the
		setting in oexpire.inf.
	-m n
		Sets the number limit for expiration to `n' messages per
		newsgroup, overriding the setting in oexpire.inf.
	-k
		Ignores the expiration criteria and removes only messages that
		have the "killed" flag already set.
	-f
		Removes all messages that are in the index but the corresponding
		message file resp. DBF entry is missing.
		WARNING: For SMF, this stakes lots of disk access and thus is very
		slow.
	-i
		Removes all messages that are in the DBF database but not in
		the index file. This works for DBF databases only.
		Killing is done "silently" here, i.e. oexpire might print "no
		work" although messages did get removed from the DBF. In its
		output oexpire only counts those messages that were removed
		from the index.
	-M
		Does not expire mail groups.
	-T
		Does not expire threads. Use this only if you do not create
		threads at all or you will never get the deleted entries
		out of your thread inedx files.
	-Y net
		Expires only newsgroups from networks specified in `net':
			u	Usenet
			m	Mausnet
		The default is to expire all newsgroups with no regard to their
		network.
	-P
		Prints expiration criteria only. Does not expire anything. Pays
		no attention to the options -d,u,s,m.
	-h
		waits for key press after program termination
	-L n
		sets log level to n (-1 means no logging)
	-v
		prints version number only
	-F file
		uses `file' as o.inf configuration file
	-?
		Prints usage summary only.

ENVIRONMENT
	O_INF
		name of default o.inf file

FILES
	o.inf
	oexpire.inf
	onews.def

SEE ALSO
	- The documentation of the oexpire.inf file, contained as a
	  comment block in the file itself.
	- The manual page for the DBF database.

BUGS
	No known bugs (anymore).

HISTORY
	13-11-93  created
	21-03-94  changed -R default from 100 to 80%
	20-05-94  added option -i
	17-06-94  added option -e
	13-10-94  -f can be used for DBF too

DATE
	June 17 1994

AUTHOR
	Wolfram R”sler <wr@bara.oche.de>
