I personally think -E is enough, I don't know why you would need to
configure this per-host.


On Sun, Mar 24, 2019 at 04:18:58AM +0200, Artturi Alm wrote:
> Hi,
> 
> for completeness, would anything like the diff below be acceptable?
> 
> I might begin using /etc/remote soon, and I found the old remote.5[0]
> to have had this, and also described as such in remote(5) on
> docs.oracle.com, so i chose to reuse "es".
> 
> -Artturi
> 
> [0]: http://man.openbsd.org/OpenBSD-5.7/remote.5
> 
> 
> diff --git a/share/man/man5/remote.5 b/share/man/man5/remote.5
> index 2a50ca97d8a..b0d046a266a 100644
> --- a/share/man/man5/remote.5
> +++ b/share/man/man5/remote.5
> @@ -88,6 +88,15 @@ If this file refers to a terminal line,
>  .Xr cu 1
>  attempts to perform an exclusive open on the device to ensure only
>  one user at a time has access to the port.
> +.It Sy \&es
> +(str)
> +The escape character for
> +.Xr cu 1 .
> +This should be a single character, or
> +.Ql ^
> +followed by a letter.
> +The default is
> +.Ql ~ .
>  .El
>  .Sh FILES
>  .Bl -tag -width /etc/remote -compact
> diff --git a/usr.bin/cu/cu.1 b/usr.bin/cu/cu.1
> index 5daab4bc074..61c723a45e4 100644
> --- a/usr.bin/cu/cu.1
> +++ b/usr.bin/cu/cu.1
> @@ -105,6 +105,7 @@ uses the
>  .Xr remote 5
>  database to retrieve the
>  .Sy dc Pq directly connected ,
> +.Sy es Pq escape character ,
>  .Sy dv Pq device
>  and
>  .Sy br Pq baud rate
> diff --git a/usr.bin/cu/cu.c b/usr.bin/cu/cu.c
> index 697f72d3418..cba4ff1601d 100644
> --- a/usr.bin/cu/cu.c
> +++ b/usr.bin/cu/cu.c
> @@ -41,7 +41,7 @@ FILE                        *record_file;
>  struct termios                saved_tio;
>  struct bufferevent   *input_ev;
>  struct bufferevent   *output_ev;
> -int                   escape_char = '~';
> +int                   escape_char = -1;
>  int                   is_direct = -1;
>  int                   restricted = 0;
>  const char           *line_path = NULL;
> @@ -159,6 +159,8 @@ main(int argc, char **argv)
>               }
>       }
>  
> +     if (escape_char == -1)
> +             escape_char = '~';
>       if (line_path == NULL)
>               line_path = "/dev/cua00";
>       if (line_speed == -1)
> @@ -402,6 +404,25 @@ try_remote(const char *host, const char *path, const 
> char *entry)
>       if (line_path == NULL && cgetstr(cp, "dv", &s) >= 0)
>               line_path = s;
>  
> +     s = NULL;
> +     if (escape_char == -1 && cgetustr(cp, "es", &s) >= 0) {
> +             switch (strnlen(s, 3)) {
> +             case 1:
> +                     escape_char = (u_char)s[0];
> +                     break;
> +             case 2:
> +                     if (s[0] == '^' &&
> +                         (u_char)s[1] >= 64 && (u_char)s[1] < 128) {
> +                             escape_char = (u_char)s[1] & 31;
> +                             break;
> +                     }
> +                     /* FALLTHROUGH */
> +             default:
> +                     cu_warnx("invalid escape character: %s", s);
> +             }
> +             free(s);
> +     }
> +
>       if (line_speed == -1 && cgetnum(cp, "br", &l) >= 0) {
>               if (l < 0 || l > INT_MAX)
>                       cu_errx(1, "speed out of range");

Reply via email to