Short list of differences between 1.7.1 and 1.7.2: - Termios tty driver. - Pseudo ttys allowing one to rlogin *into* Minix. - Shared text. - Several manual pages refering to "Chapter 9" replaced by those entries from Chapter 9 in the reference manual. Contributions: Richard Henderson - doscan() fix. - How to do RS-232 break. Paul Ashton - test26 bug report. Darren Mason - UK keymap. Victor A. Rodriguez - keymap(5), Latin American keymap. Toshiya Ogawa - Japanese keymap. Andy Tanenbaum - Updated spell, prep, dictionaries. Al Woodhull - Reorganized several kernel files. - Testing 1.7.2 before release. Philip Homburg - Advise on termios, new stty.c, in.rld. Michael Temari - TCP/IP programs: ftp, ftpd, telnetd. (and others I forgot to name) Long list of differences between 1.7.1 and 1.7.2: include/ar.h include/blocksize.h include/out.h include/sys/fdio.h include/sys/hdio.h Obsolete, redundant, or system dependent include files removed. include/ibm/ IBM dependent header files placed here. include/ibm/diskparm.h Floppy format data, formerly . include/ibm/partition.h IBM style hard disk partition table, formerly . Note: There is a new . include/minix/boot.h Cleaned up a bit. If I had time I would get rid of it. include/minix/callnr.h New system calls added: SETSID, GETPGRP Old system calls removed: AM_SYSCALL, BRK3 include/minix/com.h NO_CTL_TTY no longer used (done differently). Old things between '#if XXX' removed. include/minix/config.h IBM_386_VM removed (must have sneaked in when Philip sent TCP/IP patches to Andy an eon ago.) NR_BUFS set to 100 for 386 to save a bit of memory to give 2 Mb machines a chance. C_RS232_INT_HANDLERS, DEFAULT_CLASS, NO_HANDSHAKE removed (see rs232.c). ENABLE_COMPAT added as a new flag to enable backwards compatibility code. For now it *must* be set to 1. NR_PTYS added to specify the number of pseudo-ttys. ENABLE_PS_WINI removed (ps_wini is gone). include/minix/const.h Definition of NR_TASKS changed to listen to ENABLE_WINI, so that all *_wini drivers may be configured out as was intended for 1.7.1. include/minix/diskparm.h Moved to include/ibm/. include/minix/keymap.h NR_SCAN_CODES increased to 0x80 to make the Japanese happy. include/minix/partition.h New include file for use with the DIOCGETP and DIOCSETP ioctls to download and upload partitioning info in a machine-independend way. include/minix/type.h New 'struct psinfo' invented for use by the ps(1) command to get the locations of the process tables from the kernel. include/sgtty.h Changed a bit to match the compatibility code in the new termios tty driver. The nonstandard 28800 baud rate is gone. include/sys/asynchio.h Reference to "Minix-386vm" changed to "Minix-vmd". This is done in several other places. include/sys/ioctl.h In Dutch the plural of a foreign or weird word is formed by adding "'s". You do not really want to know this, so "ioctl's" changed to "ioctls". Lots of new terminal ioctls added. DIOCSETP, and DIOCGETP renumbered because they use a new struct. New memory ioctls added to set the RAM disk size or to up/download ps(1) info. include/sys/ptrace.h T_STOP added to please Al Woodhull. It would be nice if someone would put this tracing stuff to use. Don't look at me, I hate debugging programs. include/termios.h Formerly used by an emulation library, moved to Minix-vmd and changed for use by a real termios implementation. Now moved back to 1.7.2 for a standard Minix termios implementation. (Instant compatibility with Minix-vmd.) include/ttyent.h New include file used for reading the new /etc/ttytab, see ttytab(5), getttyent(3). include/unistd.h _POSIX_VDISABLE removed, because it is in . New functions ttyslot() and fttyslot() added that return a slot number in /etc/utmp. man/ New manual pages: tget(1), setsid(2), crypt(3), curses(3), getgrent(3), getpwent(3), getttyent(3), termios(3), ttyname(3), ttyslot(3), tty(4), keymap(5), passwd(5), rhosts(5), ttytab(5), getty(8), pwdauth(8). Removed: ttys(5), ttytype(5), and several flat text manual pages. "Chapter 9": bawk, de, dis88, elle, elvis, ic, indent, kermit, m4, mined, patch, rz, sz. man/man0/ Various references to /dev/tty[012] changed into /dev/console and the new /dev/tty0[01] devices. man/man0/adduser Manual page for the adduser(8) command. man/man0/ps References to 'ps U' and the ADDR field removed, for they are gone. man/man4/hd.4 New explained. man/man5/TZ.5 Examples for the new European timezone rules updated. man/man8/boot.8 /etc/ttys is now /etc/ttytab, hd=ps is gone, bus=xxx moved to monitor(8). man/man8/init.8 Updated to describe the new /etc/ttytab file. man/man8/installboot.8 Feeble attempt to make a few things more understandable. man/man8/irdpd.8 man/man8/nonamed.8 man/man8/rarpd.8 SIGUSR1 raises the debugging level, SIGUSR2 turns debugging off. man/man8/monitor.8 Introduce the 'bus' variable that is set by the monitor to 'xt', 'at', or 'mca'. Note that 'ps' is no longer supported. man/man8/partition.8 Added -f (force) flag to make a partition on a too small device. man/man8/usage.8 Introduce the NR_PTYS config variable, the adduser(8) command, and shadow passwords. src/.ashrc New startup file for ash that programs the 'cd' builtin to put the current directory on the statusline of a terminal. Real nice if you rlogin into Minix from a remote xterm window. src/.profile Check if $TERM looks like something, run .ashrc if ash. src/.rhosts Removed. (It allowed yours truly to access your Minix machine remotely without a password. Either nobody noticed this or I am not considered to be a security threath.) src/boot/boot.c src/boot/boot.h Introduced the new 'bus' variable. The monitor can use BIOS calls to reliably find out if the machine is an XT, AT, or MCA based machine. Minix has trouble doing this from protected mode. New "exit" command that exits edparams, and reboots the monitor. 'shutdown -x exit' is a smart way to reboot your machine fast. src/commands/ Stack size changes for several programs to give Minix-386 a chance to run in 2 Mb. removed from several programs. src/commands/cawf/mnx.mac Macros added for the "chapter 9" manual pages. src/commands/elle/eesite.c src/commands/elle/eeterm.c Added a TIOCGWINSZ call to get the window size. Explained that a terminal with just 'am' in the termcap is stupid, but 'am:xn' is smart. This gets us the 79th column. Alas column 80 still unused. src/commands/elvis/curses.c src/commands/elvis/opts.c Changed so that TIOCGWINSZ is actually used. Two second timeout after hitting ESC changed to one second. Should use MIN&TIME in 1.7.3. src/commands/ftpd New ftp daemon. src/commands/i386/asmconv/asmconv.c Several things fixed, none that have to do with standard Minix. src/commands/i86/cc.c Added '-D__i86' to the predefined symbols. The 386 driver already has __i386 defined. src/commands/ibm/ar.c Removed: Old ar command for old ACK compiler. src/commands/ibm/fdisk.c src/commands/ibm/format.c src/commands/ibm/part.c src/commands/ibm/partition.c src/commands/ibm/repartition.c New DIOCGETP. src/commands/ibm/loadkeys.c Changed to accept a keymap with more keycodes. (Still accepts the old key tables.) src/commands/kermit/ 28800 baud removed. Added call to tcsendbreak() to send breaks. src/commands/make/make.c Null pointer dereference fixed. src/commands/mined/mined1.c Added a TIOCGWINSZ call to get the window size. src/commands/reboot/ Separate wall command removed. Shutdown sends out \r\n sequences. src/commands/scripts/DESCRIBE.sh src/commands/scripts/MAKEDEV.sh Removed /dev/tty[012] Added /dev/log, /dev/tty0[01], /dev/ttyp??, /dev/ptyp??. Use mode 600 for /dev/eth and /dev/ip to keep ordinary users from accessing the raw ethernet. src/commands/scripts/adduser.sh New command to add new users to the system. src/commands/scripts/checkhier.sh Check new files /etc/ttytab and /usr/adm/lastlog, forget about /etc/psdatabase, /etc/ttys, and /etc/ttytype. src/commands/scripts/spell.sh Accept alternate dictionaries with '-d' flag. src/commands/simple/cat.c Removed , better error reports, fixed exit code. src/commands/simple/cp.c Setuid bits were not always cleared when POSIX says so. (I hate it when a command assumes that the user is stupid. Let the user find that out by themselves.) src/commands/simple/dhrystone.c Now always runs 15 seconds instead of a fixed number of loops. Computes result using time computing, not real time. (Andy complained that dhrystone dumped core on his new pentium. Not surprising if dhrystone finishes 50000 loops in 0 seconds.) src/commands/simple/ftp.c New ftp client program. src/commands/simple/getty.c Customizable login banner. src/commands/simple/in.rld.c Remote login service daemon (for rlogin). src/commands/simple/irdpd.c src/commands/simple/nonamed.c src/commands/simple/rarpd.c SIGUSR1 raises the debugging level, SIGUSR2 turns debugging off. src/commands/simple/kill.c Allow killing a negative pid (process group). Return a meaningful exit code. src/commands/simple/login.c Minix-vmd version ported back. Can be called from in.rld to start a login session. src/commands/simple/mesg.c New command to allow/disallow messages by write(1). src/commands/simple/mkfs.c New DIOCGETP. src/commands/simple/passwd.c If the encrypted password is "##name" then edit /etc/shadow. src/commands/simple/prep.c Changed to better remove troff goo. src/commands/simple/ps.c Moved to src/tools to be closer to the kernel. src/commands/simple/pwdauth.c New command that is called by crypt(3) to encrypt or check a password. It is setuid root to be able to read /etc/shadow. src/commands/simple/rlogin.c Some nonsense that has to do with speeds. IEXTEN flag cleared to stop capturing ^V, ^R. src/commands/simple/stty.c Minix-vmd stty.c adapted for termios ported back to standard Minix. src/commands/simple/su.c Keep the shell of the caller on a simple 'su' (i.e. not 'su -'.) This means that if bin types 'su' than root uses the ash shell. src/commands/simple/tar.c Would go into a fit if input is not in 512 byte units. All bets are off when reading from a pipe, so this is fixed. src/commands/simple/tget.c New command to make the termcap usable from the shell. Used in .ashrc to get the codes to write the status line. src/commands/simple/vol.c Added the -1 flag to signal that only one volume is read/written. src/commands/simple/who.c Replaced with the Minix-vmd version that shows the host field of an rlogin session. src/commands/telnetd New telnet daemon to offer telnet into Minix. Does not work yet. src/commands/yap/ Explained the virtues of TIOCGWINSZ. src/etc/group The 'sysadm' and 'mail' groups are deleted. New 'ftp' group added for anonymous FTP. src/etc/passwd Likewise 'mail' out, 'ftp' in. The root and bin users have "##root" in the password field to refer to the "root" entry in the shadow password file. src/etc/rc Horrible "deamons" speling error corrected. New 'login', 'telnet', and 'ftp' services started if networking is enabled. src/etc/services Replaced by a Berkeley /etc/services file before anyone notices that it is the output of 'ypcat services' of a Solaris machine. (One must be careful not to grab something that is conveniently lying around even though you have the intention to replace it later.) src/etc/shadow New default shadow password file. Contains only a passwordless entry for root. src/etc/ttys src/etc/ttytype Removed. src/etc/ttytab Added. src/fs/device.c New do_setsid() function to handle the FS side of setsid(). Code on how to allocate a controlling tty is cleaned up and simplified. Tty_close(), ctty_open() simplified. Call_task() improved so it can handle revives thrown at it at any moment. (And TTY certainly does.) Net_rw() and net_close() removed because regular functions can replace them. Rw_dev2() renamed to call_ctty(). src/fs/file.h New value 'FILP_CLOSED' added that marks a tty device as prematurely closed. (For when a session leader exits.) src/fs/fproc.h fs_tty renamed to fp_tty to match the rest of the fproc fields. New fp_sesldr flag that is true for a session leader added, fp_pgrp removed. src/fs/main.c MIOCSPSINFO call to tell the kernel where fproc is so that ps(1) may know that later with MIOCGPSINFO. Load_ram() rewritten to make loading the RAM disk more understandable. Askdev() and fastload() removed. Askdev() should not be done here, and fastload() isn't. Boot parameters stuff simplyfied. src/fs/misc.c Don't make children of INIT process group leaders, that's why we have the new setsid() call. When a session leader exits then forcefully revoke all access to the controlling tty using a nice loop over all processes and all open files. src/fs/mount.c Fixed some O_RDONLY/O_RDWR vs R_BIT/W_BIT confusion. User processes use O_RDONLY/O_WRONLY/O_RDWR, everything below uses R_BIT/W_BIT. src/fs/open.c TTY_FLAGS and COUNT are synonyms, but we only use TTY_FLAGS for ttys. Watch out for FILP_CLOSED signalling that a device is already closed. COUNT no longer shows the number of references (dups) to an open device. Devices opens and closes are now matched one to one. src/fs/pipe.c A comment names rw_dev2, now it names call_ctty. src/fs/proto.h Removed: no_call(), rw_dev2(), tty_close(), net_rw(), net_close(). Added: call_ctty(), do_setsid(). src/fs/putk.c Transform \n into \r\n. src/fs/read.c Return EIO if a file is marked as closed by FILP_CLOSED. src/fs/table.c Added do_setsid to system call jump table. Device jump table updated to reflect changes in device.c. src/inet/nw_task.? src/inet/inet.? Renamed one into the other to make it easier to spot the main files. src/kernel/aha_scsi.c Retry on an "Aborted Command" error. Do not return an error if adding a filemark on close fails, just complain and return OK. A device close may never fail, because UNIX doesn't allow close() to fail on I/O errors. Better Adaptec device probe. src/kernel/at_wini.c ATA removable device code that noone supports removed, some hooks to later add ATAPI support added. File reordered to please Al. src/kernel/clock.c File reordered by Al. Call to tty_wakeup() revamped. src/kernel/console.c Major parts rewritten to support termios and to simplify the handling of screen memory. The old code was byte oriented, but video boards are word oriented. The new code is word oriented and leaves byte/word trickery to the low level support code. Several bugs fixed in the update. Color/mono information now obtained from the BIOS data area. src/kernel/const.h PS_KEYB_IRQ and console definitions removed. src/kernel/dmp.c Array of process names removed (now p_name in process table.) Both text and data addresses shown, because they need not be consecutive anymore. Paging if lots of output. src/kernel/dp8390.c Skip the WD80x3 probe if the memory address is configured to zero, i.e. DPETH0=280:5:0. Keeps some NE2000's from being mistaken from a WD8013 if they happen to have the proper I/O register checksum. src/kernel/driver.c System dependent functions partition(), extpartition(), get_part_table() and sort() moved to drvlib.c. File reordered for Al. DIOCGETP/DIOCSETP changed for new src/kernel/driver.h Type dr_geometry changed for new , all geometry() functions in the drivers updated to match. Several definitions moved to drvlib.h. src/kernel/drvlib.? System dependent parts formerly in driver.?. src/kernel/glo.h Flag 'ps' removed, so no support for PS/2 Model 30s anymore. Console flags 'color' and 'snow' removed. TTY introduces 'tty_timeout' as the time to call tty_wakeup() for an event. src/kernel/i8259.c Function init_8259() renamed to the less conspicuous intr_init(). src/kernel/keyboard.c PS/2 model 30 keyboard complexity removed. Interface adapted to the termios tty driver. Don't bother TTY with make/break nonsense anymore. src/kernel/keymaps/ New Japanese, Latin-American, and UK keymaps. Keymaps updated to have 0x80 keycodes. src/kernel/klib386.s src/kernel/klib88.s Reordered for Al. Scr_up() and vid_copy() replaced by vid_vid_copy() and mem_vid_copy(). Wait_retrace(), phys_zero() and test_and_set() removed. src/kernel/main.c Main() cleaned up a bit to hide the gory details. src/kernel/memory.c Do_setup() replaced by m_ioctl() that handles MIOCRAMSIZE, MIOCSPSINFO, MIOCGPSINFO, and also DIOCGETP by calling the generic do_diocntl(). src/kernel/misc.c Memory list setup simplyfied a bit. src/kernel/printer.c Handle DEV_OPEN and DEV_CLOSE calls so that FS needn't avoid them. Remember the virtual address of the user buffer instead of the physical address. Prevents problems if a process is ever moved. Use EFAULT instead of E_BAD_ADDR here and everywhere else. src/kernel/proc.h Introduce p_name in the process table for the name of the process. The cproc_addr(n) is the same as proc_addr(n) but compiles to a constant if 'n' is a constant. With proc_vir2phys(p, vir) one can efficiently translate a virtual address to a physical address if it has been previously checked with umap(). src/kernel/protect.c Ldt_init() folded into prot_init(). src/kernel/protect.h Why have both COLOR_INDEX and MONO_INDEX if one VIDEO_INDEX will do? src/kernel/proto.h Removed: fork_name(), mem_dmp(), set_name(), most of the RS232, tty, and console functions (modularisation). src/kernel/ps_wini.c Removed because I can't get it to work. src/kernel/pty.c Pseudo-ttys! src/kernel/rs2.s Removed. Only the C code of the RS232 driver has been changed for termios. The assembly code is only useful if one wants very high baud rates on an XT. src/kernel/rs232.c Updated for termios. The PC now uses the C code instead of the faster assembly code. I managed to pull 115200 baud using a 386dx/40 through the updated driver, so I'm happy with the C code. src/kernel/sconst.h Cleaned up to get rid of the EXXX symbols. src/kernel/start.c Machine type check removed, the 'bus' variable will tell. src/kernel/system.c Reordered by Al. Do_fork() and related functions fill in p_name. Memcpy in do_fork() replaced by a normal struct copy. Do_oldsig() encased by ENABLE_COMPAT. src/kernel/tty.c src/kernel/tty.h Updated for termios. Too much has changed to summarize here, you have to read the code and/or the manual page tty(4). src/kernel/wini.c Call to ps_wini removed. src/lib/ansi/strtol.c Signed overflow in what is to be a constant expression fixed. src/lib/curses/curses.3 Moved to /usr/man/man3 src/lib/float/fptrp.s src/lib/math/frexp.s src/lib/math/modf.s Prepared for 68k code to come soon. src/lib/other/crypt.c Replaced by a stub function that calls pwdauth to do the work. src/lib/other/getgrent.c Replaced by the Minix-vmd version that understands group members. src/lib/other/getpw.c Removed for being of no use. src/lib/other/getpwent.c Replaced by the Minix-vmd version that can read alternate (read "shadow") password files. src/lib/other/getttyent.c src/lib/other/ttyslot.c src/lib/posix/_cfgetispeed.c src/lib/posix/_cfgetospeed.c src/lib/posix/_cfsetispeed.c src/lib/posix/_cfsetospeed.c src/lib/posix/_setsid.c src/lib/posix/_tcdrain.c src/lib/posix/_tcflow.c src/lib/posix/_tcflush.c src/lib/posix/_tcgetattr.c src/lib/posix/_tcsendbreak.c src/lib/posix/_tcsetattr.c New functions. src/lib/posix/_ioctl.c Should be simplyfied, but isn't. Still using the old sgtty message packing/unpacking to make the 1.7.1 - 1.7.2 upgrade easier. src/lib/posix/_uname.c Changed the system name to always be Minix for any Minix variant, because 'uname -p' will tell the processor type. src/lib/stdio/doscan.c One extra ; can do lots of damage in C programs. src/lib/stdio/setvbuf.c Fixed by our ACK guru who shall remain nameless to shield him from the Minix hordes. (I will handle bug reports.) src/lib/syscall/ Lots of new termios stubs. src/mm/exec.c src/mm/forkexit.c Implement shared text. When a session leader dies send a HANGUP to its process group. src/mm/getset.c New SETSID and GETPGRP system calls. src/mm/main.c Tell MEM about the process table so ps(1) can find it. src/mm/mproc.h New fields mp_ino, mp_dev, and mp_ctime to identify a file so it may later be shared if executed again. src/mm/proto.h Added: find_share(). src/mm/signal.c ENABLE_COMPAT used to make old signal code optional. Send SIGHUP to the session leader instead of the process group. src/mm/table.c Add setsid and getpgrp entries to the system call table. src/mm/trace.c Cleaned up by Al. src/test/test26.c You can't compare two struct's byte by byte and expect the holes between struct members to be equal. src/tools/init.c Updated to use /etc/ttytab to start login processes. Knows nothing about terminal settings anymore, it leaves it to stty(1). Run 'shutdown -h now' when CTRL-ALT-DEL is typed instead of stopping cold. src/tools/mkboot 'ps U' call removed.