ERR_MODE	"specify mode (-cdeghitx)",

	Bru was run without specifying any sort of major mode.
	Rerun with one or more mode flags specified.

ERR_AROPEN	"\"%s\": can't open archive",

	Bru cannot open the archive file for some reason.
	The reason is given as part of the error message.

ERR_ARCLOSE	"\"%s\": warning - close error on archive",

	Bru got some sort of error while attempting to close
	the archive file.  This sort of error "should not"
	occur.

ERR_ARREAD	"warning - archive read error at block %ld",

	Bru got an unrecoverable error while attempting to read
	an archive.  Whatever data was available at that location
	in the archive is not recoverable.

ERR_ARWRITE	"warning - archive write error at block %ld",

	Bru got an unrecoverable error while attempting to write
	an archive.  Whatever data was to be written at that
	location in the archive has been discarded.  Proper
	corrective action depends upon the situation and the
	specific file within which the error occurred.

ERR_ARSEEK	"seek error on archive",

	Bru got a seek error on an archive file.  This sort of
	error should not occur.

ERR_BUFSZ	"media size smaller than I/O buffer size!",

	The media size is inconsistent with the I/O buffer size.
	The media size must be at least as large as the I/O buffer.
	I.E., it is not possible to write a 1Mb I/O buffer to
	a media that is only 500Kb.

ERR_BALLOC	"can't allocate %dk archive buffer",

	Bru could not allocate an I/O buffer of the requested size.
	The maximum size is generally hardware and operating system
	specific, and may also depend upon what other programs are
	running on the system.  For corrective action, attempt to
	reduce the amount of real memory in use, or rerun with a
	smaller buffer size.

ERR_BSEQ	"\"%s\": warning - block sequence error",

	Bru detected an inconsistency in the ordering of blocks
	returned by the archive device on a read.  For example,
	bru asked for blocks {11, 12, 13, 14, 15} and got blocks
	{11, 12, 14, 15, 16} or perhaps {11, 12, 12, 14, 15}.
	This sort of error generally indicates a hardware
	problem, usually on tape drives.

ERR_DSYNC	"warning - file synchronization error; attempting recovery ...",

	Bru was expecting to find a file header block while reading
	an archive, but instead found another type of block.  This warning
	is normal if you start reading an archive at a volume other
	than the first, or skip a volume in the middle of reading an
	archive.  Bru will scan each successive archive block looking for a
	file header block, and normal processing will resume from
	the first file header block found.

ERR_EACCESS	"\"%s\": no file",

	The named file does not exist or part of the pathname is
	not searchable given the current permissions.

ERR_STAT	"\"%s\": can't stat",

	The stat system call failed.  Generally this indicates a
	permissions problem.

ERR_BIGPATH	"pathname \"%s\" too big",

	The pathname exceeds the maximum size which is permitted by
	the bru archive format.  This is currently 128 characters.
	This restriction may be lifted in a future version of bru.
	For now the suggested workaround is to archive the file
	using only part of the pathname, or reduce the number of
	intervening directories from the root directory.

ERR_BIGFAC	"blocking factor %d too big",

	This error is obsolete and is not currently used.  It will
	be removed in a future version of bru.

ERR_OPEN	"\"%s\": can't open",

	Bru could not open the named file.  The reason is given
	as part of the error message, and is usually a permissions
	problem.

ERR_CLOSE	"\"%s\": warning - file close error",

	Bru got an error while closing the named file.  This sort
	of error should generally not occur.

ERR_READ	"\"%s\": read error",

	Bru got a read error while reading a file from disk.
	This error should generally not occur.  If it does,
	it usually indicates a hardware problem.

ERR_FTRUNC	"\"%s\": warning - file was truncated",

	The specified file was truncated while bru was in the
	process of reading it.  If bru was creating an archive
	at the time, the archived file is padded with sufficient
	null characters to bring it back to the size it was
	originally, when bru started archiving it.  This is the
	same size that is recorded in the file header block.

