Short list of differences between 1.7.2 and 1.7.4: - Second level file system cache. Makes 286 based AT's happy and does away with the RAM disk for normal use. The "scratch" partition is also obsoleted. - All the commands using have been changed to use . The this means that the entire system is now supposed to be as POSIX compliant as can be achieved given Minix limitations as a simple educational system. - File system limit upped to the somewhat arbitrary maximum of 1 Gb thanks to doing away with preloaded bitmap blocks in FS. 16-bit fsck is still limited to 128 Mb. * Virtual Consoles are now standard. The default kernel has two defined. (Things marked with a '*' were changes from the deadborn 1.7.3 to 1.7.4.) Contributions: Richard Henderson Bitmap block code changed to no longer preload bit map blocks. Kouichi Hirabayashi Saeko Hirabauashi New AWK program and fix to calendar. Paul Ashton Many alignment problems, null pointer dereferences, string constant writes and network code bug reports and fixes. (Does SunOS-Minix). Albert S. Woodhull Speling error fixes, extra code comments, code rearrangements. General pain in the neck. (Does the new Minix book in co-op with Andy.) Michael Temari Updates to his network programs. Mktime() fix. Christophe Lizzi French keyboard map checked and fixed. Osamu Ishibashi Change to let the Adaptec driver know Magneto Optical disks. Repaired long standing bug in XT wini. Chr Security bug report on the recover command. Long list of differences between 1.7.2 and 1.7.4: (Warning: This list is riddled with lame jokes and other silly things that happen to sneak in when doing something as boring as compiling this list.) include/curses.h -> by porting it back from Minix-vmd. include/limits.h UINT_MAX and ULONG_MAX changed to hex constants like 0xFFFFFFFF to make gcc stop complaining. include/minix/config.h [IZ]_MAP_SLOTS made obsolete and thus removed. ENABLE_CACHE2 added to enable or disable the second level cache. ENABLE_COMPAT removed ENABLE_BINCOMPAT added to enable or disable support for old binaries using obsolete system calls. ENABLE_SRCCOMPAT added to enable or disable support for old sources using obsolete system calls. * NR_CONS can now be 1 to 8 to enable virtual consoles. include/minix/const.h SIG_PUSH_BYTES removed, because the old V7 signal code support is removed. (Software emulation of signal() still present.) include/signal.h SIGSTKFLT removed (unused). SA_COMPAT removed (old signal). include/stdio.h Definitions for vfscanf(), vscanf(), and vsscanf() added. include/string.h char * -> void * for bcopy(), bcmp(), and bzero(). include/sys/ioctl.h Final touch to the -> changeover, TIOCGETP etc. now defined to use higher level emulation calls (SRCCOMPAT) instead of the old "pack it into a message" calls (still emulated under BINCOMPAT.) include/sys/sigcontext.h struct sigframe moved into here from kernel/system.c. include/sys/types.h zone_t, block_t, and bit_t changed to unsigned types to avoid type bug problems (and possible invite new bugs). include/tiny-fcntl.h include/tiny-unistd.h Removed in favour of the normal include files. man/cat2/fcntl.2 Removed in favour of a new man2/fcntl.2. man/man0/as man/man0/awk New manual pages derived from the Reference Manual. man/man0/fsck Mention fsck1 as the V1 file system checker. man/man0/kermit Removed some nonsense about "set the line speed before starting kermit". POSIX termios ttys always reset on close, so a terminal program must set the line itself. man/man0/ls Adapted to tell that -l now lists the group by default. man/man0/mkfs The maximum file system size is 1 Gb. man/man0/sh * Made it look good on a screen thanks to lots of '.ti' nroff things. man/man0/users * Removed man/man1/synctree.1 Spellchecked by an American, who, unlike most Americans, can spell better then me. :-) man/man1/vol.1 Explain that vol can now do without the volume size argument if the volume size equals the floppy size. Also allows mixing of floppy types within one vol run. man/man2/fcntl.2 A new manual page for fcntl() listing all the gory details. man/man4/console.4 man/man4/dev.4 New manual pages describing the console in particular and all devices in general. * Added info about Virtual Consoles. man/man8/add_route.8 man/man8/pr_routes.8 Describes the command to specify fixed network routes, and a command that lists the TCP/IP driver's routing table. man/man8/usage.8 Explains the new situation with the 2nd level disk cache. * 'Setup' (formerly instdist) can now run after migrating to disk to install floppy sets. * A few words on Virtual Consoles added. src/boot/ As usual things changed, but its mostly Minix-vmd related. src/commands/aal /usr/bin/aal is linked to /usr/bin/ar on installation. Same situation as on 68000 based machines. * Added proper / code. src/commands/advent/verb.c There was some confusion over what should happen if you meet the bird carrying a rod. (Or maybe there wasn't any confusion except with me.) Anyway, I unchanged the change made between 1.7.1 and 1.7.2. I demand a screen dump of a PDP-11 adventure game in action before I change it again. src/commands/awk This is a replacement of bawk. Not tested much, but compared to bawk it must be infinitely better. src/commands/awk/m.c * Null pointer dereference bug fixed. src/commands/bawk "Dead. All of them. And good riddance." -- Londo Mollari. src/commands/de/ [IZ]_MAP_SLOTS, out, in. src/commands/elle/ src/commands/elvis/ out, in. src/commands/ftp/ * New and improved ftp command. src/commands/ftpd/ Our network application Guru is making this more useful by the day. src/commands/ibm/cdplay.c src/commands/ibm/mixer.c src/commands/ibm/part.c src/commands/ibm/recwave.c out, in. Geometry guessing code added to 'part' to crosscheck with what the device driver claims. src/commands/ibm/term.c Nothing IBM dependend here, so moved to ../simple/. src/commands/ic/ic_input.c src/commands/kermit/ src/commands/mined/ out, in. * Mined: fixed varargs bugs by using /. src/commands/m4/main.c * Write to a string constant bug fixed. src/commands/patch/patch.c * Null pointer dereference bug fixed. src/commands/scripts/DESCRIBE.sh Describe "virtual console" devices. src/commands/scripts/checkhier.sh Also check setuid or setgid binaries. src/commands/scripts/instdist.sh Added support for an "upgrade", i.e. move contents of /usr into /usr/.old and extract new stuff on the old file system. No longer make a scratch subpartition. Install using a second level file system cache. * Renamed to `setup'. src/commands/scripts/mkdist.sh Adapted to the new situation where /minix is a directory. src/commands/scripts/setup.sh * New name for instdist.sh. When setup is run when Minix is already on disk it now offers to unpack a floppy set. /usr is now filled this way, not at the early installation phase. src/commands/sh/sh3.c Fixed an exit status bug. (Can't remember the details.) src/commands/simple/animals.c out, in. (This is getting boring.) src/commands/simple/calendar.c Bug fix by the author. src/commands/simple/chmod.c Don't stop on the first error, try all files. src/commands/simple/chown.c Simplified a bit assuming that chown is never setuid-root. src/commands/simple/cmp.c * Wrong use of perror() changed to right use of strerror(). src/commands/simple/comic.c Removed before anyone thinks it is useful. (Good compression program that is no longer so good compared to things like gzip.) src/commands/simple/df.c Return a useful exit code. src/commands/simple/diskusage.c * Changed 'struct stat *this_stat' to 'struct stat this_stat'. It helps if an object actually exists. src/commands/simple/ftp.c * Replaced by src/commands/ftp/. src/commands/simple/getty.c Better protection against user abuse. src/commands/simple/gomoku.c out, in. src/commands/simple/in.rshd.c New version from Minix-vmd containing various fixes. src/commands/simple/join.c * Various null pointer dereference bugs fixed. src/commands/simple/leave.c: * Some kind of DST problem fixed. src/commands/simple/life.c out, in. src/commands/simple/login.c Better protection against user abuse. src/commands/simple/ls.c Default of 'ls -l' is now to also list the file group. Cleanup. src/commands/simple/men.c out, in. Calls to the obsolete 'getlf' changed to 'echo;read'. src/commands/simple/mkfs.c Z_MAP_SLOTS things removed. Max file system size set to 1 Gb. src/commands/simple/modem.c Copied from Minix-vmd. From useless to possibly useful? src/commands/simple/recover.c * Glaring security bug fixed. src/commands/simple/rlogin.c out, in. Non-Minix code deleted. src/commands/simple/roff.c out, in. Why does a text formatter need terminal parameters? src/commands/simple/sed.c Added \:xxx: that is equivalent to /xxx/, but allows you to choose the delimiter, ':' in this example. Null match loop and exit code bug fixed. src/commands/simple/tcpd.c Added -DPARANOID for the truely paranoid that demand heavy logging. src/commands/simple/term.c Moved in here from ../ibm/. Revamped interface. Type `CTRL-] h' to see how. Very useful in combination with ZMODEM (rz/sz). I ditched kermit in favour of this new term. src/commands/simple/test.c out, in. (For 'test -t') src/commands/simple/time.c return((status & 0377) ? -1 : (status >> 8)); What else? src/commands/simple/users.c * Removed because it is both broken and useless. src/commands/simple/vol.c Allow one to omit the volume size for floppies. Vol will ask the floppy driver how large the floppy is and act accordingly. My apologies to Andy for making one of his programs Big & Ugly. src/commands/simple/write.c out, in. Setgid 'tty' to allow writing to terminals that are now mode 620, group tty by default. Prevents misuse. src/commands/telnet/ttn.c out, in. Used to always used local port 1234 preventing two simultaneous telnets. src/commands/simple/yes.c * String constant write fixed. (In one of my programs. *deep shame*). src/commands/telnetd/ Fixes by our network program wizard. src/commands/yap/ out, in. Yap should not write to string constants, as one SunOS-Minix found out after he made text and string constants read-only. src/commands/zmodem/ You know the drill: out, in. src/etc/fstab tmp=/dev/TMP line removed. src/etc/protocols * Initial /etc/protocols file; list of tcp, udp, etc protocol numbers. src/etc/ttytab * Added Virtual Console devices. src/fs/buf.h I_MAP_BLOCK and ZMAP_BLOCK definitions replaced by MAP_BLOCK using a lax writing policy. (Map blocks can be restored easily by fsck.) src/fs/cache.c Calls to transfer blocks to/from the second level cache added to normal cache routines. #if ENABLE_CACHE2 armour to allow it to be configed out. (And out of the book listings.) Calls to alloc_bit() and free_bit() changed to use a new interface. src/fs/cache2.c The second level block cache. The code in this file writes any block expelled from the normal block cache somewhere into the RAM disk. A small list is kept that records where blocks went. Note that this is a read-only cache, so writes are still slow. This cache mainly helps by caching executables. This helps compilations and shell scripts a lot. Useless on the 386 where you can simply use a very big normal cache. src/fs/inode.c Changed alloc_bit() and free_bit() calls. src/fs/mount.c Do not load or unload bit map blocks anymore. src/fs/protect.c Third argument of forbidden() done away. src/fs/super.c Load_bit_maps() and unload_bit_maps() removed. Alloc_bit() and free_bit() rewritten to get or put bit map blocks as needed. This means that bit map blocks no longer claim a large portion of the block cache. Unused file systems can be kept mounted without cost. More file systems can be mounted. src/fs/super.h *s_imap[I_MAP_SLOTS] and *s_zmap[Z_MAP_SLOTS] memory eaters removed. src/inet/ Various uninteresting changes. Can be compiled with -DDEBUG now. src/kernel/ Several little changes and code rearrangements. src/kernel/aha_scsi.c Magneto-Optical disks superficially recognized as some kind of disk. Prevent/allow medium removal left on the TODO list. src/kernel/console.c * Virtual Consoles. src/kernel/keyboard.c * A few changes to allow one to select a Virtual Console. src/kernel/keymaps/french.src Checked and fixed by someone whose feet are rooted in solid French soil instead of sticky Dutch clay. src/kernel/klib*.s Old signal() needed build_sig(), so it is gone. 25 microsec delay added to the 16-bit A20 line toggling code. src/kernel/system.c Support for old signal() (SYS_OLDSIG) removed. Struct sigframe moved to so it can be used in the library. src/kernel/tty.c ENABLE_SRCCOMPAT or ENABLE_BINCOMPAT placed around various bits of emulation code. * Speaks of "16-bit", or "32-bit" mode now, instead of "protected" or "386" mode. Using "386" sounds to retarded to people running this on their super fast Pentium. Does not help to sell books. Bloody Politics. src/kernel/xt_wini.c Living in the country where the Sun rises first apparantly allows one to see better. XT wini now works. src/lib/ansi/errlist.c Spelchecked so that eror messsages dont look stoopid anymore. src/lib/ansi/memcmp.c Characters are unsigned to memcmp() says ANSI. src/lib/ansi/mktime.c Bug computing across the start of a month fixed. src/lib/ansi/strcmp.c src/lib/ansi/strncmp.c Unsigned characters. src/lib/curses/ src/lib/editline/ out, in. src/lib/ip/gethostent.c Alignment problem fixed, you can't write a long into a char array. src/lib/ip/rcmd.c rcmd() expects needs a network byte order port number, not host byte order! Sleep(1) added as a hack so that we do not listen too soon, or something. src/lib/ip/res_mkquery.c * Assignments to dh_flags[12] changed to '|=' where there was '=' by mistake. Caused overwrite of earlier assignments. src/lib/other/bcmp.c src/lib/other/bcopy.c src/lib/other/bzero.c * `char *' changed to `void *'. src/lib/other/getpass.c Replaced by the Minix-vmd version that uses and is more disaster-proof. src/lib/posix/_gtty.c src/lib/posix/_stty.c Very old calls removed. src/lib/posix/_ioctl.c Old "pack it in a message" code removed. src/lib/posix/_isatty.c out, in. src/lib/posix/_readdir.c (char) -1 need not be negative. src/lib/stdio/perror.c Fixed to get the error string before destroying to with fprintf()! src/lib/stdio/vscanf.c src/lib/stdio/vsscanf.c New functions. src/mm/alloc.c Mem_left() obsolete and removed. src/mm/break.c Stack_fault() obsolete and removed. src/mm/forkexit.c * Let fork() return ENOMEM if out of memory instead of EAGAIN. (This is debatable, some systems returns EAGAIN if memory could come available in the future, and ENOMEM if there is certainly not enough memory ever. But ENOMEM leads to a better error message.) src/mm/signal.c Old signal() removed. src/mm/utility.c Find_proc() obsolete and removed. src/test/ Why do test programs have more bugs themselves than they help fix? src/tools/mkboot Manage a /minix directory for kernel images instead of the scratch test boot partition.