Whats new in JRButils v9.00

New Programs

o  Appadd. Associates users, groups and container objects with ZEN
   application objects.

o  Appdel. Removes associations between users, groups and container
   objects, and ZEN application objects.

o  Gwdlists. Add users to GroupWise distribution lists, removes users
   from distribution lists and displays the members of lists. It may
   also be used to change the participation types of existing list
   members.

o  Jblookup. For locating users in NDS and displaying selected
   attributes specified in a file or chosen from a list. This is
   essentially a much simplified version of getname, but also has
   the ability to search a particular attribute for a given value
   e.g. the "Telephone Number" attribute for "7885". It is intended
   for performing quick lookups on information in NDS. The GUI
   version can be activated form the system tray.

o  Nadusers. Adds users to and removes users from AD forests, domains,
   organizations and organizational units when using Novell Account
   Management with Active Directory. Nadusers also lists the members
   of the previously mentioned AD containers.

o  Polassoc. Lists the associations of ZEN policy objects. This
   program has similar display options to usergrps.

o  Prusers. This displays the queues and operators associated with NDS
   printers. It is for use with pradd and prdel.

o  Wgrpmemb. For use in a batch file to test if a workstation object
   is a member of a workstation group. It has similar functionality
   to grpmemb.

GUI Support

o  Created a fully GUI version of the new jblookup program.

o  Converted whodidit to display the output in a listview and this
   provides considerably greater flexibility for manipulating
   and redisplaying the results.

o  Changed the third party product used to resize all of the component
   windows when the main window. The new product does a much better job.

o  Numerous minor enhancements documented under individual programs.

Changes to multiple programs

o  Fixed an issue in programs accepting a list of file servers to
   perform some operation on, where they could produce an application
   error under certain circumstances in a Pure IP environment.

o  Modified those programs accepting a list of file servers to perform
   some operation on, to also accept a list of servers in a file e.g.
   'users @s.lis/*'.

Changes to individual programs

Accexp

o  Added /c to the GUI version to force the dialog box to be the
   topmost window.

Applist

o  Modified to allow the logical operators '&', '~' and '!' to be
   specified as 'and', 'or' and 'not'. For example "applist (A and B)
   or not C" is equivalent to "applist (A & B) ~ ! C".

o  Added /m to display the members of groups instead of just the group
   object names when groups are associated with each application.

Chkhome

o  Added /o to allow the object class to be specified. Possible values
   are 'user', 'group' and 'template'. This is primarily for use when
   using wild cards for groups or templates.

o  Fixed an issue with locating users corresponding to long directory
   names when using /c and /d.

o  Added /t to force checking that the user has the specified rights
   (e.g. /t=RWCEMF) to their home directory.

Creatobj

o  Fixed an issue where if you specified a server name before an
   object name, but not as part of a home directory path, the home
   directory was not necessarily created on that server e.g.
   'creatobj yogi/mandy.sales /d=vol1:users /h' would create Mandy's
   home directory on the server to which your current drive was mapped
   which may or may not be yogi.

o  Fixed an issue where it did not set a value for "Grace logins
   remaining" when a template specified the grace logins allowed.
   This did not cause problems for the new user, but nwadmin and
   ConsoleOne did not display correctly that a grace login limit was
   set.

o  Added support for creating NIMS:ListUser objects. These have a
   mandatory attribute named "Surname" which is set to equal the
   object name.

o  Updated to work with Novell Account Management 2.1 where an extra
   step is required for the changes to become visible from NT when
   adding a user to an NT domain via a template.

o  Fixed a problem where it was not granting each user rights to a
   profile's login script when setting the profile via a template.

o  The 32 bit versions can now add users into GroupWise via a
   template object.

Deladdr

o  Added /b to delete addresses which it does not not know how to
   decode. Novell have not documented all address types, and from time
   to time, new ones are added.

o  Added the ability to recognise type 8 (UDP) and 9 (TCP) network
   addresses. Note that these differ from Pure IP addresses which are
   type 1.

Delobj

o  Added /w to remove users from GroupWise as well as NDS.

o  Added /$ to force NDS requests to go to a particular server.
   This may be necessary when deleting alias objects in a tree
   containing servers without replicas. If a server without a
   replica receives the request, it may not refer it to a server
   holding a replica.

Domgrps

o  Updated to work with Novell Account Management 2.1 where an extra
   step is required for the changes to become visible from NT.

o  Modified to attempt each step of adding or removing a user from
   a domain group even some have already been done. This allows a
   partial addition or removal to be completed.

Domusers

o  Updated to work with Novell Account Management 2.1 where an extra
   step is required for the changes to become visible from NT.

o  Added /b for use when adding users to a domain. This adds the
   domain object to the user's "IWS:Domain Trustees" attribute allowing
   the account to be administered from NT tools. This setting can also
   be applied when the user is already a domain member.

o  Fixed an issue where it might not remove users from all domain
   groups when removing the user from the domain.

o  Added /v=r to display each domain member's RID (remote ID) when
   displaying members of the domain.

Dquota

o  Fixed a problem where /n=g was not working in the Part D version.

o  Added /n=u to display the units beside each value. This does not
   work with /v due to lack of space across the output line.

o  Added /n=f for some European countries to use periods in place of
   commas and vice versa when displaying numeric values.

