Deleted Added
full compact
ps.c (256281) ps.c (266279)
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

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

42
43#if 0
44#ifndef lint
45static char sccsid[] = "@(#)ps.c 8.4 (Berkeley) 4/2/94";
46#endif /* not lint */
47#endif
48
49#include <sys/cdefs.h>
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

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

42
43#if 0
44#ifndef lint
45static char sccsid[] = "@(#)ps.c 8.4 (Berkeley) 4/2/94";
46#endif /* not lint */
47#endif
48
49#include <sys/cdefs.h>
50__FBSDID("$FreeBSD: stable/10/bin/ps/ps.c 245635 2013-01-19 00:21:55Z jhb $");
50__FBSDID("$FreeBSD: stable/10/bin/ps/ps.c 266279 2014-05-17 02:32:47Z bdrewery $");
51
52#include <sys/param.h>
51
52#include <sys/param.h>
53#include <sys/jail.h>
53#include <sys/proc.h>
54#include <sys/user.h>
55#include <sys/stat.h>
56#include <sys/ioctl.h>
57#include <sys/sysctl.h>
58#include <sys/mount.h>
59
60#include <ctype.h>
61#include <err.h>
62#include <errno.h>
63#include <fcntl.h>
64#include <grp.h>
54#include <sys/proc.h>
55#include <sys/user.h>
56#include <sys/stat.h>
57#include <sys/ioctl.h>
58#include <sys/sysctl.h>
59#include <sys/mount.h>
60
61#include <ctype.h>
62#include <err.h>
63#include <errno.h>
64#include <fcntl.h>
65#include <grp.h>
66#include <jail.h>
65#include <kvm.h>
66#include <limits.h>
67#include <locale.h>
68#include <paths.h>
69#include <pwd.h>
70#include <stdio.h>
71#include <stdlib.h>
72#include <string.h>

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

119struct listinfo {
120 int count;
121 int maxcount;
122 int elemsize;
123 addelem_rtn *addelem;
124 const char *lname;
125 union {
126 gid_t *gids;
67#include <kvm.h>
68#include <limits.h>
69#include <locale.h>
70#include <paths.h>
71#include <pwd.h>
72#include <stdio.h>
73#include <stdlib.h>
74#include <string.h>

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

121struct listinfo {
122 int count;
123 int maxcount;
124 int elemsize;
125 addelem_rtn *addelem;
126 const char *lname;
127 union {
128 gid_t *gids;
129 int *jids;
127 pid_t *pids;
128 dev_t *ttys;
129 uid_t *uids;
130 void *ptr;
131 } l;
132};
133
134static int addelem_gid(struct listinfo *, const char *);
130 pid_t *pids;
131 dev_t *ttys;
132 uid_t *uids;
133 void *ptr;
134 } l;
135};
136
137static int addelem_gid(struct listinfo *, const char *);
138static int addelem_jid(struct listinfo *, const char *);
135static int addelem_pid(struct listinfo *, const char *);
136static int addelem_tty(struct listinfo *, const char *);
137static int addelem_uid(struct listinfo *, const char *);
138static void add_list(struct listinfo *, const char *);
139static void descendant_sort(KINFO *, int);
140static void format_output(KINFO *);
141static void *expand_list(struct listinfo *);
142static const char *

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

158 "tt,time,command";
159static char o1[] = "pid";
160static char o2[] = "tt,state,time,command";
161static char ufmt[] = "user,pid,%cpu,%mem,vsz,rss,tt,state,start,time,command";
162static char vfmt[] = "pid,state,time,sl,re,pagein,vsz,rss,lim,tsiz,"
163 "%cpu,%mem,command";
164static char Zfmt[] = "label";
165
139static int addelem_pid(struct listinfo *, const char *);
140static int addelem_tty(struct listinfo *, const char *);
141static int addelem_uid(struct listinfo *, const char *);
142static void add_list(struct listinfo *, const char *);
143static void descendant_sort(KINFO *, int);
144static void format_output(KINFO *);
145static void *expand_list(struct listinfo *);
146static const char *

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

