Am Wed, 22 Mar 2017 19:00:42 +0000 (UTC) Warner Losh <i...@freebsd.org> schrieb:
> Author: imp > Date: Wed Mar 22 19:00:41 2017 > New Revision: 315733 > URL: https://svnweb.freebsd.org/changeset/base/315733 > > Log: > Impelemnt ttys onifexists in init. > > Implement a new init(8) option in /etc/ttys. If this option is present > on the entry in /etc/ttys, the entry will be active if and only if it > exists. If the name starts with a '/', it will be considered an > absolute path. If not, it will be a path relative to /dev. > > This allows one to turn off video console getty that aren't present > (while running a getty on them even when they aren't the system > console). Likewise with serial ports. > > It differs from onifconsole in only requiring the device exist rather > than it be listed as one of the system consoles. > > Sponsored by: Netflix > Differential Revision: https://reviews.freebsd.org/D10037 > > Modified: > head/include/ttyent.h > head/lib/libc/gen/getttyent.c > head/libexec/getty/ttys.5 > > Modified: head/include/ttyent.h > ============================================================================== > --- head/include/ttyent.h Wed Mar 22 18:45:13 2017 (r315732) > +++ head/include/ttyent.h Wed Mar 22 19:00:41 2017 (r315733) > @@ -38,6 +38,7 @@ > #define _TTYS_OFF "off" > #define _TTYS_ON "on" > #define _TTYS_ONIFCONSOLE "onifconsole" > +#define _TTYS_ONIFEXISTS "onifexists" > #define _TTYS_SECURE "secure" > #define _TTYS_INSECURE "insecure" > #define _TTYS_WINDOW "window" > > Modified: head/lib/libc/gen/getttyent.c > ============================================================================== > --- head/lib/libc/gen/getttyent.c Wed Mar 22 18:45:13 2017 > (r315732) > +++ head/lib/libc/gen/getttyent.c Wed Mar 22 19:00:41 2017 > (r315733) > @@ -97,6 +97,26 @@ done: > return (0); > } > > +static int > +auto_exists_status(const char *ty_name) > +{ > + struct stat sb; > + char *dev; > + int rv; > + > + rv = 0; > + if (*ty_name == '/') > + asprintf(&dev, "%s", ty_name); > + else > + asprintf(&dev, "/dev/%s", ty_name); > + if (dev == NULL) > + return 0; > + if (stat(dev, &sb) == 0) > + rv = TTY_ON; > + free(dev); > + return (rv); > +} > + > struct ttyent * > getttyent(void) > { > @@ -161,6 +181,8 @@ getttyent(void) > tty.ty_status |= TTY_ON; > else if (scmp(_TTYS_ONIFCONSOLE)) > tty.ty_status |= auto_tty_status(tty.ty_name); > + else if (scmp(_TTYS_ONIFEXISTS)) > + tty.ty_status |= auto_exists_status(tty.ty_name); > else if (scmp(_TTYS_SECURE)) > tty.ty_status |= TTY_SECURE; > else if (scmp(_TTYS_INSECURE)) > > Modified: head/libexec/getty/ttys.5 > ============================================================================== > --- head/libexec/getty/ttys.5 Wed Mar 22 18:45:13 2017 (r315732) > +++ head/libexec/getty/ttys.5 Wed Mar 22 19:00:41 2017 (r315733) > @@ -28,7 +28,7 @@ > .\" from: @(#)ttys.5 8.1 (Berkeley) 6/4/93 > .\" $FreeBSD$ > .\" " > -.Dd March 9, 2014 > +.Dd March 16, 2017 > .Dt TTYS 5 > .Os > .Sh NAME > @@ -105,6 +105,12 @@ should (should not) execute the command > ``onifconsole'' will cause this line to be enabled if and only if it is > an active kernel console device (it is equivalent to ``on'' in this > case). > +The flag ``onifexists'' will cause this line to be enabled if and only > +if the name exists. > +If the name starts with a ``/'', it will be considered an absolute > +path. > +Otherwise, it is considered a path relative to > +.Pa /dev . > The flag ``secure'' (if the console is enabled) allows users with a > uid of 0 to login on > this line. > _______________________________________________ > svn-src-head@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/svn-src-head > To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org" Breaks buildworld: [...] /usr/src/lib/libc/gen/getttyent.c:114:6: warning: implicit declaration of function 'stat' is invalid in C99 [-Wimplicit-function-declaration] if (stat(dev, &sb) == 0) ^ 1 warning and 1 error generated. *** [getttyent.pico] Error code 1 make[4]: stopped in /usr/src/lib/libc Regards, oh -- O. Hartmann Ich widerspreche der Nutzung oder Übermittlung meiner Daten für Werbezwecke oder für die Markt- oder Meinungsforschung (§ 28 Abs. 4 BDSG).
pgpQ5fRuN3e83.pgp
Description: OpenPGP digital signature