o  Updated to attempt to determine whether classic directory quotas
   are enabled for NSS. By default, the server does not return the
   usage for a directory under NSS unless a quota is set, and dquota
   will then calculate the usage itself if required. When classic
   directory quotas are enabled, the usage is calculated and returned
   by the server. Currently, the only means of determining whether
   classic quotas are enabled is to scan the server set commands which
   requires console rights to that server.

Fsupdate

o  Fixed a problem which could occur when copying to NSS volumes,
   where file and directories could be copied to the wrong location.
   See the detailed description under netcopy.

o  Fixed another problem which could occur on NW 5 and possibly NW 6
   where directories could be copied to the wrong location, again due
   to one of the NetWare functions behaving incorrectly. This could
   also cause incorrect behaviour when using /m. The problem is
   described under netcopy.

o  Fixed a problem where it sometimes did not process all files when
   using /f to change attributes.

o  Increased the range of attributes which can be set using /a. In
   addition to the most common attributes which could previously be
   set, the following can also now be used:
     c   copy inhibit
     dc  don't compress
     di  delete inhibit
     dm  don't migrate
     ds  don't suballocate
     ic  immediate compress
     p   purge immediate
     ri  rename inhibit
     t   transactional

o  Modified the behaviour of /a and /b (for setting file and directory
   attributes) so that both '+' and '-' can be used to add and remove
   attributes in the same command. Previously, it would either add or
   remove, not both. When neither '+' nor '-' are used, the attributes
   are set to those specified.

o  Added /$ for use with /d to indicate that a directory has been
   specified rather than a path and file name. By default, if the
   lowest level of the path does not exist, it is assumed to be a
   file name. If /s is also used, fsupdate will scan the directory
   tree looking for files with that name to delete. When /$ is used,
   this will not happen.

o  Fixed an issue where the NetWare client could time out when an
   internal copy took more than 3 minutes. This typically occurred
   only when copying files larger than 100 MB, and has been worked
   around by doing internal copies in 50MB chunks. Previously, the
   entire copy was done by sending a single request to the server.

o  Modified to allow a comma separated list of file names to be given
   when copying, deleting and setting attributes e.g. 'fsupdate
   yogi/vol1:apps\*.exe,*.dll hewey,dewey,louie/vol1:apps'.

o  Modified to copy the modification date and time, and the last access
   date for directories. Previously NetWare did not store these values
   for directories.

o  Modified to attempt to work around a problem caused by server
   based anti virus software configured to scan files after they
   have been written. If the anti virus software opens the file too
   soon after closure, fsupdate cannot set the attributes as this
   action requires that the file be closed. Fsupdate now minimizes
   the delay between closing the file and setting the attributes.


Fsrights

o  Modified to allow multiple servers to be specified and to be able to
   process all volumes on a server. Fsrights now accepts a list of servers
   as per fsupdate, with wild cards allowed and '!' may precede a server
   name to exclude it. When a path is not specified (e.g. hoki,moki/),
   all volumes on the server will be processed.

Getname

o  Worked around a problem displaying common names and other names.
   These are stored in the "CN" attribute with the first value being
   treated as the common name, the second and subsequent, if present,
   as the 'other names'. But NDS does not guarantee to return attribute
   values in a particular order, so an 'other name' could be displayed
   as the common name and vice versa.

o  Modified to display the stream attributes "App:Startup Script" and
   "App:Shutdown Script" as text attributes rather than binary
   attributes.

o  Fixed a problem where it may not show values for attributes of
   type "Octet String". However, it showed them correctly when
   displaying all attributes (/a=*).

o  Fixed an issue where it was not accepting some abbreviated forms
   of attribute names e.g. "internet" for "Internet Email Address".

o  Modified to display the first 100 bytes of attributes of type
   "Octet String" when using a template. These are displayed in full
   when using /a=* and /a=attribute, but were previously ignored for
   other situations e.g. /a="%login %full %bindery_property".

o  Added /z=o to display only the modification timestamp for attribute
   values. This option suppresses displaying of the values whereas /z
   without a value displays both the value and modification timestamp.

o  Added the ability to decode network address entries of type 8
   (UDP), 9 (TCP) and 13 (URL).

o  Added /q to display the attributes given on the command line or in
   the template file in the format used for displaying all attributes.
   Any extra text on the command line, or formatting in the template file
   is ignored.

o  Fixed a problem where getname could give an application error when
   using /z to show attribute modification times, and the attribute
   existed but did not have a value.

o  Improved the display of "App:GUID", "GUID", "Other GUID" and
   "NGW: Visibility" attributes.

o  Removed the old function of /f which was an alternative to preceding
   a file name with '@'.

o  Added a new /f where an attribute name can be specified. This is the
   attribute on which filtering via /n will apply. The attribute does
   not have to be one being displayed, for example you can filter on
   location while displaying telephone numbers. When /n is used without
   /f, filtering will occur on the first attribute displayed other than
   object's name. Note that filtering does not work on object IDs,
   creation and modification dates and "Other names".

o  Modified to check for the existence of a "City" attribute in the
   schema. Previously "City" was mapped to "Physical Delivery Office
   Name", but in eDir 8.5, a "City" attribute was introduced. Now,
   "City" is mapped to "Physical Delivery Office Name" only when there
   is no "City" attribute defined.

o  Modified the way the creator's and modifier's names are displayed.
   Previously they were displayed as they are stored i.e. as typed
   names with commas in place of periods. Now the commas are replaced
   with periods, and they are displayed like other object names,
   depending on the value for /y.