ERR_FGREW	"\"%s\": warning - file grew while archiving",

	The specified file grew in length while bru was in the
	process of reading it.  If bru was creating an archive
	at the time, the archived file is truncated to the
	size it was originally, when bru started archiving it.
	This is the same size that is recorded in the file
	header block.  This sort warning is commonly seen for
	log or audit files, to which information is appended
	periodically.  It can generally be avoided by only
	backing up the system in single user mode, but this
	is seldom worth the downtime.

ERR_SUID	"\"%s\": warning - can't set user id: Not owner",

	Bru attempted to extract a file that was stored with the
	suid bit set, and the user is not the original owner of
	the file and is not superuser.

ERR_SGID	"\"%s\": warning - can't set group id: Permission denied",

	Bru attempted to extract a file that was stored with the
	sgid bit set, and the user is not the original owner of
	the file and is not superuser.

ERR_EXEC	"\"%s\": can't exec",

	Bru could not exec the given file, for the reason that is
	given as part of the error message.  Generally this error
	occurs because the specified file does not exist, or is not
	executable by the user running bru.

ERR_FORK	"can't fork, try again",

	Bru could not execute the fork system call.  Generally
	this indicates that the system is in serious trouble,
	or the per-user limit on processes has been exceeded.

ERR_BADWAIT	"unrecognized wait return %d",

	The wait system call returned a value that bru was not
	able to understand.  Generally this error should not
	occur, but if it does, it probably indicates a kernel
	bug.  Usually the child was was being run has mysteriously
	disappeared.

ERR_EINTR	"child interrupted",

	The child process that bru was waiting for was interrupted
	by a SIG_INT.
	
ERR_CSTOP	"\"%s\": fatal error; stopped by signal %d",

	The child process that bru was waiting for was stopped by
	the specified signal.

ERR_CTERM	"\"%s\": fatal error; terminated by signal %d",

	The child process that bru was waiting for was terminated
	by the specified signal.

ERR_CORE	"\"%s\" core dumped",

	The child process that bru was waiting for dumped core.

ERR_WSTATUS	"inconsistent wait status %o",

	The wait system call returned a value that bru was not
	able to understand.  Generally this error should not
	occur, but if it does, it probably indicates a kernel
	bug.  Usually the child that was being run has gone
	berzerk in some manner.

ERR_SETUID	"can't set uid to %d",

	Bru received an error when it tried to run the setuid
	system call.  This sort of error should not occur.
	If it does, it indicates a possible kernel bug or
	internal bug in bru.

ERR_SETGID	"can't set gid to %d",

	Bru received an error when it tried to run the setgid
	system call.  This sort of error should not occur.
	If it does, it indicates a possible kernel bug or
	internal bug in bru.

ERR_SUM	"\"%s\": warning - %ld block checksum errors",

	While reading an archive, bru detected the specified number
	of checksum errors in the specified file.  This generally
	indicates a hardware problem.

ERR_BUG	"internal bug in routine \"%s\"",

	Bru has detected some sort of internal bug.  This sort
	of error should not occur.  If it does, it may possibly
	be a real bug in bru or a hardware or kernel software
	problem.  If it is not repeatable, it is likely to
	be a hardware or kernel bug.

ERR_MALLOC	"can't allocate %u more bytes",

	Bru has run out of memory for some reason.  This generally
	occurs when bru tries to create a tree from a list of
	filenames read from the standard input, or when memory is
	very limited on the system due to hardware or cpu constraints.

ERR_WALK	"internal error in tree; pathname overflow",

	This error is obsolete and should never occur.  It will be
	removed from a future version.

ERR_DEPTH	"pathname too big, lost \"%s/%s\"",

	While building a file tree, bru has created a path that
	exceeds the specified maximum pathname size (currently
	128 characters).  This error is similar to the ERR_BIGPATH
	error.

