JRBUTILS v2.12	24-Mar-1994

1. New features

   o	In all programs, a line beginning with ';' in a input file is
	treated as a comment line.
   o	In GETQUOTA, added option /nc to suppress commas in numeric values.
   o	In GETQUOTA, added option /us to display the subdirectory name
	rather than the full path, which could be truncated if too long for
	the available space.
   o	In GETQUOTA, /v is now superflous - it is no longer required when
	a volume appears on the command line.
   o	A similar change has been made in SETQUOTA, but /v must be used if
	a volume name appears in an input file.
   o	In GRPLIST, the group name may be preceded by '!' meaning list all users
	not a member of the group.

2. Bug fixes (ignoring the most obscure ones)

   o	In all programs, fixed a problem with detection of output redirection
	which was introduced in v2.11. A very small number of sites were
	unable to display the in-built help.
   o	In many programs, when using an input file, the last character of
	the last line could be lost if there was no <CR><LF> at the end
	of the file.
   o	In SETQUOTA, RENOBJ, SETFNAME fixed a problem where blank lines in
	input files were producing error messages.
   o	GETQUOTA, SETQUOTA, GETACRES and SETACRES previously required that
	all options appear after the parameters, whereas in all other
	programs, options could appear anywhere on the command line. These
	4 programs now accept options anywhere on the command line.
   o	DELOBJ. The protection on the HOME_DIR bindery property created by
	David Harris' SETHOME is such that users can change the contents of
	this property. This makes it possible for a user to set it to some
	other directory e.g. SYS:PUBLIC. As DELOBJ will delete the directory
	found in the HOME_DIR property, this was a potential hazard. DELOBJ
	now checks the user's rights to the directory found in the HOME_DIR
	property. If the user does not explicitly have a trustee assignment
	granting [ RWECMFA], DELOBJ will now query whether or not to delete
	the directory. To avoid this check, use /a.
   o	In CREATOBJ, removed a limitation where when specifying a login
	script file, it previously had to be on the same server as the user
	being created.
   o	When using /c in CHKHOME, error messages about being unable to
	allocate a directory handle because there was no such directory,
	some times appeared. These occurred when scanning for a matching
	directory on other volumes when the user's home directory did not
	exist. They have been suppressed.
   o	In DQUOTA, if any of the total quota, total usage, or total space
	available exceeded 2.1 GB, when using /v, the output was messed up.
   o	In DQUOTA, when a directory was specified, and that directory had
	less than the warning threshold of free space, dquota displayed
	" has less than xxx Bytes available". It now inserts the directory
	name.
   o	In DQUOTA, when /cm was combined with /nc, the output was incorrect.
	The decimal point was overwriting one of the digits.
   o	In GRPADDU, when /q was used, the server name, group name and user
	name in the prompt were in the wrong order.
   o	In GRPDELU, the wrong server name appeared in an error message when
	trying to add an non-existant user on another server.
   o	Fixed a bug in GETQUOTA where /t gave zero totals.
   o	Modified GETQUOTA to display totals even when there was only one
	line of output. I had previously suppressed totals in this case as
	the totals equalled the values in the single line and were therefore
	superflous. But some folks are running automated procedures which
	redirect output to a file then use grep to find the totals line.
	Therefore I've decided it is better to be consistent and always
	output a totals line.

JRBUTILS v2.11	18-Dec-1993

1. New features

   o	In USERS, you can now specify the connections you want displayed
	using /c.
   o	GETQUOTA now allows you to suppress quotas, space used and space
	available using /o=n.
   o	LISTOBJ, RENOBJ, CREATOBJ, DELOBJ and KILLCONN now allow you to
	specify the object type in hexadecimal using /o. This removes an
	inconsistency where LISTOBJ displays object types in hex (using /a)
	but other programs required the object type in decimal.
   o	Added /a to GRPLIST to list the group members by an alternative
	and slower method. This avoids a limitation in the
	NWReadPropertyValue function which is reached when a group has
	more than about 8,000 members. All programs using this function now
	produce a warning if the limitation is reached when processing the
	members of a group. Use GRPLIST /a/l to produce a file, and use this
	file as input to other programs.

2. Unfixed bugs

   o	A user has reported DQUOTA hanging under NW 2.15. I have had no
	luck whatsoever identifying this problem.

