Whats new in V4.00


New programs

o  Getname. The converse of setname - it displays the same attributes which
   may be set by setname, plus a wide range of others. It also allows use
   of a template file with substitution parameters so that multiple
   attributes for each object can be retrieved and formatted in any way.

o  Nsrename. Allows renaming of files and directories in any name space
   without affecting the name in other name spaces. It requires NW 3.12
   or NW 4.x.

o  Schema. Displays object classes and their definitions, attributes
   and their rules, plus (optionally) the object classes for which
   each attribute is valid.

o  Orgroles. Add occupants to, removes occupants from and lists the
   occupants of organizational roles.

o  Delprop. Can delete any property which NetWare allows to be deleted
   from any type of bindery object.

o  Scanprop. Lists the properties of any type of bindery object giving
   their type ('item' or 'set'), whether they are static or dynamic,
   and their security. Displaying the contents is optional. Scanprop
   can decode the contents of all well known properties and those which
   it cannot decode are displayed in hexadecimal.

o  Serv_cmd. Allows various commands to be executed on the file server
   such as loading and unloading NLMs, mounting and dismounting volumes,
   executing an NCF file, adding a name space to a volume, and displaying
   loaded NLMs and the current values of SET parameters.


Programs to which NDS support has been added

o  Accexp

o  Getequiv

o  Jrbmap

o  Pwdexp

o  Setequiv


32 bit versions of JRButils

o  32 bit versions of most programs for use under Windows NT and Windows
   95 clients are included in this release. These may run faster under some
   circumstances, do not have the memory limitations of the 16 bit versions
   allowing sorting of large numbers of items and the use of a more
   efficient sorting algorithm. They may also be run from CGI scripts.


Modifications common to multiple programs

o  /k now clears connections to other servers to which the program has
   authenticated. Previously it would only clear bindery based connections.

o  Added a check for a valid server connection. Under NETX and the VLMs
   this was unnecessary as they failed to load if a server could not be
   found, and all programs checked if they were loaded. However client32
   will load even when a server cannot be found so the extra check is
   necessary to ensure a meaningful error message is given. 

o  All programs retrieving a path from the "Home Directory" attribute
   can now cope with the path being in a non-DOS name space. They also
   cope with the fact that nwadmin-NT and nwadmin-95 place a path in the
   "Home Directory" attribute in the LONG name space when it is loaded on
   the target volume, but set the name space field to DOS.

o  All programs accepting a path as a parameter or as a value for an
   option can now accept paths in the LONG name space in addition to
   the DOS name space. Each program will first check the validity of
   the path in the LONG name space if that is loaded on the volume. If
   that fails, a DOS path is assumed. All programs work with DOS paths
   internally, and currently DOS paths are given in any output except
   for sethome2 and chkhome where path names are given in the name
   space in which they are stored in the "Home Directory" attribute.
   A limitation exists when a LONG path includes a file name with
   wild cards. A filename without wild cards can be converted to a DOS
   name, but one containing wild cards cannot. As the programs work with
   DOS names internally, a file name containing wild cards must be a DOS
   name e.g. vol1:photography\hippo* is valid,
   vol1:photography\hippotamus23 is also valid but
   vol1:photography\hippopotamus* is not as a search for DOS names 
   matching hippopotamus* will fail.

o  Added support for Template objects to various programs such as
   grpadd, grpdel, getbal, setbal, getrest, setrest etc. They will
   allow values to be set/viewed for a single template object, but
   currently there is no means to use wild cards with template
   objects. For the wild carded name, the object class 'User' will
   be assumed.

o  Added support for video mode settings of 43 and 50 lines per screen.

o  In the 32 bit versions of programs which are likely to sort large
   numbers of items (e.g. listobj, getrest), extra code has been added
   to do faster sorts. Items to be sorted are stored in a linked list
   and the default is to do a bubble sort which is very inefficient.
   To sort by any other method requires extra code and extra available
   memory to convert the linked list to an array. Hence, its implementation
   only in the 32 bit versions.


Modifications to individual programs

Accexp

o  Added /l and /e for compatibility with other programs.

Chkhome

o  Fixed a problem where /v=d was not working.

