|
|
Log in / Subscribe / Register

Re: SCO's infringing files list

From:  Linus Torvalds <torvalds-AT-osdl.org>
To:  Mitchell Blank Jr <mitch-AT-sfgoth.com>
Subject:  Re: SCO's infringing files list
Date:  Tue, 23 Dec 2003 09:25:53 -0800 (PST)
Cc:  "Giacomo A. Catenazzi" <cate-AT-pixelized.ch>, "linux-kernel-AT-vger.kernel.org" <linux-kernel-AT-vger.kernel.org>, "Eric S. Raymond" <esr-AT-thyrsus.com>


Bingo!

On Tue, 23 Dec 2003, Mitchell Blank Jr wrote:
> 
> This does seem to be the case - from an FAQ that H J Lu posted about that time:
> 
> | From: hlu@yoda.eecs.wsu.edu (H.J. Lu)
> | Subject: FAQ about gcc (how to compile program under Linux)
> | Date: Sun, 19 Jul 92 06:40:05 GMT
> | [...]
> | Another file, XXXXinc.tar.Z, where XXXX is the current version number
> | of Linux kernel, has all the header files to replace the header files 
> | from kernel. YOU MUST INSTALL IT. Please read README for details.

Ok, this is the source.

In particular, I can re-create _exactly_ the linux-0.97 "errno.h" file by 
using the "sys_errlist[]" contents from "libc-2.2.2". In particular, this 
trivial loop will generate the exact (byte-for-byte) list that is in the 
kernel:

        int i;

        for (i = 1; i < 122; i++) {
                const char *name = names[i];
                int n = strlen(name);
                char *tabs = "\t\t"+(n > 7);
                const char *expl = libc222_errlist[i];
                printf("#define\t%s%s%2d\t/* %s */\n",
                        name, tabs, i, expl);
        }

here, the "names[]" array was filled in with the error names, ie

	const char *names[] = { "none",
	"EPERM", "ENOENT", "ESRCH", "EINTR", "EIO", "ENXIO", "E2BIG",
	...

and the "libc222_errlist[]" array was filled in with the strings found by 
just downloading the old "libc-2.2.2" binary that can still be found at

	http://www.ibiblio.org/pub/Linux/libs/oldlibs/libc-2.2.2/

and then just doing a "strings - libc-2.2.2" and "sys_errlist[]" will be 
obvious:

	static char *libc222_errlist[] = {
	        "Unknown error",
	        "Operation not permitted",
	...

This was literally a five-minute hack (I wrote the silly loop yesterday to
see what it does with the current "strerror()" - there is very good
correlation even today, but using the libc-2.2.2 sys_nerrlist[] you get
_exactly_ the same result).

So this is definitely the source of the kernel error header. It's either a
file from the libc sources, or it is literally auto-generated like the
above (I actually suspect the latter - now that I did the auto-generation
it all felt very familiar, but that may just be my brain rationalizing
things. Humans are good at rationalizing reality.).

Can anybody find the actual libc _sources_? Not the kernel headers that
hjl mentions (those are the old ones from _before_ the change), but the
file "libc-2.2.2.tar.Z"?

Anyway, we know where the kernel header comes from. Let's figure out where 
the libc data comes from.

				Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



to post comments


Copyright © 2003, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds