From 1c0a80cbd0d0401a5d2cbc22d90fb3d8f1220917 Mon Sep 17 00:00:00 2001 From: schwarze Date: Tue, 30 May 2017 15:10:48 +0000 Subject: [PATCH] stop reacharound from w(1) to ps(1); no functional change; diff from bcallah@; OK tedu@ deraadt@ --- bin/ps/fmt.c | 82 ---------------------------------------------- usr.bin/w/Makefile | 6 ++-- usr.bin/w/extern.h | 4 +-- usr.bin/w/w.c | 48 ++++++++++++++++++++++++++- 4 files changed, 50 insertions(+), 90 deletions(-) delete mode 100644 bin/ps/fmt.c diff --git a/bin/ps/fmt.c b/bin/ps/fmt.c deleted file mode 100644 index 919109ad1a9..00000000000 --- a/bin/ps/fmt.c +++ /dev/null @@ -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); -} diff --git a/usr.bin/w/Makefile b/usr.bin/w/Makefile index ffe40d2fd81..ae6d3956561 100644 --- a/usr.bin/w/Makefile +++ b/usr.bin/w/Makefile @@ -1,12 +1,10 @@ -# $OpenBSD: Makefile,v 1.7 2014/07/16 20:06:27 okan Exp $ +# $OpenBSD: Makefile,v 1.8 2017/05/30 15:10:48 schwarze 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 diff --git a/usr.bin/w/extern.h b/usr.bin/w/extern.h index 4c114bce870..75f7339cde8 100644 --- a/usr.bin/w/extern.h +++ b/usr.bin/w/extern.h @@ -1,4 +1,4 @@ -/* $OpenBSD: extern.h,v 1.9 2015/03/15 00:41:28 millert Exp $ */ +/* $OpenBSD: extern.h,v 1.10 2017/05/30 15:10:48 schwarze Exp $ */ /*- * Copyright (c) 1993 @@ -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 *); diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index d8d736238ea..ddb050e0afa 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -1,4 +1,4 @@ -/* $OpenBSD: w.c,v 1.61 2016/03/19 00:11:49 deraadt Exp $ */ +/* $OpenBSD: w.c,v 1.62 2017/05/30 15:10:48 schwarze Exp $ */ /*- * Copyright (c) 1980, 1991, 1993, 1994 @@ -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 @@ -331,6 +333,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) { -- 2.20.1