svn commit: r315733 - in head: include lib/libc/gen libexec/getty

O. Hartmann ohartmann at walstatt.org
Wed Mar 22 19:08:57 UTC 2017


Am Wed, 22 Mar 2017 19:00:42 +0000 (UTC)
Warner Losh <imp at 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 at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at 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).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 313 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-all/attachments/20170322/ff4b8bd3/attachment.sig>


More information about the svn-src-all mailing list