3. Bug fixes (ignoring the most obscure ones)

   o	/p did not work in SETACRES
   o	SETACRES didn't create a user's LOGIN_CONTROL property when
	necessary.
   o	Preceding a username with a '$' in SETFNAME did not work.
   o	Preceding object names with '$' and '#' in DELOBJ did not work.
   o	TRSTLIST, GETEQUIV and GETACRES did not allow you to display
	information for objects to which the user was security equivalent
	e.g. TRSTLIST did not allow a member of a group to display trustee
	assignments for the group.
   o	KILLCONN did not allow a manager to clear connections for managed
	objects. NW 3.11 does not seem to allow this anyway, athough its
	documented as being possible.
   o	GETACRES would more often than not fail to display all users when
	sorting by value due to a bug in the sub-sorting code.
   o	USERS would display the location in uppercase when selecting by
	location.
   o	SETQUOTA failed to release directory handles when setting directory
	quotas and the quota being set equalled the existing quota. This
	could result in it running out of directory handles.
   o	Full names for users and groups should be limited to 48 characters
	but SYSCON allows them to be set longer. This caused output to be
	screwed up in USERS and LISTOBJ.
   o	Fixed a couple of minor errors in the help for USERS.
   o	/w in CREATOBJ could not be used to specify a password for a
	print server.
   o	/g was missing from UAMDEL.
   o	DELOBJ misbehaved when using an input file with records longer than
	48 characters.
   o	DELOBJ was not deleting subdirectories of a users home directory.
   o	DQUOTA contained a superfluous printf statement outputting the
	username when /y was used.
   o	SETOWNER would sometimes hang when it encountered a file with
	characters in the name with the eighth bit set. This was a bug
	in the Client SDK and I've avoided it by using a different function
	call.
   o	DQUOTA, GETQUOTA, SETQUOTA, SETOWNER, SETXONLY, CHKHOME, CREATOBJ,
	TRSTLIST and SALVLIST all had a problem with processing hidden
	directories. This is fixed.
   o	NETCOPY would hang intermittantly.
   o	When GRPADDU created a group but did not add any members (grpaddu
	group /c) the group was left without a GROUP_MEMBERS property. This
	did not cause problems when subsequently using GRPADDU, but less
	elegant programs <grin> such as SYSCON and MAKEUSER then could not
	add members.

JRBUTILS v2.10	2-Oct-1993

The changes listed below are the ones that I can remember. There are
undoubtedly changes that I have forgotten, and many which are too trivial
to document.

1. New features

   All programs

   o	A server name may precede a user name, group name or path where ever
	one of these may be used. If you are not already attached to the
	named server, you will be prompted for a username and password, and
	the program will log you in. You may control logging out again using
	the switch /k.
   o	Wild cards may now be used in user names and group names e.g.
	'getquota z*' will process all users on the current server whose
	username begins with 'z'.
   o	Support for work group managers and user account managers. Many
	programs formerly required supervisor equivalence preventing uams
	and wgms from using them. This has been fixed and all programs may
	be used by uams and wgms to perform tasks which Netware allows.
   o	Support for connections numbers greater than 250.
   o	Allow connections to up to 50 servers simultaneously.
   o	Packet signatures now supported when logging into other servers.
   o	Added the ability to precede any object name with a '$' to force it
	to be treated as a user. This may benefit those of nervous disposition!
   o	Reduced the in-built help and prevented redirection of help to a file.

   Users
   o	Can now sort by any output field.
   o	Can now design your own output selecting the fields, the order in
	which they appear, and the width of each field.
   o	Now gives the peak connections used in the totals line for /c.
   o	New /r switch to display logged in print servers only.

   Listobj
   o	Allows you to list objects across multiple servers. You may specify
	up to 10 servers on the command line, each may contain wild cards,
	or you may specify 'A' meaning all servers to which you are currently
	attached.
   o	Sorting of output may be merged across servers.

   Getquota
   o	Added new switch /i to prepend the server name to each username.

   Getequiv (renamed from getseceq)
   o	Allows you to list objects across multiple servers. You may specify
	up to 10 servers on the command line, each may contain wild cards,
	or you may specify 'A' meaning all servers to which you are currently
	attached.

   Creatobj
   o	Can now specify a user password via /w.
   o	When using a file, you can now include passwords in the file when
	creating users.
   o	Returns error level 1 if creation of the last object failed.

   Delobj
   o	Will now delete each user's home directory and its contents if either
	(a) it can retrieve the home directory from the HOME_DIR property, or
	(b) a home directory path is specified.
   o	Can now retain a user's mail directory (I had a need for this once!).

   Renobj
   o	Will now rename each user's home directory if either (a) it can
	retrieve the home directory from the HOME_DIR property, or (b) a
	home directory path is specified.

   Grplist
   o	A new switch /l combines the actions of /f, /j and /u.
   o	A new switch /i prepends the server name to each username. This may
	be useful when combining lists of group members from different
	servers.

   Setquota
   o	Added /q to query whether or not to set a quota for each user.
   o	Modified so that it checks the existing quota and indicates if the
	quota set is the same as the current quota.

   Dquota
   o	Enabled use of /w when displaying mail directory quotas.
   o	Added /na to suppress all output when the user does not have a quota.
   o	Added /on to suppress all output except a warning
   o	Added /y to allow you to specify a file containing text to be
	displayed. The text may contain substitution symbols for quota,
	space used, username etc.
   o	Added /z to allow you to design your own warning text. Functions
	similarly to /y.

   Setpword
   o	Added /q to query whether or not to set a password for each user.
   o	Added the option to specify a range of usercodes e.g. COMP001-COMP100.
	This was in response to a specific request and I would appreciate
	feedback on whether there is a need for this feature in other programs.

   Getacres
   o	Added new switch /i to prepend the server name to each username.

   Setacres
   o	Added /q to query whether or not to set a restriction for each user.

   Setowner
   o	Added /x switch which will set ownership only for files with no owner.
   o	When using /v setowner now reports when a file is already owned by
	the 'new' owner.
   o	Added /m to allowing setting of ownership in mail directories.

   Killconn
   o	Can now specify files containing lists of object names or connection
	numbers.
   o	Added /r to kill print server connections.
   o	Added /d to do a dummy run i.e. go through the motions without
	clearing connections.

