Mercurial > hg > toybox
annotate toys/pending/ps.c @ 1215:4eaac3e63fa7 draft
Cleanup freeramdisk: tabs to 2 spaces, square brackets for option name, do optional cleanup under if (CFG_TOYBOX_FREE) guard.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sun, 09 Mar 2014 14:38:51 -0500 |
parents | 0752b2d58909 |
children | 0d33dd5f537e |
rev | line source |
---|---|
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
1 /* ps.c - Show running process statistics. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
2 * |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
3 * Copyright 2013 Sandeep Sharma <sandeep.jack2756@gmail.com> |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
4 * Copyright 2013 Kyungwan Han <asura321@gmail.com> |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
5 * See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ps.html |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
6 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
7 USE_PS(NEWTOY(ps, ">0o*T", TOYFLAG_BIN)) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
8 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
9 config PS |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
10 bool "ps" |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
11 default n |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
12 help |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
13 usage: ps [-o COL1,COL2=HEADER] [-T] |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
14 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
15 Show list of processes |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
16 -o COL1,COL2=HEADER Select columns for display |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
17 -T Show threads |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
18 */ |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
19 #define FOR_ps |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
20 #include "toys.h" |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
21 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
22 GLOBALS( |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
23 struct arg_list *llist_o; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
24 unsigned screen_width; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
25 ) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
26 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
27 #define BUFF_SIZE 1024 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
28 struct header_list { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
29 char *name; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
30 char *header; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
31 char *format; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
32 int width; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
33 int position; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
34 struct header_list *next; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
35 }; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
36 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
37 struct header_list def_header[] = { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
38 {"user", "USER", "%-*s ", 8, 0, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
39 {"group", "GROUP", "%-*s ", 8, 1, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
40 {"comm", "COMMAND", "%-*s ",16, 2, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
41 {"args", "COMMAND", "%-*s ",30, 3, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
42 {"pid", "PID", "%*s ", 5, 4, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
43 {"ppid","PPID", "%*s ", 5, 5, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
44 {"pgid", "PGID", "%*s ", 5, 6, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
45 {"etime","ELAPSED", "%*s ", 7, 7, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
46 {"nice", "NI", "%*s ", 5, 8, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
47 {"rgroup","RGROUP", "%-*s ", 8, 9, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
48 {"ruser","RUSER", "%-*s ", 8, 10, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
49 {"time", "TIME", "%*s ", 6, 11, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
50 {"tty", "TT", "%-*s ", 6, 12, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
51 {"vsz","VSZ", "%*s ", 7, 13, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
52 {"stat", "STAT", "%-*s ", 4, 14, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
53 {"rss", "RSS", "%*s ", 4, 15, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
54 {NULL, NULL, NULL, 0, 0, NULL}, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
55 }; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
56 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
57 struct header_list *o_list = NULL; //List of Header attributes. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
58 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
59 /* |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
60 * create list of header attributes taking care of -o (-o ooid=MOM..) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
61 * and width of attributes. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
62 */ |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
63 static void list_add(struct header_list **list, struct header_list *data, char *c_data) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
64 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
65 struct header_list *temp = *list, *new = xzalloc(sizeof(struct header_list)); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
66 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
67 new->name = data->name; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
68 if (c_data) new->header = c_data; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
69 else new->header = xstrdup(data->header); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
70 if (c_data && (strlen(c_data) > data->width)) new->width = strlen(c_data); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
71 else new->width = data->width; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
72 new->format = data->format; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
73 new->position = data->position; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
74 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
75 if (temp) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
76 while (temp->next != NULL) temp = temp->next; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
77 temp->next = new; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
78 } else (*list) = new; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
79 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
80 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
81 //print the default header OR header with -o args |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
82 static void print_header(void) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
83 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
84 int i = 0; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
85 char *ptr = NULL, *str, *temp; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
86 struct arg_list *node = TT.llist_o; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
87 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
88 if (!(toys.optflags & FLAG_o)) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
89 xprintf(" PID"" ""USER"" "" TIME"" ""COMMAND"); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
90 list_add(&o_list, &def_header[4], NULL); //pid |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
91 list_add(&o_list, &def_header[0], NULL); //user |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
92 list_add(&o_list, &def_header[11], NULL); //time |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
93 list_add(&o_list, &def_header[3], NULL); //comm |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
94 xputc('\n'); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
95 return ; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
96 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
97 while (node) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
98 i = 0; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
99 str = xstrdup(node->arg); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
100 while (str) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
101 if ((ptr = strsep(&str, ","))) { //seprate list |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
102 if ((temp = strchr(ptr, '='))) { // Handle ppid = MOM |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
103 *temp = 0; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
104 temp++; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
105 while (def_header[i].name) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
106 if (!(strcmp(def_header[i].name, ptr))) { // search from default header |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
107 if (str) ptr = xmprintf("%s,%s", temp, str); //handle condition like ppid = M,OM |
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
108 else ptr = xmprintf("%s", temp); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
109 list_add(&o_list, &def_header[i], ptr); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
110 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
111 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
112 i++; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
113 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
114 if (!def_header[i].name) perror_exit("Invalid arg for -o option"); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
115 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
116 } else { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
117 while (def_header[i].name) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
118 if (!(strcmp(def_header[i].name, ptr))) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
119 list_add(&o_list, &def_header[i], NULL); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
120 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
121 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
122 i++; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
123 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
124 if (!def_header[i].name) perror_exit("Invalid arg for -o option"); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
125 i = 0; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
126 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
127 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
128 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
129 node = node->next; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
130 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
131 struct header_list *p = o_list; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
132 while (p) { //print Header |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
133 printf(p->format , p->width, p->header); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
134 p = p->next; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
135 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
136 xputc('\n'); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
137 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
138 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
139 //get uid/gid for processes. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
140 static void get_uid_gid(char *p, char *id_str, unsigned *id) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
141 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
142 FILE *f; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
143 if(!p) return; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
144 f = xfopen(p, "r"); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
145 while (fgets(toybuf, BUFF_SIZE, f)) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
146 if (!strncmp(toybuf, id_str, strlen(id_str))) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
147 sscanf(toybuf, "%*s %u", id); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
148 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
149 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
150 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
151 fclose(f); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
152 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
153 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
154 //get etime for processes. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
155 void get_etime(unsigned long s_time) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
156 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
157 unsigned long min; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
158 unsigned sec; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
159 struct sysinfo info; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
160 char *temp; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
161 sysinfo(&info); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
162 min = s_time/sysconf(_SC_CLK_TCK); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
163 min = info.uptime - min; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
164 sec = min % 60; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
165 min = min / 60; |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
166 temp = xmprintf("%3lu:%02u", min,sec); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
167 xprintf("%*.*s",7,7,temp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
168 free(temp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
169 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
170 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
171 //get time attributes for processes. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
172 void get_time(unsigned long s_time, unsigned long u_time) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
173 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
174 unsigned long min; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
175 unsigned sec; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
176 char *temp; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
177 min = (s_time + u_time)/sysconf(_SC_CLK_TCK); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
178 sec = min % 60; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
179 min = min / 60; |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
180 temp = xmprintf("%3lu:%02u", min,sec); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
181 xprintf("%*.*s",6,6,temp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
182 free(temp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
183 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
184 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
185 /* |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
186 * read command line taking care of in between NUL's |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
187 * in command line |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
188 */ |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
189 static void read_cmdline(int fd, char *cmd_ptr) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
190 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
191 int size = read(fd, cmd_ptr, 1024); //sizeof(cmd_buf) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
192 cmd_ptr[size] = '\0'; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
193 while (--size > 0 && cmd_ptr[size] == '\0'); //reach to last char |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
194 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
195 while (size >= 0) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
196 if ((unsigned char)cmd_ptr[size] < ' ') cmd_ptr[size] = ' '; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
197 size--; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
198 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
199 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
200 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
201 /* |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
202 * get the processes stats and print the stats |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
203 * corresponding to header attributes. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
204 */ |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
205 static void do_ps_line(int pid, int tid) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
206 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
207 char *stat_buff = toybuf + 1024, *cmd_buff = toybuf + 2048; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
208 char state[4] = {0,}; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
209 int tty, tty_major, tty_minor, fd, n, nice, width_counter = 0; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
210 struct stat stats; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
211 struct passwd *pw; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
212 struct group *gr; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
213 char *name, *user, *group, *ruser, *rgroup, *ptr; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
214 long rss; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
215 unsigned long stime, utime, start_time, vsz; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
216 unsigned ppid, ruid, rgid, pgid; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
217 struct header_list *p = o_list; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
218 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
219 sprintf(stat_buff, "/proc/%d", pid); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
220 if(stat(stat_buff, &stats)) return; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
221 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
222 if (tid) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
223 if (snprintf(stat_buff, BUFF_SIZE, "/proc/%d/task/%d/stat", pid, tid) >= BUFF_SIZE) return; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
224 if (snprintf(cmd_buff, BUFF_SIZE, "/proc/%d/task/%d/cmdline", pid, tid) >= BUFF_SIZE) return; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
225 } else { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
226 if (snprintf(stat_buff, BUFF_SIZE, "/proc/%d/stat", pid) >= BUFF_SIZE) return; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
227 if (snprintf(cmd_buff, BUFF_SIZE, "/proc/%d/cmdline", pid) >= BUFF_SIZE) return; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
228 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
229 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
230 fd = xopen(stat_buff, O_RDONLY); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
231 n = readall(fd, stat_buff, BUFF_SIZE); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
232 xclose(fd); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
233 if (n < 0) return; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
234 stat_buff[n] = 0; //Null terminate the buffer. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
235 ptr = strchr(stat_buff, '('); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
236 ptr++; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
237 name = ptr; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
238 ptr = strrchr(stat_buff, ')'); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
239 *ptr = '\0'; //unecessary if? |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
240 name = xmprintf("[%s]", name); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
241 ptr += 2; // goto STATE |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
242 n = sscanf(ptr, "%c %u %u %*u %d %*s %*s %*s %*s %*s %*s " |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
243 "%lu %lu %*s %*s %*s %d %*s %*s %lu %lu %ld", |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
244 &state[0],&ppid, &pgid, &tty, &utime, &stime, |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
245 &nice,&start_time, &vsz,&rss); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
246 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
247 if (tid) pid = tid; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
248 vsz >>= 10; //Convert into KB |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
249 rss = rss * 4; //Express in pages |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
250 tty_major = (tty >> 8) & 0xfff; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
251 tty_minor = (tty & 0xff) | ((tty >> 12) & 0xfff00); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
252 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
253 if (vsz == 0 && state[0] != 'Z') state[1] = 'W'; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
254 else state[1] = ' '; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
255 if (nice < 0 ) state[2] = '<'; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
256 else if (nice) state[2] = 'N'; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
257 else state[2] = ' '; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
258 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
259 if (tid) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
260 if (snprintf(stat_buff, BUFF_SIZE, "/proc/%d/task/%d/status", pid, tid) >= BUFF_SIZE) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
261 goto clean; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
262 } else { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
263 if (snprintf(stat_buff, BUFF_SIZE, "/proc/%d/status", pid) >= BUFF_SIZE) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
264 goto clean; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
265 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
266 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
267 fd = -1; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
268 while (p) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
269 int width; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
270 width = p->width; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
271 width_counter += (width + 1); //how much screen we hv filled, +1, extra space b/w headers |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
272 switch (p->position) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
273 case 0: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
274 pw = getpwuid(stats.st_uid); |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
275 if (!pw) user = xmprintf("%d",(int)stats.st_uid); |
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
276 else user = xmprintf("%s", pw->pw_name); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
277 printf("%-*.*s", width, width, user); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
278 free(user); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
279 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
280 case 1: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
281 gr = getgrgid(stats.st_gid); |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
282 if (!gr) group = xmprintf("%d",(int)stats.st_gid); |
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
283 else group = xmprintf("%s", gr->gr_name); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
284 printf("%-*.*s", width, width, group); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
285 free(group); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
286 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
287 case 2: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
288 name[strlen(name) - 1] = '\0'; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
289 printf("%-*.*s", width,width, name + 1); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
290 name[strlen(name)] = ']'; //Refill it for further process. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
291 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
292 case 3: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
293 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
294 int j = 0; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
295 width_counter -= width; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
296 if(p->next) j = width; //is args is in middle. ( -o pid,args,ppid) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
297 else j = (TT.screen_width - width_counter % TT.screen_width); //how much screen left. |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
298 if (fd == -1) fd = open(cmd_buff, O_RDONLY); //don't want to die |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
299 else xlseek(fd, 0, SEEK_SET); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
300 if (fd < 0) cmd_buff[0] = 0; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
301 else read_cmdline(fd, cmd_buff); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
302 if (cmd_buff[0]) printf("%-*.*s", j, j, cmd_buff); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
303 else printf("%-*.*s", j, j, name); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
304 width_counter += width; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
305 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
306 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
307 case 4: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
308 printf("%*d", width, pid); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
309 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
310 case 5: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
311 printf("%*d", width, ppid); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
312 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
313 case 6: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
314 printf("%*d", width, pgid); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
315 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
316 case 7: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
317 get_etime(start_time); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
318 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
319 case 8: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
320 printf("%*d", width, nice); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
321 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
322 case 9: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
323 get_uid_gid(stat_buff, "Gid:", &rgid); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
324 gr = getgrgid(rgid); |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
325 if (!gr) rgroup = xmprintf("%d",(int)stats.st_gid); |
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
326 else rgroup = xmprintf("%s", gr->gr_name); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
327 printf("%-*.*s", width,width, rgroup); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
328 free(rgroup); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
329 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
330 case 10: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
331 get_uid_gid(stat_buff, "Uid:", &ruid); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
332 pw = getpwuid(ruid); |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
333 if (!pw) ruser = xmprintf("%d",(int)stats.st_uid); |
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
334 else ruser = xmprintf("%s", pw->pw_name); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
335 printf("%-*.*s", width, width, ruser); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
336 free(ruser); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
337 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
338 case 11: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
339 get_time(utime, stime); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
340 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
341 case 12: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
342 if (tty_major) { |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
343 char *temp = xmprintf("%d,%d", tty_major,tty_minor); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
344 printf("%-*s", width, temp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
345 free(temp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
346 } else printf("%-*s", width, "?"); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
347 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
348 case 13: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
349 printf("%*lu", width, vsz); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
350 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
351 case 14: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
352 printf("%-*s", width, state); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
353 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
354 case 15: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
355 printf("%*lu", width, rss); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
356 break; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
357 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
358 p = p->next; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
359 xputc(' '); //space char |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
360 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
361 if (fd >= 0) xclose(fd); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
362 xputc('\n'); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
363 clean: |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
364 free(name); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
365 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
366 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
367 //Do stats for threads (for -T option) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
368 void do_ps_threads(int pid) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
369 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
370 DIR *d; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
371 int tid; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
372 struct dirent *de; |
1183
0752b2d58909
Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents:
1020
diff
changeset
|
373 char *tmp = xmprintf("/proc/%d/task",pid); |
1020
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
374 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
375 if (!(d = opendir(tmp))) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
376 free(tmp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
377 return; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
378 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
379 while ((de = readdir(d))) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
380 if (isdigit(de->d_name[0])) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
381 tid = atoi(de->d_name); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
382 if (tid == pid) continue; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
383 do_ps_line(pid, tid); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
384 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
385 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
386 closedir(d); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
387 free(tmp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
388 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
389 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
390 void ps_main(void) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
391 { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
392 DIR *dp; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
393 struct dirent *entry; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
394 int pid; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
395 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
396 TT.screen_width = 80; //default width |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
397 terminal_size(&TT.screen_width, NULL); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
398 print_header(); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
399 |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
400 if (!(dp = opendir("/proc"))) perror_exit("opendir"); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
401 while ((entry = readdir(dp))) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
402 if (isdigit(*entry->d_name)) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
403 pid = atoi(entry->d_name); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
404 do_ps_line(pid, 0); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
405 if (toys.optflags & FLAG_T) |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
406 do_ps_threads(pid); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
407 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
408 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
409 closedir(dp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
410 if (CFG_TOYBOX_FREE) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
411 struct header_list *temp = o_list; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
412 while(temp) { |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
413 o_list = o_list->next; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
414 free(temp->header); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
415 free(temp); |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
416 temp = o_list; |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
417 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
418 } |
fe7725c1819a
Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
419 } |