o  Modified to use a much large buffer for displaying attributes of
   type "Octet String". It will now display values up to around 60KB
   in size.

Getquota

o  Modified to place double quotes around paths and object names
   when producing output for setquota. This ensures that setquota
   reads them correctly when they contain spaces.

o  Fixed a problem where /w was not working in DOS versions.

o  Updated to attempt to determine whether classic directory quotas
   are enabled for NSS. By default, the server does not return the
   usage for a directory under NSS unless a quota is set, and getquota
   will then calculate the usage itself if required. When classic
   directory quotas are enabled, the usage is calculated and returned
   by the server. Currently, the only means of determining whether
   classic quotas are enabled is to scan the server set commands which
   requires console rights to that server.

o  Added /x=r to scan the entire tree from [Root] for matching objects.
   This is done in most programs by combining /x and /r, but /r is
   already used, and there are no spare letters.

Getrest

o  Added /b to ignore objects for which the requested attribute does
   not exist. This option is ignored when displaying all account
   restrictions.

o  Modified the way the creator's and modifier's names are displayed.
   Previously they were displayed as they are stored i.e. as typed
   names with commas in place of periods. Now the commas are replaced
   with periods, and they are displayed like other object names,
   depending on the value for /y.

o  Fixed a problem where filtering on network addresses was not
   not working when a value of 'none' was used.

o  Fixed a problem where /u, which forces displaying of usernames only,
   was not working station restrictions and network addresses.

Grplist

o  Modified to allow the logical operators '&', '~' and '!' to be
   specified as 'and', 'or' and 'not'. For example "grplist (A and B)
   or not C" is equivalent to "grplist (A & B) ~ ! C".

Jrbcapt

o  Modified to set a default value of "LPTx" for the job description
   field where x is the port number. By default, the NetWare client
   sets this to "LPT Catch". This setting is now displayed when showing
   the current capture settings.

o  Added /desc to allow a value to be specified for the job description.

o  Fixed a problem where capturing to a queue could result in an "Invalid
   path" error.

o  Modified to show the current capture settings when the only
   parameters given are /local and/or /page. Previously, jrbcapt
   did not do anything when only these parameters were given.

Jrbcx

o  Added /h to allow setting the context in the target tree to that
   in which the user running the program resides. For example if you
   are authenticated to the target tree as carol.sales.ny.abc, your
   context wil be set to sales.ny.abc.

Jrbimprt

o  Fixed a problem introduced in JRButils v8.0 where it was not
   processing volume restrictions in the data file.

o  Fixed a problem where it would not create home directories when also
   setting volume restrictions.

o  Added the ability to set NMAS/NFA simple passwords via the control
   statement "Set simple passwords". The default is not to set these.
   To set simple passwords, cryptographic services must be installed
   on the machine on which jrbimprt is being run. Further, three NMAS
   DLLs (nmas.dll, mnasmsg.dll and legacylogin.dll) are required. These
   are available if the NMAS client has been installed, otherwise they
   can be copied from ConsoleOne's bin directory on any server where
   NFA or NMAS has been installed.

o  Added the control statement "Set nds passwords". This allows the
   setting of NDS for NT, GroupWise, NT domain and/or simple
   passwords without setting NDS passwords. The default is to set
   NDS passwords.

o  Fixed an issue where the NDS password could be set after the password
   expiration time, thereby overwriting the password expiration time
   (setting the password automatically sets the expiration time to
   1/1/1992).

o  Fixed an issue where under some circumstances it would fail to detect
   that a password expiration interval had been set via a template, and
   having detected that a password expiration date had been set, would
   set a default value of 40 for the password expiration interval.

o  Sometimes when processing large numbers of users (500+) the
   connection to a server is lost. While this is almost certainly a
   problem with the NetWare client, jrbimprt has been modified to try
   to detect this at several key points in the program, and to
   reconnect. However, it is totally impractical to check the validity
   of a server connection every time, as there are literally hundreds
   of places in the program where this would need to be done.

o  Modified to ensure that if a grace login limit is set, the grace
   logins remaining are set to the same value, and vice versa. If one
   is set but not the other, ConsoleOne and nwadmin may show neither
   as being set.

o  Added support for setting NT domain passwords for existing domain
   users. The workstation from which jrbimprt is being run must be
   logged into the domain with sufficient privilege.

o  Fixed an issue where it was not correctly handling auxiliary
   classes with mandatory attributes. Values for the mandatory
   attributes must be set in the same request to the server which
   adds the auxiliary class. Note that there are still two outstanding
   problems here. Jrbimprt will not work correctly if the control file
   specifies more than one auxiliary class and two or more of these
   have identical mandatory attributes. Jrbimprt will also not apply
   an auxiliary class from a template where the class has mandatory
   attributes for which the user does not already have values set.

o  Fixed an issue where it would fail to change a value for mandatory
   single valued attributes such as "homeDirectory" for the auxiliary
   class posixAccount.

