Hi, Brian Callahan wrote on Mon, May 29, 2017 at 04:47:42PM -0400:
> [...] functions fmt_putc and fmt_puts. > w(1) is doing a reacharound to ps(1) for these functions. > [...] > 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. I like that. Less reacharound is good. Any OK? It survived "make build" and "make release". Yours, Ingo ((Boy, clang does suffer a bit from vanity, judging from the time it spends in front of the mirror watching itself build, now doesn't it?)) > 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)