Bug Fixes and Changes in 4.3BSD April 15, 1986 Marshall Kirk McKusick James M. Bloom Michael J. Karels Computer Systems Research Group Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 (415) 642-7780 _A_B_S_T_R_A_C_T This document briefly describes the changes in the Berkeley version of UNIX* for the VAX|= between the 4.2BSD distribution of July 1983 and this, its revision of March 1986. It attempts only to summarize the changes that have been made. _N_o_t_a_b_l_e _i_m_p_r_o_v_e_m_e_n_t_s o+ The performance of the system has been improved to be at least as good as that of 4.1BSD, and in many instances is better. This was accomplished by improv- ing the performance of kernel operations, rewriting C library routines for efficiency, and optimization of heavily used utilities. o+ Many programs were rewritten to do I/O in optimal blocks for the filesystem. Most of these programs were doing their own I/O and not using the standard I/O library. o+ The system now supports the Xerox Network System net- work communication protocols. Most of the remaining Internet dependencies in shared common code have been removed or generalized. __________________________ * UNIX is a Trademark of Bell Laboratories. |= DEC, VAX, PDP, MASSBUS, UNIBUS, Q-bus and ULTRIX are trademarks of Digital Equipment Corporation. September 2, 1987 - 2 - o+ The signal mechanism has been extended to allow selected signals to interrupt pending system calls. o+ The C and Fortran 77 compilers have been modified so that they can generate single precision floating point operations. o+ The Fortran 77 compiler and associated I/O library have undergone extensive changes to improve reliability and performance. Compilation may, optionally, include optimization phases to improve code density and decrease execution time. Many minor bugs in the C com- piler have been fixed. o+ The math library has been completely rewritten by a group of numerical analysts to improve both its speed and accuracy. o+ Password lookup functions now use a hashed database rather than linear search of the password file. o+ C library string routines and several standard I/O functions were recoded in VAX assembler for greater speed. The C versions are available for portability. Standard error is now buffered within a single call to perform output. o+ The symbolic debugger, _d_b_x, has been dramatically improved. _D_b_x works on C, Pascal and Fortran 77 pro- grams and allows users to set break points and trace execution by source code line numbers, references to memory locations, procedure entry, etc. _D_b_x allows users to reference structured and local variables using the program's programming language syntax. o+ A new internet name domain server has been added to allow sites to administer their name space locally and export it to the rest of the Internet. Sites not using the name server may use a static host table with a hashed lookup mechanism. o+ A new time synchronization server has been added to allow a set of machines to keep their clocks within tens of milliseconds of each other. _B_u_g _f_i_x_e_s _a_n_d _c_h_a_n_g_e_s Section 1 September 2, 1987 - 3 - adb Locates the stack frame when debugging the kernel. Slight changes were made to output formats. arcv Has been retired to /_u_s_r/_o_l_d. as The default data alignment may now be speci- fied on the command line with a -a flag. A problem in handling filled data was fixed. Some bugs in the handling of dbx stab informa- tion were fixed. at The user may now choose to run _s_h or _c_s_h. Mail can now be sent to the user after the job has run; mail is always sent if there were any errors during execution. _A_t now runs with the user's full permissions. All spool files are now owned by ``daemon''. The last update time is in seconds instead of hours. The problems with day and year increments have been fixed. awk Problems when writing to pipes have been corrected. bc _B_c will continue reading from standard input, after failing to open a file specified from the command line. calendar Now allows tabs as separators. A subject line with the date of the reminder is added to each message. cat Problems opening standard input multiple times have been fixed. _C_a_t now runs much faster in the default (optionless) case. cb No longer dumps core for unterminated comments or large block comments. For most purposes, _i_n_d_e_n_t(1) is far superior to _c_b. cc The C compiler has some new features as well as numerous bug fixes. The principal new feature is a -_f flag that tells the compiler to compute expressions of type _f_l_o_a_t in single precision, following the ANSI C standard pro- posals. The C preprocessor has been extended to generate the dependency list for source files. The output is designed for inclusion in a makefile without modification. The bug fixes are many and varied. Several fixes deal with type coercion and sign exten- sion. Signed _c_h_a_r and _s_h_o_r_t values are now properly sign-extended in comparisons with September 2, 1987 - 4 - unsigned values of the same length. Conver- sion of a signed _c_h_a_r value to unsigned short now correctly sign-extends to 16 bits (on the VAX). Non-integer switch expressions now eli- cit warnings and the appropriate conversions are emitted. Unsigned longs were being treated as signed for the purpose of conver- sion to floating types; the compiler now pro- duces the appropriate complicated instruction sequence to do this right. An ancient misunderstanding that caused _i *= _d to be treated as _i = _i * (int) _d instead of _i = (double) _i * _d for int _i and double _d has been corrected. If a signed integer division or modulus is cast to unsigned, the unsigned division or modulus routine is no longer used to compute the operation. Some problems with bogus input and bogus out- put are now handled better; more syntax errors are caught and fewer code errors are emitted. Many declarations and expressions involving type _v_o_i_d that used to be disallowed now work; some expressions that were not supposed to work are now caught. A pointer to a structure no longer stands a chance of being incremented by the size of its first element instead of the size of the structure when the value of the element is used at the same time the pointer is postincremented. Side effects in the left hand side of an unsigned assignment operator expression are now performed only once. Hex constants of the form 01234x56789 are now illegal. External declarations of functions may now possess arguments only if they are also definitions of functions. Declarations or initializations for objects of type structure where the particular structure was not previously defined used to result in confusing messages or even compiler errors; it's now possible to deduce one's mistake. Some effort has been put into making the com- piler more robust. Initializers containing casts sometimes would draw complaints about compiler loops or other problems; these now work properly. The register resource calcula- tion now takes into account implicit conver- sions from _f_l_o_a_t to _d_o_u_b_l_e type, so that the code generator will not block by running out of registers. The compiler is more diligent about reducing structure type arguments to functions and no longer gives up when it can- not reduce the address to an offset from a September 2, 1987 - 5 - register in only two tries. Programs that end in ``\n#'' no longer cause compiler core dumps. The compiler no longer dumps core for floating point exceptions that occur during reduction of constant expressions. The com- piler expression tree table was enlarged so that it does not run out of space as quickly when processing complex expressions such as _p_u_t_c_h_a_r(_c). The C preprocessor no longer uses a statically allocated space for strings. The preprocessor also now handles # _l_i_n_e direc- tives properly and correctly treats standard input from a terminal or a pipe. Two fen- cepost errors in the C peephole optimizer were adjusted and it now dumps core less often. Some minor code efficiency changes were made. An important change is that the compiler now recognizes unsigned division and modulus operations that can be done with masking and shifting; this avoids the usual subroutine call overhead associated with these opera- tions. The computation of register resources has improved so that the number of registers required for an expression is not overes- timated as often. Register storage declara- tions for _f_l_o_a_t variables now cause them to be put in registers if the -_f flag is used. The compiler itself is somewhat faster, thanks primarily to a change that considerably reduces symbol table searches when entering and leaving blocks. The compiler sources have been rearranged to make maintenance easier. The names of some source files have been changed to protect the innocent; header files now end in ._h, and names of files reflect their functions. Con- figuration control has been simplified, so that only a simple configuration include file and the makefile flags variable should have to be considered when putting the compiler together. Redundant information has been eliminated from include files and the makefile, to reduce the chance of introducing changes that will make data structures or defines inconsistent. Values for opcodes are now taken from an include file _p_c_c._h that is common to all the compilers that use the C compiler back end. The peephole optimizer can now be compiled without -_w. checknr The ._T& _t_b_l directive was added to the list of known commands. September 2, 1987 - 6 - chfn Has been merged into _p_a_s_s_w_d(1). chgrp An option has been added for recursively changing the group of a directory tree. chmod Can now recursively modify the permissions on a directory tree. The mode string was extended to turn on the execute bit condition- ally if the file is executable or is a direc- tory. chsh Has been merged into _p_a_s_s_w_d(1). clear Now has a proper exit status. colrm Line length limitations have been removed. compact Has been retired to /_u_s_r/_o_l_d. compress Replaces _c_o_m_p_a_c_t as the preferred method to use in saving file system space. cp No longer suffers problems when copying a directory to a nonexistent name or when some directories are not writable in a recursive copy. The -p flag was added to preserve modes and times when copying files. crypt Waits for _m_a_k_e_k_e_y to finish before reading from its pipe. csh Has a new flag to stop argument processing so set user id shell scripts are more secure. File name completion may be optionally enabled. _C_s_h keeps better track of the current directory when traversing symbolic links. Some major work was done on perfor- mance. ctags _C_t_a_g_s was modified to recognize LEX and YACC input files. Files ending in ._y are presumed to be YACC input, and a tag is generated for each non-terminal defined, plus a tag _y_y_p_a_r_s_e for the first %% line in the file. Files end- ing in ._l are checked to see if they are LEX or Lisp files. A tag yylex is generated for the first %% line in a LEX file. In addition, for both kinds of files, any C source after a second %% is scanned for tags. date The _d_a_t_e command can now be used to set the date on all machines in a network using the _t_i_m_e_d(8) program. More information is logged regarding the setting of time. September 2, 1987 - 7 - dbx Major improvements have been made to _d_b_x since the 4.2BSD release. Large numbers of bug fixes have made _d_b_x much more pleasant to use; in particular many pointer errors that used to cause _d_b_x to crash have been caught. Some new features have been installed; for instance it is now possible to search for source lines with regular expressions. The Fortran and Pascal language support is much improved, and the DEC Western Research Labs Modula-2 com- piler is now supported. dd Exit codes have been changed to correspond with normal conventions. deroff _D_e_r_o_f_f no longer throws out two letter words. diff Context diffs merge nearby changes. New flags were added for ignoring white space differ- ences and for insensitivity to case. diff3 The RCS version of _d_i_f_f_3 has been merged into the standard _d_i_f_f_3 under two new flags, -E and -X. echo No longer accepts -n_a_n_y_t_h_i_n_g in place of -n. error Support for the DEC Western Research Labs Modula-2 compiler has been added. _E_r_r_o_r will now be able to run when there is no associated tty, so it may now be driven from _a_t(1), etc. If the -n and -t options are selected, _e_r_r_o_r will not touch files. ex Support for changing window size has been added, and terminals with many lines, such as the WE5620, are now handled. Several small bug fixes were installed and various facili- ties have been made faster. _E_x only reads the file ._e_x_r_c if it is owned by the user, unless the _s_o_u_r_c_e_a_n_y option is set. It only looks for ``mode lines'' if the _m_o_d_e_l_i_n_e option is set. If Lisp mode is set, it allows ``-'' to be used in ``words''. _E_x_p_r_e_s_e_r_v_e now provides a better description of what happened to a user's buffer when disaster struck. eyacc _e_y_a_c_c is no longer a standard utility. It has been moved to the Pascal source directory. f77 The Fortran compiler has been substantially improved. Many serious bugs have been fixed since the last release; the compiler now passes several widely used tests such as the September 2, 1987 - 8 - Navy Fortran Compiler Validation System and the IMSL and NAG mathematical libraries. The optimizer is now trustworthy and robust; the many gruesome bugs that it used to inflict on programs, such as resolving different vari- ables in the same _c_o_m_m_o_n block into the same temporary for purposes of common subexpression elimination, have been fixed. _D_o loops, which used to suffer from deadly problems where loop variables, limit values and tests all managed to misfire even without the help of the optim- izer, now produce proper results. Many severe bugs with _c_h_a_r_a_c_t_e_r variables and expressions have been fixed; it is now possible to have variable length _c_h_a_r_a_c_t_e_r variables on either side of an assignment, and the lengths of con- catenations are properly computed. Several register allocation bugs have been fixed, among them the awful bug that _a = _f(_a) where _a is in a register would not alter the value of _a. Register allocation, though significantly improved, is still pitifully naive compared with the methods found in production Fortran compilers. _S_a_v_e statements cause variables to be retained, even if a subroutine returns from inside a loop. It is no longer possible to modify constants that are passed as parameters to subroutines and thus change all future uses of the constant when it is used as a subrou- tine parameter. Multi-level equivalences are no longer scrambled, and the _c_m_p_l_x intrinsic conversion function no longer garbles its result. The compiler now generates integer move instructions where it used to produce floating point move instructions, even when not optimizing, so that non-standard use of equivalences between _r_e_a_l and _i_n_t_e_g_e_r types work as on most other systems. _A_s_s_i_g_n state- ments now work with _f_o_r_m_a_t statements. The ``first character'' parameter of a substring is now evaluated only once instead of twice. Restrictions on _p_a_r_a_m_e_t_e_r variables are now enforced, and the compiler no longer aborts while trying to make sense of impossible _p_a_r_a_m_e_t_e_r variables. The restrictions on array dimension declarators are much closer to the standard and much more stringent. State- ment ordering used to be much more flexible, and wrong; it is now strictly enforced, lead- ing to fewer compiler errors. The compiler now chides the user for declaring adjustable length character variables that are not dummy arguments. The compiler understands that sub- routines and functions are different and September 2, 1987 - 9 - prevents them from being used interchangeably. The parser is no longer fooled by excess ``positional I/O control'' parameters in I/O statements. Several changes have been made to prevent the compiler itself from aborting; in particular, computed gotos do not elicit compiler core dumps, nor do multiplications by zero, nor do unusual statement numbers. The compiler now recognizes and complains about various kinds of hardware errors that can result from evaluating constant expressions, such as integer and floating overflow; it no longer dies when it receives a SIGFPE. Several memory management bugs that caused the com- piler to dump core for seemingly random things have met their demise. Some conversion opera- tions used to cause the code generator to emit impossible assembly language instructions that in turn caused the assembler some indigestion; these are now fixed. Some symbol table modif- ications were made to help out _d_b_x(1), so that values of _c_o_m_m_o_n and _p_a_r_a_m_e_t_e_r storage classes and _l_o_g_i_c_a_l types are now accessible from _d_b_x. When the compiler does abort, the error mes- sages produced are now comprehensible to human beings and messy core dumps are no longer left behind. Some effort has been made to improve error reporting for program errors and to han- dle exceptional conditions in which the old compiler used to punt. Some improvements in optimization were added to the compiler. Offsets to static data are now shorter than before; the compiler used to produce 32-bit offsets for all local vari- ables. _R_e_a_l variables may now be allocated to registers. Format strings in format state- ments are compiled for considerable runtime savings; for various reasons, format strings in character constants and variables in I/O statements are not. Common subexpression elimination now reduces the re-evaluation of exponentiations in polynomial expressions. Some problems with alignment of data that caused ghastly performance degradation have been repaired. Some changes have been made in the way the compiler is put together. The compiler front end now uses the common intermediate code for- mat established in the include file _p_c_c._h to communicate with the back end. The back end September 2, 1987 - 10 - has been re-merged with the C compiler sources, so that bug fixes to the C compiler are automatically propagated to the Fortran back end. Similarly, the Fortran and C peephole optimizers were re-merged. Some new features were added to the compiler. There is now a -_r_8 flag to coerce _r_e_a_l and _c_o_m_p_l_e_x variables and constants to double pre- cision and double complex types for extended precision. There is a -_q flag to suppress listing of file and entry names during compi- lation. Some foolproofing was added to the compiler driver; it is no longer possible to wipe out a source file by entering ``f77 -o foo.f'', and it now complains about incompati- ble combinations of options. Many I/O library bugs were fixed. Auxiliary I/O has been fixed to be closer to the stan- dard: _c_l_o_s_e is a no-op on a non-existent or unconnected unit; _r_e_w_i_n_d and _b_a_c_k_s_p_a_c_e are no-ops on an unconnected unit; _e_n_d_f_i_l_e opens an unconnected unit. _I_n_q_u_i_r_e returns true when asked if units 0-MAXUNIT exist, false for other integers; it used to return false for legal but unconnected file numbers and errors for illegal numbers. _I_n_q_u_i_r_e now fills in all requested fields, even if the file or unit does not exist or is unconnected. _I_n_q_u_i_r_e by unit now correctly returns the unit number. Most of the formatted I/O input scanning has been rewritten to check for invalid input. For example, with an _f_1_0._0 format term, the following all used to read as 12.345: ``1+2.345'', ``12.3abc45'', ``12.3.45'', ``12345e1-''; they now generate errors. Con- versely, the legal datum ``12345-2'' for 12.345 used to be misread as -1234.52. The _b format term is now fixed, and _b_z now works for short records. Reads of short _l_o_g_i_c_a_l vari- ables no longer overwrite neighboring data in memory. Infinite loops in formatted output (an I/O list but no conversion terms in the format) are now caught, printing multiple records after the list is exhausted. In list directed reads, a repeat count, _r, followed by an asterisk and a space (and no comma) now follows the standard and skips _r list items. Repeat counts for complex constants now work. Tabs are now fully equivalent to spaces in list directed input. There are two new for- matting terms, _x for hex and _o for octal. The library now attempts to get to the next record September 2, 1987 - 11 - if doing an err= branch on error; the standard does not require this, but it is undesirable to leave the system hanging in mid record. After input errors, the I/O library now tries to skip to the next line if there is another read. This functionality is not required by the standard and is still not guaranteed to work. The Fortran runtime and I/O libraries have several new features. Many routines and vari- ables have been made static, cutting the number of symbols defined by the library almost in half. Many source files have been reorganized to eliminate the loading of extraneous routines; for example, the format- ted read routines are not loaded if a program only performs formatted writes. Standard error is now buffered. All error processing is now centralized in a single routine, _f_7_7__a_b_o_r_t. The _f_7_7__a_b_o_r_t routine has been separated from the normal Fortran main routine so that C code can call Fortran subroutines. Fortran programs that abort normally get a core file only if they are loaded with -g; the environment variable f77_dump_flag may be used to override this by setting it to _y or _n. The _r_i_n_d_e_x routine now works as documented. The C library _m_a_l_l_o_c and _r_a_n_d_o_m routines may now be accessed from Fortran. The new VAX math library has been incorporated and some bugs in calling math library routines have been fixed. The routine _d__d_p_r_o_d was added for use with the -r8 flag. The _s_i_n_h and _t_a_n_h routines have been deleted as they are loaded directly from the math library. The _l_o_g_1_0 routine from the math library is now used by _r__l_g_1_0 and _d__l_g_1_0. The _p_o_w routines now divide by zero when zero is raised to a negative power so as to generate an exception. Complex division by zero now generates an error message. Appropriately named environment variables now override default file names and names in open statements; see ``Introduction to the f77 I/O Library'' for details. Unit numbers may vary from 0 to 99; the maximum number that can be open simultaneously depends on the system con- figuration limit (the library does not check this value). Namelist I/O similar to that in VMS Fortran has been added to the compiler, and library routines to implement it have been September 2, 1987 - 12 - added to the I/O library. The documents ``A Portable Fortran 77 Compiler'' and ``Introduc- tion to the f77 I/O Library'' have been revised to describe these changes. The new _h_e_l_p system on the distribution tape in the user contributed software section contains a large set of help files for f77. fed Has been retired to /_u_s_r/_o_l_d. find Some new options have been added. It is now possible to choose users or groups that have no names by using the -nouser and -nogroup options. The -ls option provides a built in _l_s facility to allow the printing of various file attributes; it is identical to ``ls -lgids''. It is now possible to restrict _f_i_n_d to the file system of the initial path name with the -xdev option. A new type, -type _s, for sockets has been added. Symbolic links are now handled better. Globbing is now fas- ter. _F_i_n_d supports an abbreviated notation, ``find _p_a_t_t_e_r_n,'' which searches for a pattern in a database of the system's path names; this is much faster than the standard method. finger Despite numerous changes, _f_i_n_g_e_r still has Berkeley parochialisms. It has been modified to provide finger information over the net- work. Control characters are mapped to their printable equivalents (e.g. ^X) to avoid tro- jan horses in ._p_l_a_n and ._p_r_o_f_i_l_e files. file _F_i_l_e has been extended to recognize sockets, compressed files (._Z), and shell scripts. When it determines that a file is a shell script, it tries to discover whether it is a Bourne shell script or a C shell script. The special bits set user id, sticky, and append- only are also noted. The value of a symbolic link is now printed. from An error message is printed if the requested mailbox cannot be opened. ftp Many bugs have been fixed. New features are: support for new RFC959 FTP features (such as ``store unique''), new commands that manipu- late local and remote file names to better support connections to non-UNIX systems, sup- port for third party file transfers between two simultaneously connected remote hosts, transfer abort support, expanded and docu- mented initialization procedures (the ._n_e_t_r_c September 2, 1987 - 13 - file), and a simple command macro facility. gprof Uses _s_e_t_i_t_i_m_e_r to discover the clock frequency instead of looking it up in /_d_e_v/_k_m_e_m. An alphabetical index printing routine has been added. A few changes were made to the output format; a new column indicates milliseconds per call. groups Now prints out the group listed in the pass- word file in addition to the groups listed in the groups file. help Has been superseded by the _h_e_l_p facility included in the User Contributed Software. hostid Has been extended to take an Internet address or hostname. indent Has been completely rewritten; its default mode now produces programs somewhat more closely reflecting the local Berkeley style. install The _c_h_m_o_d in the _i_n_s_t_a_l_l script uses -f so that it does not complain if it fails. When _m_v'ing and _s_t_r_i_p'ing a binary (-s and not -c), the _s_t_r_i_p is done before the _m_v to avoid frag- mentation on the destination file system. iostat Disk statistics are collected by an alternate clock, if it exists. Overflow detection has been added to avoid printing negative times. A call to _f_f_l_u_s_h was added so that _i_o_s_t_a_t works through pipes and sockets. Code to han- dle additional disks was added in the same way as in _v_m_s_t_a_t. The header is reprinted when _i_o_s_t_a_t is restarted. kill Signal 0 may now be used as documented. lastcomm Several bug fixes were installed. _L_a_s_t_c_o_m_m now understands the revised accounting units. ld A list of directories to search for libraries may now be specified on the command line. learn The ``files'' lesson has been updated to reflect the default system tty conventions for erase and kill characters. _L_e_a_r_n now uses directory access routines so that trash files can be removed properly between lessons. leave Now ignores SIGTTOU and properly handles the +_h_h_m_m option. September 2, 1987 - 14 - lex The error messages have been made more infor- mative. lint Tests for negative or excessively large con- stant shifts were added. For -a, warnings for expressions of type long that are cast to type void are no longer emitted. A bug which caused _l_i_n_t to incorrectly report clashes for the return types of functions has been fixed. _L_i_n_t now understands that enums are not ints. The lint description for the C library was updated to reflect sections two and three of the Programmers Manual more accurately. Several more libraries in /_u_s_r/_l_i_b now have lint libraries. Changes were made to accommo- date the restructuring of the C compiler for common header files. lisp The Berkeley version of Franz Lisp has not been changed much since the 4.2BSD release. It has been updated to reflect changes in the C library. ln Now prints a more accurate error message when asked to make a symbolic link into an unwrit- able directory. lock _L_o_c_k now has a default fifteen minute timeout. The root password may be used to override the lock. If an EOF is typed, it is now cleared instead of spinning in a tight loop until the timeout period. logger A new program that logs its standard input using _s_y_s_l_o_g(3). login The environment may be set up by another pro- cess that calls _l_o_g_i_n. It now uses the new _g_e_t_t_t_y_e_n_t(3) routines to read /_e_t_c/_t_t_y_s. lpr Now supports ``restricted access'' to a printer- printer use may be restricted to only those users in a specific group-id. mail _M_a_i_l now expects RFC822 headers instead of the obsolete RFC733 headers. A retain command has been added. If the PAGER variable is set in the environment, it is used to page messages instead of _m_o_r_e(1). The write command now deletes the entire header instead of only the first line. An unread/Unread command (to mark messages as not read) was added. If Replyall is set, the senses of reply and Reply are reversed. When editing a different file, _m_a_i_l September 2, 1987 - 15 - always prints the headers of the first few messages. _F_l_o_c_k(2) is used for mailbox lock- ing. Commands ``-'' and ``+'' skip over deleted messages; type _u_s_e_r now does a sub- string match instead of a literal comparison. A -I flag was added which causes _m_a_i_l to assume that input is a terminal. make A bug which caused _m_a_k_e to run out of file descriptors because too many files and direc- tories were left open has been fixed. Long path names should not be a problem now. A VPATH macro has been added to allow the user to specify a path of directories to search for source files. man Support for alternate manual directories for _m_a_n, _a_p_r_o_p_o_s and _w_h_a_t_i_s was added. A side effect of this is that the _w_h_a_t_i_s database was moved to the _m_a_n directory. If the source for a manual page is not available, _m_a_n will display the formatted version. This allows machines to avoid storing both formatted and unformatted versions of the manual pages. The environment variable MANPATH overrides the default directory /_u_s_r/_m_a_n. The -t option is no longer supported. The printing process has been streamlined by using ``more -s _c_a_t_f_i_l_e'' instead of ``cat -s _c_a_t_f_i_l_e | ul | more -f''. Searches of /_u_s_r/_m_a_n/_m_a_n_o are more lenient about file name extensions. The source for _m_a_n was considerably cleaned up; the magic search lists and commands were put at the top of the source file and the private copy of _s_y_s_t_e_m was deleted. mesg So that terminals need not be writable to the world, _m_e_s_g only changes the group ``write'' permission. (Terminals are now placed in group _t_t_y so that users may restrict terminal write permission to programs which are set- group-id _t_t_y.) mkdir Prints a ``usage'' error message instead of an uninformative ``arg count'' message. more Now allows backward scanning. It will also handle window size changes. It simulates ``crt'' style erase and kill processing if the terminal mode includes those options. msgs Will no longer update ._m_s_g_s_r_c if the saved message number is out of bounds. September 2, 1987 - 16 - mv No longer runs _c_p(1) to copy a file; instead it does the copy itself. netstat Routes and interfaces for Xerox NS networks are now shown. The -I option has been added to specify a particular interface for the default display. The -u option has been added to show UNIX domain information. Several new mbuf types and statistics are now displayed; subnetting is now understood. nice Is relative as documented, not absolute. nroff No longer replaces single spaces with tabs when using the -h option. Pascal The Pascal compiler and interpreter have been extensively rewritten so that they will (nearly) pass through _l_i_n_t. In theory they have not changed from a semantic point of view. A few bugs have been fixed, and undoubtedly some new ones introduced. The Pascal runtime support has improved error diagnostics. Real number input scanning now corresponds to standard Pascal conventions rather than those of _s_c_a_n_f(3S). passwd The _p_a_s_s_w_d program incorporates the functions of _c_h_f_n and _c_h_s_h under -f and -s flags. When- ever information is changed _p_a_s_s_w_d also updates the associated _n_d_b_m(3X) database used by _g_e_t_p_w_n_a_m and _g_e_t_p_w_u_i_d. Office room and phone numbers are less dependent on Berkeley's usage. Checks are made for write errors before renaming the password file. plot The output device resolution can now be speci- fied using the -r option. Support has been added for the Imagen laser printer and the Tektronix 4013. pr The buffer is now large enough for 66 x 132 output. print Has been retired to /_u_s_r/_o_l_d; use ``lpr -p'' instead. prmail Has been retired to /_u_s_r/_o_l_d; use ``Mail -u _u_s_e_r'' instead. prof Uses _s_e_t_i_t_i_m_e_r to determine the clock fre- quency instead of assuming 60 hertz. ps Saves static information for faster startup. September 2, 1987 - 17 - It now prints symbolic values for wait chan- nels. pti Has been retired to /_u_s_r/_o_l_d. ptx Cleans up after itself and exits with a zero status on successful completion. quota Verifies that the system supports quotas before trying to interpret the quota files. ranlib The -t option updates a library's internal time stamp without rebuilding the table of contents. ``Old format'' and ``mangled string table'' are now warnings rather than fatal errors. Memory allocation is done dynami- cally. rcp For the convenience of system managers, _r_c_p has moved from /_u_s_r/_u_c_b to /_b_i_n, hence it can be used without mounting /_u_s_r. Remote user names are now specified as _u_s_e_r@_h_o_s_t instead of _h_o_s_t._u_s_e_r to support Internet domain host- names that contain periods (``.''). A -p option has been added that preserves file and directory modes, access time, and modify time. It now uses _g_e_t_s_e_r_v_b_y_n_a_m_e instead of compile time constants. rdist A new program that keeps files on multiple machines consistent with those on a master machine. refer The key letter code was fixed so that control characters are not generated. Several prob- lems that caused the generation of duplicate citations, particularly with the -e and -s options, have been fixed. EOF on standard input is now properly handled. _R_e_f_e_r folds upper and lower case when sorting. rlogin _R_l_o_g_i_n negotiates with _r_l_o_g_i_n_d to determine whether window size changes should be passed through. If the remote end is running a 4.3BSD _r_l_o_g_i_n_d, it will agree to accept and pass through SIGWINCH signals to user processes under its control. The -8 flag allows an 8-bit path on input. The -L flag allows an 8-bit path on output. The escape character is now echoed as soon as a second non-command character is typed. A new command character ^_Y has been added to suspend only the input end of the session without stopping output from the remote end (unless tostop has September 2, 1987 - 18 - been set). The _i_o_c_t_l TIOCSPGRP has been changed to _f_c_n_t_l F_SETOWN. Several changes have been made to reduce the amount of data sent after an interrupt has been typed, and to avoid flushing data when changing modes. rm The -f option produces no error messages and exits with status 0. The problem of running out of file descriptors when doing a recursive remove have been fixed. rmdir Improved error messages, in the same fashion as _m_k_d_i_r. rsh The -L, -w, and -8 flags are ignored so that they may be passed along with -e to rlogin. ruptime The -r flag has been added to reverse sort order. rwho Now allows hosts with long names (greater than 16 characters). script Now propagates window size changes. sed No longer loops when the first regular expres- sion is null. sendbug Allows command line -D arguments to override built in defaults for name and host address of the bugs mailing list. The ``Repeat-By'' field is now optional. _S_e_n_d_b_u_g now checks the EDITOR environment variable instead of assum- ing _v_i. sh ``#'' is no longer considered a comment char- acter when _s_h is interactive. The IFS vari- able is not imported when _s_h runs as root or if the effective user id differs from the real user id. size Now exits with the number of errors encoun- tered. sort Checks for and exits on write errors. spell A couple of trouble-causing words have been removed from _s_p_e_l_l's stoplist; _e._g. ``reus'' that caused ``reused'' to be flagged. A few words that _s_p_e_l_l would not derive have been removed from the stoplist. Several hundred words that _s_p_e_l_l derives without difficulty from existing words (_e._g. ``getting'' from ``get''), or that _s_p_e_l_l would accept anyway, September 2, 1987 - 19 - _e._g. ``1st, 2nd'' etc., have been removed from /_u_s_r/_d_i_c_t/_w_o_r_d_s. stty Has been extended to handle window sizes and 8-bit input data paths. "stty size" prints only the size of the associated terminal. su Only members of group 0 may become root. symorder Now reorders the string table as well as the name list. sysline Now understands how to run in one-line windows and how to adjust to window size changes. Numerous small changes have been made in the output format. systat A new program that provides a cursed form of _v_m_s_t_a_t, as well as several other status displays. tail Makes use of a much larger buffer. talk The new version of _t_a_l_k has an incompatible but well-defined protocol that works across a much broader range of architectures. The new talk rendezvouses at a new port so that the old version can still be used during the conversion. _T_a_l_k_d looks for a writable termi- nal instead of giving up if a user's first entry in /_e_t_c/_u_t_m_p is not writable. Root may always interrupt. _T_a_l_k now runs set-group-id to group _t_t_y so that it is no longer necessary to make terminals world writable. tar Preserves modified times of extracted direc- tories. The -B option is turned on when read- ing from standard input. Some sections were rewritten for efficiency. tbl The hardwired line length has been removed. tcopy A new program for doing tape to tape copy of multifile, arbitrarily blocked magnetic tapes. tee _T_e_e's buffer size was increased. telnet _T_e_l_n_e_t first tries to interpret the destina- tion as an address; if that fails, it is then passed off to _g_e_t_h_o_s_t_b_y_n_a_m_e. If multiple addresses are returned, each is tried in turn until one succeeds, or the list is exhausted. If a non-standard port is specified, the ini- tial ``Suppress Go Ahead'' option is not sent. September 2, 1987 - 20 - Commands were added to escape the escape char- acter, send an interrupt command, and send ``Are You There''. Carriage return is now mapped to carriage return, newline. tftp Has many bug fixes. It no longer loops upon reading EOF from standard input. Re- transmission to send was added, as well as an input buffer flush to both send and receive. tip Lock files are no longer left lying about after _t_i_p exits, and the _u_u_c_p spool directory does not need to be world writable. A new ``~$'' command sends output from a local pro- gram to a remote host. Alternate phone numbers are separated only by ``,''; thus several dialer characters that were previously illegal may now be used. _T_i_p now arranges to copy a phone number argument to a safe place, then zero out the original version. This nar- rows the window in which the phone number is visible to miscreants using _p_s or _w. Also fixed was a bug that caused the phone number to be written in place of the connection mes- sage. Carrier loss is recognized and an appropriate disconnect action is taken. Bugs in calculating time and fielding signals have been fixed. Several new dialers were added. tn3270 A new program for emulating an IBM 3270 over a _t_e_l_n_e_t connection. tp Memory allocation was changed to avoid _r_e_a_l_- _l_o_c. tr Checks for and exits on write errors. trman Has been retired to /_u_s_r/_o_l_d. tset Can now set the interrupt character. The defaults have been changed when the interrupt, kill, or erase characters are NULL. _R_e_s_e_t is now part of _t_s_e_t. The window size is set if it has not already been set. _T_s_e_t continues to prompt as long as the terminal type is unk- nown. users Now much quieter if there are no users logged on. uucp Several fixes and changes from the Usenet have been incorporated. The maximum length of a sitename has been increased from 7 to 14 char- acters. _U_u_c_p has been changed to understand September 2, 1987 - 21 - the new format of /_e_t_c/_t_t_y_s. Support for more dialers has been added. vacation A new program that answers mail while you are on vacation. vgrind Has been extended to handle the DEC Western Research Labs Modula-2 compiler and _y_a_c_c. vlp Now properly handles indented lines. vmstat The -i flag was added to summarize interrupt activity. The -s listing was expanded to include cache hit rates for the name cache and the text cache. The standard display has been generalized to allow command line selection of the disks to be displayed. A new header is printed after the program is restarted. If an alternative clock is being used to gather statistics, it is properly taken into account. vpr Has been retired to /_u_s_r/_o_l_d. w Users logged in for more than one day have login day and hour listed; users idle for more than one day have their idle time listed in days. wall Will now notify all users on large systems. whereis Now also checks _m_a_n_l, _m_a_n_n, and _m_a_n_o. which Now sets prompt before sourcing the user's ._c_s_h_r_c file to ensure that initialization for interactive shells is done. whoami Uses the effective user id instead of the real user id. window A new program that provides multiple windows on ASCII terminals. write Looks for a writable terminal instead of giv- ing up if a user's first entry in /_e_t_c/_u_t_m_p is not writable. Root may always interrupt. Non-printable escape sequences can no longer be sent to an unsuspecting user's terminal. _W_r_i_t_e now runs set-group-id to group _t_t_y so that it is no longer necessary to make termi- nals world writable. xsend Notice of secret mail is now sent with a sub- ject line showing who sent the mail. The body of the message includes the name of the September 2, 1987 - 22 - machine on which the mail can be read. xstr Now handles multiple-line strings. _S_e_c_t_i_o_n _2 The error codes for Section 2 entries have been care- fully scrutinized to insure that the documentation properly reflects the source code. User-visible changes in this sec- tion lie mostly in the area of the interprocess communica- tion facilities; the Xerox Network System communication pro- cotocols have been added and the existing communication facilities have been extended and made more robust. adjtime A new system call which skews the system clock to correct the time of day. fcntl The FASYNC option to enable the SIGIO signal now works with sockets as well as with ttys. The interpretation of process groups set with F_SETOWN is the same for sockets and for ttys: negative values refer to process groups, posi- tive values to processes. This is the reverse of the previous interpretation of socket pro- cess groups set using _i_o_c_t_l to enable SIGURG. kill The error returned when trying to signal one's own process group when no process group is set was changed to ESRCH. Signal 0 can now be used as documented. lseek Returns an ESPIPE error when seeking on sock- ets (including pipes) for backward compatibil- ity. open When doing an open with flags O_CREAT and O_EXCL (create only if the file did not exist), it is now considered to be an error if the target exists and is a symbolic link, even if the symbolic link refers to a nonexistent file. This behavior was added for the secu- rity of programs that need to create files with predictable names. ptrace A new header file, <_s_y_s/_p_t_r_a_c_e._h>, defines the request types. When the process being traced stops, the parent now receives a SIGCHLD. readlink Returns EINVAL instead of ENXIO when trying to read something other than a symbolic link. rename If the ISVTX (sticky text) bit is set in the September 2, 1987 - 23 - mode of a directory, files in that directory may not be the source or target of a _r_e_n_a_m_e except by the owner of the file, the owner of the directory, or the superuser. select Now handles more descriptors. The mask argu- ments to _s_e_l_e_c_t are now treated as pointers to arrays of integers, with the first argument determining the size of the array. A set of macros in <_s_y_s/_t_y_p_e_s._h> is provided for mani- pulating the file descriptor sets. The descriptor masks are only modified when no error is returned. setsockopt Options that could only be _s_e_t in 4.2BSD (e.g. SO_DEBUG, SO_REUSEADDR) can now be set or reset. To implement this change all options must now supply an option value which speci- fies if the option is to be turned on or off. The SO_LINGER option takes a structure as its option value, including both a boolean and an interval. New options have been added: to get or set the amount of buffering allocated for the socket, to get the type of the socket, and to check on error status. Options can be set in any protocol layer that supports them; IP, TCP and SPP all use this mechanism. setpriority The error returned on an attempt to change another user's priority was changed from EACCES to EPERM. setreuid Now sets the process _p__u_i_d to the new effec- tive user ID instead of the real ID for con- sistency with usage elsewhere. This avoids problems with processes that are not able to signal themselves. sigreturn Is a new system call designed for restoring a process' context to a previously saved one (see _s_e_t_j_m_p/_l_o_n_g_j_m_p). sigvec Three new signals have been added, SIGWINCH, SIGUSR1, and SIGUSR2. The first is for notif- ication of window size changes and the other two have been reserved for users. socket The usage of the (undocumented) SIOCSPGRP _i_o_c_t_l has changed. For consistency with _f_c_n_t_l, the argument is treated as a process if positive and as a process group if negative. Asynchronous I/O using SIGIO is now possible on sockets. September 2, 1987 - 24 - swapon The error returned for when requesting a dev- ice which was not configured as a swap device was changed from ENODEV to EINVAL. In addi- tion, _s_w_a_p_o_n now searches the swap device tables from from the beginning instead of the second entry. unlink If the ISVTX (sticky text) bit is set in the mode of a directory, files may only be removed from that directory by the owner of the file, the owner of the directory, or the superuser. _S_e_c_t_i_o_n _3 The Section 3 documentation has been reorganized into just two sections. The first section contains everything previously in Section 3 except the Fortran library routines. The second section contains the Fortran library routines. The routines _m_e_m_c_c_p_y, _m_e_m_c_h_r, _m_e_m_c_m_p, _m_e_m_c_p_y, _m_e_m_s_e_t, _s_t_r_c_h_r, _s_t_r_c_s_p_n, _s_t_r_p_b_r_k, _s_t_r_r_c_h_r, _s_t_r_s_p_n, and _s_t_r_t_o_k have been added for compatibility with System V. These routines are similar to the string and block handling ones described in the _b_s_t_r_i_n_g and _s_t_r_i_n_g manual pages. The 4.3BSD _s_t_r_i_n_g and _b_s_t_r_i_n_g versions should be faster than these compatibil- ity routines on the VAX. abort Sets SIGILL signal action to the default to avoid looping if SIGILL had been ignored or blocked. ctime Daylight savings time calculations have been fixed for Europe and Canada. Programs making multiple calls to _c_t_i_m_e will make fewer system calls. The include file has moved from <_s_y_s/_t_i_m_e._h> to <_t_i_m_e._h>. ctype _i_s_c_n_t_r_l has been fixed to correspond to the manual page. Space is a printing character. _i_s_g_r_a_p_h is a new function that returns true for characters that leave a mark on the paper. _t_o_u_p_p_e_r, _t_o_l_o_w_e_r, and _t_o_a_s_c_i_i have all been documented. curses The library handles larger termcap definitions and handles more of the ``funny'' termcap capabilities. The old _c_r_m_o_d_e and _n_o_c_r_m_o_d_e macros have been renamed _c_b_r_e_a_k and _n_o_c_b_r_e_a_k respectively; backwards compatible definitions for these macros are provided. The erase and kill characters and the terminal's baudrate may be accessed via _e_r_a_s_e_c_h_a_r, _k_i_l_l_c_h_a_r, and September 2, 1987 - 25 - _b_a_u_d_r_a_t_e macros defined in <_c_u_r_s_e_s._h>. A _t_o_u_c_h_o_v_e_r_l_a_p function has been provided, and bugs in _o_v_e_r_l_a_y and _o_v_e_r_w_r_i_t_e have been fixed. dbm Has been rewritten to use the multiple- database version of the library, _n_d_b_m. disktab Has added support for two new fields indicat- ing the use of _b_a_d_1_4_4-style bad sector for- warding and filesystem offsets specified in sectors. encrypt Now works correctly when called directly. execvp No longer recognizes ``-'' as a path separa- tor. frexp Now handles 0 and powers of 2 correctly. This routine is now written in assembly language for the VAX. gethost* _g_e_t_h_o_s_t_b_y_a_d_d_r and _g_e_t_h_o_s_t_b_y_n_a_m_e have been modified to make calls to the name server. If the name server is not running, a linear scan of the host table is made. With an optional C library configuration, these routines may instead use an _n_d_b_m database for the host table. One of these lookup mechanisms must be specified when compiling the C library. The default is to use the name server. _g_e_t_h_o_s_t_e_n_t has no equivalent when using the routines cal- ling the name server. The _h_o_s_t_e_n_t structure has been modified to support the return of multiple addresses. The external variable _h__e_r_r_n_o has been added for returning error status information from the name server, such as whether a transient error was encountered. getopt A new routine for parsing command line argu- ments. It is compatible with the System V routine by the same name. getpw* _g_e_t_p_w_n_a_m and _g_e_t_p_w_u_i_d use a hashed database using _n_d_b_m for faster lookups by user name and id. gettty* _g_e_t_t_t_y_e_n_t and _g_e_t_t_t_y_n_a_m are new routines for looking up entries in the new version of /_e_t_c/_t_t_y_s. The new header file <_t_t_y_e_n_t._h> describes the associated structures. getusershell A new routine for retrieving shell names from a file listing the standard interactive shells, /_e_t_c/_s_h_e_l_l_s, for the use of _p_a_s_s_w_d(1) September 2, 1987 - 26 - and servers providing remote host access. getwd _G_e_t_w_d no longer changes directories in calcu- lating the working directory; this eliminates problems with return to the current directory, and results in fewer _s_t_a_t calls. inet_makeaddr Properly handles INADDR_BROADCAST. longjmp On errors, _l_o_n_g_j_m_p calls the routine _l_o_n_g_j_m_p_e_r_r_o_r. The default routine still prints ``longjmp botch'' and exits; this may be replaced if a program wants to provide its own error handler. malloc _M_a_l_l_o_c underwent a major rework. Memory requests of page size or larger are always page aligned, and are now optimized for sizes that are a power of two. The debugging code has been improved. math The math library has been rewritten to improve the speed and accuracy of the routines on VAXen with D-format floating point support and machines that conform to the IEEE standard 754 for double precision floating point arith- metic. The library also has improved error detection and handling; for the VAX, the library generates reserved operand faults for invalid operands. Many new functions have been added. Two functions have changed their names; _g_a_m_m_a is now _l_g_a_m_m_a and _f_m_o_d is now _m_o_d_f. The old math library is available as -lom. mkstemp Is a new routine similar to _m_k_t_e_m_p except that it returns an open file descriptor for a tem- porary file. It is intended to replace _m_k_t_e_m_p in programs (run as root or setuid) that must be concerned with atomic creation of temporary files without the possibility of having the temporary file relocated to an unexpected location by a symbolic link. ndbm A new version of _d_b_m that allows multiple databases to be open simultaneously. nlist Now returns -1 on error or the number of unfound items. perror A few of the error messages have been made more accurate. plot Supports many new devices: Tektronix 4013, AED September 2, 1987 - 27 - graphics terminal, BBN Bitgraph terminal, ter- minals using the DEC GiGi protocol, HP 2648 terminals and 7221 plotters, and Imagen laser printers (240 or 300 dots per inch). Libraries also exist for generating plot files from Fortran programs and for plotting on ``dumb'' devices such as a standard line printer. popen Dynamically allocates an array for file descriptors. The new signal interface is now used. psignal New signals have been added to the list. random An initialization bug that messed up default generation was fixed. rcmd Cleans up properly. A problem with doing mul- tiple calls within one program was fixed. ruserok Now is more flexible about the format of ._r_h_o_s_t_s. Domain style hostnames do not need full specification if they are a part of the local domain, as determined by _h_o_s_t_n_a_m_e(1). _R_u_s_e_r_o_k is more paranoid about ownership of ._r_h_o_s_t_s. scandir Handling of overflow has been fixed. setjmp The signal stack status is now set correctly. siginterrupt A new routine to set the signals for which system calls are not restarted after signal delivery. signal Keeps track of new features when changing sig- nal handlers. sleep A couple of races have been fixed. stdio Has been modified to dynamically allocate slots for file pointers. Output on unbuffered files is now buffered within a call to _p_r_i_n_t_f or _f_p_u_t_s for efficiency. _F_s_e_e_k now returns zero if it was successful. _F_r_e_a_d and _f_w_r_i_t_e have been rewritten to improve performance. On the VAX, _f_g_e_t_s, _g_e_t_s, _f_p_u_t_s and _p_u_t_s were rewritten to take advantage of VAX string instructions and thus improve performance. Line buffering now works on any file descrip- tor, not just _s_t_d_o_u_t and _s_t_d_e_r_r. _P_u_t_c is implemented completely within a macro except when the buffer is full or when a newline is September 2, 1987 - 28 - output on a line-buffered file. Some sign extension bugs with the return value of _p_u_t_c have been fixed. string The routines _i_n_d_e_x, _r_i_n_d_e_x, _s_t_r_c_a_t, _s_t_r_c_m_p, _s_t_r_c_p_y, _s_t_r_l_e_n, _s_t_r_n_c_a_t, and _s_t_r_n_c_p_y have been rewritten in VAX assembly language for effi- ciency. The C routines are included for use on other machines. Only _M_a_k_e_f_i_l_es need to be modified to select the version to be used. syslog The third parameter to _o_p_e_n_l_o_g is a ``_f_a_c_i_l_i_t_y _c_o_d_e'' used to classify messages. References to <_s_y_s_l_o_g._h> should be replaced with refer- ences to <_s_y_s/_s_y_s_l_o_g._h>. ttyslot Uses the new _g_e_t_t_t_y_e_n_t routine. ualarm A simplified interface to _s_e_t_i_t_i_m_e_r, similar to _a_l_a_r_m but with its argument in microseconds. usleep A new routine which resembles _s_l_e_e_p but takes an argument in microseconds. _S_e_c_t_i_o_n _4 The system now supports the 64Kbit and 256Kbit RAM memory controllers for the VAX-11/780 and VAX-11/785, the second UNIBUS adapter for the VAX-11/750, and the new VAX 8600 with UNIBUS and/or MASSBUS peripherals. The Unibus management routines for network interfaces have been gen- eralized in 4.3BSD; this change requires stylized changes within most of the network drivers. A number of changes were made to each terminal multiplexor driver as well. See sections 9 and 11 of the ``Changes to the Kernel in 4.3BSD'' document for details. New manual entries in Section 4 have been created to describe the new communications protocols and network archi- tectures that are supported. The most recent addition in 4.3BSD is the Xerox Network System protocols. arp _I_o_c_t_ls have been added to enter and delete entries in the Internet-to-Ethernet|- address translation tables. Entries may be made per- manent, and may be ``published'' to allow a host to act as an ARP server. ddn A new DDN Standard Mode X.25 IMP interface __________________________ |- Ethernet is a trademark of Xerox Corporation. September 2, 1987 - 29 - driver. de A new DEC DEUNA 10 Mb/s Ethernet interface driver. dhu A new DEC DHU-11 communications multiplexor driver. dmc The configuration flags may be used to specify how to set up the device. Multiple outstand- ing DMA requests can now be handled. A new encapsulation is used that allows multiple protocols to be supported, but is incompatible with that used by 4.2BSD and earlier Ultrix releases. dmz A new DEC DMZ-32 communications multiplexor driver. ec Has a corrected backoff algorithm. Multiple units are supported by placing the Unibus memory address in the device _f_l_a_g_s field. ex A new Excelan 204 10 Mb/s Ethernet interface driver. hdh A new ACC IF-11/HDH IMP interface driver. idp A description of the new Xerox Internet Datagram Protocol. il The driver has additional diagnostics and now supports Xerox NS. ip Support for IP options was added. ix A new Interlan NP100 10 Mb/s Ethernet inter- face driver. np A new device for downloading microcode into the Interlan NP100 10 Mb/s Ethernet interface driver. ns A description of the new Xerox Network Systems protocol family. nsip A description of the new software network interface encapsulating NS packets in IP pack- ets. ps The driver for the Picture System 2 has a small change in interrupt handling. pty A new mode was added to allow a small set of September 2, 1987 - 30 - commands to be passed to the pty master from the slave as a rudimentary type of _i_o_c_t_l, analogous to that of PKT mode. Using this mode or PKT mode, a _s_e_l_e_c_t for exceptional conditions on the master side of a pty returns true when a command operation is available to be read. _S_e_l_e_c_t for writing on the master side has been fixed. spp A description of the new Xerox Sequenced Packet Protocol. tcp An option was added to disable small-packet avoidance under certain circumstances. tty PASS8 mode has been added to pass all 8 bits of input. New _i_o_c_t_ls were added to support the getting and setting of window size infor- mation for the terminal. A signal was added to notify processes when the window size changes. _S_e_c_t_i_o_n _5 A new subdirectory, /_u_s_r/_i_n_c_l_u_d_e/_p_r_o_t_o_c_o_l_s, has been created to keep header files that are shared between user programs and daemons. Several header files have been moved here, including those for _r_w_h_o_d, _r_o_u_t_e_d, _t_i_m_e_d, _d_u_m_p, _t_a_l_k, and _r_e_s_t_o_r_e. Two new header files, <_s_t_r_i_n_g._h> and <_m_e_m_o_r_y._h>, have been added for System V compatibility. disktab Two new fields have been added to specify that the disk supports _b_a_d_1_4_4-style bad sector for- warding, and that offsets should be specified by sectors rather than cylinders. dump The header file <_d_u_m_p_r_e_s_t_o_r._h> has moved to <_p_r_o_t_o_c_o_l_s/_d_u_m_p_r_e_s_t_o_r_e._h>. gettytab New entries have been added, including a 2400 baud dial-in rotation for modems, a 19200 baud standard line, and an entry for the _x_t_e_r_m ter- minal emulator of the _X window system. New capabilities for automatic speed selection and setting strict xoff/xon flow control (decctlq) were added. termcap Many new entries were added and older entries fixed. ttys The format of the ttys file, /_e_t_c/_t_t_y_s, September 2, 1987 - 31 - reflects the merger of information previously kept in /_e_t_c/_t_t_y_s, /_e_t_c/_s_e_c_u_r_e_t_t_y, and /_e_t_c/_t_t_y_t_y_p_e. The new format permits arbi- trary programs, not just /_e_t_c/_g_e_t_t_y, to be spawned by _i_n_i_t. A special window field can be used to set up a window server before spawning a terminal emulator program. _S_e_c_t_i_o_n _6 aardvark The ``Dungeon Definition Language'' processor has been updated to run on 4.3BSD, so that games such as aardvark now work again. battlestar A third generation adventure game. canfield The user interface has been improved so that one need not type so many carriage returns between games. Players are charged a maximum of three minutes of think time between moves should they put a game on hold for an extended period of time. fortune Has yet more adages (not better ones, just more). hunt The latest addition, a maze battle game for multiple players. mille Now plays slightly more intelligently, and prevents discarding of safeties. robots Much like the old game of chase, except dif- ferent. rogue Has been made more of a scoundrel. _S_e_c_t_i_o_n _7 hier Has been updated to reflect the reorganization to the user and system source. me Some new macros were added: ._s_m (smaller) and ._b_u (bulleted paragraph). The _p_i_c, _i_d_e_a_l, and _g_r_e_m_l_i_n preprocessors are now supported. words Two new word lists have been add to /_u_s_r/_d_i_c_t. The 1935 Webster's word list is available as web2 with a supplemental list in web2a. Several hundred words have been added to /_u_s_r/_d_i_c_t/_w_o_r_d_s, both general words (``abacus, September 2, 1987 - 32 - capsize, goodbye, Hispanic, ...'') and impor- tant technical terms (all the amino acids, many mathematical terms, a few dinosaurs, ...). About 10 spelling errors in /_u_s_r/_d_i_c_t/_w_o_r_d_s have been corrected. Several hundred words that _s_p_e_l_l derives without difficulty from existing words (_e._g. ``getting'' from ``get''), or that _s_p_e_l_l would accept anyway, _e._g. ``1st, 2nd'' etc., have been removed from /_u_s_r/_d_i_c_t/_w_o_r_d_s. _S_e_c_t_i_o_n _8 Major changes affecting system operations include: o+ The format of the ttys file, /_e_t_c/_t_t_y_s, has been changed to include information about terminal type. o+ The _c_r_o_n_t_a_b file used by _c_r_o_n has a new field in each line to specify the user ID to be used. o+ A new Internet server-server, _i_n_e_t_d, listens for service requests on a number of ports and spawns the appropriate server upon demand. Fewer of the Internet services now require long-lived daemon processes. o+ The _b_a_d_1_4_4 program can now be used to add new bad sectors to the bad sector file. Replacement sectors are rear- ranged as needed to sort the new sectors into the bad sector list. Reformat operations to mark bad sectors to the bad sector table should still be done only with the system running single user. o+ _G_e_t_t_y's description file, /_e_t_c/_g_e_t_t_y_t_a_b, now describes what program should be run in addition to the other information that it used to include. arff Has been extended to understand multiple directory segments. This allows it to handle the console RL02 pack on the VAX 8600. arp A new program for examining and modifying the kernel Address Resolution Protocol tables. bad144 _B_a_d_1_4_4 has new options to add sectors to the bad sector table and to attempt to copy sec- tors to their replacements before marking them bad. It verifies that the file is properly sorted. Verbose and no-write options allow dry runs. September 2, 1987 - 33 - catman Now allows a list of manual directories. Links are properly set up so that the manual source need not be kept on line on all machines. checkquota Runs multiple filesystems in parallel. Quotas for users with zero blocks are left around but they are deleted if the user-id no longer exists. chown Was modified to be recursive. _C_h_o_w_n accepts an _o_w_n_e_r._g_r_o_u_p syntax to change owner and group simultaneously. The group-id will be set correctly when dealing with symbolic links. comsat _C_o_m_s_a_t is now invoked by _i_n_e_t_d. It reaps its child processes correctly. Large systems with many terminal lines are now handled. config Swap size may be specified. Maxusers is no longer truncated. The name of the generated _M_a_k_e_f_i_l_e is now capitalized. Object files may now be listed for inclusion in the _f_i_l_e_s file and will be added to the compilation properly. Optional files may be listed multiple times if different options require their inclusion. Swapconf supports larger unit numbers. _C_o_n_f_i_g builds a new file containing definitions for counting device interrupts. cron /_u_s_r/_l_i_b/_c_r_o_n_t_a_b has a new format to specify the user-id under which the process should be run. diskpart Handles disks with either cylinder or sector offsets and that do not use _b_a_d_1_4_4 bad block forwarding. dump When dumping at 6250 bpi, the tape is written in 32Kb records instead of 10Kb records. Efforts have been made to improve the con- sistency of dumps made on active file systems (though the practice is still NOT recom- mended). The Caltech streaming dump modifica- tions using a ring of slave processes have been incorporated. _D_u_m_p makes a better esti- mate of the size of the dump by attempting to account for files with holes. The error mes- sages have been made less condescending. edquota Can edit quotas on filesystems where a user does not have any usage. September 2, 1987 - 34 - fingerd A new daemon to return user information; it runs under _i_n_e_t_d. fsck _F_s_c_k has been sped up considerably by elim- inating one of the two passes across the inodes. It has also been taught to create and grow directories so that it can now rebuild the root of a file system as well as create and enlarge the _l_o_s_t+_f_o_u_n_d directory as neces- sary. ftpd Among the new facilities supported by the FTP server are: the ABOR command for transfer abort, the PASV command for third party transfers, and the new RFC959 FTP commands (such as STOU, ``store unique''). _F_t_p_d now uses _s_y_s_l_o_g to log errors, and is invoked by _i_n_e_t_d. gettable Now has a flag for checking the version without retrieving the whole host table. getty _G_e_t_t_y supports automatic baud rate detection based on carriage return. Support for window system startup has been added. The login banner can now include the terminal name. The environment is set up now and passed to _l_o_g_i_n. htable Some byte ordering problems have been fixed. It is more intelligent about gateway handling. A looping problem with single character host names has been fixed. ifconfig _I_f_c_o_n_f_i_g has been augmented to allow different address families. The current families under- stood are _i_n_e_t and _n_s. _I_f_c_o_n_f_i_g has additions to set up subnets of Internet networks, change Internet broadcast addresses, and set destina- tion addresses of point-to-point links. implog Handles class B and class C networks. inetd A new program to spawn network servers on demand. _I_n_e_t_d listens on each port listed in its configuration file /_e_t_c/_i_n_e_t_d._c_o_n_f. When service requests arrive, it passes the origi- nal socket or a newly accepted socket to the designated server for the service. Several trivial services are implemented internally. init May run commands other than _g_e_t_t_y. Large sys- tems are no longer a problem. Window systems may be started. September 2, 1987 - 35 - lpc A new command, down, disables queueing and printing, and, optionally, creates a status message displayed by the _l_p_q program. The up command reverses the effect of the down com- mand. The status command now displays the contents of the print queue in addition to the status of the daemon process. The clean com- mand does a better job of removing incomplete queue entries. lpd A new capability, hl, may be used to print a job's banner after the contents of the job. Error logging is now done with _s_y_s_l_o_g(3). Hosts permitting remote access may now be specified in the file /_e_t_c/_h_o_s_t_s._l_p_d (in addi- tion to /_e_t_c/_h_o_s_t_s._e_q_u_i_v). A master lock file is now used so that /_d_e_v/_p_r_i_n_t_e_r can be automatically removed. Symbolic links to spool files are now checked carefully to close a security hole. All printing parameters are now properly reset for each job. Remote spooling connections now time out if the server crashes. Errors in spooling filters are now reported to users via mail. When ser- vicing a remote job, files are not transferred unless enough disk space is available. mkfs Will print the filesystem information without creating the filesystem. Filesystem optimiza- tion may be specified. mkhosts A new program to rebuild the /_e_t_c/_h_o_s_t_s dbm database. Note that this database is not used with the default name server configuration. mkpasswd A new program to rebuild the /_e_t_c/_p_a_s_s_w_d dbm database. mount Better error messages are returned when _m_o_u_n_t fails. When checking /_e_t_c/_f_s_t_a_b to find the device name of a file system when only the mount point is specified, it also checks the _t_y_p_e field to insure that the entry is rw, ro, or rq. named Is a new program implementing the Internet domain naming system. It is used to perform hostname and address mapping functions for the standard C library functions, _g_e_t_h_o_s_t_b_y_n_a_m_e and _g_e_t_h_o_s_t_b_y_a_d_d_r if _n_a_m_e_d is running. newfs Supports new options to _m_k_f_s. pac Has a new option, -m, to cause machine names September 2, 1987 - 36 - to be disregarded in merging accounting infor- mation. The per-page cost is now taken from the printer description if it is not specified on the command line with the -p option. ping Is a new program for sending ICMP echo requests. pstat Can handle kernel crash dumps and new terminal multiplexers. Core dumps should be less fre- quent. repquota Only prints entries for users that have files (or blocks) allocated. restore The interactive mode of _r_e_s_t_o_r_e now under- stands globbing. Interrupting interactive mode returns to the prompt. A new input path name may be specified on each volume change. The tape block size is calculated dynamically unless it is specified with the -b flag on the command line. rexecd Now runs under _i_n_e_t_d. rlogind Propagates window size changes in a backward compatible way. This is negotiated at startup time. _I_n_e_t_d now starts up the server. rmt Uses large network buffers for better perfor- mance. route Will handle subnets. Flags were added to specify whether a name is a host or a network. Multiple addresses are tried until an opera- tion is successful or there are no more addresses to try. routed Is more strict about received packets' formats and values. Subnet routing is handled. Point to point links are handled. Gateways to external networks advertise a default route instead of all networks. The loopback network number is no longer compiled in. When a pro- cess is terminated, it tells its peers that its routes are no longer valid. rshd Is started by _i_n_e_t_d. The address is passed through if the host name for the address can- not be determined. rwhod Should be less expensive to run. Broadcasts are done less frequently and path lookups are shorter. Large systems are handled better. September 2, 1987 - 37 - rxformat Will now operate if the standard input is not a terminal. sa Supports alternate accounting files. The units of CPU time have changed. savecore Works correctly when given an alternate system name. Dump partitions smaller than the memory size are handled more gracefully. sendmail Several bugs have been fixed. Upper case letters are allowed in file names and program arguments in the alias file. Multiple reci- pients sharing a receive program are not col- lapsed into one delivery. List owners on queued jobs have been fixed. Commas in quoted aliases work. Dollar signs in headers are no longer interpreted as macro expansions. Underscores are allowed in login names. Substantial performance enhancements have been made for large queues. If the _Y option is not set, all jobs in the queue will be run in one process, with host statuses cached; this uses more memory but generally improves perfor- mance. The job priority now includes creation time and number of recipients (the _y option) as well as the message size (the _q option) and the job precedence (the _z option); this prior- ity is modified by the _Z option whenever it fails to complete. No attempt is made to run large jobs if the load average is too high. The $[ ... $] syntax can be used on the RHS of a rewriting rule to canonicalize a host name using _g_e_t_h_o_s_t_b_y_n_a_m_e. This is especially useful when running the version of _g_e_t_h_o_s_t_- _b_y_n_a_m_e that calls the name server. Error reporting has been improved. Some lim- its have been increased. Security holes have been plugged. _S_y_s_l_o_g_d and _v_a_c_a_t_i_o_n are now part of the standard system. Minor changes have been made to the configura- tion file. The RHS of aliases are no longer checked while the alias file is rebuilt unless the _n option is set to improve performance. The character substituted for blanks in addresses is settable by the _B option. The default network name (formerly hardwired ``ARPA'') is settable with the _N option. The _E mailer option escapes ``From'' lines with a `>' on delivery (formerly the default to the September 2, 1987 - 38 - local mailer). shutdown Has flags to specify that it should not sync the disks and that it should skip the disk checks after rebooting. swapon Error messages have been cleaned up and now specify the device to which they correspond. syslogd Formerly _s_y_s_l_o_g, allows the classification of messages based on _f_a_c_i_l_i_t_i_e_s. The configura- tion file has been restructured. talkd Now runs under _i_n_e_t_d. New version, new proto- col. telnetd Handles pty allocation better. _I_n_e_t_d now starts the server. Interpretation of carriage return-newline now conforms with the standard, but is compatible with the 4.2BSD _t_e_l_n_e_t client. tftpd Now works with other clients and is started by _i_n_e_t_d. timed A new program for maintaining time synchroni- zation between machines on a local network. trpt The _t_r_p_t program to examine TCP traces now prints the traces in the correct order. It has been extended to follow traces as a con- nection runs. tunefs Supports the new filesystem optimization preferences. uucpd A new server, invoked by _i_n_e_t_d, for running uucp over network connections. vipw Builds the new hashed lookup table. /_e_t_c/_p_a_s_s_w_d will not be left unreadable if root has a restrictive umask. XNSrouted A new daemon, similar to _r_o_u_t_e_d, that imple- ments the Xerox NS routing protocol. _A_p_p_e_n_d_i_x _A - _U_s_e_r _C_o_n_t_r_i_b_u_t_e_d _S_o_f_t_w_a_r_e Several new programs have been contributed to the Berkeley distribution. ansitape Is a new program for handling tapes in ANSI September 2, 1987 - 39 - format and for transferring files between UNIX and VMS. B Yet another new language. cpm Is a file transfer protocol between UNIX and CP/M. dipress A new program to convert _d_i_t_r_o_f_f output to Xerox Interpress format. emacs Is a public domain version of _e_m_a_c_s. help An extensive new UNIX help facility. hyper A router and log program for the Hyperchannel. icon The latest and greatest version from Arizona. jove Is a simplified _e_m_a_c_s-style editor. kermit A file transfer protocol between UNIX and microcomputers. mh This release includes MH Version 6.3, with Berkeley modifications. It has been rewritten numerous times since the original version release with 4.2BSD. Each utility is now infinitely programmable. mkmf Has been separated from _S_P_M_S. mmdf Is a new set of mail reading and transport programs. news The latest revision of the Usenet news pro- grams, B news 2.10.3 beta. np100 Utilities to download the Interlan NP100 Eth- ernet board. patch Is a new program designed for taking diffs and applying them to the source file. If you only look at one new program, this is the one! pathalias A new program that attempts to discover uucp path routing. pup An implementation of the Xerox PUP protocols and several useful programs that use them. rn A new interface for reading (or ignoring) news. September 2, 1987 - 40 - sumacc A C compiler set of programs for doing MacIn- tosh software development. sunrpc Yet another RPC protocol. tac Is a program that displays a file in reverse line order. umodem Another file transfer protocol between UNIX and microcomputers. X A new window system that was developed at MIT. This distribution supports the DEC VS100, the Sun and the DEC b/w VAXStation II (QVSS). xns A courier RPC mechanism that runs on Xerox NS, and many useful applications developed at Cor- nell University. September 2, 1987