on project management
Paul Eggert
eggert@cs.ucla.edu
Tue Aug 11 16:42:17 GMT 2026
On 2026-08-11 05:49, Robert Elz wrote:
> I replied to Paul with more details, I saw the reply got to UCLA
> mail servers, but whether he received it, or it was treated as
> spam, I have no idea.
I got it. Thanks for the trip down memory lane. The amusing thing to me is how 7th Edition Unix got by without a single mem*-style function. When 7th Edition code wanted to (say) copy a block of memory it did so by hand, byte by byte.
Here are you sent me in your email dated Tue, 11 Aug 2026 03:56:27 +0700:
> Date: Mon, 10 Aug 2026 10:29:12 -0700
> From: Paul Eggert <eggert@cs.ucla.edu>
> Message-ID: <671ce30e-77ab-41db-afa3-28c53de65836@cs.ucla.edu>
>
> | In an email today[1], Ingo Schwarze mentioned your contribution to
> | what became 4.3BSD,
>
> There was some of that yes, starting around 3BSD, but:
>
> | a contribution that introduced <memory.h>.
>
> I have no memory of anything related to that, and it sounds kind
> of unlikely -- but that is all so long ago. When I look in
> the sccs logs of memchr.c I see:
>
> D 5.5 90/05/15 14:07:06 bostic 5 4 00022/00020/00011
> ANSI C version from Chris Torek
>
> D 5.4 88/06/27 18:25:34 bostic 4 3 00010/00005/00021
> install approved copyright notice
>
> D 5.3 88/05/25 14:23:52 bostic 3 2 00010/00008/00016
> written by Robert Elz; add Berkeley specific header
>
> D 5.2 86/03/09 19:33:58 donn 2 1 00001/00001/00023
> added LIBC_SCCS condition for sccs ids
>
> D 5.1 85/08/05 21:43:13 kre 1 0 00024/00000/00000
> date and time created 85/08/05 21:43:13 by kre
>
> so I guess I probably did have something to do with some of it.
>
> The comment at the top (after the copyright nonsense) says:
>
> /*
> * Sys5 compat routine
> */
>
> It included no header files.
>
> But there was a <memory.h> created at about the same time:
>
> D 5.4 90/05/15 19:43:57 bostic 4 3 00001/00001/00019
> string.h is ANSI C include file
>
> D 5.3 90/02/12 12:20:39 bostic 3 2 00001/00005/00019
> might as well only have one copy.
>
> D 5.2 88/08/12 14:13:46 bostic 2 1 00020/00013/00004
> correct list from manual page
>
> D 5.1 85/08/05 21:21:49 kre 1 0 00017/00000/00000
> date and time created 85/08/05 21:21:49 by kre
>
> The 5.3 change altered it to just be #include <strings.h> and then
> the 5.4 change made that <string.h>
>
> (In both cases there were later revisions than shown here, but they're
> mostly just updates for 4.4 type stuff, different copyright/licence, etc,
> rather than anything substantive).
>
> | Ingo writes that the code's comment "appears to claim that <memory.h>
> | along with these five functions [memccpy, memcmp, memcpy, memchr, memset]
> | came from AT&T System V UNIX,
>
> "came from" in the sense that SysV created those functions, and then
> CSRG (me it seems) made BSD implementations - they are all trivial.
>
> 85 was probably the year I spent 3 months working at CSRG (I certainly
> remember there was such a 3 month period - I also remember never bothering
> to fill in a California Tax return, and recover the (about) $10 refund I
> would have had coming... But I no longer actually remember which year that
> was.)
>
> | almost half a decade before ANSI C 89 standardized them to
> | live in <string.h>."
>
> Certainly could be - whether SysV used <memory.h> or whether that was an
> invention, I have no idea.
>
> The comment at the head of that one just says:
>
> /*
> * Definitions of the Sys5 compat memory manipulation routines
> */
>
> No indication if SysV used the same file name or not. If I had
> to guess, I'd suspect possibly so, as I doubt I would have called
> it "memory.h" had I been inventing its name - so that probably came
> from wherever the specs for the functions came from.
> ,,,
> I didn't check the other 4 functions, but if I wrote the initial version
> of memchr() for BSD, it seems likely I wrote the others as well, but the
> version distributed seems likely to have been Chris Torek's rewrite.
> My version had K&R C style function definitions.
More information about the Libc-alpha
mailing list