Deleted Added
full compact
keyword.c (90110) keyword.c (90143)
1/*-
2 * Copyright (c) 1990, 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) 1990, 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/keyword.c 90143 2002-02-03 14:43:04Z markm $");
37
35#if 0
38#if 0
39#ifndef lint
36static char sccsid[] = "@(#)keyword.c 8.5 (Berkeley) 4/2/94";
40static char sccsid[] = "@(#)keyword.c 8.5 (Berkeley) 4/2/94";
37#else
38static const char rcsid[] =
39 "$FreeBSD: head/bin/ps/keyword.c 90110 2002-02-02 06:48:10Z imp $";
40#endif
41#endif /* not lint */
41#endif /* not lint */
42#endif
42
43#include <sys/param.h>
44#include <sys/time.h>
45#include <sys/resource.h>
46#include <sys/proc.h>
47#include <sys/sysctl.h>
43
44#include <sys/param.h>
45#include <sys/time.h>
46#include <sys/resource.h>
47#include <sys/proc.h>
48#include <sys/sysctl.h>
48#include <sys/ucred.h>
49#include <sys/user.h>
50
51#include <err.h>
49#include <sys/user.h>
50
51#include <err.h>
52#include <errno.h>
53#include <stddef.h>
54#include <stdio.h>
55#include <stdlib.h>
56#include <string.h>
57#include <utmp.h>
58
59#include "ps.h"
60

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

67 {{"stime"}, "STIME", USER, stime, NULL, 4},
68 {{"ixrss"}, "IXRSS", USER, ixrss, NULL, 4},
69 {{"idrss"}, "IDRSS", USER, idrss, NULL, 4},
70 {{"isrss"}, "ISRSS", USER, isrss, NULL, 4},
71#endif
72
73/* Compute offset in common structures. */
74#define KOFF(x) offsetof(struct kinfo_proc, x)
52#include <stddef.h>
53#include <stdio.h>
54#include <stdlib.h>
55#include <string.h>
56#include <utmp.h>
57
58#include "ps.h"
59

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

