PreviousNext
- Accexp
- Chkhome
- Chrcheck
- Delattr
- Delobj
- Dquota
- Fsupdate
- Getname
- Getquota
- Getrest
- Groups
- Grpadd
- Grpdel
- Grplist
- Gwdlists
- Gwusers
- Homedirs
- Jrbcx
- Jrbimprt
- Jrbmap
- Jrbpass
- Jrbsend
- Lscripts
- Lsedit
- Makehome
- Movehome
- Move_obj
- Netcopy
- Pnset
- Pnsetup
- Pnstatus
- Profiles
- Pwdexp
- Quotas
- Renobj
- Salvlist
- Servcert
- Setacl
- Sethome2
- Setname
- Setowner
- Setpword
- Setquota
- Setrest
- Settrust
- Spacemon
- Trstlist
- Usercert
- Usergrps
- Users
- Wgrpadd
- Wgrpdel
- Whodidit
Release Notes for JRButils for Netware v16
Changes to Individual Programs
Accexp
- Replaced the ability to specify a bindery server as a parameter with the ability to specify a user, allowing the account expiration status to be checked for an account other than the one logged into.
Chkhome
- Fixed an issue where checking the rights via /r failed when there was a mismatch between the name space of the path in the “Home Directory” attribute and the value in the name space field.
Chrcheck
- Added /i to disallow only non-printable characters with ASCII values less than 32 and extended characters with ASCII values greater than 127.
Delattr
- Fixed an issue when deleting “other names” where for a user with a period in the name e.g. J.\Smith, it failed to recognise a value in CN of J.Smith as matching the user name, and tried to delete it resulting in an unnecessary error.
- Added a ‘quit’ option to /q.
Delobj
- Fixed an issue on OES2 Linux where delobj was failing to convert the name space of the home directory path resulting in it reporting that the lowest level of the path did not match the user name. The issue arose due to a combination of a typo and a difference in behaviour in NSS between NetWare and OES Linux.
Dquota
- Added /n=v to display paths in UNC format.
Added the ability to display a quota on any subdirectory of the user’s home directory. This is done via /i which accepts a relative path to be appended to the home directory retrieved from the “Home Directory” attribute.
Fsupdate
- Modified to require /+ to be used when specifying a comma separated list of files to be copied or deleted. This allows files with commas in the name to be processed correctly when /+ is not used.
- Modified to not allow /i (selective copy) to be used with /m (mirror copy) as the options are incompatible and fsupdate was producing incorrect results when the options were combined.
- Updated to work with Windows drives, allowing copying from Windows to Windows, Windows to NetWare, and vice versa, in addition to NetWare to NetWare. Files and directories may be deleted, renamed and have their attributes set on Windows drives.
- Fixed an issue where /h (apply the attributes specified via /a to existing files in the directory) was ignored.
- Updated the renaming of files to allow limited wildcard renames of the form *.abc to *.def, or abc.* to def.*.
- Significantly increased the speed at which files larger than 4 GB in size are copied by increasing the buffer size.
- Modified when deleting a directory structure to delete subdirectories when an error occurs deleting files in a directory e.g. because one is held open. Previously, if an error occurred deleting files in a directory, deletion of subdirectories did not occur.
- Modified to not attempt to delete the starting directory when /z is used, and an error occurred deleting the contents of the directory.
Getname
- Updated the display of the following attributes:
nspmPasswordHistoryExpiration (converted from seconds to days)
DirXML-Associations (allowed for no ID present)
NGW: Location (converted from octet string to text) - Modified to display the first 1024 characters of any stream attribute whose name appears in a list of multiple attribute names given via /a. Previously only a few attributes which were known to contain text values were displayed. The format is controlled via /m. Any stream attribute is displayed when only one attribute was named.
- Added /m=x to allow the DirXML-Associations attribute to be displayed in the format of “Driver:ID” used by earlier versions of getname. The current version uses a heading for each of the three possible values, the third of which is the drive status.
- Added a new tab sheet to the GUI version to implement a number of options previously only available in the command line versions.
- Fixed a long-standing issue where getname displayed a value of ‘false’ for “allow unlimited credit” when the attribute did not exist. Unlike almost every other boolean attribute, the absence of this attribute is the same as a value of ‘true’.
- Updated to display the nested group bit in ACL rights using the letter ‘G’. This bit was introduced in eDirectory 8.8.2, to cause rights granted to a group object to flow down to members of nested groups.
- Fixed an oversight where it was not displaying the inheritance bit in ACLs.
- Modified the parsing of a value for /a so that it recognises that the end of an attribute name has been reached when a double quote is encountered.
Getquota
- Updated to not calculate usage and free space on NSS volumes when no quota is present, and only the quota is being displayed. This allows it to run considerably faster.
- Added /n=u to allow paths to be displayed in UNC format.
- Added /# to prevent calculation of the usage for directories without a quota on NSS volumes. This allows the quick retrieval of values for directories with quotas when not all directories have quotas.
- Changed the obsolete /i (prefix the username with the server name) to /u=c.
- Added the ability to display the quota on any subdirectory of each user’s home directory. This is done via /i which accepts a relative path to be appended to the home directory retrieved from the “Home Directory” attribute.
Getrest
- Added the ability to display the name of the password policy associated with each user. Getrest checks for a direct association, for one at the parent container level, at the partition root level, and a system-wide policy enabled via “Login Policy.Security”.
- Added the ability to display the account lockout time under eDirectory 8.8 via the pwdAccountLockedTime attribute.
- Updated the code for handling GroupWise mailbox expiration dates to allow for the fact that they can precede January 1 1970, although such values would typically have been set unintentionally. Dates stored in eDirectory cannot precede January 1 1970.
- Updated to display the GroupWise mailbox last login date and time. This requires GW 8.0 SP1.
- Fixed an issue with using a value of ‘none’ when filtering on the GroupWise mailbox expiration date/time.
Groups
- Updated to allow adding and removing nested groups under eDirectory 8.8.2 onwards.
- Added an option to suppress members of nested subgroups when displaying group members. By default, NetWare returns the members of the selected group, and of its nested subgroups.
- Added an option to show the nested group structure under eDirectory 8.8.2 onwards. This option does not list group members.
Grpadd
- Updated to add nested groups via /n under eDirectory 8.8.2 onwards.
- Added /o to allow the object class to be specified when using wildcards with groups or templates.
Grpdel
- Updated to remove nested groups via /n under eDirectory 8.8.2 onwards.
- Added /o to allow the object class to be specified when using wildcards with groups or templates.
Grplist
- Added /v to suppress inclusion of nested group members under eDirectory 8.8.2 onwards. When a group has nested subgroups, NetWare automatically returns both the members of the group and of the subgroups. However, grplist works around this when /v is used by retrieving values in the “Equivalent To Me” attribute instead of the “Members” attribute.
- Added /g to show the nested group structure under eDirectory 8.8.2 onwards. This option does not list group members.
Gwdlists
- Added the ability to display the following fields for list members under GW 8.0 SP1:
Mailbox last login date and time
Mailbox size
Client type last used to access the account
- Changed so that when adding users to a distribution list, gwdlists locates the user in the post office directly rather than iterating though all users in the post office. This is considerably faster for post offices containing large numbers of users.
- Updated so that if /x is used with /g when adding users to a distribution list, gwdlists will search the entire GroupWise system for the user when a post office and domain is not included in the user name.
- Fixed an issue where it reported ‘too many values’ where all options for /v were used at once.
Gwusers
- Fixed an issue where it was failing to list any users when searching for an object with a particular NDS name. Searching on GroupWise name was working correctly.
- Changed /t (display totals only when using /v) to /#.
- Added the ability to set the preferred email ID via /t. This attribute may be cleared by using /t=none.
- Fixed an issue where values 2 and 3 for /u were transposed in the in-built help and documentation.
- Updated to check if an address format is allowed when setting a format via /u. Setting a format which was not in the allowed list caused problems in ConsoleOne.
- Changed /r (search from [Root]) to a value for /x i.e. /x=r.
- Added the ability to set the allowed address formats via /r.
- Added the ability to clear the address format via /u=c.
- Modified the interaction between /j (no headers and totals) and /# (totals only) so that when both are used, only the final totals line is displayed.
- Fixed an issue where it reported ‘too many values’ where all options for /v were used at once.
- Added the ability to display the following fields under GW 8.0 SP1:
Mailbox last login date and time
Mailbox size
Client type last used to access the account
Homedirs
- Added the ability to truncate common names to eight characters when creating home directories.
Jrbcx
- Fixed an issue where under some circumstances when displaying connections to trees, it could incorrectly display [Root] as the current context for a non-default tree.
Jrbimprt
- Fixed an issue where it could report that the password was too short when creating users, a universal password policy was applied at the container level and specified a minimum password length, and no password was supplied.
- Updated to default to setting universal passwords rather than NetWare passwords when there is a universal password policy applying to the user, passwords are given in the data file, or are being generated, and the password type is not set via “set NDS passwords=y” or “set universal passwords=y”.
- Fixed an issue where an error was reported when “user template=y” was used but no template was named, and a user or template named User_template did not exist in the name context. Jrbimprt now just issues a warning. This allows for the situation where the name context is set/changed in the data file or distinguished names are used in the data file.
- Fixed an issue with setting values for the “Language” attribute where it could set the same value more than once, for example if identical values were obtained from a template and the data file. eDirectory stores languages as a linked list of values rather than as separate values, hence the possibility of duplicates.
- Updated to check a template for a “Home Directory” attribute prior to creating users when “Home directory volume” and “Home directory path” control statements are not used, and “Home directory” does not appear in the fields list. This ensures that users are created on the server on which the home directory will exist regardless of the source of the home directory path.
- Added “acl add” and “acl remove” control statements allowing one or more ACLs to be added to or removed from each user. Both statements accept a comma separated list of ACLs.
- Modified the parsing of directory attributes in control statements such as “Home directory attributes” to make jrbimprt consistent with Novell’s old but still widely used flag.exe. Previously jrbimprt ignored other attributes when ‘n’ (for ‘normal’) was included e.g. ‘nDiRi’ was treated as ‘n’. Now ‘n’ is ignored when combined with other attributes e.g. ‘nDiRi’ results in ‘DiRi’.
- Improved the error reporting when parsing directory attributes.
- Fixed an issue where an application error could result when a “name context” statement was missing from both the control and data file.
- Fixed an issue where jrbimprt could unnecessarily connect to a user in GroupWise when there were no GroupWise related changes to make. This could result in an superfluous error.
- Added the ability to set the GroupWise internet domain name.
- Fixed an oversight where GroupWise external users were not being added to and removed from distribution lists.
- Fixed an issue where “GroupWise add distribution lists” and “GroupWise remove distribution lists” statements in a control file were ignored.
- Updated so the “GroupWise distribution list” field could be used with external users.
- Updated to automatically disallow unlimited credit (set attribute “Allow Unlimited Credit” to zero) when a value for “Minimum Account Balance” is specified, but no value is supplied for “Allow Unlimited Credit”. This ensures that ConsoleOne correctly displays the minimum balance setting.
- Updated to set universal passwords if available when both “set NDS passwords=y” and “set universal passwords=y” are specified. Previously, NDS passwords took precedence.
- Added control statement “GroupWise set nds attributes” to prevent jrbimprt setting attributes such as first name and surname in both NDS and in GroupWise if the user is also a GroupWise user. Jrbimprt was modified to do this some time back as a result of feedback that changes in NDS sometimes failed to synchronize between NDS and GroupWise, and due to the lack of facility in the GroupWise Admin Object API to initiate a synchronization. However, a user making these changes in NDS may have insufficient rights to make the same changes in GroupWise resulting in them being prompted for a user name and password when jrbimprt attempts to connect to GroupWise.
- Fixed an issue where “replace value=y” was ignored for “other names” which need to be handled as a special case, being the second and subsequent values in the CN attribute.
- Updated to accept a value of “*” for control statement “GroupWise remove distribution lists” to remove each user from all distribution lists belonged to.
- Added control statement “Container” as a synonym for “Name context” for consistency with adimport in JRButils for AD. Because the term “context” is not used in Active Directory, adimport uses “Container” instead of “Name context”.
- Added the ability to set the GroupWise address format.
- Added the ability to set the GroupWise allowed address formats.
- Added field name “Password policy” as an alternative to the actual attribute name of nspmPasswordPolicyDN.
- Fixed an issue where it was failing to detect a universal password policy enabled via “Login Policy.Security”.
- Modified to set NDS passwords via the newer NWDSGenerateKeyPairEx function, if supported by the client, instead of the older NWDSGenerateObjectKeyPair. Universal passwords are always set with NWDSGenerateKeyPairEx. This is now consistent with other programs in JRButils which set passwords.
- Added option ‘s’ for “Random password type” to include special characters in addition to mixed case and numeric characters.
- Modified to utilize “name context” statements in the data file in export mode. Previously, all control statements were simply written to the export file without validation or execution. However, to conveniently export objects from different containers, use of the “name context” statement is necessary, so jrbimprt now executes this statement as well as writing it to the output file.
- Doubled the maximum line length from 2048 characters to 4096 for both the control and data file. This was primarily to accommodate long lists of groups for “Group membership add” control statements.
- Fixed an issue where it was failing to set a GroupWise password in ‘update’ mode when adding an existing NDS user into GroupWise, and the control statements “set GroupWise passwords=y” and “Set passwords only on create=y” were used.
Fixed an issue where it did not recognise loginGraceAllowed as a synonym for attribute “Login Grace Allowed”. Support has also been added for synonyms loginsGraceAllowed, loginsGraceLimit, and loginsGraceRemaining for “Login Grace Remaining”.
Jrbmap
- Updated to report a reason for the failure (e.g. access denied) when mapping to a Windows drive fails.
Jrbpass
- Fixed an issue where it was failing to identify that a given user was assigned a universal password policy when the policy was assigned at the partition root.
- Fixed an issue introduced in V15 where if the first attempt to change a user’s password failed due to lack of compliance with a policy, the same error was displayed after the second attempt despite the password being successfully changed.
- Fixed an issue where it might fail to change the password after a different tree had been selected.
Added option -d to prevent changing any other passwords if changing the NetWare or universal password fails.
Jrbsend
- Modified the way it determines which server to send a message to for users. Previously, jrbsend required that the “Message Server” attribute be set. Now it uses whichever of the following it finds first:
o A server name preceding the username e.g. yogi/.tom.staff.abc.
o The server in the “Message Server” attribute.
o The server on which the home directory exists (from the “Home Directory” attribute).
o The current server.
Lscripts
- Added /x=r to allow scanning the entire tree for matching objects.
- Added /o=container for use with /v=n to allow login scripts to be displayed for container objects, regardless of their class.
Lsedit
- Added the ability to replace one line with multiple, or to insert multiple lines at a designated point in the login script by using a text file.
Makehome
- Added the ability to create a second home directory, and to grant rights, set directory attributes, a directory quota and a volume quota.
- Added the ability to not process users created before a specified date.
- Added the ability to not make any changes at all to a home directory when it already exists.
Movehome
- Added /r and /x to allow processing all users in the tree, or objects in and below the specified container if just /x is used.
- Added an option (/h) to allow only the new home directory volume to be specified. The existing path relative to the volume root is retained for each user, so that only the volume and possibly the server is changed. This feature will be useful when moving the home directories of multiple users who do not share a common home directory path such as \\yogi\vol1\users.
Move_obj
- Fixed an issue introduced in V15 where it could report that it was unable to read the domain from a post office object, when moving a user who was not also in GroupWise.
Netcopy
- Fixed an issue with copying files containing commas when the name was given on the command line.
Significantly increased the speed at which files larger than 4 GB in size are copied by increasing the buffer size.
Added /n=x to suppress reporting of every file and directory which is copied. Totals are still reported unless /j is also used.
Pnset
- Added the ability to enable or disable auditing.
Pnsetup
- Fixed an issue where the username and password specified via /g and /h were ignored.
Pnstatus
- Added an option to display all attributes of the printer from the NDPS database. Because of the large number of possible attributes (nearly 1000) and the number of possible data formats (101 are defined), not all attributes will currently display correctly. Contact us to fix any omissions.
- Added an option to display each printer’s drivers.
- Added an option to display each printer’s accounting command.
- Modified to retrieve the printer manufacturer and model from the printer’s resource attribute if the manufacturer and model attributes are missing.
Profiles
- Fixed an omission in the GUI version where there was no option to list users of a profile by searching eDirectory. Unlike groups which have a “Members” attribute, profile objects do not have an attribute holding all users of the profile. The default method used by the “profiles” program is to list the users granted rights to read the profile object’s login script. While this is the fastest method, it is not necessarily accurate. The alternative is to search eDirectory for users with a particular profile in their “Profile” attribute, which is a considerably slower method.
- Fixed an issue in all versions where the use of /x was ignored when adding or removing users of a profile.
Pwdexp
- Fixed an issue in the GUI version where it was failing to enforce a password change, when the password was within 24 hours of expiration.
- Replaced the ability to specify a bindery server as a parameter with the ability to specify a user, allowing the password expiration status to be checked for an account other than the one logged into.
- Updated to report when a user on the local machine does not exist. Previously, pwdexp reported that the password was incorrect. This was the error returned by the Windows function when attempting to change the password for a nonexistent user.
Quotas
- Fixed a problem where the quotas program was showing zero usage for each user when the volume quotas option “Display all usage on the volume” was selected for an NCP volume on OES Linux. Neither volume nor directory quotas are not supported on NCP volumes, and quotas now calculates the usage.
- Updated so that when setting quotas and units are specified as part of the quota value e.g. 200mb, the units combo box is updated to match the units given in the value. This ensures that the results are displayed in the same units as the value.
- Fixed an issue where an application error could occur when sorting paths by clicking on the column header, and one or more paths are missing.
Renobj
- Fixed an issue where it could report that it was unable to find the domain for a GroupWise post office when renaming a non-user object. The object was correctly renamed despite the message.
Salvlist
- Worked around an OES2 Linux bug where error 0x89FF instead of 0x8901 is returned when recovery of a file fails due to insufficient space. Salvlist assumed the failure was due to the name already being used, and spent time trying to recover with a unique name instead of simply reporting insufficient space. Now when 0x89FF is returned on OES Linux, salvlist checks the available space.
- Worked around an OES2 Linux bug where error 0x89FF instead of 0x89FE is returned when recovery of a file fails due to a file already existing with the same name. Salvlist now checks for an existing file, and if found translates the error to 0x89FE, in which case salvlist attempts to recover the file with a modified name.
- Fixed an issue in the GUI version where it reported “No matching files were found” when files were found but none were recovered for reasons such as insufficient space. Salvlist now lists the file details when recovery fails, and the reason for failure is given in the recovered name field.
Servcert
- Updated to check for the existence of a 6th DLL (spmdclnt.dll) in the search path when using npkiapi.dll V3.0.0.0 onwards. The absence of spmdclnt.dll when it is required causes an application error.
Setacl
- Fixed an issue when using a csv file containing objects, attributes, trustees and rights, where setacl assumed an object class of user when /o was not used, rather than determining the class from the object itself.
- Fixed an issue when using a csv file containing objects, attributes, trustees and rights, where setacl did not allow assigning inherited rights to an attribute at the container level when the attribute was not valid for the container’s object class.
- Updated to set and display the nested group inheritance bit in rights masks under eDirectory 8.8.2 onwards.
Sethome2
- Added /s to set or remove a directory quota on the home directory.
- Fixed an issue where the path stored in the “Home Directory” attribute could get converted to uppercase when using /i to change the type of slash used.
Setname
- Added /$ to force base64 encoding of string values. This may be useful for attributes such as aplXMLHomeDirectory.
- Updated to allow stream attributes (e.g. “Login Script”) to be copied from one user to another via /z.
- Made changes to the removal of all “Other names” so that instead of retaining the first value as the CN, setname retains the value equal to the RDN which eDirectory does not allow to be deleted. This allows the removal of an incorrect first entry.
- Replaced the obsolete /w with a new option to copy the value(s) from another attribute of the same object e.g. to copy the CN to uniqueID.
- Added /_ to set a zero value for a boolean attribute. The default is to delete the attribute unless it is one of the few exceptions where the absence of a value equals ‘true’.
- Updated to sensibly report the results of setting or deleting the “Volume Space Restrictions” attribute for templates. This attribute misuses the “path” syntax and hence needs to be treated as a special case.
Setowner
- Added options to /v to list either all files and directories processed (the previous default despite the documentation saying only changed entries were listed), or only entries for which ownership has been changed.
- Modified to display the number of entries changed in the totals.
- Fixed an issue where the current owner could be displayed in uppercase when using /c and /v.
- Added /x=r to allow searching the entire tree for matching objects.
Setpword
- Modified to report an error when it is unable to modify the password expiration time via /b or /c. The most common reason for failure is insufficient rights to the “Password Expiration Time” attribute.
- Updated so that setpword works correctly when using /b for a user with a non-universal password policy that requires periodic password changes, but the user’s “Password Expiration Interval” and “Password Expiration Time” attributes currently do not have values set. Values are assigned as a result of the password change. Setpword now reads these values after the password change, instead of before.
- Made a long overdue change so that universal passwords are set by default. When universal passwords are not available or are not enabled for a particular user, an NDS password is set.
- Fixed an issue where it could report error 0x1 searching for users when /x=r was used.
- Added option /g=s to create random passwords containing alphanumeric plus special characters.
- Updated the GUI version to allow selection of the target tree in which to change passwords.
Setquota
- Fixed an issue introduced in V15 where it failed to verify a volume object name given as the first parameter when using /g.
- Added the ability to set or remove a quota on any subdirectory of each user’s home directory. This is done via /s which accepts a relative path to be appended to the home directory retrieved from the “Home Directory” attribute.
Setrest
- Added ‘pwp’ as a field name to associate users with or remove users from password policies.
Settrust
- Fixed a memory overwrite which could potentially cause an application error (although none had been reported).
Fixed an issue on OES2 SP1 Linux where it could report “Invalid path” when attempting to delete a non-existent trustee assignment. The issue arose because the server returns error code 0x899C (Invalid path) instead of 0x89FE (Trustee not found).
Spacemon
- Added /q to suppress the display of quotas. This may be useful when displaying usage and free space as a percentage, to prevent users comparing the amount of space they are allocated.
Trstlist
- Fixed an issue in the GUI version where it could use the wrong server name when displaying trustee assignments as commands to save or remove, and the display was refreshed. The problem occurred only when multiple servers had been processed.
- Fixed an issue where /m which lists trustees in a form for removing them) was by default, using the DOS name space.
- Added /d=p to allow trustees to be displayed for a directory or file, and each of its parent directories.
- Added /T to Windows cacls commands produced by /b=c.
Usercert
- Updated to check for the existence of a 6th DLL (spmdclnt.dll) in the search path when using npkiapi.dll V3.0.0.0 onwards. The absence of spmdclnt.dll when it is required causes an application error.
Usergrps
- Added /n=q to force the use of double quotes around user and group names.
- Added /n=i to enable a new output format of one group name followed by the user name on each line. This provides another alternative for using the results with grpadd or grpdel commands. In conjunction with this change /n=d and /n=e have been modified to provide comma delimited and semicolon delimited output respectively with both /n=c (user name then group name on each line) and /n=i (group name then user name on each line).
Users
- Fixed an issue introduced in a previous version where it was failing to display “not-logged-in” connections.
Wgrpadd
- Added /x and /r to allow searching all or part of the tree for workstation objects to add.
Wgrpdel
- Added /x and /r to allow searching all or part of the tree for workstation objects to remove.
Whodidit
- Fixed an issue introduced in V15 where values displayed in bytes could be one byte too high. The problem arose due to an issue in new code for rounding up when appropriate.
- Worked around an NCP bug where for both NSS and NCP volumes on OES1 and OES2 Linux, incorrect values for file physical sizes are returned. The correct value is now calculated. However, incorrect values may be still displayed for compressed files on these volumes.
- Modified to accept a negative field width in a template file. This results in the field being right justified in the output.
- Updated to recognise DFS junction files and to identify these via ‘J’ in the attributes value. This field is now one character wider. Identifying all junctions on a volume can now be done via “whodidit vol1: /d=ft r in j”.
- Added /o=) to display the path. By default, the path is automatically displayed at the beginning of each line, but it may be useful to display it elsewhere, usually at the end of the line when the maximum path length is unknown. When ‘)’ is included in the value for /o, the path’s inclusion at the beginning of the line is suppressed.
- Fixed an issue where /$ was ignored for Windows paths.
- Updated to allow searching a directory structure for directories with a particular name e.g. “whodidit \\mars\users\www /$ /d=dt” will list all directories named www in \\mars\users and it subdirectories.
- Added a checkbox to the GUI version corresponding to /$ (treat the lowest level of the path as a directory, not a file).
- Fixed an issue in the GUI version where it would not quit searching a Windows path until the next entry to display was found.
- Fixed an issue with the use of wildcards and filtering on directory names when /d=d is used.
- Fixed an issue where using /d without a value to display details of the path, not its contents was failing for Windows paths of the form P:, P:\ and \\server\share. It worked correctly providing that at least one directory level was appended e.g. p:\users or \\server\share\users.
- Added a new radio button option to the GUI version corresponding to /d without a value which allows retrieval of attributes for the named directory without processing the directory contents.
- Updated the right click option in the GUI version to modify attributes to allow setting or removing the execute-only attribute which is used on OES Linux.
- Updated to support Windows paths exceeding 260 characters in length. This required changing to the unicode versions of file system functions.
