Subject: Re: sysv ps(1) implementation [was: ps(1) sysv silliness]
To: NetBSD Userlevel Technical Discussion List <tech-userlevel@netbsd.org>
From: Greywolf <greywolf@starwolf.com>
List: tech-userlevel
Date: 06/08/2000 17:37:18
On Thu, 8 Jun 2000, Greg A. Woods wrote:
[mv/ln/cp linked; okay it was those three...]
[mkdir/mknod not; i remember now it was that mkdir had to be setuid
because the _rename_ call hadn't been implemented yet, that was it!
so mkdir was, more or less (modulo GC and error checking)
char *cp;
mkdir(path);
link(path, cp = strspl(path, "/."));
link(getcwd(), cp = strspl(path, "/.."));
# (I think they were all separate in 4.2BSD too, but I've only the
# AT&T-free 4.3 distributions online at the moment.)
Yes, they were separate in BSD.
# Note how small those programs are too! ;-) And note that V7 had more
# error checking in mv.c than sysIII.
Hm.
# > In the above cases, it makes a LOT of sense to have the hooks
# > in a single binary, otherwise code is duplicated, space is wasted,
# > cache is lost (if you think cache isn't important, you have never had
# > to run a shell script which did a lot of chown/chgrp and other linked-
# > binary stuff on a BIG tree or a lot of files, and you had the script
# > handy but no time to write another one).
#
# There are at least two kinds of code sharing and I really do not like
# the one you describe above where everything is linked together. If I
# wanted that then I'd run some big monolithic system (like Multics! ;-).
I didn't say that EVERYTHING should be linked, but if the operations are
_similar enough_, they should be linked.
Would you, for example, have a separate program to handle symbolic links?
Would you write chown and chgrp to be separate programs?
I'd keep cp/mv/rm separate, obviously.
But there are places where code sharing makes sense.
# Shared libraries are bad enough but shared static binaries are horrid
# hacks suitable only for extreme situations like the boot floppy or
# embedded systems!
"Shared libraries are bad enough." And you say *I* resist progress?!?
I think shared libs are saving us from overrunning disks and memory.
--*greywolf;
--
BSD: The cure for the common OS.