o  Added a number of new field names which are translated to actual
   attribute names. Most of these are new attributes in eDirectory
   (NDS 8.5 or later). They are:

      Field name                    Attribute

      Access card number            accessCardNumber
      Assistant phone               assistantPhone
      Business category             businessCategory
      Car license                   carLicense
      Cost center                   costCenter
      Cost center description       costCenterDescription
      Country                       co
      Department number             departmentNumber
      Display name                  displayName
      Employee status               employeeStatus
      Employee type                 employeeType
      First name                    Given Name
      Home phone                    homePhone
      Instant messaging ID          instantMessagingID
      Is manager                    isManager
      Mail stop                     mailStop
      Manager workforce ID          managerWorkforceID
      Other phone number            otherPhoneNumber
      Personal title                personalTitle
      Preferred language            preferredLanguage
      Preferred name                preferredName
      Prefix                        personalTitle
      Registered address            registeredAddress
      Room number                   roomNumber
      Site location                 siteLocation
      Suffix                        Generational Qualifier
      Toll free phone number        tollFreePhoneNumber
      Unique ID                     uniqueID
      Workforce ID                  workforceID
      Vehicle information           vehicleInformation

   For other new attributes with single word names e.g. "Mobile",
   "Pager" and "Company", simply use the attribute name as the field
   name.

o  Modified to allow a tab as the separator character. This must be
   specified via the control statement "separator=tab" i.e. use the
   three letters 'tab' rather than a tab character which is treated as
   white space in the control file.

o  Modified to allow distinguished names with a leading period to
   appear in the data file. This allows creating or updating users
   in a different context from that set by the "Name context" control
   statement. Note that relative names (e.g. john.sales.) are not
   allowed.

o  Added a "Search NDS" control statement. This may be useful when
   updating or removing users and the data file is created by a data
   base which does not know the user's contexts. Jrbimprt will search
   the entire tree for the user. This option is ignored for 'create'
   mode, and when the user name is a distinguished name with a leading
   period. An error is given when more than one matching object is
   found.

o  Added the control statement "Home directory attributes" to allow
   attributes such as Di (delete inhibit) and P (purge immediate) to
   be set on the home directory.

o  Fixed a problem where it could cause an application error when
   encountering a missing integer value in the data file.

o  Modified to allow a time to be specified for "Account has expiration
   date" and "Date password expires" e.g. "11/12/03 9:00:00". Previously
   only a date could be specified.

o  Modified to check for the existence of a "City" attribute in the
   schema. Previously "City" was mapped to "Physical Delivery Office
   Name", but in eDir 8.5, a "City" attribute was introduced. Now,
   "City" is mapped to "Physical Delivery Office Name" only when there
   is no "City" attribute defined.

o  Updated to work with Novell Account Management 2.1 where an extra
   step is required when adding users to an NDS for NT domain. This
   update allows the changes to become visible from NT.

o  Added support for Groupwise. Users can be added to or removed from
   GroupWise, added to or removed from GroupWise distribution lists, and
   have their GroupWise password, visibility, mailbox expiration date,
   and description set. Users may be added to GroupWise via a template.
   The following new control statements have been added:
     "Groupwise server path" specifies the path to the database.
     "Groupwise domain object" specifies the name of the domain object.
     "Groupwise post office" specifies the name of the post office.
     "Groupwise add users" adds users into groupwise.
     "Groupwise remove users" removes users from groupwise.
     "Groupwise add distribution lists" gives a list of distribution
        lists to which each user will be added.
     "Groupwise remove distribution lists" gives a list of distribution
        lists from which each user will be removed.
     "Groupwise distribution lists participation" specifies the
        participation type (to, cc, bc) for the lists. It may be used
        when adding members to a list, and to change the participation
        type for existing members.
     "Groupwise set passwords" is self explanatory.
     "Set groupwise passwords" is an alternative to the previous statement.
   One of the first two statements must be present. In addition the
   following field names may be used:
     "Groupwise description" sets the description.
     "Groupwise expiration date" sets the mailbox expiration date.
     "GroupWise password" allows a GroupWise specific password to be set.
     "Groupwise visibility" sets the visibility.

o  Fixed an issue with removing values for "Other names" when "delete
   property=y" was set.

o  Added control statement "Set passwords only on create" for use when
   import mode = 'b' to prevent passwords being set when the object
   is updated. This may be useful when some users in the data file
   have already been created, and you do not want to set the password
   for those users, in case they have already logged in and changed
   their passwords.

o  Fixed a problem where it was not granting each user rights to a
   profile's login script when setting the profile via a template.

o  Modified the method used to scan the tree for objects with the
   same name when /c=t is used. The original method used, required
   more than browse rights to [Root] and so could not be used by local
   administrators with full rights to only a portion of the tree.
   Now /c=t works correctly with only browse rights to [Root].

o  Modified to require an "alias context" statement when the control
   statement "create aliases=y" is used. Previously, the name context
   was used when no "alias context" was specified, which could result
   in jrbimprt trying to create a user and an alias with the same
   name in the same container.

o  Added "Group membership add" and "Group membership remove" control
   statements allowing adding users to and removing users from groups
   without having to place the group names in the data file for each
   user.

o  Added a "Create subdirectory" control statement to compliment the
   existing "Create subdirectories" control statement. This new
   statement allows a comma separated list comprising a subdirectory
   name (which may be multi-levelled), a set of attributes to apply
   to it (e.g. PRiDi), then one or more object name and rights pairs
   for creation of trustee assignments. For example "Create
   subdirectory=data\comp101,diri,jonesk.staff.abc,rwcemf,martinp,rf"
   will create data\comp101 in each users home directory, apply DiRi
   attributes to the comp101 directory, then grant jones.staff.abc
   RWCEMF rights and martinp RF rights to the comp101 directory.

o  Added the ability to remove directory restrictions by specifying
   a value of 'none'.

o  Updated to work correctly with extended characters in object
   names and attribute values.

