Hi tech --
While building w(1) with WARNINGS=yes, clang complained that there
were missing prototypes for the functions fmt_putc and fmt_puts.
w(1) is doing a reacharound to ps(1) for these functions. And
while putting the prototypes in bin/ps/extern.h silenced the
warnings, that seemed strange.
A grep of the tree shows that the only place these two functions
are used is in usr.bin/w/w.c so I put them in there and made them
static. This lets us finally remove bin/ps/fmt.c since ps(1) was
upgraded by Ingo to be utf8.
~Brian
Index: bin/ps/fmt.c
===================================================================
RCS file: bin/ps/fmt.c
diff -N bin/ps/fmt.c
--- bin/ps/fmt.c 10 Jan 2016 21:08:01 -0000 1.15
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,82 +0,0 @@
-/* $OpenBSD: fmt.c,v 1.15 2016/01/10 21:08:01 schwarze Exp $ */
-
-/*-
- * Copyright (c) 1990, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <sys/resource.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <vis.h>
-#include "ps.h"
-
-void
-fmt_puts(const char *s, int *leftp)
-{
- static char *v = NULL;
- static size_t maxlen = 0;
- size_t len;
-
- if (*leftp == 0)
- return;
- len = strlen(s) * 4 + 1;
- if (len > maxlen) {
- free(v);
- maxlen = 0;
- if (len < getpagesize())
- len = getpagesize();
- v = malloc(len);
- if (v == NULL)
- return;
- maxlen = len;
- }
- strvis(v, s, VIS_TAB | VIS_NL | VIS_CSTYLE);
- if (*leftp != -1) {
- len = strlen(v);
- if (len > *leftp) {
- v[*leftp] = '\0';
- *leftp = 0;
- } else
- *leftp -= len;
- }
- printf("%s", v);
-}
-
-void
-fmt_putc(int c, int *leftp)
-{
-
- if (*leftp == 0)
- return;
- if (*leftp != -1)
- *leftp -= 1;
- putchar(c);
-}
Index: usr.bin/w/Makefile
===================================================================
RCS file: /cvs/src/usr.bin/w/Makefile,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 Makefile
--- usr.bin/w/Makefile 16 Jul 2014 20:06:27 -0000 1.7
+++ usr.bin/w/Makefile 29 May 2017 20:33:35 -0000
@@ -1,12 +1,10 @@
# $OpenBSD: Makefile,v 1.7 2014/07/16 20:06:27 okan Exp $
PROG= w
-SRCS= fmt.c pr_time.c proc_compare.c w.c
+SRCS= pr_time.c proc_compare.c w.c
MAN= w.1 uptime.1
DPADD= ${LIBKVM}
LDADD= -lkvm
LINKS= ${BINDIR}/w ${BINDIR}/uptime
-
-.PATH: ${.CURDIR}/../../bin/ps
.include <bsd.prog.mk>
Index: usr.bin/w/extern.h
===================================================================
RCS file: /cvs/src/usr.bin/w/extern.h,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 extern.h
--- usr.bin/w/extern.h 15 Mar 2015 00:41:28 -0000 1.9
+++ usr.bin/w/extern.h 29 May 2017 20:33:35 -0000
@@ -32,8 +32,6 @@
*/
struct kinfo_proc;
-void fmt_puts(const char *, int *);
-void fmt_putc(int, int *);
void pr_attime(time_t *, time_t *);
void pr_idle(time_t);
int proc_compare(const struct kinfo_proc *, const struct kinfo_proc *);
Index: usr.bin/w/w.c
===================================================================
RCS file: /cvs/src/usr.bin/w/w.c,v
retrieving revision 1.61
diff -u -p -u -p -r1.61 w.c
--- usr.bin/w/w.c 19 Mar 2016 00:11:49 -0000 1.61
+++ usr.bin/w/w.c 29 May 2017 20:33:35 -0000
@@ -93,6 +93,8 @@ struct entry {
struct kinfo_proc *kp; /* `most interesting' proc */
} *ep, *ehead = NULL, **nextp = &ehead;
+static void fmt_putc(int, int *);
+static void fmt_puts(const char *, int *);
static void pr_args(struct kinfo_proc *);
static void pr_header(time_t *, int);
static struct stat
@@ -330,6 +332,50 @@ main(int argc, char *argv[])
}
exit(0);
}
+
+static void
+fmt_putc(int c, int *leftp)
+{
+
+ if (*leftp == 0)
+ return;
+ if (*leftp != -1)
+ *leftp -= 1;
+ putchar(c);
+}
+
+static void
+fmt_puts(const char *s, int *leftp)
+{
+ static char *v = NULL;
+ static size_t maxlen = 0;
+ size_t len;
+
+ if (*leftp == 0)
+ return;
+ len = strlen(s) * 4 + 1;
+ if (len > maxlen) {
+ free(v);
+ maxlen = 0;
+ if (len < getpagesize())
+ len = getpagesize();
+ v = malloc(len);
+ if (v == NULL)
+ return;
+ maxlen = len;
+ }
+ strvis(v, s, VIS_TAB | VIS_NL | VIS_CSTYLE);
+ if (*leftp != -1) {
+ len = strlen(v);
+ if (len > *leftp) {
+ v[*leftp] = '\0';
+ *leftp = 0;
+ } else
+ *leftp -= len;
+ }
+ printf("%s", v);
+}
+
static void
pr_args(struct kinfo_proc *kp)