o  Changed /x (for specifying a context to search from when locating users)
   to /z.

o  Added (new) /x to allow searching of subcontainers when <entity> is
   an NDS object.

Copyuser

o  Modified to copy sparse files correctly.

Creatobj

o  Fixed a cosmetic problem where it was reporting "Null pointer assignment"
   upon exit when /d was used. This was caused by an attempt to free the
   same block of memory twice during the final tidyup before exit.

o  Creatobj was reporting an error when using /m and a username was
   specified without a preceding server name. It now accepts both
   /m=john and /m=yogi\john.

o  Creatobj-NDS was failing to grant R rights to [Root] for the "Members"
   attribute when creating NDS groups.

o  Fixed some problems in creatobj-NDS when creating a user in NDS mode
    and using /b. Under some circumstances, it would attempt to create
    the mail directory on the wrong server, and to add the user to the
    wrong EVERYONE group.

o  Added /$ to creatobj-NDS to force it to convert the case of the name
   of the object so that the first character is uppercase and the
   remainder are lowercase.

o  Fixed a problem when /n was given the name of an object of class
   'template'. Creatobj was complaining that it must be a user.

o  Added support for the various new attributes specific to template
   objects. Most of these are intended to provide rights and
   restrictions to be applied to new users without them actually
   applying to the template itself. For example, trustee assignments
   and volume restrictions can be stored in such attributes. The
   only known attribute not supported is the "Setup Script". Creatobj
   will give an error if the "Run Setup Script" attribute has a value
   of 'true'.

o  Added support for creating application objects. The path to the
   application must be specified via /d and the caption will be set to
   the application object's name. No other fields can be set.

Delobj

o  Added /b for use in NDS mode, to force dereferencing of alias
   objects. The default is not to.

Dquota

o  Modified it to allow displaying of quotas on the directory used
   by the NDS aware version of Pegasus Mail. This is the PMAIL
   subdirectory of the user's home directory. The home directory is
   obtained from the bindery HOME_DIR property or the NDS "Home
   "Directory" attribute. Use /m=n to display quotas on these
   directories.

Fsupdate

o  When using /d and the path did not include a file name, fsupdate
   would sometimes fail to attempt to delete any files, and then give
   errors because it could not delete non-empty directories. This was
   caused by appending '/*' to the path when space had not been
   reserved for the extra two characters.

o  Fsupdate did not attempt to retain file ownership if the person running
   it was not supervisor equivalent (bindery mode) or had supervisory
   rights to their own object (NDS). As I have just found that having
   supervisory directory rights allows changing ownership, fsupdate will
   now retain ownership when copying files if the user has supervisory
   directory rights but not supervisory bindery or NDS rights.

o  Corrected a problem where /o did not allow overwriting of files
   flagged transactional.

o  Modified so that "*." now selects all files without an extension.
   Previously it selected all files.

o  Enabled the use of /s with /r and /d when file names are given. e.g.
   fsupdate vol1:phone.exe /d/s would delete all copies of phone.exe
   from vol1:.

o  Corrected a problem where /o did not allow deleting of files
   flagged delete inhibit but not read only, or files flagged
   transactional.

o  Added /n to allow suppression of default actions
     /n=s  Suppress checking the available space before copying each file
     /n=w  Suppress warnings that files owned by the LONG, NFS or FTAM
           name space may not be copied correctly.

o  Modified so that when using /m trustee assignments are also mirrored
   when /t is used. Previously, trustee assignments were copied, but
   those already in the target directory, but not in the source directory
   were not removed.

o  Modified to copy sparse files correctly.

Getbal

o  Modified so that non-existent values for balances and accounting
   holds are no longer treated as errors, and can now be used in filters
   e.g. 'getbal * b = none'. This allows usercodes meeting this
   criteria to be output in a form which can be input to setbal.

o  Modified to allow displaying of balances and credit limits for
   print servers.

Getequiv

o  Added another check when /c is used. Getequiv will now also report
   when a bindery object has more than 32 security equivalences.

o  Added /n to provide a more flexible range of output options.

o  Added other options for use in NDS mode.

Getquota

