Re: LibUtil patch
Chuck Yerkes <[email protected]> Thu, 1 Aug 2002 21:24:31 -0700
| Newsgroups | gmane.os.openbsd.embedded |
|---|---|
| Message-ID | <[email protected]> |
This patch will not hurt your system, it just makes the pty's live in /dev/term/. If you try it, keep a backup kernel :) It's a pretty minor and obvious patch-let. I just tested it out on a Sun, no need for micro builds. There is other work to be done. I offer this as a starting point cause I've been sitting on it without really having time to look at more (job and all). Feel free to run with it. Quoting Chuck Yerkes ([email protected]): > Quoting Michael ([email protected]): > > On Thu, Aug 01, 2002 at 17:14:42, Steve Pearlmutter said... > > > With several of us doing this sort of thing, it's unfortunate we don't > > > have a place to combine our changes. I know that Chuck has some > > > library changes etc. that would be most likely be useful to > > > everybody. > > Couple things, attached is the patch to libutil I did. > It's not perfect, I haven't shared it because it needs more. > But it works. > > It COULD make sure /dev/term exists before it tries to use > devices in there. You must create /dev/term and create the > devices for terminals. (cd /dev/term;sh /dev/MAKEDEV ptyp) > > Now non-root users can log in, the chown/chmod that login > wants takes care of it. > > w and tty and a couple other commands complain. utmp doesn't > have enough space to store /dev/term/ptyp1, so it truncates. > > The RIGHT answer is to use devfs. It's in FreeBSD 5.x. > > > > Well we could certainly start a project on sourceforge or something. I'd > > offer space, but I don't have the upstream bandwidth to really do it. > > > > I've been considering striping down an OpenBSD install myself lately. > > > STRIPPING: > Right answer (to me) make the OS able to understand subsystems. > No separate project, just "make install PKG=MINIMAL" (or something). > > I've played with a simple variable in each Makefile, I've played > with an external "database" file (text) that gets checked for > each dir you're in, etc. > > I'd love to say: > make PARTS="base print compile" and end up with the > effect of a really big SKIPDIR. > > Easier if I had an inverse SKIPDIR, don't skip what's in > the list, build ONLY what's in the list. > > The goal was to be able to do it separately from the > fairly grumpy OpenBSD group until it was a done deal. > > As to "support": > Whoa to anyone who doesn't use GENERIC and install everything. > > > The NetBSD group is interested in embedded systems more, > and I'm moving towards that. Efforts are worthwhile there > and the setup is friendly to these sorts of things. > > > For stripped builds, the best answer is to have the OS > innately be CAPABLE of only installing certain parts. > The NetBSD build system is a little more advanced; NetBSD > is portable (I'd love to use more than x86); and I don't > expect to lose key parts suddenly (ipfilter - I have a > box frozen in time just before they pulled that out and > have to upgrade around that problem). > > Finally, the NetBSD group, as a whole, is less sociopathic > (I just got a note from an OpenBSD person generically, > yet harshly, threatening my girlfriend whom I used as an > example of a system admin being run around because of the > OpenSSH trojan and a lack of information; I don't need > that in my life). I'm tired of the brownshirts that > surround and worship Theo (no, not the developers, the > hangers on). > > And it's arguably as secure as OpenBSD. I started with OpenBSD > cause its canadian roots meant strong crypto. Times are > different now. > > chuck > Index: pty.c > =================================================================== > RCS file: /cvs/src/lib/libutil/pty.c,v > retrieving revision 1.9 > diff -u -r1.9 pty.c > --- pty.c 9 Jun 2002 22:18:43 -0000 1.9 > +++ pty.c 2 Aug 2002 01:15:55 -0000 > @@ -52,6 +52,10 @@ > #include "util.h" > > #define TTY_LETTERS "pqrstuvwxyzPQRST" > +//#define DEV_PRELEN 7 > +//#define DEV_PREFIX "/dev/ptyXX" > +#define DEV_PRELEN 12 > +#define DEV_PREFIX "/dev/term/ptyXX" > > int > openpty(amaster, aslave, name, termp, winp) > @@ -60,7 +64,7 @@ > struct termios *termp; > struct winsize *winp; > { > - char line[] = "/dev/ptyXX"; > + char line[] = DEV_PREFIX; > register const char *cp1, *cp2; > register int master, slave, ttygid; > struct group *gr; > @@ -71,15 +75,15 @@ > ttygid = -1; > > for (cp1 = TTY_LETTERS; *cp1; cp1++) { > - line[8] = *cp1; > - for (cp2 = "0123456789abcdef"; *cp2; cp2++) { > - line[9] = *cp2; > - line[5] = 'p'; > + line[DEV_PRELEN + 1] = *cp1; > + for (cp2 = "56789abcdef"; *cp2; cp2++) { > + line[DEV_PRELEN + 2] = *cp2; > + line[DEV_PRELEN - 2] = 'p'; > if ((master = open(line, O_RDWR, 0)) == -1) { > if (errno == ENOENT) > return (-1); /* out of ptys */ > } else { > - line[5] = 't'; > + line[DEV_PRELEN - 2] = 't'; > (void) chown(line, getuid(), ttygid); > (void) chmod(line, S_IRUSR|S_IWUSR|S_IWGRP); > (void) revoke(line);