Re: Re: [UnixOS2] libc

Holger Veit <[email protected]> Fri, 20 Jun 2003 14:13:34 +0200
Newsgroups gmane.comp.ide.emx.devel
Message-ID <[email protected]>
On Fri, Jun 20, 2003 at 02:15:34AM -0700, Ilya Zakharevich wrote:
> On Thu, Jun 19, 2003 at 01:43:39PM +0200, Holger Veit wrote:
> > Do we really want an improvement of the free OS/2 libc (call it EMX or 
> > different)?
> > 
> > If the answer is yes, then we *must* break something in order to
> > build something better, faster,more powerful (whatever the design goal
> > is). This is the unavoidable price to pay.
> 
> Now try to prove this.  AFAIU, your argument looks very much like bullying.

Proof by example:

If we set off_t to longlong, structures like struct stat will change.
We could get around with a specific distinction of struct stat and 
struct stat64, forcing each one to explicitly request the 64 bit APIs.
It is unlikely to happen, so "old" code will still not be able to take
advantage of JFS or other modern WSEB filesystems. One could argue that
we would not need support for this then anyway. So why should we change
anything then? Stay with the bugs and problems of EMX. 

There are some more incompatibilities to occur; let's assume setuid()
and chown()/chmod() would get implemented; thus an awful lot of software
would suddenly underlie file protection effects, including the effect
that former NO OPs (like setuid()) that simply returned 0 for success,
will now fail. Not only that, some eager porters have used
#define setuid() (0)
or similar to get code work; suddenly such software would subtly fail,
because the process does not get the appropriate privilege and the
original check whether the process gained setuid privilege from the
Unix code which would fail on a real Unix is disabled due to that
(0) return. Consequence: if you want to avoid subtle breaking of the
code, just avoid putting such code in. Stay with the bugs and problems
of EMX.

If this is not sufficient as a proof, I cannot help you. Besides:
I don't think anyone needs backward compatibility at all for a DLL which
is then not even named EMX*.DLL even if it stemmed from EMX and maybe
shared 90% of the code. Old apps can still resolve against old EMX*.DLLs,
and for new apps one has to clearly decide what he wants - again, see
other posting a question of decision making which is fatally flawed here:
Do you want Unix or EM(i)X? Requesting EMUNIX or UNEMIX is not the answer -
this will never happen.

Holger


Holger