Date: Tue, 6 May 2008 00:13:16 -0700 From: "Peter Wemm" <peter@wemm.org> To: ticso@cicely.de Cc: src-committers@freebsd.org, kmacy@freebsd.org, jhb@freebsd.org, cvs-src@freebsd.org, cvs-all@freebsd.org, phk@phk.freebsd.dk, cperciva@freebsd.org, "M. Warner Losh" <imp@bsdimp.com> Subject: Re: cvs commit: src/etc/etc.mips ttys Message-ID: <e7db6d980805060013m54f3fe77i60336688f8f987b4@mail.gmail.com> In-Reply-To: <20080505210616.GD48099@cicely12.cicely.de> References: <5978.1209974842@critter.freebsd.dk> <200805050949.27063.jhb@freebsd.org> <20080505.080823.2086232061.imp@bsdimp.com> <20080505210616.GD48099@cicely12.cicely.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, May 5, 2008 at 2:06 PM, Bernd Walter <ticso@cicely12.cicely.de> wrote: > > On Mon, May 05, 2008 at 08:08:23AM -0600, M. Warner Losh wrote: > > In message: <200805050949.27063.jhb@freebsd.org> > > John Baldwin <jhb@FreeBSD.org> writes: > > : On Monday 05 May 2008 04:07:22 am Poul-Henning Kamp wrote: > > : > In message <481EB19B.3000201@freebsd.org>, Colin Percival writes: > > : > >Poul-Henning Kamp wrote: > > : > >> In message <200805050535.m455ZmI1030493@repoman.freebsd.org>, Warner > > : > >> Losh write > > : > >> > > : > >> s: > > : > >>> Added files: > > : > >>> etc/etc.mips ttys > > : > >>> Log: > > : > >>> Mips ttys file. Copied from i386 version with removal of the vga > > : > >>> entries. > > : > >> > > : > >> We should really replace this file with a script that generates it > > : > >> from a set of sensible parameters at build-time. > > : > > > > : > >Yes please -- kmacy might have worked around this, but at one point this > > : > >was the only non-kernel file which needed to be different for Xen builds. > > : > > > : > And for anyone looking at this, there is also a task to eliminate the > > : > pty devices in this file, the reason why they are there has to do with > > : > the introduction of the really weird notion of "remote logins" back in > > : > the early 1980'ies, we really could do better. > > : > > : Err, I thought it was because utmp still uses the line index in /etc/ttys so > > : ptys have to be listed in /etc/ttys to get an index. I haven't looked at > > : utmpx, but it might be nice if we had a utmp format that 1) didn't limit > > : usernames to 16 chars, and 2) stored the name of the tty rather than a dev_t. > > : 2) is what I think has broken 'w -M /var/crash/vmcore.X' since 5.x. > > 3) don't limit hostnames to 16 chars. > These days it is even to short for logging IPs as fallback, since inet6 > IPs can be longer than the field. > I've often seen truncated inet6 IPs. Uh oh. This thread again.. Oh well, at least it only happens every few years instead of every 6 months. I'm a SVR4.0 refugee, which had a pair of files.. utmp and utmpx. That caused an untold amount of pain and suffering. Some programs would write to utmp in the old format, so the library code had magic fixup code that would detect utmp getting spammed and would 'expand' it by copying over the records to utmpx format. The things that would go wrong were almost endless. And.. they had a library API to try and encapsulate it all with. We don't even have that - we have "int ttyslot(char *ttyname)" to tell us the record number to lseek() to for utmp. ie: every single application that can update utmp has the size of the utmp records compiled in, and it has the knowledge that the /etc/ttys file (via ttyslot()) defines the seek index. Every single xterm-like program out there (and there are a lot) has this knowledge compiled in, along with things like screen, snmp agents, and so on. Based on my previous experience with trying to make a backwards compatible system and the misery it causes, and that we have the benefit of hindsight, I'd suggest that if we fix it, we make a clean break and be done with it. If we wanted to do it right, I'd be suggesting that we make a clean break and keep the information in one place, and in a file format that isn't sensitive to fixed record sizes. ie: utmp.db (like pwd.db and friends). Wrap it in a SuS/unix/linux/svr4/-ish {get|put}utxxx() set of APIs and kill off the fixed record size utmp file. We can get creative with wrappers or whatever, but we can probably provide a variable length record API as well. SuS/XSI/etc version: http://www.opengroup.org/onlinepubs/009695399/functions/endutxent.html Linux version (utmpx versions are aliases for regular utmp): http://linux.die.net/man/3/getutent logwtmp() and friends could do wtmp.db. Note that I'm not talking about run levels or anything like that. Just suggesting that if we're going to change the file format, then we make a clean break and use an open ended flexible format. -- Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com "All of this is for nothing if we don't go to the stars" - JMS/B5 "If Java had true garbage collection, most programs would delete themselves upon execution." -- Robert Sewell
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?e7db6d980805060013m54f3fe77i60336688f8f987b4>