Newsgroups: comp.os.minix
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!batcomputer!munnari.oz.au!metro!dmssyd.syd.dms.CSIRO.AU!ditsydh.syd.dit.CSIRO.AU!evans
From: evans@syd.dit.CSIRO.AU (Bruce.Evans)
Subject: Re: 1.6 woes
Message-ID: <1991Jun30.164157.25579@syd.dit.CSIRO.AU>
Organization: CSIRO Division of Info Tech, Sydney, Australia
References: <57109@nigel.ee.udel.edu>
Date: Sun, 30 Jun 91 16:41:57 GMT

In article <57109@nigel.ee.udel.edu> SRONCH%HLERUL2.BITNET@vm.biu.ac.il (Fred Wiersma) writes:
>
>I have one question myself: mknod4 is an unsolved reference when making
>some commands (e.g. format, mknod, tar). When browsing some header files
>(I think unistd.h) I saw a definition for either mknod or mknod4,
>depending on whether _MINIX was defined. So I copied mknod.c to
>mknod4.c, changed its mknod identifier to mknod4, recompiled and
>regenerated libc.a. Then I could make the above mentioned commands. Was
>what I did OK?

The change is correct, but the reasoning is not, and you also need to
re-create mknod:

	1.6 mknod4 = 1.5 mknod
	mknod(name, mode, addr) = mknod4(name, mode, address, 0)

Neither is declared (in unistd.h) unless _MINIX is defined, because POSIX
does not specify mknod.

The change was made to correct the misfeature of Minix-1.5's mknod being
different from everybody elses mknod. Calling mknod4 with a random size
causes interesting bugs (see e.g. test/test8.c).
-- 
Bruce Evans		evans@syd.dit.csiro.au
