Deleted Added
full compact
fmt.c (95921) fmt.c (96053)
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

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

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#include <sys/cdefs.h>
35
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

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

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#include <sys/cdefs.h>
35
36__FBSDID("$FreeBSD: head/bin/ps/fmt.c 95921 2002-05-02 05:46:37Z jmallett $");
36__FBSDID("$FreeBSD: head/bin/ps/fmt.c 96053 2002-05-05 04:42:50Z jmallett $");
37
38#if 0
39#ifndef lint
40static char sccsid[] = "@(#)fmt.c 8.4 (Berkeley) 4/15/94";
41#endif
42#endif
43
44#include <sys/types.h>
45#include <sys/time.h>
46#include <sys/resource.h>
47
48#include <err.h>
37
38#if 0
39#ifndef lint
40static char sccsid[] = "@(#)fmt.c 8.4 (Berkeley) 4/15/94";
41#endif
42#endif
43
44#include <sys/types.h>
45#include <sys/time.h>
46#include <sys/resource.h>
47
48#include <err.h>
49#include <limits.h>
49#include <stdio.h>
50#include <stdlib.h>
51#include <string.h>
52#include <unistd.h>
53#include <vis.h>
54
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{
50#include <stdio.h>
51#include <stdlib.h>
52#include <string.h>
53#include <unistd.h>
54#include <vis.h>
55
56#include "ps.h"
57
58static char *cmdpart(char *);
59static char *shquote(char **);
60
61/*
62 * XXX
63 * This is a stub until marc does the real one.
64 */
65static char *
66shquote(char **argv)
67{
67 static long arg_max = -1;
68 long arg_max;
69 static size_t buf_size;
68 size_t len;
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");
70 size_t len;
71 char **p, *dst, *src;
72 static char *buf = NULL;
73
74 if (buf == NULL) {
75 if ((arg_max = sysconf(_SC_ARG_MAX)) == -1)
76 errx(1, "sysconf _SC_ARG_MAX failed");
75 if ((buf = malloc((size_t)(4 * arg_max) + 1)) == NULL)
76 err(1, "malloc");
77 if (arg_max >= LONG_MAX / 4 || 4 * arg_max + 1 > SIZE_MAX)
78 errx(1, "sysconf _SC_ARG_MAX preposterously large");
79 buf_size = 4 * arg_max + 1;
80 if ((buf = malloc(buf_size)) == NULL)
81 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;
82 }
83
84 if (*argv == 0) {
85 buf[0] = 0;
86 return (buf);
87 }
88 dst = buf;
89 for (p = argv; (src = *p++) != 0; ) {
90 if (*src == 0)
91 continue;
87 len = (size_t)(4 * arg_max - (dst - buf)) / 4;
92 len = (buf_size - 1 - (dst - buf)) / 4;
88 strvisx(dst, src, strlen(src) < len ? strlen(src) : len,
89 VIS_NL | VIS_CSTYLE);
90 while (*dst)
91 dst++;
93 strvisx(dst, src, strlen(src) < len ? strlen(src) : len,
94 VIS_NL | VIS_CSTYLE);
95 while (*dst)
96 dst++;
92 if ((4 * arg_max - (dst - buf)) / 4 > 0)
97 if ((buf_size - 1 - (dst - buf)) / 4 > 0)
93 *dst++ = ' ';
94 }
95 /* Chop off trailing space */
96 if (dst != buf && dst[-1] == ' ')
97 dst--;
98 *dst = '\0';
99 return (buf);
100}

--- 35 unchanged lines hidden ---
98 *dst++ = ' ';
99 }
100 /* Chop off trailing space */
101 if (dst != buf && dst[-1] == ' ')
102 dst--;
103 *dst = '\0';
104 return (buf);
105}

--- 35 unchanged lines hidden ---