66 {{"stime"}, "STIME", USER, stime, NULL, 4},
67 {{"ixrss"}, "IXRSS", USER, ixrss, NULL, 4},
68 {{"idrss"}, "IDRSS", USER, idrss, NULL, 4},
69 {{"isrss"}, "ISRSS", USER, isrss, NULL, 4},
70#endif
71
72/* Compute offset in common structures. */
73#define KOFF(x) offsetof(struct kinfo_proc, x)
75#define UOFF(x) offsetof(struct usave, x)
76#define ROFF(x) offsetof(struct rusage, x)
77
78#define UIDFMT "u"
79#define UIDLEN 5
80#define PIDFMT "d"
81#define PIDLEN 5
82#define USERLEN UT_NAMESIZE
83
74#define ROFF(x) offsetof(struct rusage, x)
75
76#define UIDFMT "u"
77#define UIDLEN 5
78#define PIDFMT "d"
79#define PIDLEN 5
80#define USERLEN UT_NAMESIZE
81
84VAR var[] = {
85 {"%cpu", "%CPU", NULL, 0, pcpu, NULL, 4},
86 {"%mem", "%MEM", NULL, 0, pmem, NULL, 4},
87 {"acflag", "ACFLG",
88 NULL, 0, kvar, NULL, 3, KOFF(ki_acflag), USHORT, "x"},
89 {"acflg", "", "acflag"},
90 {"blocked", "", "sigmask"},
91 {"caught", "", "sigcatch"},
92 {"command", "COMMAND", NULL, COMM|LJUST|USER, command, NULL, 16},
93 {"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d"},
94 {"cputime", "", "time"},
95 {"f", "F", NULL, 0, kvar, NULL, 7, KOFF(ki_flag), INT, "x"},
96 {"flags", "", "f"},
97 {"ignored", "", "sigignore"},
98 {"inblk", "INBLK",
99 NULL, USER, rvar, NULL, 4, ROFF(ru_inblock), LONG, "ld"},
100 {"inblock", "", "inblk"},
101 {"jobc", "JOBC", NULL, 0, kvar, NULL, 4, KOFF(ki_jobc), SHORT, "d"},
102 {"ktrace", "KTRACE",
103 NULL, 0, kvar, NULL, 8, KOFF(ki_traceflag), INT, "x"},
104 {"lim", "LIM", NULL, 0, maxrss, NULL, 5},
105 {"login", "LOGIN", NULL, LJUST, logname, NULL, MAXLOGNAME-1},
106 {"logname", "", "login"},
107 {"lstart", "STARTED", NULL, LJUST|USER, lstarted, NULL, 28},
108 {"lvl", "LVL", NULL, LJUST, lattr, NULL, 3},
109 {"majflt", "MAJFLT",
110 NULL, USER, rvar, NULL, 4, ROFF(ru_majflt), LONG, "ld"},
111 {"minflt", "MINFLT",
112 NULL, USER, rvar, NULL, 4, ROFF(ru_minflt), LONG, "ld"},
113 {"msgrcv", "MSGRCV",
114 NULL, USER, rvar, NULL, 4, ROFF(ru_msgrcv), LONG, "ld"},
115 {"msgsnd", "MSGSND",
116 NULL, USER, rvar, NULL, 4, ROFF(ru_msgsnd), LONG, "ld"},
117 {"mtxname", "MUTEX", NULL, LJUST, mtxname, NULL, 6},
118 {"ni", "", "nice"},
119 {"nice", "NI", NULL, 0, kvar, NULL, 2, KOFF(ki_nice), CHAR, "d"},
120 {"nivcsw", "NIVCSW",
121 NULL, USER, rvar, NULL, 5, ROFF(ru_nivcsw), LONG, "ld"},
122 {"nsignals", "", "nsigs"},
123 {"nsigs", "NSIGS",
124 NULL, USER, rvar, NULL, 4, ROFF(ru_nsignals), LONG, "ld"},
125 {"nswap", "NSWAP",
126 NULL, USER, rvar, NULL, 4, ROFF(ru_nswap), LONG, "ld"},
127 {"nvcsw", "NVCSW",
128 NULL, USER, rvar, NULL, 5, ROFF(ru_nvcsw), LONG, "ld"},
129 {"nwchan", "WCHAN", NULL, 0, kvar, NULL, 8, KOFF(ki_wchan), KPTR, "lx"},
130 {"oublk", "OUBLK",
131 NULL, USER, rvar, NULL, 4, ROFF(ru_oublock), LONG, "ld"},
132 {"oublock", "", "oublk"},
133 {"paddr", "PADDR", NULL, 0, kvar, NULL, 8, KOFF(ki_paddr), KPTR, "lx"},
134 {"pagein", "PAGEIN", NULL, USER, pagein, NULL, 6},
135 {"pcpu", "", "%cpu"},
136 {"pending", "", "sig"},
137 {"pgid", "PGID",
138 NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_pgid), UINT, PIDFMT},
139 {"pid", "PID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_pid), UINT, PIDFMT},
140 {"pmem", "", "%mem"},
141 {"ppid", "PPID",
142 NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_ppid), UINT, PIDFMT},
143 {"pri", "PRI", NULL, 0, pri, NULL, 3},
144 {"re", "RE", NULL, 0, kvar, NULL, 3, KOFF(ki_swtime), UINT, "d"},
82static VAR var[] = {
83 {"%cpu", "%CPU", NULL, 0, pcpu, NULL, 4, 0, CHAR, NULL, 0},
84 {"%mem", "%MEM", NULL, 0, pmem, NULL, 4, 0, CHAR, NULL, 0},
85 {"acflag", "ACFLG", NULL, 0, kvar, NULL, 3, KOFF(ki_acflag), USHORT,
86 "x", 0},
87 {"acflg", "", "acflag", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
88 {"blocked", "", "sigmask", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
89 {"caught", "", "sigcatch", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
90 {"command", "COMMAND", NULL, COMM|LJUST|USER, command, NULL, 16,
91 0, CHAR, NULL, 0},
92 {"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d",
93 0},
94 {"cputime", "", "time", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
95 {"f", "F", NULL, 0, kvar, NULL, 7, KOFF(ki_flag), INT, "x", 0},
96 {"flags", "", "f", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
97 {"ignored", "", "sigignore", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
98 {"inblk", "INBLK", NULL, USER, rvar, NULL, 4, ROFF(ru_inblock), LONG,
99 "ld", 0},
100 {"inblock", "", "inblk", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
101 {"jobc", "JOBC", NULL, 0, kvar, NULL, 4, KOFF(ki_jobc), SHORT, "d",
102 0},
103 {"ktrace", "KTRACE", NULL, 0, kvar, NULL, 8, KOFF(ki_traceflag), INT,
104 "x", 0},
105 {"lim", "LIM", NULL, 0, maxrss, NULL, 5, 0, CHAR, NULL, 0},
106 {"login", "LOGIN", NULL, LJUST, logname, NULL, MAXLOGNAME-1, 0, CHAR,
107 NULL, 0},
108 {"logname", "", "login", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
109 {"lstart", "STARTED", NULL, LJUST|USER, lstarted, NULL, 28, 0, CHAR,
110 NULL, 0},
111 {"lvl", "LVL", NULL, LJUST, lattr, NULL, 3, 0, CHAR, NULL, 0},
112 {"majflt", "MAJFLT", NULL, USER, rvar, NULL, 4, ROFF(ru_majflt),
113 LONG, "ld", 0},
114 {"minflt", "MINFLT", NULL, USER, rvar, NULL, 4, ROFF(ru_minflt),
115 LONG, "ld", 0},
116 {"msgrcv", "MSGRCV", NULL, USER, rvar, NULL, 4, ROFF(ru_msgrcv),
117 LONG, "ld", 0},
118 {"msgsnd", "MSGSND", NULL, USER, rvar, NULL, 4, ROFF(ru_msgsnd),
119 LONG, "ld", 0},
120 {"mtxname", "MUTEX", NULL, LJUST, mtxname, NULL, 6, 0, CHAR, NULL,
121 0},
122 {"ni", "", "nice", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
123 {"nice", "NI", NULL, 0, kvar, NULL, 2, KOFF(ki_nice), CHAR, "d",
124 0},
125 {"nivcsw", "NIVCSW", NULL, USER, rvar, NULL, 5, ROFF(ru_nivcsw),
126 LONG, "ld", 0},
127 {"nsignals", "", "nsigs", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
128 {"nsigs", "NSIGS", NULL, USER, rvar, NULL, 4, ROFF(ru_nsignals),
129 LONG, "ld", 0},
130 {"nswap", "NSWAP", NULL, USER, rvar, NULL, 4, ROFF(ru_nswap),
131 LONG, "ld", 0},
132 {"nvcsw", "NVCSW", NULL, USER, rvar, NULL, 5, ROFF(ru_nvcsw),
133 LONG, "ld", 0},
134 {"oublk", "OUBLK", NULL, USER, rvar, NULL, 4, ROFF(ru_oublock),
135 LONG, "ld", 0},
136 {"oublock", "", "oublk", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
137 {"paddr", "PADDR", NULL, 0, kvar, NULL, 8, KOFF(ki_paddr), KPTR,
138 "lx", 0},
139 {"pagein", "PAGEIN", NULL, USER, pagein, NULL, 6, 0, CHAR, NULL, 0},
140 {"pcpu", "", "%cpu", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
141 {"pending", "", "sig", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
142 {"pgid", "PGID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_pgid), UINT,
143 PIDFMT, 0},
144 {"pid", "PID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_pid), UINT,
145 PIDFMT, 0},
146 {"pmem", "", "%mem", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
147 {"ppid", "PPID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_ppid), UINT,
148 PIDFMT, 0},
149 {"pri", "PRI", NULL, 0, pri, NULL, 3, 0, CHAR, NULL, 0},
150 {"re", "RE", NULL, 0, kvar, NULL, 3, KOFF(ki_swtime), UINT, "d",
151 0},
145 {"rgid", "RGID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_rgid),
152 {"rgid", "RGID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_rgid),
146 UINT, UIDFMT},
147 {"rss", "RSS", NULL, 0, kvar, NULL, 4, KOFF(ki_rssize), UINT, "d"},
148 {"rtprio", "RTPRIO", NULL, 0, priorityr, NULL, 7, KOFF(ki_pri)},
153 UINT, UIDFMT, 0},
154 {"rss", "RSS", NULL, 0, kvar, NULL, 4, KOFF(ki_rssize), UINT, "d",
155 0},
156 {"rtprio", "RTPRIO", NULL, 0, priorityr, NULL, 7, KOFF(ki_pri), CHAR,
157 NULL, 0},
149 {"ruid", "RUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_ruid),
158 {"ruid", "RUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_ruid),
150 UINT, UIDFMT},
151 {"ruser", "RUSER", NULL, LJUST|DSIZ, runame, s_runame, USERLEN},
159 UINT, UIDFMT, 0},
160 {"ruser", "RUSER", NULL, LJUST|DSIZ, runame, s_runame, USERLEN,
161 0, CHAR, NULL, 0},
152 {"sid", "SID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_sid), UINT,
162 {"sid", "SID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_sid), UINT,
153 PIDFMT},
154 {"sig", "PENDING", NULL, 0, kvar, NULL, 8, KOFF(ki_siglist), INT, "x"},
155 {"sigcatch", "CAUGHT",
156 NULL, 0, kvar, NULL, 8, KOFF(ki_sigcatch), UINT, "x"},
157 {"sigignore", "IGNORED",
158 NULL, 0, kvar, NULL, 8, KOFF(ki_sigignore), UINT, "x"},
159 {"sigmask", "BLOCKED",
160 NULL, 0, kvar, NULL, 8, KOFF(ki_sigmask), UINT, "x"},
161 {"sl", "SL", NULL, 0, kvar, NULL, 3, KOFF(ki_slptime), UINT, "d"},
162 {"start", "STARTED", NULL, LJUST|USER, started, NULL, 7},
163 {"stat", "", "state"},
164 {"state", "STAT", NULL, 0, state, NULL, 4},
165 {"svgid", "SVGID", NULL, 0,
166 kvar, NULL, UIDLEN, KOFF(ki_svgid), UINT, UIDFMT},
167 {"svuid", "SVUID", NULL, 0,
168 kvar, NULL, UIDLEN, KOFF(ki_svuid), UINT, UIDFMT},
169 {"tdev", "TDEV", NULL, 0, tdev, NULL, 4},
170 {"time", "TIME", NULL, USER, cputime, NULL, 9},
171 {"tpgid", "TPGID",
172 NULL, 0, kvar, NULL, 4, KOFF(ki_tpgid), UINT, PIDFMT},
163 PIDFMT, 0},
164 {"sig", "PENDING", NULL, 0, kvar, NULL, 8, KOFF(ki_siglist), INT,
165 "x", 0},
166 {"sigcatch", "CAUGHT", NULL, 0, kvar, NULL, 8, KOFF(ki_sigcatch),
167 UINT, "x", 0},
168 {"sigignore", "IGNORED", NULL, 0, kvar, NULL, 8, KOFF(ki_sigignore),
169 UINT, "x", 0},
170 {"sigmask", "BLOCKED", NULL, 0, kvar, NULL, 8, KOFF(ki_sigmask),
171 UINT, "x", 0},
172 {"sl", "SL", NULL, 0, kvar, NULL, 3, KOFF(ki_slptime), UINT, "d",
173 0},
174 {"start", "STARTED", NULL, LJUST|USER, started, NULL, 7, 0, CHAR, NULL,
175 0},
176 {"stat", "", "state", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
177 {"state", "STAT", NULL, 0, state, NULL, 4, 0, CHAR, NULL, 0},
178 {"svgid", "SVGID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_svgid),
179 UINT, UIDFMT, 0},
180 {"svuid", "SVUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_svuid),
181 UINT, UIDFMT, 0},
182 {"tdev", "TDEV", NULL, 0, tdev, NULL, 4, 0, CHAR, NULL, 0},
183 {"time", "TIME", NULL, USER, cputime, NULL, 9, 0, CHAR, NULL, 0},
184 {"tpgid", "TPGID", NULL, 0, kvar, NULL, 4, KOFF(ki_tpgid), UINT,
185 PIDFMT, 0},
173 {"tsid", "TSID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_tsid), UINT,
186 {"tsid", "TSID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_tsid), UINT,
174 PIDFMT},
175 {"tsiz", "TSIZ", NULL, 0, tsize, NULL, 4},
176 {"tt", "TT ", NULL, 0, tname, NULL, 4},
177 {"tty", "TTY", NULL, LJUST, longtname, NULL, 8},
178 {"ucomm", "UCOMM", NULL, LJUST, ucomm, NULL, MAXCOMLEN},
179 {"uid", "UID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_uid),
180 UINT, UIDFMT},
181 {"upr", "UPR", NULL, 0, kvar, NULL, 3, KOFF(ki_pri.pri_user),
182 UCHAR, "d"},
183 {"user", "USER", NULL, LJUST|DSIZ, uname, s_uname, USERLEN},
184 {"usrpri", "", "upr"},
185 {"vsize", "", "vsz"},
186 {"vsz", "VSZ", NULL, 0, vsize, NULL, 5},
187 {"wchan", "WCHAN", NULL, LJUST, wchan, NULL, 6},
188 {"xstat", "XSTAT", NULL, 0, kvar, NULL, 4, KOFF(ki_xstat), USHORT, "x"},
189 {""},
187 PIDFMT, 0},
188 {"tsiz", "TSIZ", NULL, 0, tsize, NULL, 4, 0, CHAR, NULL, 0},
189 {"tt", "TT ", NULL, 0, tname, NULL, 4, 0, CHAR, NULL, 0},
190 {"tty", "TTY", NULL, LJUST, longtname, NULL, 8, 0, CHAR, NULL, 0},
191 {"ucomm", "UCOMM", NULL, LJUST, ucomm, NULL, MAXCOMLEN, 0, CHAR, NULL,
192 0},
193 {"uid", "UID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_uid), UINT,
194 UIDFMT, 0},
195 {"upr", "UPR", NULL, 0, kvar, NULL, 3, KOFF(ki_pri.pri_user), UCHAR,
196 "d", 0},
197 {"user", "USER", NULL, LJUST|DSIZ, uname, s_uname, USERLEN, 0, CHAR,
198 NULL, 0},
199 {"usrpri", "", "upr", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
200 {"vsize", "", "vsz", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
201 {"vsz", "VSZ", NULL, 0, vsize, NULL, 5, 0, CHAR, NULL, 0},
202 {"wchan", "WCHAN", NULL, LJUST, wchan, NULL, 6, 0, CHAR, NULL, 0},
203 {"xstat", "XSTAT", NULL, 0, kvar, NULL, 4, KOFF(ki_xstat), USHORT,
204 "x", 0},
205 {"", NULL, NULL, 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
190};
191
192void
193showkey(void)
194{
195 VAR *v;
196 int i;
206};
207
208void
209showkey(void)
210{
211 VAR *v;
212 int i;
197 char *p, *sep;
213 const char *p, *sep;
198
199 i = 0;
200 sep = "";
201 for (v = var; *(p = v->name); ++v) {
202 int len = strlen(p);
203 if (termwidth && (i += len + 1) > termwidth) {
204 i = len;
205 sep = "\n";
206 }
207 (void) printf("%s%s", sep, p);
208 sep = " ";
209 }
210 (void) printf("\n");
211}
212
213void
214
215 i = 0;
216 sep = "";
217 for (v = var; *(p = v->name); ++v) {
218 int len = strlen(p);
219 if (termwidth && (i += len + 1) > termwidth) {
220 i = len;
221 sep = "\n";
222 }
223 (void) printf("%s%s", sep, p);
224 sep = " ";
225 }
226 (void) printf("\n");
227}
228
229void
214parsefmt(char *p)
230parsefmt(const char *p)
215{
216 static struct varent *vtail;
231{
232 static struct varent *vtail;
233 char *tempstr, *tempstr1;
217
218#define FMTSEP " \t,\n"
234
235#define FMTSEP " \t,\n"
219 while (p && *p) {
236 tempstr1 = tempstr = strdup(p);
237 while (tempstr && *tempstr) {
220 char *cp;
221 VAR *v;
222 struct varent *vent;
223
238 char *cp;
239 VAR *v;
240 struct varent *vent;
241
224 while ((cp = strsep(&p, FMTSEP)) != NULL && *cp == '\0')
242 while ((cp = strsep(&tempstr, FMTSEP)) != NULL && *cp == '\0')
225 /* void */;
226 if (cp == NULL || !(v = findvar(cp)))
227 continue;
228 if ((vent = malloc(sizeof(struct varent))) == NULL)
229 err(1, NULL);
230 vent->var = v;
231 vent->next = NULL;
232 if (vhead == NULL)
233 vhead = vtail = vent;
234 else {
235 vtail->next = vent;
236 vtail = vent;
237 }
238 }
243 /* void */;
244 if (cp == NULL || !(v = findvar(cp)))
245 continue;
246 if ((vent = malloc(sizeof(struct varent))) == NULL)
247 err(1, NULL);
248 vent->var = v;
249 vent->next = NULL;
250 if (vhead == NULL)
251 vhead = vtail = vent;
252 else {
253 vtail->next = vent;
254 vtail = vent;
255 }
256 }
257 free(tempstr1);
239 if (!vhead)
240 errx(1, "no valid keywords");
241}
242
243static VAR *
244findvar(char *p)
245{
246 VAR *v, key;
247 char *hp;
258 if (!vhead)
259 errx(1, "no valid keywords");
260}
261
262static VAR *
263findvar(char *p)
264{
265 VAR *v, key;
266 char *hp;
248 int vcmp();
249
250 hp = strchr(p, '=');
251 if (hp)
252 *hp++ = '\0';
253
254 key.name = p;
255 v = bsearch(&key, var, sizeof(var)/sizeof(VAR) - 1, sizeof(VAR), vcmp);
256

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

268 } else if (hp)
269 v->header = hp;
270 return (v);
271}
272
273static int
274vcmp(const void *a, const void *b)
275{
267
268 hp = strchr(p, '=');
269 if (hp)
270 *hp++ = '\0';
271
272 key.name = p;
273 v = bsearch(&key, var, sizeof(var)/sizeof(VAR) - 1, sizeof(VAR), vcmp);
274

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

286 } else if (hp)
287 v->header = hp;
288 return (v);
289}
290
291static int
292vcmp(const void *a, const void *b)
293{
276 return (strcmp(((VAR *)a)->name, ((VAR *)b)->name));
294 return (strcmp(((const VAR *)a)->name, ((const VAR *)b)->name));
277}
295}