Re: systat(1) hostname
Otto Moerbeek wrote: > On Thu, Oct 13, 2016 at 08:20:52AM +0200, Otto Moerbeek wrote: > > > On Thu, Oct 13, 2016 at 08:01:22AM +0200, Otto Moerbeek wrote: > > > > > On Thu, Oct 13, 2016 at 12:15:34AM -0400, Ted Unangst wrote: > > > > > > > Theo de Raadt wrote: > > > > > > On Wed, Oct 12, 2016 at 03:20:00PM +0200, Otto Moerbeek wrote: > > > > > > > simple diff to show the hostname on the second line. OK? > > > > > > > > > > > > OK bluhm@ > > > > > > > > > > > > > > > > > > > > BTW, batch mode doesn't function here as expected. Need to look > > > > > > > into that, > > > > > > > > > > I hoped this would look more like top(1) so I did it a different way. > > > > > This does not work quite right for long hostnames, but then.. neither > > > > > does top. > > > > > > > > this truncates hostname to always display time. > > > > > > If the line grows (because of multiple pages and/or PAUSED mode), the > > > line wraps now Also, we have hostname already available in a > > > buffer. > > > > > > -Otto > > > > > > > And squeeze the users/Load info a bit. that looks good > > -Otto > > Index: main.c > === > RCS file: /cvs/src/usr.bin/systat/main.c,v > retrieving revision 1.65 > diff -u -p -r1.65 main.c > --- main.c13 Oct 2016 05:46:20 - 1.65 > +++ main.c13 Oct 2016 09:05:40 - > @@ -52,7 +52,7 @@ > #include "engine.h" > #include "systat.h" > > -#define TIMEPOS 55 > +#define TIMEPOS (80 - 8 - 20 - 1) > > double dellave; > > @@ -67,7 +67,6 @@ int ut, hz, stathz; > charhostname[HOST_NAME_MAX+1]; > WINDOW *wnd; > int CMDLINE; > -char hostbuf[26]; > char timebuf[26]; > char uloadbuf[TIMEPOS]; > > @@ -107,11 +106,9 @@ print_header(void) > getloadavg(avenrun, sizeof(avenrun) / sizeof(avenrun[0])); > > snprintf(uloadbuf, sizeof(uloadbuf), > - "%5d usersLoad %.2f %.2f %.2f", > + "%4d users Load %.2f %.2f %.2f", > ucount(), avenrun[0], avenrun[1], avenrun[2]); > > - gethostname(hostbuf, sizeof hostbuf); > - > time(); > ctim = ctime(); > ctim[11+8] = '\0'; > @@ -127,7 +124,8 @@ print_header(void) > "%s %s", uloadbuf, > paused ? "PAUSED" : ""); > > - snprintf(header, sizeof(header), "%-45s%25.25s %s", tmpbuf, hostbuf, > timebuf); > + snprintf(header, sizeof(header), "%-*s %19.19s %s", TIMEPOS - 1, > + tmpbuf, hostname, timebuf); > > if (rawmode) > printf("\n\n%s\n", header); >
Re: systat(1) hostname
On Thu, Oct 13, 2016 at 08:20:52AM +0200, Otto Moerbeek wrote: > On Thu, Oct 13, 2016 at 08:01:22AM +0200, Otto Moerbeek wrote: > > > On Thu, Oct 13, 2016 at 12:15:34AM -0400, Ted Unangst wrote: > > > > > Theo de Raadt wrote: > > > > > On Wed, Oct 12, 2016 at 03:20:00PM +0200, Otto Moerbeek wrote: > > > > > > simple diff to show the hostname on the second line. OK? > > > > > > > > > > OK bluhm@ > > > > > > > > > > > > > > > > > BTW, batch mode doesn't function here as expected. Need to look > > > > > > into that, > > > > > > > > I hoped this would look more like top(1) so I did it a different way. > > > > This does not work quite right for long hostnames, but then.. neither > > > > does top. > > > > > > this truncates hostname to always display time. > > > > If the line grows (because of multiple pages and/or PAUSED mode), the > > line wraps now Also, we have hostname already available in a > > buffer. > > > > -Otto > > > And squeeze the users/Load info a bit. -Otto Index: main.c === RCS file: /cvs/src/usr.bin/systat/main.c,v retrieving revision 1.65 diff -u -p -r1.65 main.c --- main.c 13 Oct 2016 05:46:20 - 1.65 +++ main.c 13 Oct 2016 09:05:40 - @@ -52,7 +52,7 @@ #include "engine.h" #include "systat.h" -#define TIMEPOS 55 +#define TIMEPOS (80 - 8 - 20 - 1) double dellave; @@ -67,7 +67,6 @@ int ut, hz, stathz; charhostname[HOST_NAME_MAX+1]; WINDOW *wnd; intCMDLINE; -char hostbuf[26]; char timebuf[26]; char uloadbuf[TIMEPOS]; @@ -107,11 +106,9 @@ print_header(void) getloadavg(avenrun, sizeof(avenrun) / sizeof(avenrun[0])); snprintf(uloadbuf, sizeof(uloadbuf), - "%5d usersLoad %.2f %.2f %.2f", + "%4d users Load %.2f %.2f %.2f", ucount(), avenrun[0], avenrun[1], avenrun[2]); - gethostname(hostbuf, sizeof hostbuf); - time(); ctim = ctime(); ctim[11+8] = '\0'; @@ -127,7 +124,8 @@ print_header(void) "%s %s", uloadbuf, paused ? "PAUSED" : ""); - snprintf(header, sizeof(header), "%-45s%25.25s %s", tmpbuf, hostbuf, timebuf); + snprintf(header, sizeof(header), "%-*s %19.19s %s", TIMEPOS - 1, + tmpbuf, hostname, timebuf); if (rawmode) printf("\n\n%s\n", header);
Re: systat(1) hostname
On Thu, Oct 13, 2016 at 12:15:34AM -0400, Ted Unangst wrote: > Theo de Raadt wrote: > > > On Wed, Oct 12, 2016 at 03:20:00PM +0200, Otto Moerbeek wrote: > > > > simple diff to show the hostname on the second line. OK? > > > > > > OK bluhm@ > > > > > > > > > > > BTW, batch mode doesn't function here as expected. Need to look into > > > > that, > > > > I hoped this would look more like top(1) so I did it a different way. > > This does not work quite right for long hostnames, but then.. neither > > does top. > > this truncates hostname to always display time. If the line grows (because of multiple pages and/or PAUSED mode), the line wraps now Also, we have hostname already available in a buffer. -Otto Index: main.c === RCS file: /cvs/src/usr.bin/systat/main.c,v retrieving revision 1.64 diff -u -p -r1.64 main.c --- main.c 2 Jan 2016 15:02:05 - 1.64 +++ main.c 13 Oct 2016 05:59:32 - @@ -101,6 +101,8 @@ print_header(void) tb_start(); if (!paused) { + char *ctim; + getloadavg(avenrun, sizeof(avenrun) / sizeof(avenrun[0])); snprintf(uloadbuf, sizeof(uloadbuf), @@ -108,7 +110,9 @@ print_header(void) ucount(), avenrun[0], avenrun[1], avenrun[2]); time(); - strlcpy(timebuf, ctime(), sizeof(timebuf)); + ctim = ctime(); + ctim[11+8] = '\0'; + strlcpy(timebuf, ctim + 11, sizeof(timebuf)); } if (num_disp && (start > 1 || end != num_disp)) @@ -120,7 +124,8 @@ print_header(void) "%s %s", uloadbuf, paused ? "PAUSED" : ""); - snprintf(header, sizeof(header), "%-55s%s", tmpbuf, timebuf); + snprintf(header, sizeof(header), "%-44s %.15s %s", tmpbuf, hostname, + timebuf); if (rawmode) printf("\n\n%s\n", header);
Re: systat(1) hostname
Theo de Raadt wrote: > > On Wed, Oct 12, 2016 at 03:20:00PM +0200, Otto Moerbeek wrote: > > > simple diff to show the hostname on the second line. OK? > > > > OK bluhm@ > > > > > > > > BTW, batch mode doesn't function here as expected. Need to look into that, > > I hoped this would look more like top(1) so I did it a different way. > This does not work quite right for long hostnames, but then.. neither > does top. this truncates hostname to always display time. Index: main.c === RCS file: /cvs/src/usr.bin/systat/main.c,v retrieving revision 1.64 diff -u -p -r1.64 main.c --- main.c 2 Jan 2016 15:02:05 - 1.64 +++ main.c 13 Oct 2016 04:13:45 - @@ -67,6 +67,7 @@ int ut, hz, stathz; charhostname[HOST_NAME_MAX+1]; WINDOW *wnd; intCMDLINE; +char hostbuf[26]; char timebuf[26]; char uloadbuf[TIMEPOS]; @@ -101,14 +102,20 @@ print_header(void) tb_start(); if (!paused) { + char *ctim; + getloadavg(avenrun, sizeof(avenrun) / sizeof(avenrun[0])); snprintf(uloadbuf, sizeof(uloadbuf), "%5d usersLoad %.2f %.2f %.2f", ucount(), avenrun[0], avenrun[1], avenrun[2]); + gethostname(hostbuf, sizeof hostbuf); + time(); - strlcpy(timebuf, ctime(), sizeof(timebuf)); + ctim = ctime(); + ctim[11+8] = '\0'; + strlcpy(timebuf, ctim + 11, sizeof(timebuf)); } if (num_disp && (start > 1 || end != num_disp)) @@ -120,7 +127,7 @@ print_header(void) "%s %s", uloadbuf, paused ? "PAUSED" : ""); - snprintf(header, sizeof(header), "%-55s%s", tmpbuf, timebuf); + snprintf(header, sizeof(header), "%-45s%s %s", tmpbuf, hostbuf, timebuf); if (rawmode) printf("\n\n%s\n", header);
Re: systat(1) hostname
On Wed, Oct 12, 2016 at 03:20:00PM +0200, Otto Moerbeek wrote: > simple diff to show the hostname on the second line. OK? OK bluhm@ > > BTW, batch mode doesn't function here as expected. Need to look into that, > > -Otto > > Index: main.c > === > RCS file: /cvs/src/usr.bin/systat/main.c,v > retrieving revision 1.64 > diff -u -p -r1.64 main.c > --- main.c2 Jan 2016 15:02:05 - 1.64 > +++ main.c8 Oct 2016 13:34:07 - > @@ -124,8 +124,10 @@ print_header(void) > > if (rawmode) > printf("\n\n%s\n", header); > - else > + else { > mvprintw(0, 0, "%s", header); > + mvprintw(1, 1, "%s", hostname); > + } > > return (1); > }