Re: Fix some w(1) warnings, remove bin/ps/fmt.c

2017-05-30 Thread Ted Unangst
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

2017-05-30 Thread Ingo Schwarze
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

2017-05-29 Thread Brian Callahan
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