ERR_SEEK	"\"%s\": seek error",

	This error is obsolete and should never occur.  It will be
	removed from a future version.

ERR_ISUM	"warning - info block checksum error",

	Bru detected a checksum error while reading the first block of
	an archive.  If no other errors or warnings occur, this
	warning is benign.  Generally the info block contains 
	information about the archive that is of use to bru, but
	not critical to reading or extracting files from the
	archive.

ERR_WRITE	"\"%s\": write error",

	Bru got an error from the "write" system call while writing
	a file to disk.  This error generally indicates a hardware
	problem or a full disk.

ERR_SMODE	"\"%s\": warning - error setting mode",

	Bru got an error while attempting to set the mode of a file.

ERR_CHOWN	"\"%s\": warning - error setting owner/group",

	Bru got an error while attempting to set the owner or group
	of a file.

ERR_STIMES	"\"%s\": warning - error setting times",

	Bru got an error while attempting to set the mtime of a file.

ERR_MKNOD	"\"%s\": error making node",

	Bru got an error while attempting to create a special file
	system node, such as a FIFO, block special file, or character
	special file.

ERR_MKLINK	"\"%s\": can't link to \"%s\"",

	Bru got an error attempting to make a hard link between
	two files.

ERR_ARPASS	"internal error; inconsistent phys blk addrs",

	Bru got some sort of internal error while reading or writing
	an archive.  This sort of error should not occur, but is
	sometimes seen when inconsistent or wrong brutab entries are
	given, such as claiming that a devices is seekable when it
	really isn't, and the driver does not return an error on
	the seek system call.

ERR_IMAGIC	"warning - missing archive header block; starting at volume %d",

	Bru could not find the archive header block for some reason.
	This warning is normal when starting to read an archive at
	some volume other than the first volume.

ERR_LALLOC	"\"%s\": warning - lost linkage",

	Bru could not preserve the linkage of two files.  This
	message is generally seen when bru runs out of memory
	while attempting to allocate memory internally to maintain
	the linkage information.  In this case, the file will be
	archived as two separate, distinct files in the archive.
	So, only the linkage information will be lost.

ERR_URLINKS	"\"%s\": warning - %d unresolved link(s)",

	While archiving a set of files, bru detected that not
	all links to the specified file were found and archived.
	I.E., there is still another pathname that points to
	the same file, that does not appear in the archive.

ERR_TTYOPEN	"\"%s\": warning - can't open for interaction",

	Bru could not open a tty stream to interact with the
	user.

ERR_NTIME	"date conversion error: \"%s\"",

	Bru could not convert the specified string into a
	date.  This generally occurs due to a mistyped date
	string or not following the allowed syntax rules for
	date strings.

ERR_UNAME	"warning - uname failed",

	Bru got an error when it attempted to execute the
	uname system call.

ERR_LABEL	"warning - label \"%s\" too big",

	A user specified label, as given with the -L option, 
	exceeds the limit imposed by the bru archive format.
	This limit is currently 64 characters.

ERR_GUID	"uid conversion error: \"%s\"",

	Bru could not convert a given symbolic user name to the
	internal numeric form.  This generally occurs when
	an "illegal" user name is given for the -o option.

ERR_CCLASS	"unterminated character class",

	Bru detected an shell style wildcard file specification
	that was syntactically incorrect.

ERR_OVRWRT	"\"%s\": can't overwrite",

	The specified file could not be overwritten during
	extraction, generally due to a permissions problem.

ERR_WACCESS	"\"%s\": can't access for write",

	The specified file could not be accessed for write,
	generally due to insufficient permissions.

ERR_RACCESS	"\"%s\": can't access for read",

	The specified file could not be accessed for read,
	generally due to insufficient permissions.

ERR_STDIN	"can't read both file list and archive from stdin!",

	This message indicates that bru was instructed to read
	both an archive, and a list of files, from the standard
	input stream.  I.E., the command included the option
	"-f -" and the list of files was "-".

