diff options
Diffstat (limited to 'usr.bin/w/w.c')
| -rw-r--r-- | usr.bin/w/w.c | 33 | 
1 files changed, 25 insertions, 8 deletions
| diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index ac1df96077d3..502bf5a412b9 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -473,7 +473,7 @@ main(int argc, char *argv[])  static void  pr_header(time_t *nowp, int nusers)  { -	char buf[64]; +	char buf[64], *s, *e;  	struct sbuf upbuf;  	double avenrun[3];  	struct timespec tp; @@ -484,8 +484,15 @@ pr_header(time_t *nowp, int nusers)  	 * Print time of day.  	 */  	if (strftime(buf, sizeof(buf), -	    use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) -		xo_emit("{:time-of-day/%s} ", buf); +	    use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) { +		s = buf; +		if (xo_get_style(NULL) != XO_STYLE_TEXT) { +			/* trim leading whitespace */ +			while (isspace((unsigned char)*s)) +				s++; +		} +		xo_emit("{:time-of-day/%s} ", s); +	}  	/*  	 * Print how long system has been up.  	 */ @@ -516,21 +523,31 @@ pr_header(time_t *nowp, int nusers)  		if (days > 0)  			sbuf_printf(&upbuf, " %ld day%s,", -				days, days > 1 ? "s" : ""); +			    days, days > 1 ? "s" : "");  		if (hrs > 0 && mins > 0)  			sbuf_printf(&upbuf, " %2ld:%02ld,", hrs, mins);  		else if (hrs > 0)  			sbuf_printf(&upbuf, " %ld hr%s,", -				hrs, hrs > 1 ? "s" : ""); +			    hrs, hrs > 1 ? "s" : "");  		else if (mins > 0)  			sbuf_printf(&upbuf, " %ld min%s,", -				mins, mins > 1 ? "s" : ""); +			    mins, mins > 1 ? "s" : "");  		else  			sbuf_printf(&upbuf, " %ld sec%s,", -				secs, secs > 1 ? "s" : ""); +			    secs, secs > 1 ? "s" : "");  		if (sbuf_finish(&upbuf) != 0)  			xo_err(1, "Could not generate output"); -		xo_emit("{:uptime-human/%s}", sbuf_data(&upbuf)); +		s = sbuf_data(&upbuf); +		if (xo_get_style(NULL) != XO_STYLE_TEXT) { +			e = s + sbuf_len(&upbuf) - 1; +			/* trim leading whitespace */ +			while (isspace((unsigned char)*s)) +				s++; +			/* trim trailing comma */ +			if (e > s && *e == ',') +				*e = '\0'; +		} +		xo_emit("{:uptime-human/%s}", s);  		sbuf_delete(&upbuf);  	} | 
