projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
get screen width ioctl added and hold passwd file open
[unix-history]
/
usr
/
src
/
bin
/
ps
/
ps.c
diff --git
a/usr/src/bin/ps/ps.c
b/usr/src/bin/ps/ps.c
index
8586304
..
3f17c09
100644
(file)
--- a/
usr/src/bin/ps/ps.c
+++ b/
usr/src/bin/ps/ps.c
@@
-1,5
+1,5
@@
#ifndef lint
#ifndef lint
-static char *sccsid = "@(#)ps.c 4.
28
(Berkeley) %G%";
+static char *sccsid = "@(#)ps.c 4.
30
(Berkeley) %G%";
#endif
/*
#endif
/*
@@
-10,6
+10,7
@@
static char *sccsid = "@(#)ps.c 4.28 (Berkeley) %G%";
#include <nlist.h>
#include <pwd.h>
#include <sys/param.h>
#include <nlist.h>
#include <pwd.h>
#include <sys/param.h>
+#include <sys/ioctl.h>
#include <sys/tty.h>
#include <sys/dir.h>
#include <sys/user.h>
#include <sys/tty.h>
#include <sys/dir.h>
#include <sys/user.h>
@@
-149,6
+150,7
@@
int npr;
int cmdstart;
int twidth;
int cmdstart;
int twidth;
+struct winsize win;
char *kmemf, *memf, *swapf, *nlistf;
int kmem, mem, swap = -1;
int rawcpu, sumcpu;
char *kmemf, *memf, *swapf, *nlistf;
int kmem, mem, swap = -1;
int rawcpu, sumcpu;
@@
-166,8
+168,12
@@
main(argc, argv)
register char *ap;
int uid;
off_t procp;
register char *ap;
int uid;
off_t procp;
+ int width;
- twidth = 80;
+ if (ioctl(0, TIOCGWINSZ, &win) == -1)
+ twidth = 80;
+ else
+ twidth = (win.ws_col == 0 ? 80 : win.ws_col);
argc--, argv++;
if (argc > 0) {
ap = argv[0];
argc--, argv++;
if (argc > 0) {
ap = argv[0];
@@
-228,7
+234,7
@@
main(argc, argv)
vflg++;
break;
case 'w':
vflg++;
break;
case 'w':
- if (twidth
== 80
)
+ if (twidth
< 132
)
twidth = 132;
else
twidth = BUFSIZ;
twidth = 132;
else
twidth = BUFSIZ;
@@
-288,6
+294,9
@@
main(argc, argv)
save();
}
}
save();
}
}
+ width = twidth - cmdstart - 2;
+ if (width < 0)
+ width = 0;
qsort((char *) savcom, npr, sizeof(savcom[0]), pscomp);
for (i=0; i<npr; i++) {
register struct savcom *sp = &savcom[i];
qsort((char *) savcom, npr, sizeof(savcom[0]), pscomp);
for (i=0; i<npr; i++) {
register struct savcom *sp = &savcom[i];
@@
-433,6
+442,7
@@
getkvars(argc, argv)
if (!kflg)
nl[X_SYSMAP].n_name = "";
nlist(nlistf, nl);
if (!kflg)
nl[X_SYSMAP].n_name = "";
nlist(nlistf, nl);
+ nttys = 0;
getdev();
}
getdev();
}
@@
-585,10
+595,9
@@
maybetty()
case 'r':
cp++;
case 'r':
cp++;
- if (*cp == 'r' || *cp == 'u' || *cp == 'h')
- cp++;
#define is(a,b) cp[0] == 'a' && cp[1] == 'b'
#define is(a,b) cp[0] == 'a' && cp[1] == 'b'
- if (is(r,p) || is(u,p) || is(r,k) || is(r,m) || is(m,t)) {
+ if (is(h,p) || is(r,a) || is(u,p) || is(r,k)
+ || is(r,m) || is(m,t)) {
cp += 2;
if (isdigit(*cp) && cp[2] == 0)
return;
cp += 2;
if (isdigit(*cp) && cp[2] == 0)
return;
@@
-1207,6
+1216,7
@@
getname(uid)
static init = 0;
struct passwd *getpwent();
register struct nametable *n;
static init = 0;
struct passwd *getpwent();
register struct nametable *n;
+ extern int _pw_stayopen;
/*
* find uid in hashed table; add it if not found.
/*
* find uid in hashed table; add it if not found.
@@
-1222,6
+1232,7
@@
getname(uid)
switch (init) {
case 0:
setpwent();
switch (init) {
case 0:
setpwent();
+ _pw_stayopen = 1;
init = 1;
/* intentional fall-thru */
case 1:
init = 1;
/* intentional fall-thru */
case 1: