Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/bin/ps Fix the column width calculation for the lstart colum...
details: https://anonhg.NetBSD.org/src/rev/8df5226e0822
branches: trunk
changeset: 961011:8df5226e0822
user: simonb <simonb%NetBSD.org@localhost>
date: Tue Apr 06 05:13:24 2021 +0000
description:
Fix the column width calculation for the lstart column if an empty
column header is specified.
Fixes bug pointed out by Ted Spradley in
https://mail-index.netbsd.org/netbsd-users/2021/04/05/msg026808.html .
diffstat:
bin/ps/print.c | 43 +++++++++++++++++++++++++++----------------
1 files changed, 27 insertions(+), 16 deletions(-)
diffs (66 lines):
diff -r da4714a53789 -r 8df5226e0822 bin/ps/print.c
--- a/bin/ps/print.c Tue Apr 06 04:49:41 2021 +0000
+++ b/bin/ps/print.c Tue Apr 06 05:13:24 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: print.c,v 1.132 2019/06/19 21:25:50 kamil Exp $ */
+/* $NetBSD: print.c,v 1.133 2021/04/06 05:13:24 simonb Exp $ */
/*
* Copyright (c) 2000, 2007 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
#if 0
static char sccsid[] = "@(#)print.c 8.6 (Berkeley) 4/16/94";
#else
-__RCSID("$NetBSD: print.c,v 1.132 2019/06/19 21:25:50 kamil Exp $");
+__RCSID("$NetBSD: print.c,v 1.133 2021/04/06 05:13:24 simonb Exp $");
#endif
#endif /* not lint */
@@ -815,22 +815,33 @@
char buf[100];
v = ve->var;
- if (!k->p_uvalid) {
- /*
- * Minimum width is less than header - we don't
- * need to check it every time.
- */
- if (mode == PRINTMODE)
- (void)printf("%*s", v->width, "-");
- return;
- }
startt = k->p_ustart_sec;
- /* assume all times are the same length */
- if (mode != WIDTHMODE || v->width == 0) {
- (void)strftime(buf, sizeof(buf) -1, "%c",
- localtime(&startt));
- strprintorsetwidth(v, buf, mode);
+ if (mode == WIDTHMODE) {
+ /*
+ * We only need to set the width once, as we assume
+ * that all times are the same length. We do need to
+ * check against the header length as well, as "no
+ * header" mode for this variable will set the field
+ * width to the length of the header anyway (ref: the
+ * P1003.1-2004 comment in findvar()).
+ *
+ * XXX: The hardcoded "STARTED" string. Better or
+ * worse than a "<= 7" or some other arbitary number?
+ */
+ if (v->width <= (int)strlen("STARTED")) {
+ (void)strftime(buf, sizeof(buf) -1, "%c",
+ localtime(&startt));
+ strprintorsetwidth(v, buf, mode);
+ }
+ } else {
+ if (!k->p_uvalid) {
+ (void)printf("%*s", v->width, "-");
+ } else {
+ (void)strftime(buf, sizeof(buf) -1, "%c",
+ localtime(&startt));
+ strprintorsetwidth(v, buf, mode);
+ }
}
}
Home |
Main Index |
Thread Index |
Old Index