o  Modified it to allow displaying of quotas on the directory used
   by the NDS aware version of Pegasus Mail. This is the PMAIL
   subdirectory of the user's home directory. The home directory is
   obtained from the bindery HOME_DIR property or the NDS "Home
   "Directory" attribute. Use /m=n to display quotas on these
   directories.

o  Changed the existing use of /x to /r.

o  Added (new) /x to allow processing users in subcontainers of the
   specified container when [entity] is an NDS object.

Getrest

o  In NDS mode, getrest-NDS would sometimes behave unpredictably when
   displaying station restrictions, due to an uninitialized pointer.

o  Modified getrest so that when filtering on restrictions with
   date/time values, it does not do an exact match down to the last
   second e.g. 'getrest .*.sales.acne lld eq 25-feb-97' would
   assume a time of 00:00:00 and previously produce a match for actual
   last login dates and times of exactly 25-feb-97 00:00:00'. Now
   it uses a range for any unspecified part of the time so that
   'lld eq 25-feb-97' would match 25-feb-97 00:00:00 through 25-feb-97
   23:59:59, and 'lld eq 25-feb-97 10:23' would match 25-feb-97 10:23:00
   through 25-feb-97 10:23:59. Note that if you specify zeros in the
   time e.g. 10:23:0 it will do an exact match.

o  Fixed a problem where getrest could display a value of 'no' for
   "user can change password" when nwadmin/netadmin showed 'yes'. The
   problem arose where no attribute existed. Normally for a boolean type
   attribute, the absence of the attribute is equivalent to a value of
   'false', but for this particular attribute, the absence of the
   attribute is treated the same as a value of 'true'.

o  Modified to allow dates given as 'today', 'tomorrow' and 'yesterday'
   to be followed by a signed integer representing an adjustment in
   days e.g. "tod-30".

Grpadd

o  Fixed a problem where grpadd-NDS was not assigning R rights for [Root]
   to the "Members" attribute after creating a group.

o  Added /w to check the number of security equivalences before or after
   adding a member to a group. When /w is used without a value, a warning
   is given when a bindery user has more than 32 security equivalences
   after being added to the group. When /w is given a value, the user
   will not be added to the group when he/she already has 32 or more
   security equivalences. When a user's rights are calculated under NW
   2.x and 3.x, only the first 32 security equivalences are considered.
   /w is ignored in NDS mode.

Grplist

o  Modified so that when listing members for multiple groups, the groups
   are sorted alphabetically.

o  Added /x to allow searching of subcontainers for groups, and when /u
   is used.

o  Fixed a problem when using an input file, where it always operated
   in bindery mode.

Home2

o  Added /d to allow specifying a drive letter to be mapped to the home
   or mail directory. Previously only the current drive could be mapped.

Jrbpurge

o  Modified to allow dates for /m given as 'today', 'tomorrow' and
   'yesterday' to be followed by a signed integer representing an
   adjustment in days e.g. /m="tod-30". Note that when using a negative
   adjustment, it must be enclosed in double quotes to prevent the '-'
   being interpreted as the beginning of another option.

o  Added /q to query whether or not to purge files.

Killconn

o  Added /b allowing the clearing of connections which have been logged
   in for longer than or less than the specified time. The time is given
   in days, hours and minutes e.g. /b=1:0:0 would result in the clearing
   of connections which have been logged in for more than 1 day (24 hours).
   To specify 'less than', prefix the time with a '-' and enclose the
   time in double quotes to prevent the '-' being interpreted as denoting
   a new option e.g. /b="-0:5:0" would clear connections logged in for
   less than 5 hours.

o  Added /g to allowing clearing of user connections where the users
   are members of one or more groups e.g. 'killconn * /g=econ,maths'
   would clear all user connections where the users were members of
   either the maths or econ groups.

Killzero

o  Fixed a bug where killzero would delete Mac files with a zero
   length data fork but a non-zero length resource fork. The same was
   presumably true of FTAM files (does anyone use this name space?).
   Because I have not figured how to determine the length of the second
   data stream for an FTAM file, killzero will now not delete any files
   owned by this name space.

o  Fixed a bug where the use of /r was causing files to be deleted
   rather than retained (how embarassing!)