Jrbpass

o  Added support for setting NMAS/NFA simple passwords. These can be
   set in addition to or instead of NDS, and NDS for NT passwords.
   See further comments under jrbimprt.

o  Modified to append the user's full name in double quotes to the user
   name in the edit box after a search is made. This assists in ensuring
   that you are setting the password for the correct user.

o  Added -n=f as a command line option to prevent appending the full name
   to the user name after a search.

o  Modified to make the search button the first tab stop after the user
   name edit box.

o  Added support for setting NT domain passwords when the user is logged
   into a domain without NDS for NT/Corporate edition/Novell Account
   Management being present.

o  Modified to automatically check the NDS for NT checkbox if the user
   is logged into a domain via NDS for NT.

Killconn

o  Worked around a problem where it was not recognising "not logged in"
   connections under NW 6. The problem was caused by a change in
   behaviour of an API under NW 6.

Listobj

o  Fixed a long standing bug where an application error could result
   from object names longer than 128 characters.

o  Fixed another long standing bug where /n failed when the search
   pattern included spaces.

o  Changed /^ to /+ because the '^' character is interpreted by the
   Windows command line parser whereas '+' is not.

o  Modified the way it displays the name of NLS Product Containers.
   These have a distinguished name of the form "NLS:Product=NetWare 5
   Conn SCL+NLS:Publisher=Novell+NLS:Version=510.O=jrb" and when
   displayed without 'typing' listobj displayed them as "NetWare 5 Conn
   SCL+Novell+510.jrb". However, nwadmin and ConsoleOne displayed them
   as "Novell+NetWare 5 Conn SCL+510.jrb" i.e. the publisher appeared
   first. For unknown reasons, some of the SDK functions used by
   listobj, change the order of the components. Listobj has been
   modified to change them back again. The same applies when displaying
   license certificate objects within the NLS Product License Container.

o  Modified to allow names in files to be enclosed in double quotes.

Lscripts

o  Modified to allow a value for /m when copying login scripts from NDS
   to a mail directory. By default, it will copy the script to the
   server in each user's "Message server" attribute, but you may now
   specify the target server via /m e.g. /m=yogi.

Move_dir

o  Fixed an issue where files and directories could lose their long
   name when being moved.

o  Added the ability to use wild cards. By default it is assumed that
   files are being moved, but /d has been added to indicate whether
   to move files, directories or both that match e.g. 'move_dir j*
   yogi/vol1:shared yogi/vol1:mgmt /dd' will move all directories
   with the first letter 'j' from the shared directory to the mgmt
   directory.

Netcopy

o  Fixed a problem introduced in v8.0 where /o may not work. One line
   of code somehow got lost!

o  Fixed a problem which could occur when copying to NSS volumes,
   where file and directories could be copied to the wrong location.
   The problem occurred when a directory already existed in the target
   directory with the same DOS name as the directory being copied.
   Netcopy attempts to change the DOS name of the newly created
   directory to that of the directory being copied, and the function
   used for renaming was returning 'success' when it had not renamed
   the directory. This problem has been worked around, and it has
   been reported to Novell.

o  Fixed another problem which could occur on NW 5 and possibly NW 6
   where directories could be copied to the wrong location, again due
   to one of the NetWare functions behaving incorrectly. The problem
   occurred when in the same directory, a subdirectory had a long name
   matching the DOS name of another subdirectory e.g. vol1:users\anne
   contained directory 'programme' with DOS name 'PROGRA~1', and also
   contained a directory with long name 'PROGRA~1'. The fault has been
   reported to Novell.

o  Fixed an issue where the NetWare client could time out when an
   internal copy took more than 3 minutes. This typically occurred
   only when copying files larger than 100 MB, and has been worked
   around by doing internal copies in 50MB chunks. Previously, the
   entire copy was done by sending a single request to the server.

o  Modified to copy the modification date and time, and the last
   access date for directories. Previously NetWare did not store
   these values for directories.

o  Modified to attempt to work around a problem caused by server
   based anti virus software configured to scan files after they
   have been written. If the anti virus software opens the file too
   soon after closure, netcopy cannot set the attributes as this
   action requires that the file be closed. Netcopy now minimizes
   the delay between closing the file and setting the attributes.

Openfile

o  Fixed an issue where when using /d=t, openfile would stop
   processing directories after encountering a directory containing
   no matching files.

o  Fixed some minor issues with the display in the fully GUI version
   when changing between selecting objects, connections or files.

o  Fixed a problem in the GUI version where it could sometimes send
   a user a message when it should not have.

Pndel

o  Added /a to do contextless removal of objects. By default, an object
   name to be removed gets expanded to a distinguished name, so '*' for
   example becomes *.sales.ny.abc assuming that your current context is
   sales.ny.abc. Consequently only objects in sales.ny.abc are removed.
   Use /a to prevent the object name being expanded when no context
   information. For example 'pndel ndps_1 * /a' will remove all users
   regardless of their context.

Pnsetup

o  Added /m=d to force removal of the printer's driver files after
   removing the printer.

Profiles

o  Modified /d to allow a context to be specified as per /v. By default,
   when removing users from a profile and wild cards are used, the users
   of the profile are identified by checking the ACLs of the profile
   object granting R rights to the "Login Script" attribute. If those
   ACLs are not present because rights are assigned via a different
   method, the users will not be found. Now, if you specify a context
   with /d (e.g. /d=.sales.sf.abc), the profiles program will scan all
   users in and below this context and check if their "Profile" attribute
   contains the required profile object, and if so remove them from that
   profile.

