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} |