o  Changed the existing /x to /z.

o  Added (new) /x to allow processing users in subcontainers of the
   specified container when [entity] is an NDS object.

Lscripts

o  Added support via /u for copying print job configurations from
   PRINTCON.DAT/PRINTJOB.DAT in the mail directory into the NDS "Print
   Job Configuration" attribute and vice versa.

o  Added support for viewing print job configurations.

Makememb

o  Fixed a problem where makememb-NDS was not assigning R rights for
   [Root] to the "Members" attribute after creating a group.

o  Added /w to check the number of security equivalences before or after
   adding a member to a group. When /w is used without a value, a warning
   is given when a bindery user has more than 32 security equivalences
   after being added to the group. When /w is given a value, the user
   will not be added to the group when he/she already has 32 or more
   security equivalences. When a user's rights are calculated under NW
   2.x and 3.x, only the first 32 security equivalences are considered.
   /w is ignored in NDS mode.

Move_obj

o  Modified to allow the destination context to be omitted from the
   command line when using an input file, and a destination context to
   be given on each line in the input file.

o  Added /b for use in NDS mode, to force dereferencing of alias
   objects. The default is not to.

Netcopy

o  Netcopy did not attempt to retain file ownership if the person running
   it was not supervisor equivalent (bindery mode) or had supervisory
   rights to their own object (NDS). As I have just found that having
   supervisory directory rights allows changing ownership, netcopy will
   now retain ownership when copying files if the user has supervisory
   directory rights, but not supervisory bindery or NDS rights.

o  /o did not allow overwriting of files flagged transactional.

o  Fixed a problem where netcopy was ignoring a trailing '.' on a file
    name so that it was copying all matching files rather than only those
    files without extensions.

o  Modified to allow a file name to be specified as part of the
   destination path when the source path includes a file name (without
   wild cards) so that a file can be renamed as it is copied.
   This feature works only for files owned by the DOS name space. If
   the file specified on the input side is found to belong to any
   other name space, the output file name is ignored.

o  Fixed a problem when using /c. Netcopy would correctly create the
   target directory if required and copy the DOS attributes from the
   source directory. However, if the source directory was not owned by the
   DOS name space, any name space information for the source directory
   was not copied, and the directory created would be owned by DOS.

o  Added /n=i to overcome a problem copying from CDROMs mounted as NW
   volumes. Files/directories on CDROM may appear to have incomplete 
   inherited rights masks e.g. [SR    F ], and it is usually desirable
   to copy these with a IRM of [SRWCEMFA]. Use /n=i to prevent copying
   of IRMs and to set them to [SRWCEMFA] instead.

o  Modified to copy sparse files correctly.

OpenFile

o  Added /z for use with /d to clear the connections holding a file open.

o  Added /q for use with /d and /z to query whether or not to clear each
   connection.

o  Added /h to force an error level of 1 to be set when one or more open
   files are found. Use of /h results in error levels of 0 if an error
   occurs preventing the search for open files.

o  Added /d=t to allow searching for open files in the directory pointed
   to by <entity> and all its subdirectories, rather than just in that
   directory.

o  Modified so that it no longer gives an error when retrieving the path
   associated with an open file because the user running openfile has
   no rights to the directory. Instead it displays the open file as
   'VOL1:[Path unavailable]/WHATEVER.EXE'. This situation typically
   occurs when the user is a console operator but does not have
   supervisory rights to the volumes.

o  Added /m to display locking information for open files.

Pqmovjob

o  Modified to assume that when the queue's directory cannot be read from
   the bindery due to lack of rights, the queue directory is
   SYS:SYSTEM/xxxxxxxx.QDR where xxxxxxxx is the queue's object ID.
   Previously, pqmovjob would exit with an error when the queue directory
   could not be retrieved.

Pqreljob

o  All versions were displaying garbage for the owner in the prompt
   when using /q.

o  All versions were failing to correctly detect whether the person
   running pqreljob was a queue user or operator. The test failed if
   the person was an operator or user due to group membership or being
   security equivalent to a operator or user.

Pradd

o  A value specifying the printer type can now be given for /c allowing
   a default configuration to be assigned when a printer is created.

Profiles