2. Bugs fixed

   (a) Renobj
    o	Due to a minor bungle, the original version would only rename users,
	groups and printservers. It will now rename any object.

   (b) Trstlist
    o	When displaying trustee rights for users it would not display the
	supervisory right if the user had been granted it. This was a
	limitation of the API used and has been worked around.
    o	When displaying trustee rights for users, incorrect rights would
	sometimes be displayed e.g. RWC could be displayed when the user had
	only C. This appears to be a bug in the API and has been worked around.
    o	Previously, when /b was used trstlist would produce 'grant' commands
	for all trustee assignments, even when the trustee object was not a
	user or a group. This would occur when showing trustees for
	subdirectories of SYS:SYSTEM where print servers are granted rights.
	Novell's grant.exe cannot assign trustees to objects other than users
	or groups. Trstlist now prefixes a grant command for other objects
	with 'rem' turning the output line into a comment when saved as a BAT
	file. This prevents errors when running the BAT file, and at the same
	time indicates to anyone scanning the file that there are trustee
	rights which cannot be restored via grant.exe.
    o	When using /b, no grant command was produced where a user was granted
	no rights to a directory i.e. the user was a trustee without rights.
	Trstlist now outputs 'grant n for <dir> to <object>'.
    o	Trstlist would previously not scan all volumes when volume numbers
	were not consecutive i.e. a volume other than the last one defined
	was dismounted or had been deleted.

   (c) Users.exe
    o	NW 2.2 uses connection numbers above the maximum for VAPs e.g. in
	100 user NW 2.2, connections 101 - 116 can be used by VAPs. When /c
	was used, USERS previously did not scan those connection numbers
	under NW 2.2.
    o	NW 3.x allows 100 connection numbers above the maximum for NLMs.
	Previously, USERS only checked the first 5 above the maximum when /c
	was used. It now checks all 100.
    o	Options /t and /j (as documented in the manual) have been added.

   (d) Delobj
    o	Will now delete the queue directory when deleting a queue with jobs
	enqueued.

   (e) Grplist
    o	The previous version would display garbage when sorting was requested
	and the group had no members. This is fixed.

   (f) Creatobj
    o	Sets a NULL password when a user or printserver is created.
    o	Fixed a bug where an ACCOUNT_BALANCE property was not created when
	accounting is enabled. Each user is now given the default balance and
	credit limit set in the Default Restrictions under Supervisor Options
	in SYSCON.
    o	Fixed a bug where new users did not have 'unique passwords required'
	if this was set as a default in Default Restrictions under Supervisor
	Options in SYSCON.
    o	A cosmetic change, to remove an extraneous slash from the home
	directory path stored in the HOME_DIR property when the home
	directory is a first level directory e.g. vol2:bloggs was previously
	stored as vol2:/bloggs.

   (f) Dquota
    o	The warning for out-of-space was not displayed when the space
	available was negative.
    o	Dquota would previously not scan all volumes (for /v) when volume
	numbers were not consecutive i.e. a volume other than the last one
	defined was dismounted or had been deleted.

   (g) Setacres
    o	The description of the file used for setting time restrictions was
	accidentally omitted from the in-built help. This has been inserted.

    (h)	Getacres
    o	An incorrect total was given when selecting users by station
	restrictions.