o  Modified /x to work with adding users to a profile. Previously, it
   could only be used for scanning for profile objects when displaying
   the users of each profile.

Pwdexp

o  Added support for setting simple passwords into the GUI version. See
   further comments under jrbimprt on the workstation requirements to
   set simple passwords.

o  Added support for setting NT domain passwords into the GUI version.

o  Added /o into the GUI version to replace the "Change it now" and
   "Change it later" buttons with a single "OK" button when the password
   is within the expiration period.

o  Added /h and /i to the GUI version to control the checking of password
   check boxes when using /a which prevents the user selecting which
   passwords to set. /h forces checking of the boxes, /i forces
   unchecking of the boxes. Possible values for both are:
     n NetWare
     m NDS for NT, NT domain or local workstation
     s Simple password

Quotas

o  Fixed a problem where it was not automatically changing the fields
   displayed at the start of each line, when changing from displaying
   volume to directory quotas or vice versa, or changing from by user
   to by directory or vice versa.

o  Added support for setting quotas for queues.

o  Fixed various minor problems with defaults not changing when
   switching between setting and displaying quotas, or changing
   between volume and directory quotas.

Renobj

o  Added /w to 32 bit versions to rename users in GroupWise. By
   default when /w is used, users will be renamed in both GroupWise
   and NDS, but /w=g may be used to rename the users only in GroupWise.

o  Added /x for use with /w=g to rename the user in GroupWise to their
   NDS full name.

o  Added /h to allow a delay in seconds to be specified. The delay
   occurs after renaming the user in NDS and before renaming the
   user in GroupWise. This may be necessary to allow replication of
   the NDS rename to occur before doing the rename in GroupWise.

o  Modified /z to allow an attribute name to be specified. Previously,
   /z allowed the old object name to be stored as an "Other name" i.e.
   a second or subsequent entry in the "CN" attribute, but /z can now
   be used to store the old name in any attribute holding a text value
   e.g. /z=description.

Requests

o  Added /f to display each user's full name in parenthesis after their
   object name. This may be useful to help identify the person associated
   with the object name.

Salvlist

o  Added a 'row number' column to the list of possible output columns
   in the GUI version. This may be useful for example, to count off the
   number of zero length deleted files in a directory, or the number
   of files with a given extension such as 'tmp'.

o  Fixed a problem in the GUI version where it was not printing the
   recovered name column.

o  Added the recovered name as a selectable column in the GUI version.
   If this column is not being displayed when a file is recovered, it
   is added as the right-most column.

o  Added a heading and the number of deleted files to the printed output
   from the fully GUI version.

o  Added an option to the GUI version to sort by file or directory
   extension.

o  Fixed an issue where it failed to right justify the first column
   when it contained sizes or row numbers.

o  Added support to the GUI version for saving the contents of the
   list view to a file when clicking on the 'Save' and 'Save as' File
   Menu items. Under 'Save as', three options exits: (a) save at the
   current column widths, (2) save at column widths corresponding to
   the widest item in each column, (3) save in comma delimited form
   with each item in double quotes.

o  Added the same three options above for printing the contents of the
   list view to the GUI version.

o  Implemented page selection when printing

o  Added the following sorting options to the non-GUI versions:
     by creation date and time
     by update date and time
     by last access date
     by attributes
     by inherited rights filter
     by updater

o  Modified the fully GUI version to retain its horizontal and
   vertical scrolling position when a column caption is clicked on
   to sort the column, and when the "redisplay" button is clicked.

Schema

o  Modified so that when using /o to list the object classes for
   which an attribute is valid, it indicates if the object class is
   an auxiliary class.

Setacl

o  Added support for setting and removing ACLs for attributes belonging
   to auxiliary classes.

Sethome2

o  Added support for /g=x. /g is primarily provided as a means
   of creating home directories when the "Home Directory" attribute
   is already set but the actual home directories, for whatever reason
   do not exist. However, allowing /g=x where x means remove any
   existing trustee assignment, provides a convenient means of removing
   trustee assignments from existing directories. Sethome2 will report
   the home directory already exists and then removes any existing
   trustee assignment. This could also be achieved via /c=x, but that
   requires the home directory path be specified, and sethome2 attempts
   to create the "Home Directory" attribute, create the home directory,
   and set/remove a trustee assignment.

o  Fixed a problem occurring when using /r to copy paths from the "Home
   Directory" attribute to the bindery "HOME_DIR" property where it
   could attempt to validate the path on the current server rather than
   the server pointed to by the volume object component of "Home
   Directory".

o  Added /u to specify whether the path component of the "Home Directory"
   attribute is preceded by a slash e.g. "\users\john" rather than
   "users\john". Use /u=y to insert a slash, /u=n to omit it. The default
   is /u=n. /u can be used with /i to change existing entries in the
   "Home Directory" attribute. One customer reported problems with
   ConsoleOne where paths were not preceded by a slash, although we
   were unable to reproduce that.

o  Changed the existing /o to /v.

o  Modified /o to allow the object class to be specified. Possible values
   are 'user', 'group' and 'template'. This is primarily for use when
   using wild cards for groups or templates.

o  Added /q to query whether or not to process each user.

Setname

o  Removed the ability to process NW 3.x makeuser input files to
   convert full names to lowercase.