o  Modified so that by default 'profiles' grants/removes rights to the
   profile object's login script.

o  Added /n to suppress modification of rights to the profile's login
   script.

o  Added /v to view the users of the profile. Note that by default,
   the users are obtained by scanning the objects with read rights
   to the profile's login script. This should produce an accurate
   list, but if the rights are granted in a non-standard way, it
   will not. The alternative is to scan the NDS tree and 'profiles'
   will do this when /v is given a value corresponding to the context
   at which to begin the search e.g. /v=[root].

Pwdexp

o  Added /l and /e for compatibility with other programs.

Renobj

o  Added /n to prevent renaming home directories when renaming users.

o  Fixed a problem where renobj was failing to recognise an existing
   bindery connection to another server when the server name was given
   in lowercase e.g. 'renobj yogi/jbaird bairdj'.

o  Added /c to allow changing of the case of existing NDS object names
   to (a) all lowercase, (b) all uppercase or (c) mixed i.e. the first
   character uppercase and the rest lowercase.

o  Modified to allow the use of wild cards in NDS object names for use
   with /c.

o  Added support for /o in NDS mode for use with /c and wild cards, so that
   the case of names can be changed for any class of object.

o  Added /b for use in NDS mode, to force dereferencing of alias
   objects. The default is not to.

Requests

o  Fixed a problem where it would not show statistics for any connections
   on a NW 4.x server without any replicas. This was caused by the failure
   of a bindery function for getting connection information due to the
   lack of a bindery context.

Salvlist

o  Modified to allow dates for /m given as 'today', 'tomorrow' and
   'yesterday' to be followed by a signed integer representing an
   adjustment in days e.g. /m="tod-30". Note that when using a negative
   adjustment, it must be enclosed in double quotes to prevent the '-'
   being interpreted as the beginning of another option.

Setacl

o  Modified to allow a trustee name and rights to be specified when
   using /v so that the output can be filtered on these values. Any
   value for rights will be treated as object rights.

o  Added /a for use with /v to allow filtering on attribute rights.
   It is possible to filter on both object and attribute rights at
   the same time.

o  Added /b for use with /v to force output for each object denoted
   by <entity> even when there are no matching ACLs. By default no
   output is produced where there are no matching ACLs.

o  Added /r to search the tree from [Root] for objects matching
   <entity>. /r would normally be used with /x and <entity> should
   be a common name without a context.

o  Added /x to scan all containers below that containing <entity>,
   or below [Root] if /r is used.

o  Added a value for /v (/v=a) to provide an alternative more compact
   output format when displaying ACLs for multiple objects.

o  Modified to allow 'N' to be specified as a value for rights allowing
   an ACL to be created containing no rights.

o  Fixed a problem occuring after installation of Groupwise 5.1 where
   setacl reported that the server was out of memory. Groupwise
   extends the schema sufficiently to result in setacl's buffer being
   too small when checking that the attribute given was valid for
   the object class.

Setbal

o  Added /h which will remove accounting holds. This is not normally
   necessary, but a problem in the .exe version of Pcounter from A.N.D.
   Technologies has caused it to leave these in existence.

o  Added support for setting balances and credit limits for print
   servers. 

Setcx

o  Added /q to force setcx to prompt for an object name to search for.

o  Added /u to allow the object name to be stored in the DOS
   environment. The default variable name is USER, but an alternative 
   may be specified by giving a value to /u e.g. /u=username.

o  Added /y to control the format of the username placed in the
   environment.

o  Added /o to specify the class of object to locate e.g. /o=ncp_server.
   Any object class may be given, and /o=any may be used where the object
   class is unknown.

Sethome2

o  Fixed a problem where the bindery only version and sethome2-NDS in
   bindery mode were failing to work when using an input file due to
   a failure to validate the path, leaving variables holding path
   components uninitialized.

o  Modified to allow a value to be given to /c. The value represents the
   trustee rights to be assigned to the directory e.g. /c=[RWCEMF]. The
   brackets are optional, the default is /c=[RWCEMFA], use /c=[] to
   assign no rights, use /c=x to not set a trustee assignment or to
   remove a trustee assignment. Note that the value specified via /c
   is set regardless of whether the directory existed previously or
   not, allowing trustee assignments to be set or removed for existing
   directories.