ERR_BRUTAB	"warning - using internal default device table",

	Bru could not find the brutab file specified by the
	BRUTAB environment variable, or the default brutab file
	generally located in /etc/brutab.  In this case, it
	will then use the internal brutab, which may not be
	correct for the current system.

ERR_SUPERSEDE	"\"%s\": warning - not superseded",

	During extraction, the specified file in the archive was
	found to be older (an earlier date) than the current file
	on disk, so the extraction was not performed.  This behavior
	is the default to avoid accidentally overwriting new files
	with old files from an archive.  The behavior can be
	overridden with the -u option.  Also, this message
	will only be seen if the verbosity level is 2 or greater,
	because it is common to use bru to overlay an existing
	file tree, only replacing or restoring files that are
	missing or out of date.  In this case, one does not 
	generally wish to be deluged with warning messages about
	the files that were not extracted.

ERR_IGNORED	"\"%s\": warning - not found or not selected",

	The user specified a file on the command line that was not
	found, either on disk or in the archive.

ERR_FASTMODE	"warning - may have to use -F option to read archive",

	Bru spends considerable time computing checksums for each
	block of data that it writes to the archive.  Some users
	disable the checksum feature with the -F option when
	creating archives, although this is not recommended.  The
	-F option must also be given when reading such and archive,
	and bru will issue this warning when it detects archive input
	that appears to not have any checksums.

ERR_BACKGND	"interaction needed, aborted by -B option",

	Bru was run with the -B option, indicating that no
	operator was present and that the desired behavior, if
	interaction was necessary, was to abort.

ERR_MKDIR	"\"%s\": error making directory",

	Bru could not make a directory for some reason.

ERR_RDLINK	"\"%s\": error reading symbolic link",

	Bru could not read a symbolic link for some reason.

ERR_NOSYMLINKS	"\"%s\": symbolic links not supported",

	Bru encountered a symbolic link in an archive that it
	was reading on a system that does not support symbolic
	links.

ERR_MKSYMLINK	"\"%s\": could not make symbolic link",

	Bru was asked to create a symbolic link on a system that
	does not support symbolic links.  In this case, it will
	attempt to create a hard link.

ERR_MKFIFO	"\"%s\": could not make fifo",

	Bru was asked to create a fifo on a system that does
	not support fifo's.

ERR_SYMTODIR	"warning - link of \"%s\" to \"%s\", \"%s\" is a directory, no link made",

	Bru was asked to create a symbolic link to an existing file
	that is a directory, on a system that does not support symbolic
	links.  Since hard links to directories are not allowed by bru,
	this warning is issued and no link is made.

ERR_HARDLINK	"warning - link of \"%s\" to \"%s\", \"%s\" does not exist",

	Bru was asked to create a hard link to a file that does not
	exist.

ERR_FIFOTOREG	"warning - extracted fifo \"%s\" as a regular file",

	Bru was asked to extract a fifo on a system that does not support
	fifo's, so it extracted the file as a regular file.  The
	correctness or desirability of this behavior is subject to
	debate, which is why the warning is issued.

ERR_ALINKS	"\"%s\": warning - %d additional link(s) added while archiving",

	While bru was archiving a file, there were additional links
	made to it.  These additional links may or may not have been
	archived.

ERR_OBTF	"\"%s\": line %d, obsolete brutab format",

	Bru detected an obsolete brutab format while reading the
	brutab file.  This warning message will eventually become
	obsolete and will become an error message when support
	for the original brutab format, now obsolete, is removed.

ERR_DEFDEV	"no default device in brutab file, use -f option",

	Bru could not find any default device in the brutab file.

ERR_NOBTF	"support for obsolete brutab format not compiled in",

	Support for the original brutab format, now obsolete, has
	not been compiled into this particular version of bru.