o  Added support for setting some attributes of type "Path", e.g.
   the "Path" attribute for directory map objects. A path attribute
   has three components - an NDS object which is specified as the value
   on the command line, a path which is specified via /m, and a name
   space type which can be set via /h.

o  Modified /s which replaces a separator in a string value with
   <CR><LF> pairs. If the specified character is followed by 'c',
   the separator will be replaced by <CR>'s only, if by 'l' it will
   be replaced by <LF>'s only. Some attributes e.g. "Novonyx:Proxy
   List" use one character or the other rather than the <CR><LF> pair.

o  Fixed an issue where it was not allowing some truncated attribute
   names to be used.

o  Modified to check for the existence of a "City" attribute in the
   schema. Previously "City" was mapped to "Physical Delivery Office
   Name", but in eDir 8.5, a "City" attribute was introduced. Now,
   "City" is mapped to "Physical Delivery Office Name", only when there
   is no "City" attribute defined.

o  Fixed an issue where it would not work across trees when your current
   drive was mapped to a server in one tree, and you were trying to
   modify object attributes in a different tree.

o  Added the ability to copy the contents of a file into an attribute of
   type "Octet String". For example, this allows the copying of a jpg
   file into a user's "photo" attribute.

o  Modified to allow an object name specified via /z to be prefixed with
   a tree name e.g. /z="manuka/.john.sales.abc". The workstation must
   have an existing connection to the tree.

Setowner

o  On NSS volumes, changing ownership of files results in the space
   occupied by the file being immediately added to the new owner's
   usage when the new owner has a volume quota. If changing the
   ownership causes the new owner to exceed their quota, the change
   will fail but no error was reported by the server. Setowner now
   checks that ownership has changed on an NSS volume and reports an
   error if it has not.

o  Modified to work around an NDS 8 bug when searching for objects
   with underscores in the name when trying to locate an object
   matching a directory name.

Setpword

o  Added support into 32 bit versions for setting NMAS/NFA simple
   passwords via /m=s. These can be set in addition to or instead
   of NDS and other passwords. See further comments under jrbimprt.

o  Added support into 32 bit versions for setting AD passwords when
   using Novell Account Management with W2K or XP. Note that the AD
   password must match the NDS password (a Novell requirement) which
   can be set either in the same invocation of setpword or can have
   been set previously.

o  Added /d to specify a delay in seconds before setting an AD password.
   This may be needed when setting both the NDS and AD passwords because
   the routines called in PWDNOTFY.DLL check that the AD password being
   set matches the current NDS password, and it may be necessary to wait
   for replication to occur. At least some versions of PWDNOTFY.DLL
   always check the password on the master of the replica so setpword
   attempts to send an NDS password change to the master when also
   setting an AD password.

o  Removed the existing functionality of /f which indicated a parameter
   was an input file. This can still be achieved by preceding the file
   name with '@'.

o  Added the ability to force setpword to require the old password in
   order to set a new one. This is achieved via use of /f.

o  Added the ability to reset Intruder lockout before changing a user's
   password. This is achieved via /h. Sufficient rights are required to
   the "Locked By Intruder" attribute to change the value, and to the
   "Login Intruder Attempts" and "Login Intruder Reset Time" attributes
   to delete their values.

o  Added support into 32 bit versions for setting GroupWise passwords
   via /m=g. These can be set in addition to or instead of NDS, and
   other passwords.

o  Fixed an issue in the GUI version where saving randomly generated
   passwords to a file was not working correctly.

o  Added /v to allow verification of NDS or bindery passwords rather
   than setting them. It is not possible to verify the other types of
   password which setpword can set. This feature provides a means of
   detecting users without passwords set e.g. 'setpword * /v/n'
   will report that the password matched on all users in the
   current context without a password.

Setquota

o  Modified to accept double quotes around paths and object names in an
   input file to avoid a problem where they contain spaces and the path
   or name was previously considered to have ended when the first space
   was encountered.

o  Fixed an issue where setting the quota relative to the current usage
   was not working for volume restrictions.

o  Modified to allow setting quotas on queue directories.

o  Added /o to specify the object class when the object name contains
   wild cards.

o  Modified to skip volumes named "_ADMIN" on NW 6 when using /a.
   Setquota already skipped volumes named "NSS_ADMIN" under NW 5.

o  Added /g to allow removal of volume quotas from a volume. The
   following values may be used:
     a  remove all quotas
     n  remove quotas for non-user objects
     u  remove quotas for unknown objects (the default)

o  Added /i to prevent setting a quota when the user or directory
   already has one.

Setrest

o  Fixed an issue where it was setting GroupWise visibility and mailbox
   expiration time in NDS only, not in GroupWise so the changes were
   not effective.

o  Fixed an issue where it failed to set maximum concurrent connections
   on NW 6 due to a bug in NW 6.

Settrust

o  Added /c to force it to validate an object on the server on which the
   rights are being added or removed. This is primarily for when using
   settrust in a script which creates users via creatobj then assigns
   rights via settrust, and avoids an issue where insufficient time has
   elapsed for replication to occur. Settrust, by default, attempts to
   perform the validation on the server on which the rights are being
   modified, but does not enforce that because to do so would require
   that any object being granted rights must exist in a replica on that
   server which will not always be true. The NetWare client, for reasons
   known only to itself, may send the validation request to another server
   unless /c is used.

o  Updated to allow double quotes around paths in an input file. Double
   quotes must be used when the path cntains spaces.