o  Added options /h and /i to overcome a problem where a customer reported
   an application failed to use the contents of the "Home Directory"
   attribute because of the forward slashes (/) placed in the path by
   sethome2. /h can now be used to force the use of back slashes (\) and
   /i can be used to change the slashes in existing attribute values. Use
   /i=b to change to back slashes, /i=f to change to forward slashes.

o  Added /r to allow copying of the home directory path from the "Home
   Directory" attribute to the bindery HOME_DIR property.

o  Fixed a problem combining /c (create the directory) with /a (an
   absolute path was given) where it was failing to create the directory.

o  Added /n to allow the path to be stored in the "Home Directory" attribute
   in any name space loaded on the volume. The path given on the command
   line may be in the DOS or LONG space and the path will be placed in
   the "Home Directory" attribute in the same name space unless /n is used.

o  Added /t to allow creation of home directories without setting the
   "Home Directory" attribute or HOME_DIR bindery property. /t must be
   used with /c. This feature may be useful to create a temporary set
   of directories for a bunch of users.

Setname

o  Added /t to force truncation of the text where it exceeds the maximum
   length for the attribute.

o  Fixed a problem occuring after installation of Groupwise 5.1 where
   setname reported that the server was out of memory. Groupwise
   extends the schema sufficiently to result in setname's buffer being
   too small when checking that the attribute given was valid for
   the object class.

o  Modified and extended the behaviour of /c. Previously, it converted
   attribute values to lowercase, only where the value was entirely
   uppercase. Now it can take one of 3 values to do the following:
      l  Change the value to entirely lowercase
      m  Mixed - change the first letter of each word to uppercase,
         the rest to lowercase
      u  Change the value to entirely uppercase
   Note that /c will make changes now regardless of the case of the
   existing value(s).

o  Modified to allow more attributes to be set and to allow synonyms
   for some attribute names. The synonyms are typically field names
   used by netadmin or nwadmin. They are:

     Attribute name                    Synonym

     CN                                Login name
                                       Other name
     Surname                           Last name
     OU                                Department
     SA                                Street address
     Physical Delivery Ofice Name      City
     S                                 State
                                       Province
     L                                 Locality
                                       Location

   Additional attributes which can be set include 'Facsimile Telephone
   Number', 'Language', and 'EMail Address'. The 'EMail Address'
   attribute can contain both addresses and aliases. Use /a="EMail Alias"
   to set an alias.

   Some flexibility has been provided in specifying attribute or
   synonyms. Specifically, 'faximile' and facsimile' may be used,
   'post' and 'postal' may be used, and both 'email address' and
   'email alias' may be preceded by 'foreign'.

   The behaviour of setname when dealing with common names needs
   explanation. 'CN', 'Login name' and 'Other names' can be used
   interchangeably, although in nwadmin/netadmin 'Login name is
   used to display the first common name and 'Other names' is
   used to display the 2nd and subsequent common names. If you
   specify 'Other names' setname will add the value given, but
   will attempt to replace the value if 'CN' or 'Login name' is
   used without /v. It appears the first common name cannot be deleted
   or replaced so any such attempt will fail.

Setowner

o  Changed /x to /a. /x (now /a) previously allowed setting the ownership
   of only those files without owners. The reason for the change was to
   reallocate /x for consistency with other programs.

o  Added (new) /x to allow searching of subcontainers.

o  Fixed a problem where it would sometimes report "Insufficient space
   or invalid owner" in NDS mode when the directory had been retrieved
   from a user's "Home Directory" attribute and was on a different
   file server from that to which the current drive was mapped.

Setquota

o  Modified it to allow setting of quotas on the directory used
   by the NDS aware version of Pegasus Mail. This is the PMAIL
   subdirectory of the user's home directory. The home directory is
   obtained from the bindery HOME_DIR property or the NDS "Home
   "Directory" attribute. Use /m=n to set quotas on these
   directories.

o  Added /x to allow processing users in subcontainers of the
   specified container when <entity> is an NDS object.

o  Fixed a problem in NDS mode where /h worked correctly only when
   the home directory was on SYS.

