Re: Fix some w(1) warnings, remove bin/ps/fmt.c
Ingo Schwarze wrote: > 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? yes ok
Re: Fix some w(1) warnings, remove bin/ps/fmt.c
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 - 1.15 > +++ /dev/null 1 Jan 1970 00:00:00 - > @@ -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 > -#include > -#include > -#include > -#include > -#include > -#include > -#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/Makefile16 Jul 2014 20:06:27 - 1.7 > +++ usr.bin/w/Makefile29 May 2017 20:33:35 - > @@ -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 > 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.h15 Mar 2015 00:41:28 - 1.9 > +++ usr.bin/w/extern.h29 May 2017 20:33:35 - > @@ -32,8 +32,6 @@ > */ > > struct kinfo_proc; > -void fmt_puts(const char *, int *); > -void fmt_putc(int, int *); >
Fix some w(1) warnings, remove bin/ps/fmt.c
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.c10 Jan 2016 21:08:01 - 1.15 +++ /dev/null 1 Jan 1970 00:00:00 - @@ -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 -#include -#include -#include -#include -#include -#include -#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 - 1.7 +++ usr.bin/w/Makefile 29 May 2017 20:33:35 - @@ -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 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 - 1.9 +++ usr.bin/w/extern.h 29 May 2017 20:33:35 - @@ -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); intproc_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 -0