JRBUTILS v2.0    7-Oct-1992

1. Programs added

   (a) SETOWNER changes file ownership for multiple users, entire directory
       trees, or for individual files.
   (b) GETSECEQ displays security equivalences for multiple users,
       identifies who is security equivalent to a named user, or lists users
       whose security has been modified by SUPER.EXE.
   (c) RENOBJ renames bindery objects of any type.
   (d) LISTOBJ lists all objects of the specified type, or all objects
       in the bindery, with optional sorting.
   (e) DELOBJ deletes bindery objects.
   (f) CREATOBJ creates bindery objects.
   (g) SETFNAME sets the full name for a user, group or print server.
   (h) PWDEXP is for use in a login script and warns of impending
       password expiration.
   (i) TRSTLIST lists trustees for users, groups, files or directories.
       It will optionally produce output in the form of GRANT commands.
   (j) KILLCONN kills server connections.
   (k) DOWNSRVR downs a file server.

2. New Features

   (a) All programs (where applicable)
       1. Can 'page up' when displaying in-built help.
       2. When specifying a filename, it can be pre-fixed with '@' rather
	  than using /f.
       3. Suppress prompts when redirection of output is detected.
       4. Where text values are given for a parameter, e.g. 'none' for a
	  disk quota, or 'unlimited' for the maximum concurrent connections,
	  the text value may be abbreviated to any shorter unambiguous value
	  e.g. 'none' may be given as 'none', 'non', 'no', or 'n'.
       5. When errors occur, an error count is given at the end of output.
       6. When filtering output, the number of users found (in the group,
	  file, etc) and the number of users selected according to the
	  filtering criteria are reported.
       7. In programs which do something with subdirectories of a directory,
	  instead of using both /d and /s, s is now a value associated with
	  /d and you would specify /d=s. This allows /s to be reserved for
	  sorting.

   (b) GRPADDU
       1. Will create the group if requested.
       2. Can add all members of one group to another.
       3. Can specify '*' to add all users on the server.
       4. Can now specify multiple files of users to be added, or
	  multiple groups whose members are to be added.
       5. Can use /p to page output where lots of users are added.
       6. Can use /q to query whether to each user.
   (c) GRPDELU
       1. Will delete the group from the bindery if requested.
       2. Can delete all members of one group from another.
       3. Can specify '*' to delete all members of a group.
       4. Can specify multiple files of users to be deleted, or
	  multiple groups whose users are to be deleted from the
	  specified group.
       5. Can use /p to page output when deleting lots of users.
       6. Can use /q to query whether to delete each user.
   (d) GRPLIST
       1. Can use /u to suppress full names. When used with /j and /f,
	  a file containing only usernames is produced.
       2. Can use /t to display only the total users in the group.
   (e) DQUOTA
       1. Can now display a volume quota under NW 3.x for a single volume.
	  The volume can be given on the command line or retrieved from the
	  user's HOME_DIR property.
       2. Can display output in bytes, blocks, KB or MB.
       3. Can suppress 'lack of space available' warnings.
       4. Can set 'lack of space available' warning threshold.
       5. Displays free space on the volume for directory quotas when no
	  quota is set.
       6. Now have complete control over output. You can suppress any
	  categories of output (quota, used or free), control the order
	  output, suppress leading text, headers, blanks, commas in
	  numeric values.
   (f) SETQUOTA (was SDQUOTA)
       1. Can set a quota on all subdirectories of a directory.
       2. Can specify the quota in bytes, blocks, KB or MB.
       3. Remove a quota by specifying 'none' rather than -1.
       4. Can now include a volume and quota in a file in addition to
	  usernames, allowing different users to get different quotas.
   (g) GETQUOTA (was NQUOTA)
       1. Can now sort output into ascending or descending order by
	  username or directory, quota, space used or space free. When
	  sorting by quota, used or free, output is subsorted by username
	  or directory.
       2. When filtering output, the threshold value can be given in bytes,
	  blocks, KB or MB.
       3. Output values can be in bytes, blocks, KB or MB.
       4. Now gives totals for quotas allocated and space used.
       5. Can use /t to get totals only.
       6. Can now select any combination of quota, used and free to be
	  output in the order you specify.
       7. Can now control text preceding values i.e. whether username,
	  fullname, directory, volume etc is displayed.
       8. Has an option (/k) which produces output suitable for input
	  to SETQUOTA.
   (h) SETPWORD
       1. Can specify '*' meaning all users on the server.
       2. Can use /p to page output.
       3. Supports encrypted password calls.
   (i) GETACRES
       1. Can sort output by value into ascending or descending order for
	  all restrictions except time restrictions and station
	  restrictions.
   (j) CHKHOME (was CHEKHOME)
       1. Can specify '*' meaning all users on the server.
       2. Can specify a list of users and/or groups, or directories in
	  a file.
       3. Can use /p to page output.
   (k) USERS
       1. Supports encrypted password calls.
       2. When /c used under 3.x, connections used by NLMs are shown.
       3. Supports connection numbers greater than 255.

