Deleted Added
full compact
fmt.c (90110) fmt.c (90143)
1/*-
2 * Copyright (c) 1992, 1993, 1994
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 17 unchanged lines hidden (view full) ---

26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
1/*-
2 * Copyright (c) 1992, 1993, 1994
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 17 unchanged lines hidden (view full) ---

26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34#ifndef lint
34#include <sys/cdefs.h>
35
36__FBSDID("$FreeBSD: head/bin/ps/fmt.c 90143 2002-02-03 14:43:04Z markm $");
37
35#if 0
38#if 0
39#ifndef lint
36static char sccsid[] = "@(#)fmt.c 8.4 (Berkeley) 4/15/94";
37#endif
40static char sccsid[] = "@(#)fmt.c 8.4 (Berkeley) 4/15/94";
41#endif
38static const char rcsid[] =
39 "$FreeBSD: head/bin/ps/fmt.c 90110 2002-02-02 06:48:10Z imp $";
40#endif /* not lint */
42#endif
41
42#include <sys/types.h>
43#include <sys/time.h>
44#include <sys/resource.h>
43
44#include <sys/types.h>
45#include <sys/time.h>
46#include <sys/resource.h>
47
45#include <err.h>
46#include <stdio.h>
47#include <stdlib.h>
48#include <string.h>
49#include <unistd.h>
50#include <vis.h>
48#include <err.h>
49#include <stdio.h>
50#include <stdlib.h>
51#include <string.h>
52#include <unistd.h>
53#include <vis.h>
54
51#include "ps.h"
52
53static char *cmdpart(char *);
54static char *shquote(char **);
55
56/*
57 * XXX
58 * This is a stub until marc does the real one.
59 */
60static char *
61shquote(char **argv)
62{
63 static long arg_max = -1;
55#include "ps.h"
56
57static char *cmdpart(char *);
58static char *shquote(char **);
59
60/*
61 * XXX
62 * This is a stub until marc does the real one.
63 */
64static char *
65shquote(char **argv)
66{
67 static long arg_max = -1;
64 long len;
68 size_t len;
65 char **p, *dst, *src;
66 static char *buf = NULL;
67
68 if (buf == NULL) {
69 if ((arg_max = sysconf(_SC_ARG_MAX)) == -1)
70 errx(1, "sysconf _SC_ARG_MAX failed");
69 char **p, *dst, *src;
70 static char *buf = NULL;
71
72 if (buf == NULL) {
73 if ((arg_max = sysconf(_SC_ARG_MAX)) == -1)
74 errx(1, "sysconf _SC_ARG_MAX failed");
71 if ((buf = malloc((4 * arg_max) + 1)) == NULL)
75 if ((buf = malloc((u_int)(4 * arg_max) + 1)) == NULL)
72 errx(1, "malloc failed");
73 }
74
75 if (*argv == 0) {
76 buf[0] = 0;
77 return (buf);
78 }
79 dst = buf;
80 for (p = argv; (src = *p++) != 0; ) {
81 if (*src == 0)
82 continue;
76 errx(1, "malloc failed");
77 }
78
79 if (*argv == 0) {
80 buf[0] = 0;
81 return (buf);
82 }
83 dst = buf;
84 for (p = argv; (src = *p++) != 0; ) {
85 if (*src == 0)
86 continue;
83 len = (4 * arg_max - (dst - buf)) / 4;
87 len = (size_t)(4 * arg_max - (dst - buf)) / 4;
84 strvisx(dst, src, strlen(src) < len ? strlen(src) : len,
85 VIS_NL | VIS_CSTYLE);
86 while (*dst)
87 dst++;
88 if ((4 * arg_max - (dst - buf)) / 4 > 0)
89 *dst++ = ' ';
90 }
91 /* Chop off trailing space */

--- 6 unchanged lines hidden (view full) ---

98static char *
99cmdpart(char *arg0)
100{
101 char *cp;
102
103 return ((cp = strrchr(arg0, '/')) != NULL ? cp + 1 : arg0);
104}
105
88 strvisx(dst, src, strlen(src) < len ? strlen(src) : len,
89 VIS_NL | VIS_CSTYLE);
90 while (*dst)
91 dst++;
92 if ((4 * arg_max - (dst - buf)) / 4 > 0)
93 *dst++ = ' ';
94 }
95 /* Chop off trailing space */

--- 6 unchanged lines hidden (view full) ---

102static char *
103cmdpart(char *arg0)
104{
105 char *cp;
106
107 return ((cp = strrchr(arg0, '/')) != NULL ? cp + 1 : arg0);
108}
109
106char *
107fmt_argv(char **argv, char *cmd, int maxlen)
110const char *
111fmt_argv(char **argv, char *cmd, size_t maxlen)
108{
112{
109 int len;
113 size_t len;
110 char *ap, *cp;
111
114 char *ap, *cp;
115
112 if (argv == 0 || argv[0] == 0) {
116 if (argv == NULL || argv[0] == NULL) {
113 if (cmd == NULL)
114 return ("");
115 ap = NULL;
116 len = maxlen + 3;
117 } else {
118 ap = shquote(argv);
119 len = strlen(ap) + maxlen + 4;
120 }
117 if (cmd == NULL)
118 return ("");
119 ap = NULL;
120 len = maxlen + 3;
121 } else {
122 ap = shquote(argv);
123 len = strlen(ap) + maxlen + 4;
124 }
121 if ((cp = malloc(len)) == NULL)
125 cp = malloc(len);
126 if (cp == NULL)
122 return (NULL);
123 if (ap == NULL)
127 return (NULL);
128 if (ap == NULL)
124 sprintf(cp, " (%.*s)", maxlen, cmd);
129 sprintf(cp, " (%.*s)", (int)maxlen, cmd);
125 else if (strncmp(cmdpart(argv[0]), cmd, maxlen) != 0)
130 else if (strncmp(cmdpart(argv[0]), cmd, maxlen) != 0)
126 sprintf(cp, "%s (%.*s)", ap, maxlen, cmd);
131 sprintf(cp, "%s (%.*s)", ap, (int)maxlen, cmd);
127 else
128 (void) strcpy(cp, ap);
129 return (cp);
130}
132 else
133 (void) strcpy(cp, ap);
134 return (cp);
135}