Re: systat(1) hostname

2016-10-13 Thread Ted Unangst
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

2016-10-13 Thread Otto Moerbeek
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

2016-10-13 Thread Otto Moerbeek
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

2016-10-12 Thread Ted Unangst
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

2016-10-12 Thread Alexander Bluhm
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);
>  }