On Mon, Mar 18, 2019 at 06:30:15PM +0100, Frederic Cambus wrote:
> On Mon, Jan 07, 2019 at 04:27:46PM -0700, Theo de Raadt wrote:
> > Ted Unangst <t...@tedunangst.com> wrote:
> > 
> > > Artturi Alm wrote:
> > > > display.width=1920
> > > > display.height=1200
> > > > display.depth=32
> > > > display.emulations=vt100
> > > > display.col_x_row=120x37
> > > > display.font_wxh=16x32
> > > 
> > > now that we've all had a chance to weigh in on the font, why are you 
> > > adding
> > > this weird x format? speaking of ugly... it should print columns and rows 
> > > just
> > > like width and height.
> > 
> > it is a waste of kernel and userland code since another mechanism already 
> > exists
> > 
> > use stty -a
> 
> While I agree it doesn't make sense to add variables for showing
> the number of columns and rows, as the information can be obtained
> using ssty -a, displaying fontwidth and fontheight values would be
> useful. This allows users to know the size of the currently loaded
> font.
> 
> Thinking forward, this would also allow to easily get those values
> in shell scripts, which can be leveraged if we wanted to only embed
> 7-bit ASCII characters in the kernel and load the full font later on,
> or if someone wanted to continue the UTF-8 work [1] started by miod@.
> 
> Revised diff below iterating on what Artturi previously sent, and
> a snippet of wsconsctl output with the diff applied:
> 
>  display.width=1600
>  display.height=900
>  display.depth=32
> +display.fontwidth=12
> +display.fontheight=24
>  display.emulations=vt100
>  display.screentypes=std
>  display.focus=4
> 
> [1] https://undeadly.org/cgi?action=article&sid=20131023125815
> 
> Comments? OK?
> 

While my opinion is irrelevant, it does look good to me, thanks :]

-Artturi

> Index: sbin/wsconsctl/display.c
> ===================================================================
> RCS file: /cvs/src/sbin/wsconsctl/display.c,v
> retrieving revision 1.20
> diff -u -p -r1.20 display.c
> --- sbin/wsconsctl/display.c  8 May 2015 19:12:51 -0000       1.20
> +++ sbin/wsconsctl/display.c  18 Mar 2019 17:11:59 -0000
> @@ -41,7 +41,7 @@
>  #include "wsconsctl.h"
>  
>  u_int dpytype;
> -u_int width, height, depth;
> +u_int width, height, depth, fontwidth, fontheight;
>  int focus;
>  struct field_pc brightness, contrast, backlight;
>  int burnon, burnoff, vblank, kbdact, msact, outact;
> @@ -54,6 +54,8 @@ struct field display_field_tab[] = {
>      { "width",               &width,         FMT_UINT,       FLG_RDONLY },
>      { "height",              &height,        FMT_UINT,       FLG_RDONLY },
>      { "depth",               &depth,         FMT_UINT,       FLG_RDONLY },
> +    { "fontwidth",   &fontwidth,     FMT_UINT,       FLG_RDONLY },
> +    { "fontheight",  &fontheight,    FMT_UINT,       FLG_RDONLY },
>      { "emulations",  &emuls,         FMT_EMUL,       FLG_RDONLY },
>      { "screentypes", &screens,       FMT_SCREEN,     FLG_RDONLY },
>      { "focus",               &focus,         FMT_INT,        FLG_NORDBACK },
> @@ -84,7 +86,7 @@ display_get_values(int fd)
>       const char *cmd_str;
>       void *ptr;
>       unsigned long cmd;
> -     int bon = 0, fbon = 0;
> +     int bon = 0, fbon = 0, son = 0;
>  
>       focus = gscr.idx = -1;
>       for (pf = display_field_tab; pf->name; pf++) {
> @@ -102,6 +104,10 @@ display_get_values(int fd)
>               } else if (ptr == &emuls) {
>                       fillioctl(WSDISPLAYIO_GETEMULTYPE);
>                       emuls.idx=0;
> +             } else if (ptr == &fontwidth || ptr == &fontheight) {
> +                     fillioctl(WSDISPLAYIO_GETSCREENTYPE);
> +                     ptr = &screens;
> +                     screens.idx = 0;
>               } else if (ptr == &screens) {
>                       fillioctl(WSDISPLAYIO_GETSCREENTYPE);
>                       screens.idx=0;
> @@ -168,6 +174,11 @@ display_get_values(int fd)
>                       emuls.idx=fd;
>               } else if (ptr == &screens) {
>                       screens.idx=fd;
> +                     if (!son) {
> +                             fontwidth = screens.fontwidth;
> +                             fontheight = screens.fontheight;
> +                     }
> +                     son++;
>               } else if (ptr == &param) {
>                       struct field_pc *pc = pf->valp;
>  

Reply via email to