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-h...@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).

Attachment: pgpODSx5rYylL.pgp
Description: OpenPGP digital signature

Reply via email to