162 "tt,time,command";
163static char o1[] = "pid";
164static char o2[] = "tt,state,time,command";
165static char ufmt[] = "user,pid,%cpu,%mem,vsz,rss,tt,state,start,time,command";
166static char vfmt[] = "pid,state,time,sl,re,pagein,vsz,rss,lim,tsiz,"
167 "%cpu,%mem,command";
168static char Zfmt[] = "label";
169
166#define PS_ARGS "AaCcde" OPT_LAZY_f "G:gHhjLlM:mN:O:o:p:rSTt:U:uvwXxZ"
170#define PS_ARGS "AaCcde" OPT_LAZY_f "G:gHhjJ:LlM:mN:O:o:p:rSTt:U:uvwXxZ"
167
168int
169main(int argc, char *argv[])
170{
171
172int
173main(int argc, char *argv[])
174{
171 struct listinfo gidlist, pgrplist, pidlist;
175 struct listinfo gidlist, jidlist, pgrplist, pidlist;
172 struct listinfo ruidlist, sesslist, ttylist, uidlist;
173 struct kinfo_proc *kp;
174 KINFO *kinfo = NULL, *next_KINFO;
175 KINFO_STR *ks;
176 struct varent *vent;
177 struct winsize ws;
178 const char *nlistf, *memf, *fmtstr, *str;
179 char *cols;

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

203 argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]);
204
205 pidmax_init();
206
207 all = descendancy = _fmt = nselectors = optfatal = 0;
208 prtheader = showthreads = wflag = xkeep_implied = 0;
209 xkeep = -1; /* Neither -x nor -X. */
210 init_list(&gidlist, addelem_gid, sizeof(gid_t), "group");
176 struct listinfo ruidlist, sesslist, ttylist, uidlist;
177 struct kinfo_proc *kp;
178 KINFO *kinfo = NULL, *next_KINFO;
179 KINFO_STR *ks;
180 struct varent *vent;
181 struct winsize ws;
182 const char *nlistf, *memf, *fmtstr, *str;
183 char *cols;

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

207 argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]);
208
209 pidmax_init();
210
211 all = descendancy = _fmt = nselectors = optfatal = 0;
212 prtheader = showthreads = wflag = xkeep_implied = 0;
213 xkeep = -1; /* Neither -x nor -X. */
214 init_list(&gidlist, addelem_gid, sizeof(gid_t), "group");
215 init_list(&jidlist, addelem_jid, sizeof(int), "jail id");
211 init_list(&pgrplist, addelem_pid, sizeof(pid_t), "process group");
212 init_list(&pidlist, addelem_pid, sizeof(pid_t), "process id");
213 init_list(&ruidlist, addelem_uid, sizeof(uid_t), "ruser");
214 init_list(&sesslist, addelem_pid, sizeof(pid_t), "session id");
215 init_list(&ttylist, addelem_tty, sizeof(dev_t), "tty");
216 init_list(&uidlist, addelem_uid, sizeof(uid_t), "user");
217 memf = _PATH_DEVNULL;
218 nlistf = NULL;

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

270 break; /* no-op */
271#endif
272 case 'H':
273 showthreads = KERN_PROC_INC_THREAD;
274 break;
275 case 'h':
276 prtheader = ws.ws_row > 5 ? ws.ws_row : 22;
277 break;
216 init_list(&pgrplist, addelem_pid, sizeof(pid_t), "process group");
217 init_list(&pidlist, addelem_pid, sizeof(pid_t), "process id");
218 init_list(&ruidlist, addelem_uid, sizeof(uid_t), "ruser");
219 init_list(&sesslist, addelem_pid, sizeof(pid_t), "session id");
220 init_list(&ttylist, addelem_tty, sizeof(dev_t), "tty");
221 init_list(&uidlist, addelem_uid, sizeof(uid_t), "user");
222 memf = _PATH_DEVNULL;
223 nlistf = NULL;

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

275 break; /* no-op */
276#endif
277 case 'H':
278 showthreads = KERN_PROC_INC_THREAD;
279 break;
280 case 'h':
281 prtheader = ws.ws_row > 5 ? ws.ws_row : 22;
282 break;
283 case 'J':
284 add_list(&jidlist, optarg);
285 xkeep_implied = 1;
286 nselectors++;
287 break;
278 case 'j':
279 parsefmt(jfmt, 0);
280 _fmt = 1;
281 jfmt[0] = '\0';
282 break;
283 case 'L':
284 showkey();
285 exit(0);

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

533 }
534 if (nselectors == 0)
535 goto keepit;
536 if (gidlist.count > 0) {
537 for (elem = 0; elem < gidlist.count; elem++)
538 if (kp->ki_rgid == gidlist.l.gids[elem])
539 goto keepit;
540 }
288 case 'j':
289 parsefmt(jfmt, 0);
290 _fmt = 1;
291 jfmt[0] = '\0';
292 break;
293 case 'L':
294 showkey();
295 exit(0);

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