3. Bugs Fixed

   (a) GETACRES displayed Next Reset Time incorrectly.
   (b) SETACRES didn't set Next Reset Time at all.
   (c) SETACRES when setting time restrictions, and reading the restriction
       pattern from a file, would blank the last character on a line, if
       the line contained less than 48 characters.
   (d) USERS previously would not locate LOCATION.SRT on a network drive
       when the current drive was a local drive. In this situation, it
       will now look for LOCATION.SRT in the same directory as USERS.EXE.
   (e) All programs work correctly when SHOW DOTS=ON used in SHELL.CFG or
       NET.CFG.
   (f) All programs where you can specify a path now work correctly if that
       path is mapped to another server.

JRBUTILS v1.2     5-Dec-1991

1. Programs added

   (a) GETACRES displays account restrictions, station restrictions and
       time restrictions for multiple users.
   (b) SETACRES sets account restrictions, station restrictions and
       time restrictions for multiple users.
   (c) GRPADDU adds one or more users to a group.
   (d) GRPDELU deletes one or more users from a group.

2. New Features

   (a) GRPLIST has been rewritten and now does sorting internally. You
       may also specify '*' instead of a group name to list all users
       on the server.
   (b) NQUOTA and SDQUOTA now allow you to enter '*' instead of a group
       name, username or filename, to process all users on the server.
   (c) NQUOTA and SDQUOTA now allow you to use /p to page output to the
       screen.
   (d) DQUOTA, NQUOTA and SDQUOTA now behave appropriately under 2.1x and
       2.2 when 'Limit Disk Space' was not chosen during installation.
   (e) USERS has a new option /x to allow you to display only those users
       or connections for which there is no entry in LOCATION.SRT. This
       may be useful for maintaining the database.
   (f) USERS has a number of enhancements e.g. when /c is used, the
       total connections, the number of connections with users logged in
       and the number of unused connections is given. USERS now retrieves
       the command line from the Program Segment Prefix allowing multiple
       spaces to be handled correctly e.g users /l="h228  1". There are
       other changes which I cant recall.
   (g) Lots of minor changes and improvements e.g. improved error messages.

-------------------------------------------------------------------------

Changes 1-Aug-1991

1. Programs added

   (a) NQUOTA displays disk quotas/disk used/disk free for multiple users.
   (b) CHEKHOME is used in conjunction with David Harris' SETHOME.

2. Bugs Fixed

   (a) DQUOTA displayed incorrect free space for volume quotas under NW
       3.x when a user had no quota set on a volume. In this situation it
       displays the free space on the volume.
   (b) USERS did not always correctly detect the maximum number of
       connections for the particular version of Netware.
   (c) USERS /a displayed the previous connection's network address for
       an NLM, or garbage if the NLM had connection 1.

3. New Features

   (a) USERS can display logins for members of selected groups.
   (b) USERS can display logins or connections on all servers to which the
       workstation is currently attached (previously it did the current
       server, selected servers or all servers on the net).
   (c) USERS can optionally display 30 character locations.
   (d) USERS now accepts network addresses in addition to station addresses
       in location.srt.
   (e) DQUOTA displays disk usage under NW 2.1x when the user does not
       have a quota set.
   (e) DQUOTA, SDQUOTA and USERS have had their command line parsing
       improved. Options may now be preceded by / or -, and invalid
       options are rejected rather than ignored.

4. Miscellaneous

   A number of the programs are designed to work in conjunction with David
   Harris' SETHOME utility which stores a user's home directory in a
   bindery property named HOME_DIR. Because of this I have included, with
   David's permission, SETHOME and HOME. They are described in SETHOME.TXT.

