fmt.c contains two functions that are only called by command() in
print.c. One of them is tiny, too. It seems simpler to have them in
print.c as statics.
Index: Makefile
===================================================================
RCS file: /cvs/src/bin/ps/Makefile,v
retrieving revision 1.9
diff -u -p -r1.9 Makefile
--- Makefile 16 Jul 2014 19:57:34 -0000 1.9
+++ Makefile 17 Sep 2015 02:24:50 -0000
@@ -1,7 +1,7 @@
# $OpenBSD: Makefile,v 1.9 2014/07/16 19:57:34 okan Exp $
PROG= ps
-SRCS= fmt.c keyword.c nlist.c print.c ps.c
+SRCS= keyword.c nlist.c print.c ps.c
DPADD= ${LIBM} ${LIBKVM}
LDADD= -lm -lkvm
Index: extern.h
===================================================================
RCS file: /cvs/src/bin/ps/extern.h,v
retrieving revision 1.17
diff -u -p -r1.17 extern.h
--- extern.h 29 Jun 2015 15:03:33 -0000 1.17
+++ extern.h 17 Sep 2015 02:24:50 -0000
@@ -48,8 +48,6 @@ void command(const struct kinfo_proc *,
void cputime(const struct kinfo_proc *, VARENT *);
int donlist(void);
void emulname(const struct kinfo_proc *, VARENT *);
-void fmt_puts(const char *, int *);
-void fmt_putc(int, int *);
double getpcpu(const struct kinfo_proc *);
double getpmem(const struct kinfo_proc *);
void gname(const struct kinfo_proc *, VARENT *);
Index: fmt.c
===================================================================
RCS file: fmt.c
diff -N fmt.c
--- fmt.c 5 Jan 2015 13:14:24 -0000 1.13
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,82 +0,0 @@
-/* $OpenBSD: fmt.c,v 1.13 2015/01/05 13:14:24 tedu 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: print.c
===================================================================
RCS file: /cvs/src/bin/ps/print.c,v
retrieving revision 1.62
diff -u -p -r1.62 print.c
--- print.c 19 Jul 2015 19:26:00 -0000 1.62
+++ print.c 17 Sep 2015 02:24:50 -0000
@@ -49,6 +49,7 @@
#include <unistd.h>
#include <limits.h>
#include <pwd.h>
+#include <vis.h>
#include "ps.h"
@@ -59,6 +60,49 @@ static char *cmdpart(char *);
#define min(a,b) ((a) < (b) ? (a) : (b))
+static void
+fmt_puts(const char *s, size_t *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
+fmt_putc(int c, size_t *leftp)
+{
+
+ if (*leftp == 0)
+ return;
+ if (*leftp != -1)
+ *leftp -= 1;
+ putchar(c);
+}
+
static char *
cmdpart(char *arg0)
{
@@ -94,7 +138,8 @@ void
command(const struct kinfo_proc *kp, VARENT *ve)
{
VAR *v;
- int left, wantspace = 0;
+ size_t left;
+ int wantspace = 0;
char **argv, **p;
v = ve->var;