543 }
544 if (nselectors == 0)
545 goto keepit;
546 if (gidlist.count > 0) {
547 for (elem = 0; elem < gidlist.count; elem++)
548 if (kp->ki_rgid == gidlist.l.gids[elem])
549 goto keepit;
550 }
551 if (jidlist.count > 0) {
552 for (elem = 0; elem < jidlist.count; elem++)
553 if (kp->ki_jid == jidlist.l.jids[elem])
554 goto keepit;
555 }
541 if (pgrplist.count > 0) {
542 for (elem = 0; elem < pgrplist.count; elem++)
543 if (kp->ki_pgid ==
544 pgrplist.l.pids[elem])
545 goto keepit;
546 }
547 if (ruidlist.count > 0) {
548 for (elem = 0; elem < ruidlist.count; elem++)

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

661 (void)putchar('\n');
662 if (prtheader && lineno++ == prtheader - 4) {
663 (void)putchar('\n');
664 printheader();
665 lineno = 0;
666 }
667 }
668 free_list(&gidlist);
556 if (pgrplist.count > 0) {
557 for (elem = 0; elem < pgrplist.count; elem++)
558 if (kp->ki_pgid ==
559 pgrplist.l.pids[elem])
560 goto keepit;
561 }
562 if (ruidlist.count > 0) {
563 for (elem = 0; elem < ruidlist.count; elem++)

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

676 (void)putchar('\n');
677 if (prtheader && lineno++ == prtheader - 4) {
678 (void)putchar('\n');
679 printheader();
680 lineno = 0;
681 }
682 }
683 free_list(&gidlist);
684 free_list(&jidlist);
669 free_list(&pidlist);
670 free_list(&pgrplist);
671 free_list(&ruidlist);
672 free_list(&sesslist);
673 free_list(&ttylist);
674 free_list(&uidlist);
675 for (i = 0; i < nkept; i++)
676 free(kinfo[i].ki_d.prefix);

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

722 }
723 if (inf->count >= inf->maxcount)
724 expand_list(inf);
725 inf->l.gids[(inf->count)++] = grp->gr_gid;
726 return (1);
727}
728
729static int
685 free_list(&pidlist);
686 free_list(&pgrplist);
687 free_list(&ruidlist);
688 free_list(&sesslist);
689 free_list(&ttylist);
690 free_list(&uidlist);
691 for (i = 0; i < nkept; i++)
692 free(kinfo[i].ki_d.prefix);

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

738 }
739 if (inf->count >= inf->maxcount)
740 expand_list(inf);
741 inf->l.gids[(inf->count)++] = grp->gr_gid;
742 return (1);
743}
744
745static int
746addelem_jid(struct listinfo *inf, const char *elem)
747{
748 int tempid;
749
750 if (*elem == '\0') {
751 warnx("Invalid (zero-length) jail id");
752 optfatal = 1;
753 return (0); /* Do not add this value. */
754 }
755
756 tempid = jail_getid(elem);
757 if (tempid < 0) {
758 warnx("Invalid %s: %s", inf->lname, elem);
759 optfatal = 1;
760 return (0);
761 }
762
763 if (inf->count >= inf->maxcount)
764 expand_list(inf);
765 inf->l.jids[(inf->count)++] = tempid;
766 return (1);
767}
768
769static int
730addelem_pid(struct listinfo *inf, const char *elem)
731{
732 char *endp;
733 long tempid;
734
735 if (*elem == '\0') {
736 warnx("Invalid (zero-length) process id");
737 optfatal = 1;

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

1368
1369static void
1370usage(void)
1371{
1372#define SINGLE_OPTS "[-aCcde" OPT_LAZY_f "HhjlmrSTuvwXxZ]"
1373
1374 (void)fprintf(stderr, "%s\n%s\n%s\n%s\n",
1375 "usage: ps " SINGLE_OPTS " [-O fmt | -o fmt] [-G gid[,gid...]]",
770addelem_pid(struct listinfo *inf, const char *elem)
771{
772 char *endp;
773 long tempid;
774
775 if (*elem == '\0') {
776 warnx("Invalid (zero-length) process id");
777 optfatal = 1;

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

1408
1409static void
1410usage(void)
1411{
1412#define SINGLE_OPTS "[-aCcde" OPT_LAZY_f "HhjlmrSTuvwXxZ]"
1413
1414 (void)fprintf(stderr, "%s\n%s\n%s\n%s\n",
1415 "usage: ps " SINGLE_OPTS " [-O fmt | -o fmt] [-G gid[,gid...]]",
1376 " [-M core] [-N system]",
1416 " [-J jid[,jid...]] [-M core] [-N system]",
1377 " [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]",
1378 " ps [-L]");
1379 exit(1);
1380}
1417 " [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]",
1418 " ps [-L]");
1419 exit(1);
1420}