o  Updated to restore inherited rights filters via /b. It can do this
   for both 'settrust' and 'rights' commands. No new options are required
   to do this, settrust recognises the type of command in the file.

o  Fixed an issue where it might not delete all trustee assignments for
   a file or directory when more than 20 were present.

Trstlist

o  Added /c to control whether file or directory trustee assignments
   are displayed when displaying trustees for selected objects.
   Previously, trstlist always displayed both file and directory
   trustee assignments. Note that /d which also allows you to select
   directories or files, applies only when a path is specified, not
   an NDS or bindery object.

o  Updated to also display and save inherited rights filters when
   processing files and directories. What is displayed is now
   controlled via /t which can have the following values:
     b both trustee assignments and inherited rights filters
     i inherited rights filters (IRFs)
     t trustee assignments
   By default, IRFs are displayed only if not equal to [SRWCEMFA].
   However, /v can be used to display all IRFs.

o  Fixed an issue in the GUI version where it behaved incorrectly
   when no server was specified.

o  Modified the GUI version to produce an error if filtering is enabled
   but no rights boxes are checked.

Usergrps

o  Added /n=f to display groups one per line with their full nanes.

Users

o  Added a heading and the number of connections to the printed output
   from the fully GUI version.

o  Fixed a problem introduced in v8.0 where it was not showing any
   connection information unless the user running the program has
   supervisor or console rights to the server.

o  Added the ability to display and sort by the following new fields
   for each connection:
      Object class
      File locks (requires NW 5 or 6)
      Record locks (requires NW 5 or 6)
      Server rights (requires NW 5 or 6). These may be Normal, Auditor,
        Console, Supervisor.

o  Added a new column to the fully GUI version for displaying the row
   number.

o  Added support to the GUI version for clearing connections when right
   clicking in the list view.

o  Added support to the GUI version for saving the contents of the
   list view to a file when clicking on the 'Save' and 'Save as' File
   Menu items. Under 'Save as', three options exist: (a) save at the
   current column widths, (2) save at column widths corresponding to
   the widest item in each column, (3) save in comma delimited form
   with each item in double quotes.

o  Added the same three options above for printing the contents of the
   list view to the GUI version.

o  Implemented page selection when printing.

o  Separated the protocol options from the authentication options in
   the GUI version and added an "All protocols" option as the default.

o  Added another checkbox to the authentication options allowing the
   display of all connections except those which are 'not logged in'.

o  Modified so that the output options page displays a format matching
   that selected on the main options page.

o  Added to the GUI version, the ability to send a message to a
   connection.

o  Fixed a problem in the GUI version where it would sometimes cause
   an application error after the exit button has been pressed.

o  Fixed in 32 bit versions, an issue where 'NOT-LOGGED-IN' connections
   were not being displayed on NW 6. This issue existed in all versions
   due to the NWGetConnectionInformation function indicating an invalid
   connection number for a 'NOT-LOGGED-IN' connection on NW 6. An
   alternative function is now used in 32 bit versions, but as it is
   not available for the DOS platform, DOS versions will not display
   'NOT-LOGGED-IN' connections on NW 6.

o  Modified the fully GUI version to retain its horizontal and
   vertical scrolling position when a column caption is clicked on
   to sort the column, and when the "redisplay" button is clicked.

o  Modified to detect connections from Macs using Native File Access
   and to display their addresses correctly as IP numbers.

o  Added /b=m to allow filtering on Macs connecting via Native File
   Access.

Wgrpadd

o  Added support for specifying '.' as a workstation name in 32 bit
   versions. Wgrpadd will retrieve the current workstation's object
   name from the registry.

Wgrpdel

o  Added support for specifying '.' as a workstation name in 32 bit
   versions. Wgrpdel will retrieve the current workstation's object
   name from the registry.

Wgrplist

o  Modified to allow the logical operators '&', '~' and '!' to be
   specified as 'and', 'or' and 'not'. For example "wgrplist (A and B)
   or not C" is equivalent to "wgrplist (A & B) ~ ! C".

Whodidit

o  Fixed a problem where filtering by owner, updater and archiver
   did not always work when using an input file (it depended on how
   the object name was given).

o  Added /o=# to display the number of files in directories

o  Added /o=$ to display the number of deleted files in directories

o  Fixed a problem in the GUI version where once filtering had been
   used, it was not possible to turn it off without restarting the
   program.

o  Added the ability to sort output by the following fields:
      owner
      updater
      archiver
      creation date and time
      update date and time
      archive date and time
      last access date
      logical size
      physical size
      resource fork size (mac files)
      quota (directories only)
      total size (logical + resource fork size)
      attributes
      path length in the name space displayed
      number of files in the directory
      number of deleted files in the directory
      DOS name
      Mac name
      NFS name
      Long name
      FTAM name
      inherited rights filter
      owning name space
      number of extended attribute keys present
      total size of extended attributes

o  Modified to use use more efficient functions for retrieving files
   and directories, so it should process large directory trees a little
   faster.

o  Modified to give an error when no matching files were found and it
   is processing only a single directory.

o  Modified the handling of extended attributes. Now instead of simply
   displaying whether a file or directory has extended attributes, it
   displays the number of extended attribute keys for /o=e, and /o=[
   has been added to display the total bytes occupied by extended
   attributes.

o  Updated to display update dates and times, and last access dates
   for directories. NetWare did not previously record these values,
   and whodidit displayed them as 'None'.