Setrest

o  Fixed a problem when manipulating station restrictions under 2.x
   and 3.x when more than 12 station restrictions existed.

o  Found that under NW 4.x, when manipulating station restrictions in
   bindery mode, NetWare may sometimes (its not consistent) return only
   the first 12 station restrictions when more than 12 exist. The new
   restriction must be added to the end of the list, hence the need
   to retrieve the existing restrictions. Setrest will now give an
   error and exit under NW 4.x when it finds 12 or more station
   restrictions exist. In this situation, station restrictions
   should be modified using setrest in NDS mode.

o  Fixed a problem in NDS mode where when setting "user can change
   password" to 'no', it was removing the attribute. This is normal
   behaviour for a boolean attribute as the absence of the attribute
   is usually equivalent to a value of 'false'. However, for this
   particular attribute, the absence of the attribute is treated as
   the equivalent of a value of 'true' by netadmin/nwadmin.

o  Modified to allow dates given as 'today', 'tomorrow' and 'yesterday'
   to be followed by a signed integer representing an adjustment in
   days e.g. "tod-30".

Trstlist

o  Fixed a problem where '$', '#' and '&' prefixing a user or group name
   were being ignored in NDS mode.

o  Fixed a problem where garbage characters appeared in the output when
   combining /d, /s and /z.

o  Added /x to allow searching of subcontainers.

o  Added /n to allow displaying of only those files and/or directories
   without trustees. /n is ignored when <entity> is an object.

Usergrps

o  Added /n=a to allow the groups to be listed one per line. The
   username is displayed on only the first line.

o  Added /n=b to force '[None]' to be output when the user does not belong
   to any groups. This may be helpful when the output from usergrps is
   being used as input to another program or is being processed in some
   way.

o  Added /n=c to allow groups to be displayed one per line with the
   username being displayed on each line.

o  Changed /x (used for excluding groups from the output) to /z.

o  Added (new) /x to allow searching of subcontainers

Users

o  When using /u to show user connections only on a NW 4.x server, it
   was also showing file server connections.

o  Users was not converting addresses from LOCATION.SRT to uppercase
   when reading the file. Consequently a file containing lowercase
   ethernet addresses did not work.

o  Added /f=b to show the connection status (attached, licensed,
   unlicensed) under NW 4.x. This option requires console operator
   status.

o  Modified to show the number of licensed connections in the totals
   under NW 4.x when the user running it has supervisory rights to
   the server, or is a console operator.

Vol_info

o  Added the following new options
      /a Shows volume attributes (suballocation, compression etc) plus the
         name spaces loaded under NW 4.x.
      /b Shows usage information by blocks under NW 3.x and 4.x.
      /d Shows directory entry information under NW 3. and 4.x.
      /s Shows usage information in MB under NW 3.x and 4.x.
   These options may be combined to produce multiple summaries in one
   invocation.

o  Modified the standard output to show the percentage of the volume used
   by directory entries.

Whodidit

o  Whodidit was failing to accept /w as a valid option.

o  Added more fields which can be displayed. The following new values
   may now be assigned to /o:
      e  Indicate if the file has extended attributes
      f  Display the resource fork size for Mac files
      i  Display the inherited rights mask
      j  Display the owning name space
      m  Display the file's search mode (applicable to .exe files only)
      q  Display the quota for directories
      t  Display the total size of the file (data + resource fork)
      w  Display the mac name
      x  Display the nfs name
      y  Display the long name
      z  Display the ftam name

o  Modified /o to allow specification of field widths

o  Added /c to control how much space is allowed for the path or file name.

o  Added filtering so that output can be limited by selecting values for
   any of the fields which can be displayed e.g. it is possible to list
   all files on a volume owned by the Mac name space.

o  Added the ability to use a template file to format the output. The
   file can contain one or more lines of text and substitution
   identifiers representing informational items, the volume, path
   or file name, or any combination of these in any name space. This
   allows commands to be built for files or directories matching some
   filter criteria. For example, whodidit could scan a volume for files
   not accessed during the last 6 months and via the template file, a
   batch file could be created to copy these to some other location and
   then delete them.
