What is new in V3.00 New Programs Cl_type (Part A) For use in a BAT file to determine the type of client being used. It returns the following error levels: 0 No client is loaded 1 NETX.EXE (or one of its predecessors) is loaded 2 VLMs are loaded 3 Client32 is loaded Jberrtxt (Part A) Accepts a NetWare error code in decimal or hexadecimal, looks it up in JRBERR.MSG (the file of error code translations used by all of JRButils) and displays the description if found. Currently, JRBERR.MSG does not contain descriptions for the error codes returned by print servers. Move_obj (Part C) This program moves NDS objects from one container to another. Objects can be moved individually, can be selected using wild cards, all members of a group may be moved, or a list of objects in a file may be moved. Openfile (Parts B and C) Openfile can o Display open files by object name or connection number o Display who has a particular file or files open Features include o Can display open files for all logged in objects on a server o Can display open files for any type of object o Can display open files in any name space o Can sort the output as follows o by connection number o by directory name o by file name o by object name o data from multiple files, users, or connections can be merged before sorting o the sort order can be reversed o Can display the total number of open files on the server o When doing a merged sort by directory, it gives the number of unique files open Pqcopy (Part B) Copies bindery queues, possibly to another server, and will optionally retain all queue operators, users, servers, and print jobs. Pqmovjob (Parts B and C) Pqmovjob allows print jobs to be copied from one bindery or NDS queue to another possibly on a different server. The jobs may optionally be deleted from the source server. Pqreljob (Parts B and C) Pqreljob allows jobs to be released from user and/or operator hold on bindery or NDS queues. It may optionally be used to place existing jobs on user or operator hold. Pradd (Part C) Adds one or more queues to NDS printers. Prdel (Part C) Removes one or more queues from NDS printers. Profiles (Part C) Adds, removes and replaces profiles for NDS users Pscopy (Part B) Pscopy can replicate print servers on the same file server, or copy print servers to another file server. By default, it copies all attributes including the description, operators, printer definitions, server and users, but copying each of these may be individually suppressed. Requests (Parts A and C) Requests continuously displays the total requests, bytes read and bytes written for up to 20 connections on a NW 4.x server since the program began running (the information is not available under earlier versions). This allows easy identification of workstations loading a server. The output is sorted into descending order by whichever column you select, and the column on which you are sorting can be changed without restarting the program. Sparse (Parts B and C) Sparse identifies sparse files. These are files with 'holes' in them where no data exists, and so NetWare has not allocated disk blocks for these parts of the file. Many sparse files are created accidentally by misbehaving applications, and appear as large files when listed using 'dir'. However, they can have as little as one block of disk space allocated. These files can cause problems when copied, or backed up. If the program reading the sparse file reads it as an ordinary file, NetWare returns zero values for the missing data, and if the data is written to tape or disk, the new file will have all blocks allocated. This can cause problems such as: o Copies failing because a directory quota or volume quota has been reached. o User's being over quota if the application transfers quotas after copying the files. o Running out of space on a volume o Slow backups as multi-megabytes of zeroed data is transferred to tape. Sparse has the following features: o Can scan all files in a directory tree o Can scan all volumes on a server o Can display the block bit map for each sparse file o Can specify a minimise size for files to be checked o Reports both the physical size (bytes of disk used) and logical size (reported by 'dir') for each sparse file. o Can restore the 'last access date' on files which are checked. Because it has to open the file to determine if it is sparse, the 'last access date' is updated by default. Vol_info (Part A) Displays information about all volumes on a server, or selected volumes, under NW 2.x, 3.x and 4.x. The information includes o Name spaces loaded o Volume size, space used, space available and percentage full o Free (purged) blocks, purgeable blocks and not yet purgeable blocks (NW 3.x and 4.x) o Number of directory entries allocated, used and available (NW 3.x and 4.x) o All information available from the 'volumes' option in SERVMAN (NW 4.x) Changes common to multiple programs o Added support for escaped characters in NDS object names. NDS requires that the period (.), plus (+) and equals (=) be 'escaped' by a '\' e.g. member\.1, and all programs in JRButils v2.31 were treating the '\' as a separator between a server name and an object name. o Altered so that when processing a single NDS object, the object name is displayed in the case in which it appears in the NDS. Previously the object name was displayed in uppercase. o Modified the in-built help so that it is now possible to exit and retain the help display on the screen. Previously, the original screen display was always restored upon exit from the help. o Added support for prefixing each line of output with the date and/or time. This is intended for use with log files, but also applies to the output to the screen. The keywords 'date' and 'time' may now be used with /l and /e. o Every program now returns an error level of 1 when the error count is non-zero. Previously an error level of 1 was returned when errors occurred in processing of parameters and options, but most programs did not return an error level when processing errors occurred. o Added another value for /y for formatting NDS object names. It is now possible to use 'u' to force replacement of spaces in names with underscores. This is useful when saving output to a file for input to another program. o Fixed a problem where the reason given for errors (from jrberr.msg) was not being wrapped correctly when it did not fit on a single line. Changes to individual programs Copyuser o The problem described in problems.txt in jrb231b.zip when copying files and directories where the DOS name associated with a non-DOS file or directory may change when the first 8 characters of the DOS name did not match the first 8 characters of the long name has been fixed under NW 3.12 and NW 4.x. The solution used is not available for versions of NetWare earlier than 3.12. o Added /n=o to suppress copying of objects and setting of any bindery properties, allowing only the home and/or mail directories to be copied. o Added /n=w to suppress warnings when copying files owned by name spaces other than DOS and MAC. o Added /n=x to do an incremental copy of files in a user's home or mail directory. This may be useful, for example, if a user has been transferred to another server, but incoming mail has continued to be delivered to the users as yet undeleted account on the old server. Creatobj o Added support for creating profile objects. The login script must be specified via /m. o Added support for creating NDS queue objects. The NDS volume object pointing to the volume on which the queue directory is created, must be given using /d. o Fixed a problem where it was giving an error when trying to copy bindery properties of the user_template object (e.g. HOME_DIR). It seems that these cannot be copied using NDS functions, so they are now ignored. o Fixed a similar problem with "Back link" attributes of the user_template attribute. o Added support for NDS volume objects and directory maps in paths given via /d or /m. o Modified to create NDS objects in the case used on the command line or in the input file. o Added /x to allow a time delay in seconds to be specified in NDS mode. The delay occurs immediately after object creation and allows time for the object to be replicated to other servers before proceeding. This is a workaround for a problem where the creation request can be sent to a replica on one server (this is decided by the VLMs not by the programmer), then when an attempt is made to assign file/directory rights (e.g. to the home directory) on another server, this other server does not yet know of the object's existence because insufficient time has elapsed for the updates to be transmitted. o Modified the use of /n so that in addition to specifying that attributes of the container user_template object are not to be copied, it can also be given the value of an alternative template object. o Modified so that /z has a broader use than just indicating passwords are in the input file. It now indicates that when creating aliases, the alias object name and aliased object name appear on each line, when creating NDS queues, the queue name and NDS volume object on which the queue directory will exist appear on each line. Delobj o Implemented deleting of NDS queues. o Fixed a bug where it was dereferencing aliases and deleting the aliased object instead of the alias. Dquota o Added /p, /e and /l which should have been done several years ago! o Removed a limit where it could handle only 64 volumes per server (NW 4.10 supports 255). o Modified both versions to allow the units to be specified as part of a warning threshold e.g. /w=10mb. Fsupdate o Added support for retaining compression when copying compressed files to a volume supporting compression. o Fixed a problem where /c did not work. o Modified so that when using /a, both 's' and 'sh' can be used to indicate 'shareable'. 'sh' is required by FLAG.EXE in NW 4.x, but 's' is used by FLAG.EXE from NW 3.x and 2.x. o The problem described in problems.txt in jrb231b.zip when copying files and directories where the DOS name associated with a non-DOS file or directory may change when the first 8 characters of the DOS name did not match the first 8 characters of the long name has been fixed under NW 3.12 and NW 4.x. The solution used is not available for versions of NetWare earlier than 3.12. o Modified to not prompt for an alternative username/password when the first login attempt failed due to reasons such as no free connection slots. o Added /m to ensure that each target directory is a mirror of the source. This does an update as per /u, then removes any files from the target directory which do not appear in the source directory, plus any subdirectories and their contents which do not appear in the source. o Changed the previous usage of /c to /h. o Added /c to allow creation of target directories. Using /c for this makes fsupdate consistent with netcopy. Getequiv o Added /u to output usernames only (i.e. suppress other text) except when listing security equivalences. o Added /w to output server/usernames only (i.e suppress other text) except when listing security equivalences. Getquota o Modified both versions to allow the units to be specified as part of a quota value e.g. 10mb. o Can now use NDS objects (volumes, directory maps or aliases) in paths. Getrest o Added support for displaying both the most recent login time and the 2nd most recent login time. As previously, 'lld' displays the most recent, and now 'pld' displays the previous login date and time. Under NW 2.x and 3.x, the 2nd most recent login may not be recorded if you are using a very old version of login.exe. o Added /a to allow control of the order and width of output fields. o Fixed a problem in the NDS version when using an input file, where it sometimes reported insufficient rights for the 2nd and subsequent objects in the file. o Modified the NDS version to treat password expiration dates and account expiration dates as dates and times under NDS. In the bindery, these are dates, but in NDS they are stored in seconds from a reference date allowing a date and time to be set. o Added /x for use with NDS to process users in the specified container and all containers below it. o Added support for the TZ environment variable when determining the GMT offset for displaying date/times in NDS mode. o Fixed a millenium bug where a 2 digit year in a date given on the command line was treated as being relative to 1900 if less than 70. Now 1-jan-00 is treated as 1-jan-2000. Grpadd o Fixed a problem in the NDS version where it sometimes reported a user had insufficient rights to add a member to a group when the user had less than supervisory rights but still had sufficient rights to perform the task. o Fixed a problem where when creating a group via /c in NDS mode, case was not preserved in the group name and it was converted to uppercase. Grpdel o Fixed a problem in the NDS version where it sometimes reported a user had insufficient rights to remove a group member when the user had less than supervisory rights but still had sufficient rights to perform the task. o Fixed a problem where when using 'grpdel group *' in the NDS version, it was reporting that the group was invalid. Grpmemb o Added /v (verbose mode) to display error messages or a success message. o Added /a to use alternative error levels. This was in response to feedback that the original levels were inconvenient to use. The alternative set use 0 for failure for all reasons, 1 for success. Home2 o Added /r to allow map rooting to the home or mail directory. Is_vlms o Added /v (verbose mode) so that the results can be displayed in addition to an error level being set. Jrbmap o Added support for mapping to the user's home directory e.g. 'jrbmap p:=rata/~home'. Killconn o Added /c to indicate that all entites on the command line are connection numbers. Use when there are bindery or NDS objects with matching numeric names as killconn by default checks first for a matching object, then if this fails and entity is numeric, it checks for a matching connection. o Added /z to allow specification of objects whose connections are not to be cleared. Either a comma separated list may be given, or the name of a file containing object names, one per line. o Added /s as a suicide option for use with /a or /i. This removes the user's own connection to the server after clearing the others. It actually logs out rather than clears the connection which is quicker and tidier. Killzero o Added support for specifying users or groups on the command line. Killzero will then process either the home or mail directories for each user. o Added /w to allow control over how killzero processes home or mail directories for each user. o Added /r to allow retention of some zero length files. A comma separated list may be specified, and wild cards may be used. o Added /m to force processing of mail directories. In NDS mode, /m may be used to process the PMAIL subdirectories of user's home directories as used by the NDS version of Pegasus Mail, instead of the subdirectories of SYS:MAIL. Listobj o Fixed a problem where the NDS version was rejecting names containing periods (e.g. j.baird) under all versions of NetWare. When using periods in names in bindery mode, they must either be escaped by preceding the period with a '\' as per the NDS convention (e.g. j\.baird), or /3 must be used. o Fixed a problem where when using /x and there was an ou below the starting ou with the same name (e.g. starting the search at test.jrb and test.test.jrb exists), the names of the objects in the lower ou (i.e. test.test.jrb) were displayed incorrectly when /y=d or /y=c was used. Instead of showing as xx.test.test.jrb, they were displayed as xx.test.jrb. The bug is in the SDK's NWDSSearch API, but I have worked around it. o Added /h to force listobj to set an error level of 1 if no matching objects were found. Lscripts o Added support for setting and viewing scripts for NDS profile, organization and organizational unit objects. o Can now copy any file into mail directories retaining the file name (use /a=file /m/z) o Can now use an NDS volume name in a path given using /a. Makememb o Fixed a problem in the NDS versions of these programs where they sometimes reported a user had insufficient rights to add or remove a group member when the user had less than supervisory rights but still had sufficient rights to perform the task. Netcopy o Fixed a problem in netcopy-nds where it failed to copy anything when a file name was specified in the root of a volume e.g. vol1:fred.*. o Added support for copying to and from local drives. o Modified both versions of netcopy to retain compression when copying files to a volume with compression enabled. A new option /n=r allows decompression of compressed files. o Changed the function used to retrieve volume quotas as Developer Support have reported the original sometimes misbehaves. o Fixed a problem with removing quotas where the file storing the quotas sometimes had extra characters on the end of lines. o Added /n=s to suppress checking that there is sufficient space before copying each file. This will make it a little faster when copying lots of files. o Made allowances for compressed files when checking if there is sufficient space before copying a file. o Added support for use of NDS objects (volume objects, directory map objects and alias objects) in paths given on the command line. o Fixed a problem where netcopy would not copy Macintosh files or directories with a '/' or '\' in the name. Pqdeljob o Fixed a problem where it would not accept job numbers between 32767 and 65535 (job numbers may range up to 65535). o Fixed a problem where it would delete only the first 125 jobs in the queue each time it was run. Pqlist o Fixed a problem where it would list only the first 125 jobs in a queue. o Fixed a problem where it was removing the first character of the enqueued job's file name when using /f=q. Psadd o Added support for adding printers to NDS print servers. Psdel o Added support for removing printers from NDS print servers. Psusers o Added support for listing printers of NDS print servers. Setacl o Corrected a problem when verifying object names, where if the object name was given without typing, and the object did not have a type of cn=, the object name was regarded as invalid e.g. ou=csc.o=lu worked correctly but csc.lu would fail. The problem was actually due to the behaviour of the SDK's canonicalization routine which assumes for the left-most component of the name, if no typing is present, the typing is 'cn='. Dumb huh! o Allowed use of a attribute or property parameter with /v so that only ACLs for this property are shown. o Allowed use of a subject with /v, so that only ACLs for this subject are shown. As the subject parameter follows the property parameter, a property value must be specified. Specify '*' as the property value if you want to filter by subject but not by property. o Changed the terminology in the in-built help so that the term 'trustee' is used instead of 'subject', which is more consistent with Novell's usage (except in the SDK docs from which the original terminolgy was taken). o Fixed a problem where if [Entry Rights] was specified as an attribute (as an alternative to using /n), the rights parameter was parsed as attribute rather than entry rights. Setcx o Modified to allow a 2nd parameter specifying the context at which to begin the search. o Modified so that it would still scan the tree if the workstation is connected to a 3.x server. Of course, NDS servers must be present on the network! o Added /t so that a tree can be specified. This cannot be used to change the tree if one is already set, but can be used when there is no preferred tree defined in net.cfg. Setequiv o Added support for input files. o Added /q to query whether to process each user. Sethome2 o Fixed a problem in NDS mode where it failed if the target directory was on a different server from your current drive. o Modified so that the path can now contain a volume object or alias, or can comprise a directory map object or alias. o Changed the way in which it locates an NDS volume object when a physical volume is specified in the path. Sethome2 now a. Attempts to find the associated volume object from the volume configuration. However this is not always set correctly (and I have not figured out how to set it when it is incorrect). b. Searches the context in which the server object is located. c. Searches the tree from [Root] (can be very slow). o In NDS mode the server on which the home path resides is determined as follows: a. If an NDS object (volume, or directory map) is specified, the object will point to a specific server. b. When a server is included in the path e.g. yogi/sys:users, that server is used. c. If a server is specified indirectly i.e. via a drive letter (e.g. p:) that server is used. d. When the path has no associated server, any server specified as part of is used. e. When neither the path nor reference a specific server, the default server associated with the NDS object is used. Or, in bindery mode, the current server is used. o Fixed a problem where it always reported "Cannot verify existence of server XXX" when using /w with an input file. Setname o Modified setname-NDS so that it can now set any text attribute associated with any object type. This does not include attribute values comprising object names such as the "Message Server". Setname can add multiple values where they are allowed, and can delete selected values. o Fixed both versions of setname so that /b will remove trailing blanks enclosed in double quotes. o Fixed a problem in the NDS version when using an input file, where it sometimes reported insufficient rights for the 2nd and subsequent names in the file. Setowner o Fixed a problem when using /c to change ownership of files and directories owned by a particular user, it was functioning correctly for files, but was changing the ownership of all directories. Setpword o Fixed a problem where the NDS version was rejecting names containing periods (e.g. j.baird) under all versions of NetWare. When using periods in names in bindery mode, they must either be escaped by preceding the period with a '\' as per the NDS convention (e.g. j\.baird), or /3 must be used. Setquota o Modified both versions to allow the units to be specified as part of a quota value e.g. 10mb. o Can now use NDS objects (volumes, directory maps or aliases) in paths. o Changed its behaviour when increasing or decreasing a quota (i.e. the quota value is preceded by '+' or '-'), so that it returns an error if there is not an existing quota. Previously, setquota returned an error when decreasing a quota and no quota existed, but when increasing a quota and no quota existed, it would set the quota to the amount by which it was to be increased. Setrest o Added support for 'ae' and 'pe' to be consistent with getrest. o Allowed the optional use of operators 'eq' and '=' so that the syntax is consistent with getrest. o Fixed a problem in the NDS version where an error was given when setting certain restrictions AND using an input file. o Fixed another problem in the NDS version when using an input file, where it sometimes reported insufficient rights for the 2nd and subsequent names in the file. o Added support for setting both the most recent login time and the 2nd most recent login time. As previously, 'lld' sets the most recent, and now 'pld' sets the previous login date and time. Under NW 2.x and 3.x, the 2nd most recent login may not be recorded if you are using a very old version of login.exe. Note that NW 4.x does not allow setting of the 2nd most recent login time either in bindery or NDS mode (it appears that only the server itself can change the "Last Login Time" attribute). o Modified the NDS version to treat password expiration dates and account expiration dates as dates and times under NDS. In the bindery, these are dates, but in NDS they are stored in seconds from a reference date allowing a date and time to be set. o Added /x for use with NDS to process users in the specified container and all containers below it. o Added support for the TZ environment variable when determining the GMT offset for setting date/times in NDS mode. o Fixed a millenium bug where a 2 digit year in a date given on the command line was treated as being relative to 1900 if less than 70. Now 1-jan-00 is treated as 1-jan-2000. Trstlist o Modified to allow the use of [Public] as an object name. o Added support for volume or directory map objects in paths. o Modified so that when /a is used to list trustee assignments for objects security equivalent to the named object, in NDS mode it also lists trustee assignments for container objects forming part of the distinguished name (an object is security equivalent to these objects). In this case, trustee assignments are also displayed for [Root]. Users o Removed the limit on the number of addresses and locations. The only limit now is the available memory below 640 KB in which to store them. o Users can now display the total NCP requests, total bytes read and total bytes written under 4.x (this information is not available from a workstation under 3.x). Console operator status is required to retrieve these values. o Entries with wild cards ('*' and '?') can now be used in addresses in the LOCATION.SRT file. They can be placed anywhere in the file, but the non-wild carded entries must still be in sorted order. If a work- station address is not matched against non-wild card entries, it is them matched against each wild card entry. Wild cards may occur in the network or workstation portion of the address. Whodidit o Increased the range of possible output values to include: o archive date and time o creation date and time o update date and time o last access date o physical file size (for sparse or compressed files) o size as shown by dir The output values now appear in the order given via /o whereas previously the owner always preceded the updater which always preceded the archiver. o Added support for the use of NDS volume objects and directory map objects when specifying a path. Fixes in v2.31 Various o Some minor programs e.g. pwdexp would not accept /p as an option because they do not produce enough output to require paging. This caused a problem when /p was used globally e.g. in the environmental variable JRBUTILS. I have modified all programs to accept /p as well as /j, /e and /l even though these options will not have any effect. o I have modified the bindery based versions of the Part C utils to accept but ignore most of the options specific to Part C. In particular, this affects /3 and /y. Those options which are not accepted in the bindery versions are those which could lead to the wrong action being taken e.g. /a in setname if ignored could lead to overwriting full names when the intention was to modify another attribute. Accexp o Modified to return the following error levels 0 No account expiry date, or not within the specified days of expiry. 1 The account is within the specified number of days of expiration. 2 The account has expired. 3 Failed to obtain the account expiration date. Copyuser o When assigning trustee rights to a mail directory, it was always setting the rights to [ RWCEMF ], rather than using the actual rights of the user being copied. o Added /n=o to suppress copying of objects and their attributes allowing copying of mail directories, home directories or volume quotas from one user to another. Creatobj-NDS o It was sometimes giving the error "Cannot verify existence of server (null)" when /i was not used. o A '#' preceding an object name was not resulting in a group being created in NDS mode. o Fixed various memory leaks. Getrest o Added field 'al' (Account Locked) which had previously been added to getrest-nds. Getrest-NDS o Added checks for a missing object name in NDS mode. 'getrest server/ /z' is valid in bindery mode but not in NDS mode. o Fixed a problem with it reporting password expiry dates and account expiry dates as expired when they were not. Grplist o In v2.30 a bug previously fixed in v2.21 recurred where enclosing a group in double quotes didn't allow the use of '&' etc as valid characters in a group name. Now "A&B" represents the group name A&B whereas A&B represents group A and group B. Grplist-NDS o In v2.30 a bug previously fixed in v2.21 recurred where enclosing a group in double quotes didn't allow the use of '&' etc as valid characters in a group name. Now "A&B" represents the group name A&B whereas A&B represents group A and group B. o When /u was used, all users in the tree were listed, rather than those in the current context which is the documented behaviour of /u. Home2 o Can now precede a username with a server name, and if you are not already attached to the server, home2 will prompt for a username and password for logging in. Jrbmap o Fixed a problem where /x was ignored. o When using /x and restoring mappings to multiple servers, it was prompting for a username/password on each server rather than re-using the information for each server. Killconn o Modified to detect NLM connections under 4.x and to not attempt to clear them. The Netware function for clearing connections returns 'success' when attempting to clear an NLM connection even though the attempt fails. Lscripts o Fixed a problem when using /b and /w and specifying server/ i.e. no username. This resulted in it trying to verify a null username which sometimes caused it to complain, but other times it worked ok. o Minor corrections and clarifications in the in-built help. Mattach and Mattach-NDS o Fixed minor problems with /r and /w when run from sys:login when not logged in. o Fixed a problem where for /w it was listing an unlicensed NDS connection as licensed. Pwdexp o Modified to return the following error levels 0 No password expiry date, or not within the specified days of expiry. 1 The password is within the specified number of days of expiration. 2 The password has expired. 3 Failed to obtain the password expiration date. Setacl o Added /i to allow the setting of an object's rights to one of its own properties. For example 'setacl comp "login script" r /i' would grant each member of group comp read access to his/her own login script. o When was a group and all members of the group were being processed, setacl was validating the property against object type 'group' instead of object type 'user'. Setname and Setname-NDS o When a full name was enclosed in double quotes, the closing double quote was not being removed. Setowner-NDS o /c was functioning in NDS mode only when the current owner was given in typed distinguished form. A partial name is now expanded and types added. Setrest o Added field 'al' (Account Locked) which had previously been added to setrest-nds. Setrest-NDS o Added checks for a missing object name in NDS mode. 'setrest server/ /z' is valid in bindery mode but not in NDS mode. Users o Was not showing the peak connection count for /c under NW 4.x Whodidit o The default output was not /o=oua as the in-built help claimed. The default is now /o=oua. o Fixed a problem with header alignment. o Fixed a couple of minor errors in the in-built help. New features and bug fixes in v2.30 (the ones I can recall) Changes common to multiple programs o Rewrote the command line parsing in all programs. This allows double quotes to be used anywhere to prevent a dash or slash being treated as the beginning of an option e.g. '/l="my-log.dat"'. This also allows abbreviations of logging options to be used as file names, but requires double double quotes e.g. /l=""app"" creates a log file named APP, whereas without the double quotes, it would be treated as an abbreviation of the 'append' keyword. o Can now use '-?' or '/?' anywhere in the command line, provided they are preceded by a space. This is useful when you get part way through typing a command and realise you need to use the in-built help. o Modified all programs so that options may be obtained from multiple sources, and options may be negated by following the letter with a '-' e.g. -p-. Options may be obtained from the following and are processed in the order given: (a) From an environment variable JRBUTILS e.g. JRBUTILS=/p (b) From a file in the current directory or search path named JRBUTILS.INI (c) From the command line. (d) From a file specified on the command line via /@. A file may contain both global and program specific settings. The latter are preceded by 'program:' at the beginning of the line e.g. /p setowner: /v/l=owners.log getquota: /sur /e=none o Fixed a bug in the logging facilities of all programs where you could not specify a log file on a server other than the one to which your current drive was mapped. There was not a problem opening log files on local drives. o When /e was used to write an error log, all programs previously started by writing a blank line to the error log. This was useful when appending to an existing error log as it left a blank line between previous and current output. But it also resulted in numerous blank lines at the end of the file when consecutive runs of a program appended to the file, but no errors were logged. I've suppressed writing this blank line. o Fixed a problem in a number of programs which allow you to specify multiple servers. When /k was used and servers were excluded using '!', you were sometimes logged out of your current server. o Fixed a problem in most programs where results were unpredictable when used by a manager on a managed object with more than 100 managers (!). o Modified programs which display a user's full name to display the last name attribute under NW 4.x if a full name has not been set. o Modified all programs to support the 4 byte error codes returned by NDS functions. All descriptive text for error codes is now in an external file named JRBERR.MSG. Place this file preferably in the same directory as JRButils, otherwise somewhere in the search paths. o Added critical error handling into all programs. This is mainly of use when repeatedly running programs and appending to the same log file, and prevents the infamous Abort, Retry Ignore message if backup has the file locked. o All error messages now begin with the program name instead of "Error:". A number of users who use JRButils in batch files have had difficulties identifying which program is producing a particular error message. o Fixed a problem in many programs where when validating a path, they failed to distinguish between a path and a file, causing more obscure errors later on. o In all programs which obtain a user's home directory from the HOME_DIR bindery property, I now do various checks on the path following reports of problems where the path was not stored in a useable form i.e. in lowercase, using '\' instead of '/', or with a trailing '/'. o Changed the use of '/y' in all programs where it was previously used, to another letter. This is so /y can be reserved for use in the NDS versions. Programs affected are setpword, dquota, getquota, creatobj, netcopy and copyuser. Users also used /y but as the option was obsolete, it was removed rather than changed. New (non-NDS) programs is_vlms For use in a BAT file to determine whether NETX or the VLMs are in use. It returns the following error levels: 0 Neither NETX nor VLMs are loaded 1 NETX.EXE (or one of its predecessors) is loaded 2 VLMs including REDIR.VLM and NETX.VLM are loaded 3 VLMs including REDIR.VLM but not NETX.VLM are loaded 4 VLMs are loaded but REDIR.VLM and NETX.VLM are not grpmemb For use in a BAT file to determine if a specific user is a member of a particular group. It returns the following error levels: 0 Success (user is a member) 1 Failure (user is not a member) 2 No such group 3 No such user 4 Any other error killzero Deletes and optionally purges all zero length files from a directory tree. It was written to fix a problem with thousands of zero length files accumulating in student mail directories when they ran out of space. mattach Attaches and detaches to/from multiple servers in a single command. You may specify one or more servers separated by commas, may use wild cards in server names, and may precede server names by '!' to exclude them. Mattach may also perform whoami and slist functions with optional sorting by server name. The slist function will optionally display the Netware version of each server. Changes to existing programs Accexp o Modified so that a file server name can be given on the command line allowing impending account expiry to be checked on other servers when attaching to other servers at login. o Removed an arbitary restriction where you could not specifiy a value greater than 100 for /d (I have no idea why I imposed that restriction in the first place!). Copyuser (was moveuser) o Moveuser has become copyuser as it can now replicate users on the same server. This allows you to create new users using an existing user as a template. As part of this change, new options have been added to /n: (f = dont copy full names, l = copy only the login script from the mail directory, r = dont copy trustees other than those for the home and mail directories, u = dont copy user specific info such as the last login date and time, bad login address etc). o Modified so that /b allows truncation of usernames when creating home paths. The previous usage of /b is now /i. o Modified to retain the last access date on files. This was previously being lost as Netware updates it to the current date when the file is copied, and I copy the file attributes after copying the file. o Copyuser was failing to copy the inherited rights mask for directories (I'm sure that was working ok a few versions back!) o Modified to allow copying of Mac files and directories even when Copyuser cannot create them with the same DOS name. Delobj o No longer gives an error when a user's home directory obtained from the HOME_DIR property, or via /d on the command line, does not exist. Dquota o Fixed a problem where large values (> 8 GB) were displayed as negative values when output in MB. o Added /n=m to suppress output for directory quotas at higher levels than the specified directory. Fsupdate o Modified to retain the last access date on files. This was previously being lost as Netware updates it to the current date when the file is copied, and I copy the file attributes after copying the file. o Fsupdate was failing to copy the inherited rights mask for directories (I'm sure that was working ok a few versions back!) o Modified to allow copying of Mac files and directories even when Fsupdate cannot create them with the same DOS name. Getequiv o When using /c, getequiv previously failed to make allowance for the fact that Wolfgang Schreiber's SUPER functions differently under NW 3.12. It now detects NW 3.12 and makes the appropriate checks. o When using /c under NW 3.11 and earlier, getequiv now warns if a user is a manager of his/her own account. Any such user may grant themselves supervisor equivalence at any time. Getquota o Fixed a problem where large values (> 8 GB) were displayed as negative values when output in MB. o Fixed a problem where it hung under NW 4.1. This was caused by 4.1 supporting 255 volumes and I had allowed for a maximum of 64. Jrbmap o Fixed a few obscure problems when displaying current drive mappings. o Modified to allow multiple drives to be mapped in a single invocation e.g. 'jrbmap p:=q:=sys:users'. o Modified to allow mapping of a network drive to a local drive under the VLMs (this is not possible under NETX as the DOS drive table extends only to LASTDRIVE which excludes network drives). Mapping a network drive to a local drive is the equivalent of using SUBST on an unused network drive. o Modified to display the paths associated with local drives when displaying drive mappings. o Added /p to page output when displaying current drive mappings. o Added /b to JRBMAP to truncate the lowest level directory to 8 chars to allow '#jrbmap p:=sys:users\%LOGIN_NAME' in a login script to work for usernames longer than 8 chars. o Fixed a bug where /r and /s would not save/restore map rooted paths correctly. o Added /u and /v to allow a username/password combination to be specified. o Added /x and /z to save all network drive mappings to a file and to subsequently restore them. If /x and /z are used together, current mappings are saved before the new lot are read from a file allowing toggling between two sets of mappings. o Added the ability to do 'jrbmap next := sys:public'. Jrbpurge o Fixed /a which when used, resulted in an "Invalid option" message. o Modified so that a list of files separated by commas can be given as part of the directory or via /f e.g. /f=*.obj,a.*,fred.dat,*.bak. Listobj o Fixed a bug where it was not displaying server names when 'A' was used indicating all servers to which you are currently attached. o Listobj can now accept input from a file. o Added /w to suppress full names. o Added /v to give output as setname commands. o Added /d to prevent truncation of names. Netcopy o Modified to use a 20 KB buffer when copying files across servers which allows packet burst to come into play, resulting in fewer packets and faster copying. o Netcopy was failing to copy the inherited rights mask for directories (I'm sure that was working ok a few versions back!) o Fixed a problem with /u and /q where it was prompting to all copy files rather than just those which had been updated. o Added /u=n to copy any files which do not have an exact match (size and last update date) in the target directory. o Modified to allow copying of Mac files and directories even when Netcopy cannot create them with the same DOS name. Pqadd o Added /b allowing you to operate on both operators and users at the same time. o Modified to support the use of wild cards in queue names. Pqdel o Added /b allowing you to operate on both operators and users at the same time. o Modified to support the use of wild cards in queue names. Pqlist o Modified to allow output of the form number (this was an oversight). Pqusers o Added /z to give the output as pqadd commands. Psadd o Added /b allowing you to operate on both operators and users at the same time. o Modified to support the use of wild cards in print server names. Psdel o Added /b allowing you to operate on both operators and users at the same time. o Modified to support the use of wild cards in print server names. Psusers o Added /z to give the output as psadd commands. Pwdexp o Modified so that a file server name can be given on the command line allowing impending password expiry to be checked on other servers when attaching to other servers at login. o Removed an arbitary restriction where you could not specifiy a value greater than 100 for /d (I have no idea why I imposed that restriction in the first place!). Setbal o Fixed a problem where when a negative balance was set from a file, all subsequent balances were set to a negative value. Sethome2 o Modified to optionally truncate usernames to 8 chars before appending to the root path to obtain the user's home directory (/b). o Modified to process MAKEUSER .usr files (/m). o Fixed a problem when combining /a and /c. Setname o Fixed a bug where it was chopping off the last character of the full name when using /r with an input file. o Modified to accept wild cards in object names. o Modified to allow processing of all members of a group via /i. o Modified so that /p, is now used for paging output (this makes it consistent with every other program), /r now indicates an object is a print server, and /b removes trailing blanks from full names (this was previously /r). o Added /c to convert existing full names to lowercase. o Added /d to delete full names. Setowner o Modified the behaviour so that when a directory is specified, it does not process the entire tree by default. I have added /d=t to allow this and removed /n to suppress processing of subdirectories of the designated directory. This makes setowner consistent with other programs. o Added /c to allow you to specify the name of the current owner of files. Only files owned by matching objects will have their ownership changed. Setpword o Now displays the object type when it is not 'user' for each object whose password is changed. o Added /b to force updating of the password expiry date by the password expiration interval (if set) when supervisor or a manager sets another user's password. By default Netware will change the password expiry date to 1-Jan-85. o Added /c to force retention of the password expiry date (if set) when supervisor or a manager sets another user's password. By default Netware will change the password expiry date to 1-Jan-85. Trstlist o Modified to allow output to be spread over two lines (/z). This allows for long paths, and when /z is used, the object's full name is displayed. o Added values 'r' and 'g' to /b to force output of either 'rights' commands for NW 4.x, or 'grant' commands for 2.x/3.x. o Added values 'r' and 'g' to /m to force output of either 'rights' commands for NW 4.x, or 'remove' commands for 2.x/3.x. o Added /a to include trustee assignments for objects to which a user is security equivalent. This includes group membership (a user is security equivalent to groups belonged to). Users o Fixed a problem where it reported insufficent memory to store locations when a record was encountered in LOCATION.SRT containing an address only. Whats not fixed 1. I've received one report of NETCOPY misbehaving when copying MAC directories with graphics characters in the MAC name. This is almost certainly a bug in Novell's API's. 2. Programs which copy directories and their contents will give an error when a log file is created within a directory to be copied and the program attempts to copy the log file which is already open. 3. DELOBJ and FSUPDATE (with /d) will delete a log file if it is created within a directory whose contents are being deleted (the fact that the file is open does not prevent it being deleted). JRBUTILS v2.21 7-Dec-1994 A number of bugs in v2.20 have been fixed and a few new features added. Most programs o Fixed a bug where an error log file was created whenever /e=none was used. Nothing was written to the error log. o Allowed truncation of the logging keywords to the minimum number of unique letters, and provided a single letter alternative for those beginning 'no'. This was to reduce the problem of exceeding the DOS command line length limit with programs like moveuser. o Misc corrections to the in-built help. Creatobj o Creatobj was returning a non-zero error level regardless of whether an error occurred. It now returns an error level based on the success or failure of the last user created. Zero if successful, non-zero for failure. o Was not setting grace logins remaining to equal grace logins allowed when a user is created. o Fixed problems with /m and /d when creating users on another server. o New feature. Added /v to enable verbose mode to list directories and files created, trustee assignments granted. o New feature. Added /c to allow creation of the directory specified via /d. Delobj o When using /x under NW 3.12, the names of purged files were displayed with extra characters appended. It appears that when scanning for deleted files under NW 3.12 each file name is returned without a terminating null byte. The same problem occurred in fsupdate. Fsupdate o Was giving 'Divide error' on volumes with a 64 K block size. o Was failing to detect when the source and destination path were the same when copying files. Getbal o Now displays totals for most columns. These can be suppressed. Grplist o Some group names were dropped when 4 or more group names were given without parentheses e.g 'grplist abc ~ def ~ ghi ~ jkl'. o In v3.10 it was impossible to operate on groups where '&', '~' or '!' formed part of the group name. These can now be enclosed in double quotes e.g. 'grplist "a&b"' wil list members of group A&B, whereas 'grplist a&b' will list users who are members of both groups A and B. o Some valid characters in group names e.g. '.' were being rejected as invalid. Jrbpurge o Fixed a problem where when checking a date given using /m, it was using the number of days in the following month. Mgrlist o Was not removing duplicate managers when /u used. Moveuser o Was giving 'Divide error' on volumes with a 64 K block size. o When using a group translation file and /b, it was creating all groups (including those on the source server) on the target server. Netcopy o Was giving 'Divide error' on volumes with a 64 K block size. Pqdeljob o Can now specify usernames as well as job numbers. All jobs submitted by the specified users are deleted. o Added /u. This provides an alternative to entering a username on the command line. When used without specifying a username, all jobs belonging to the user running pqdeljob are deleted. Pqlist o Can now specify a username on the command line. Only jobs submitted this user are displayed. o Added /u. This provides an alternative to entering a username on the command line. When used without specifying a username, only jobs belonging to the user running pqlist are displayed. o Added /z to force pqlist to return an error level equal to the number of jobs displayed. Salvlist o Fixed a problem where when checking a date given using /m, it was using the number of days in the following month. Sethome2 o Added a new feature /d to allow deletion of HOME_DIR properties. Setpword o Added /a to prevent setting of passwords. May be useful with /g and /w. Setrest o When setting password expiration intervals, both for users and for the server default via /z, the values(s) were set correctly, but were displayed incorrectly. The displayed value was in byte-swapped order. o Fixed a problem when deleting the only station restriction for a user via /d. The restriction was removed, but the bindery property was not deleted which caused getrest to display "No restrictions" twice. The problem did not occur when using /w. Users o Users would not accept /s=l for sorting by location. o Users was not correctly sorting by network address. JRBUTILS v2.20 20-Oct-1994 Part A has been expanded to 30 programs (27 was never an aesthetically pleasing number!) by the following changes: o Retired Setxonly. o Moved Usergrps from Part B to Part A so that all group management utilities are in Part A. o Added Makememb which allows adding/removing users to/from multiple groups. o Added Accexp which can be used in a login script to warn of impending account expiration. o Added Sethome2 which is an extended version of David Harris' Sethome, written with David's permission. New features, changes and bug fixes in v2.20 (the ones that I can recall!) All (or most) programs o Updated the help display to allow arrow-up, arrow-down, top, bottom etc. o Added /l to control whether non error output is written to the screen, and/or to a log file. Output may optionally be appended to an existing log file. o Added /e to control whether error output is written to the screen, the log fle optionally created via /l, to an error only log file, or is discarded. Output may optionally be appended to an existing error log file. o Fixed a problem in programs accepting a path as input where the path was reported to be invalid when it was a local drive mapped to a network drive. Chkhome o Added /h to list only the home directories. This can be useful when preparing a BAT file to perform some operation on the directories. Creatobj o Now creates the MISC_LOGIN_CONTROL property for users. This property is rarely used, but the lastlgn program below can use it. o Now gives a sensible error when it cannot create a home directory for usernames exceeding 8 characters in length. o Changed the previous /l (for pointing to a login script) to /m so that /l is now used across all programs to log all output to a file. Delobj o DELOBJ simply exited when a valid path was supplied via /d (It was treating a return code of OK from the checking routine as an error). o Added /x to purge files as they are deleted. Dquota o Now adjusts output units as needed to avoid integer overflow (e.g. for values > 4.3 GB) o Now gives the free space as the smaller of quota - used and the free space on the volume. o Added substitution parameter %p for user supplied text files. %p waits for a key to be pressed before continuing. o Fixed various minor bugs. Getbal o Added sorting by value. o Added filtering of output e.g. balances < $10.00. o Can now select which variables are displayed and in what order (balance, credit limit etc). o Can now display the default account balance and credit limit given to users created using SYSCON and CREATOBJ (displayed under SYSCON's "Supervisor Options", "Default Account Balance/Restrictions"). Getequiv o Can now use ! to exclude servers e.g. '*,!fred/*' would process all users on all servers except server FRED. Getquota o Now adjusts output units as needed to avoid integer overflow (e.g. for values > 4.3 GB). o Now gives the free space as the smaller of quota - used and the free space on the volume. o Added /dt to display quotas etc for all directories in a tree. o Added /di for use with dt to display usage inclusive of subdirectories. o Added /y to process entire directory trees for users. o Added /w to control space available for printing directories, usernames etc. Getrest o Renamed from getacres (getrest = GET RESTrictions). o Added /t to output only the total users. o Added /u (output usernames only). o Added /n (dont output the full names). o Added /v (output values only). o Added /z to display the default account restrictions for users created using SYSCON (displayed under SYSCON's "Supervisor Options", "Default Account Balance/Restrictions"). Grpadd o Renamed from grpaddu. o Server names may now precede all user or group names, but obviously all must be the same. Grpdel o Renamed from grpdelu. o Server names may now precede all user or group names, but obviously all must be the same. Grplist o Can now specify wild cards in the group name when an expression is not used. o Can now give expressions to list users whose membership meets criteria across one or more groups e.g. '(A & B) ~ !C' would list those users who are members of both groups A and B, or are not a member of group C. o Added /u to indicate that all users on the server should be listed. This was previously done by giving '*' instead of a group name, but '*' will now list membership of all groups on the server. o Changed previous /l to /b so that /l is now used across all programs to control non error output. Killconn o Worked around a bug in a Netware function call causing loss of connection to the server when a user was specified and packet signatures are in use. o Can now give a server name followed by a slash (e.g. PUHA/) as the first parameter to force /a, /i or /n to operate on a server other than the one to which your current drive is mapped. Listobj o Added ! to exclude servers e.g. *,!fred/* would list all objects of the nominated type on all servers except server FRED. o Added /n to force searching through the full name field as well as object names e.g. 'listobj */john /n' would list all users named 'john' plus any others with 'john' appearing as a separate word in the full names. Wild card searching in the full name is supported. o Changed previous /l to /m so that /l is now used consistently across all programs to control non error output. o Added /b to list only static bindery objects. o Added /c to list only dynamic (temporary) bindery objects. Mgradd o Renamed from uamadd. o Removed the need for supervisor equivalence, so that it can be used by managers to manipulate managed objects. Supervisor equivalence is still required to create a work group manager. Mgrdel o Renamed from uamdel. Mgrlist o Renamed from uamlist. Netcopy o Lots of minor improvements. o Fixed bug in /u where it was comparing the update dates incorrectly. o Modified to allow copying of files only, added /s to copy subdirs. o Added support for other name spaces, and for extended attributes as used by OS/2. I believe OS/2 files are copied correctly, NFS files appear to be copied correctly so long as /t is used. Netcopy has not been tested with FTAM files but will attempt to preserve their name space attributes. o Added facility to adjust vol and dir quotas as they are copied. This is primarily for use when copying to a volume with a larger block size. o Now checks that there is sufficient space before copying each file. This allows for volume space, volume quotas and directory quotas. o Can now remove volume and dir quotas before copying, and restore afterwards. The quotas removed are logged to a file as Setquota commands so that in the event of abnormal termination of netcopy, the quotas removed can be easily restored. o Fixed a problem overwriting files which were flagged 'delete inhibit' rather than 'read only'. o No longer leaves zero length files in the destination directory when the source file is in use and can't be opened. o Added option /n=b to not copy hidden directories. o Added option /n=c to not copy hidden files. o Added /a to copy only those files with the archive bit set. o Added /b to reset the archive bit on the copy of the file. o Added /i to reset the archive bit on the original file. o Added /c to allow creation of the lowest level of the destination directory e.g. if copying to vol1:data\temp, netcopy can create the temp subdirectory. o Now correctly handles copying a directory tree to a subdirectory of itself. o Added /q to query whether or not to copy each file. o Worked around an intermittent bug copying volume quotas which appears to be caused by an incorrect buffer size in a Netware function call. o Now deletes files in the destination directory rather than simply overwriting them. This allows them to be subsequently salvaged. Pqadd o Added /r to allow addition of print servers to a queue. Pqdel o Added /r to allow removal of print servers from a queue. Pqdeljob o Can now specify a range of jobs to be deleted e.g. 1-25. Pqlist o Fixed bug where output was out of alignment when the owner of a queued job no longer existed. Pqusers o Can now display print servers associated with the queue. o Can now display both users and operators, or users, operators and print servers in one invocation of the program. o Can now expand user and/or operator groups to list all users who are users or operators. o Auto-sorts the queues into alphabetical order. Psusers o Added auto-sorting of print server names when wild cards are used. Salvlist o Added /z to search on file size. o Added /m to search on deletion date/time. o Added operators =, !=, >, >=, <, <= to filter by file name, size, owner, deletor, deletion date/time. o Can now specify a filename as part of the path. o Added support for wild cards in file names. o Added /r to recover files matching the search criteria. These will automatically be renamed to a unique name if a file already exists with the original name. An existing file with the same name as the file being recovered may optionally be replaced (the existing file deleted). An option exists to replace existing read-only files. o Added the ability to process a list of directories/files in a file. o Added /n to recover the newest file where there are multiple deleted files with the same name. A value may be given e.g. /n=2 recovers the newst file but two i.e. the 3rd newest. Setbal o Added /z to set the default balance or credit limit used by SYSCON (displayed under SYSCON's "Supervisor Options", "Default Account Balance/Restrictions"). Setequiv o Fixed a bug where it was not detecting work group or user account managers correctly. Setname o Renamed from setfname. o Added /m to process MAKEUSER input files. Makeuser always converts the fullname to uppercase, so after running Makeuser, feed the same file to Setname and the full name will be set exactly as specified. Setowner o Removed requirement for /o when setting ownership on individual files. o Added (new) /o to specify the object type of the new owner. You can now set ownership to any object type. o Lots of minor changes and tidying of output. Setpword o Now operates across multiple servers. o Can use ! to skip servers e.g. '*,!fred/supervisor' would set the supervisor password on all servers except FRED. o Changed range code to allow ranges with unequal numbers of digits e.g. aa1-aa10. o Can now change passwords for any type of object. o Can now be used by anyone, but the old password is required if you are not supervisor equivalent, or a manager of the object whose password is being changed. o Can now generate random passwords of any length. o Passwords may be logged to a file with user control over the file format. This is intended for use with, but is not limited to, random password generation. Setquota o Added /c to control output units. o Output units now default to same as the input units. o Added autochange of units to avoid integer overflow for large quotas. o Added /dt to set/remove a quota on all directories in a tree. Setrest o Renamed from setacres (setrest = SET RESTrictions). o Fixed a bug where when deleting station restrictions from a user with more than 12 restrictions, every 12th was corrupted. o Can now set the default account restrictions for users created using SYSCON (these are usually set under SYSCON's "Supervisor Options", "Default Account Balance/Restrictions". Trstlist o Added /o to specify any object type. o Added /r to specify print servers. o Added /m to output as REMOVE commands. o Added sorting by object, path or rights. o Added filtering of output e.g. list only trustees including the S right. o Added autodetection of files given on the command line, removing the need to use /f, which now functions as per other programs to indicate a file containing users, directories or files for which the ownership is to be changed. Usergrps o Added optional sorting of the groups. Usermgrs o Renamed from useruams. o Added optional sorting of managers. Users o Added ! to exclude servers e.g. *,!fred/*. o Can now output object ID's. o Changed previous /l (used to specify a location) to /m so that /l could be used consistently across all programs to control non error output. New programs in JRB220 Part B. Moveuser Copies users and groups from one server to another retaining all bindery properties and their contents where possible, and copies the contents of mail and home directories, retaining all attributes, trustees, quotas etc as per NETCOPY. Quotas can be adjusted during the copy (for larger block sizes on the dest volume), and groups can be substituted. Password may be left NULL or set to the username. The home directory path may be altered during copying (e.g. from VOL1:USERS to USERS:ECON). Groups can be created on the destination server as required when moving users who belong to these groups on the source server. Ownership of files can be set to the user regardless of original owner. A translation file may be given to change group membership on the destination server. FSUpdate Multi-server file maintenance utility. Copies individual files, files selected via wild cards, or entire directory trees to multiple servers. Useful for software updates. Can also delete or rename multiple files across multiple servers. Can purge files upon deletion. Has the usual range of options. Correctly handles MAC name space, I believe it handles OS/2 correctly, and should handle NFS files provided the -t switch is used. PQStatus Allows you to view and alter the status of multiple print queues across multiple servers. Alterable values (these may be toggled or set to a specific value) are (a) jobs can be submitted to the queue, (b) servers can attach to the queue, and (c) servers can service the queue. Con_ops Allows you to add, delete and list console operators. JRBMap (was to be called NETMAP but someone else has recently released a program with this name). A replacement for Novell's MAP, primarily for use in BAT files where it will map drives without fuss and piping in 'y's and 'n's. Can specify alternative paths so that in the event of one being unavailable it will try the next (We use this for all applications at Lincoln University so that in the event of an APPS volume failing, the application will simply be retrieved from the corresponding volume on another server). Can save existing mappings in the DOS master environment and subsequently restore from there. Supports map root. JRBPurge Allows selective purging of files - has many of the options of salvlist. Supports purging by name, size, owner, deletor and deletion date and time. Lastlgn Can be used in a login script to display the user's previous login date and time. This provides a useful indication of when the account was last used. This may not work under NW 4.x. Lastlgn requires that each user have a MISC_LOGIN_INFO property and it can be used to create these and copy the previous login date and time from the LOGIN_CONTROL property by a supervisor equivalent user or a manager. The last login date and time in the LOGIN_CONTROL property is overwritten with the current date/time by the login process, and so has been changed by the time LOGIN begins executing the login script. LOGIN does not update the date/time in the MISC_LOGIN_INFO property until immediately prior to exit, thereby making the previous login time available during execution of the login script. JRBUTILS v2.12 24-Mar-1994 1. New features o In all programs, a line beginning with ';' in a input file is treated as a comment line. o In GETQUOTA, added option /nc to suppress commas in numeric values. o In GETQUOTA, added option /us to display the subdirectory name rather than the full path, which could be truncated if too long for the available space. o In GETQUOTA, /v is now superflous - it is no longer required when a volume appears on the command line. o A similar change has been made in SETQUOTA, but /v must be used if a volume name appears in an input file. o In GRPLIST, the group name may be preceded by '!' meaning list all users not a member of the group. 2. Bug fixes (ignoring the most obscure ones) o In all programs, fixed a problem with detection of output redirection which was introduced in v2.11. A very small number of sites were unable to display the in-built help. o In many programs, when using an input file, the last character of the last line could be lost if there was no at the end of the file. o In SETQUOTA, RENOBJ, SETFNAME fixed a problem where blank lines in input files were producing error messages. o GETQUOTA, SETQUOTA, GETACRES and SETACRES previously required that all options appear after the parameters, whereas in all other programs, options could appear anywhere on the command line. These 4 programs now accept options anywhere on the command line. o DELOBJ. The protection on the HOME_DIR bindery property created by David Harris' SETHOME is such that users can change the contents of this property. This makes it possible for a user to set it to some other directory e.g. SYS:PUBLIC. As DELOBJ will delete the directory found in the HOME_DIR property, this was a potential hazard. DELOBJ now checks the user's rights to the directory found in the HOME_DIR property. If the user does not explicitly have a trustee assignment granting [ RWECMFA], DELOBJ will now query whether or not to delete the directory. To avoid this check, use /a. o In CREATOBJ, removed a limitation where when specifying a login script file, it previously had to be on the same server as the user being created. o When using /c in CHKHOME, error messages about being unable to allocate a directory handle because there was no such directory, some times appeared. These occurred when scanning for a matching directory on other volumes when the user's home directory did not exist. They have been suppressed. o In DQUOTA, if any of the total quota, total usage, or total space available exceeded 2.1 GB, when using /v, the output was messed up. o In DQUOTA, when a directory was specified, and that directory had less than the warning threshold of free space, dquota displayed " has less than xxx Bytes available". It now inserts the directory name. o In DQUOTA, when /cm was combined with /nc, the output was incorrect. The decimal point was overwriting one of the digits. o In GRPADDU, when /q was used, the server name, group name and user name in the prompt were in the wrong order. o In GRPDELU, the wrong server name appeared in an error message when trying to add an non-existant user on another server. o Fixed a bug in GETQUOTA where /t gave zero totals. o Modified GETQUOTA to display totals even when there was only one line of output. I had previously suppressed totals in this case as the totals equalled the values in the single line and were therefore superflous. But some folks are running automated procedures which redirect output to a file then use grep to find the totals line. Therefore I've decided it is better to be consistent and always output a totals line. JRBUTILS v2.11 18-Dec-1993 1. New features o In USERS, you can now specify the connections you want displayed using /c. o GETQUOTA now allows you to suppress quotas, space used and space available using /o=n. o LISTOBJ, RENOBJ, CREATOBJ, DELOBJ and KILLCONN now allow you to specify the object type in hexadecimal using /o. This removes an inconsistency where LISTOBJ displays object types in hex (using /a) but other programs required the object type in decimal. o Added /a to GRPLIST to list the group members by an alternative and slower method. This avoids a limitation in the NWReadPropertyValue function which is reached when a group has more than about 8,000 members. All programs using this function now produce a warning if the limitation is reached when processing the members of a group. Use GRPLIST /a/l to produce a file, and use this file as input to other programs. 2. Unfixed bugs o A user has reported DQUOTA hanging under NW 2.15. I have had no luck whatsoever identifying this problem. 3. Bug fixes (ignoring the most obscure ones) o /p did not work in SETACRES o SETACRES didn't create a user's LOGIN_CONTROL property when necessary. o Preceding a username with a '$' in SETFNAME did not work. o Preceding object names with '$' and '#' in DELOBJ did not work. o TRSTLIST, GETEQUIV and GETACRES did not allow you to display information for objects to which the user was security equivalent e.g. TRSTLIST did not allow a member of a group to display trustee assignments for the group. o KILLCONN did not allow a manager to clear connections for managed objects. NW 3.11 does not seem to allow this anyway, athough its documented as being possible. o GETACRES would more often than not fail to display all users when sorting by value due to a bug in the sub-sorting code. o USERS would display the location in uppercase when selecting by location. o SETQUOTA failed to release directory handles when setting directory quotas and the quota being set equalled the existing quota. This could result in it running out of directory handles. o Full names for users and groups should be limited to 48 characters but SYSCON allows them to be set longer. This caused output to be screwed up in USERS and LISTOBJ. o Fixed a couple of minor errors in the help for USERS. o /w in CREATOBJ could not be used to specify a password for a print server. o /g was missing from UAMDEL. o DELOBJ misbehaved when using an input file with records longer than 48 characters. o DELOBJ was not deleting subdirectories of a users home directory. o DQUOTA contained a superfluous printf statement outputting the username when /y was used. o SETOWNER would sometimes hang when it encountered a file with characters in the name with the eighth bit set. This was a bug in the Client SDK and I've avoided it by using a different function call. o DQUOTA, GETQUOTA, SETQUOTA, SETOWNER, SETXONLY, CHKHOME, CREATOBJ, TRSTLIST and SALVLIST all had a problem with processing hidden directories. This is fixed. o NETCOPY would hang intermittantly. o When GRPADDU created a group but did not add any members (grpaddu group /c) the group was left without a GROUP_MEMBERS property. This did not cause problems when subsequently using GRPADDU, but less elegant programs such as SYSCON and MAKEUSER then could not add members.