ERR_BSIZE	"warning - attempt to change buffer size from %u to %u ignored (incompatible brutab entries)",

	While reading or writing an archive using multiple devices
	and not using the -b option, bru detected inconsistent
	default buffer sizes between the devices, usually as a
	result of reading a BUFSIZE parameter from the brutab
	entry.  The buffer size is not allowed to change between
	volumes of an archive.  To avoid this warning message
	use the -b option for force a specific buffer size for
	all volumes.
	
ERR_DBLSUP	"problem setting up double buffering",

	Bru encountered a problem setting up the double buffering.
	Sometimes reducing the I/O buffer size will cure the problem.

ERR_EJECT	"\"%s\": media ejection failed",

	On systems that support ejection of archive media under
	software control, bru may be configured to eject each
	media when it is done with it.  This error message indicates
	that bru encountered some sort of error while attempting
	to eject the media.

ERR_NOSHRINK	"\"%s\": warning - compressed version was larger, stored uncompressed",

	When file compression is utilized via the -Z option, bru will
	check to ensure that the compressed version of the file
	uses fewer archive blocks than the uncompressed version.
	If the compressed version does not result in any savings
	in archive space, the uncompressed version will be archived
	instead.  If the verbosity level is 4 or greater, bru will
	give warnings for those files for which compression was not
	effective in saving archive space.

ERR_ZXFAIL	"\"%s\": warning - decompression failed, not extracted",

	While attempting to extract a file that was stored in compressed
	format, bru encountered some sort of error that it could not
	recover from.  In this case, the file is not extracted and this
	warning message is issued.

ERR_NOEZ	"warning - estimate mode ignores compression",

	This warning message results when both the -e and -Z options
	are given simultaneously.  Because of the large overhead
	in compressing files, and because there is no way to determine
	the compression ratio without actually doing the compression,
	bru cannot estimate how much archive space is required for
	an archive when compression is enabled.  Thus estimation
	ignores possible savings due to compression.

ERR_UNLINK	"\"%s\": not deleted",

	Bru got some sort of error while attempting to delete (unlink)
	a file.

ERR_ZFAILED	"\"%s\": warning - compression failed, stored uncompressed",

	While attempting to compress a file for storage, bru got some
	sort of error (such as overflowing the filesystem temporary
	space for example), and could not generate the compressed version
	of the file.  Thus the file was stored uncompressed.

ERR_BADBITS	"bad number of bits (%d) for compression",

	While reading a file from an archive, bru found a file that was
	compressed with more LZW bits than it was capable of dealing
	with.  This error should never occur unless the archive has been
	corrupted or unless an attempt has been made to read an archive
	that was written with a nonstandard version of bru.  The default
	is for bru to use 12-bit compression.  However, it would be
	relatively easy for someone to modify the bru source code to
	use more bits, thus generating incompatible versions of bru.
	Such versions should not be released upon the unsuspecting
	world.

ERR_SHMSIZE	"warning - buffer size (%dKb) exceeds system imposed limit (%dKb) with double buffering",
ERR_SHMADJ	"warning - buffer size automatically adjusted to %dKb",

	While attempting to set up double buffering using System V
	style shared memory support, bru was asked to use an I/O buffer
	size that resulted in the double buffering buffers exceeding
	the system imposed shared memory limits.  The I/O buffer size
	was automatically adjusted downwards to the maximum size that
	the system could support.
	
ERR_SHMGET	"could not get shared memory segment (%dKb)",

	While attempting to set up double buffering using System V 
	style shared memory support, bru encountered an error return
	from the shmget system call.

ERR_SHMAT	"could not attach shared memory segment",

	While attempting to set up double buffering using System V 
	style shared memory support, bru encountered an error return
	from the shmat system call.

ERR_MSGGET	"could not allocate message queue",

	While attempting to set up double buffering using System V
	style message support, bru encountered an error return
	from the msgget system call.

ERR_IOPT	"don't understand -I option '%s'",

	Bru encountered an option argument to the -I option that
	it did not understand.  I.E., "-Ijunk" will generate
	this message.
