I should probably expand on the weird -O behavior... The desktop takes it to mean "insert this list of fields after pid and before a short fixed list of other fields" (so that's what this patch does for non-Android), but what I want is a way to move folks off the historical Android abuse of various single-letter flags to add sets of fields that there's no standard flag for. So -c can be replaced by -O psr, for example.
One difference is that the desktop doesn't enforce the exclusive or of -O with other flags that would affect the list of fields --- it just ignores -O in case of conflict. But that seems clearly a bug, so I didn't copy it. On Jan 24, 2016 10:50 AM, "enh" <[email protected]> wrote: > Also hard-code -W for Android to match traditional behavior, and use > NAME rather than CMDLINE by default (again, to match traditional behavior). > --- > toys/posix/ps.c | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > diff --git a/toys/posix/ps.c b/toys/posix/ps.c > index b06be42..8ee2b0f 100644 > --- a/toys/posix/ps.c > +++ b/toys/posix/ps.c > @@ -35,7 +35,7 @@ > * TODO: iotop: Window size change: respond immediately. Why not padding > * at right edge? (Not adjusting to screen size at all? Header > wraps?) > > -USE_PS(NEWTOY(ps, > "k(sort)*P(ppid)*aAdeflno*p(pid)*s*t*u*U*g*G*wZ[!ol][+Ae]", > TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE)) > +USE_PS(NEWTOY(ps, > "k(sort)*P(ppid)*aAdeflno*O*p(pid)*s*t*u*U*g*G*wZ[!ol][!Oofl][+Ae]", > TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE)) > // stayroot because iotop needs root to read other process' proc/$$/io > USE_TOP(NEWTOY(top, ">0m" "p*u*d#=3<1n#<1bq", > TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_STAYROOT|TOYFLAG_LOCALE)) > USE_IOTOP(NEWTOY(iotop, ">0Aako" "p*u*d#=3<1n#<1bq", > TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_STAYROOT|TOYFLAG_LOCALE)) > @@ -76,6 +76,7 @@ config PS > -f Full listing (-o USER:8=UID,PID,PPID,C,STIME,TTY,TIME,CMD) > -l Long listing (-o > F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,WCHAN,TTY,TIME,CMD) > -o Output the listed FIELDs, each with optional :size and/or =title > + -O Output the listed FIELDs in addition to the defaults > -Z Include LABEL > > Available -o FIELDs: > @@ -213,6 +214,7 @@ GLOBALS( > struct arg_list *t; > struct arg_list *s; > struct arg_list *p; > + struct arg_list *O; > struct arg_list *o; > struct arg_list *P; > struct arg_list *k; > @@ -988,7 +990,7 @@ void ps_main(void) > struct dirtree *dt; > int i; > > - if (toys.optflags&FLAG_w) TT.width = 99999; > + if (CFG_TOYBOX_ON_ANDROID || toys.optflags&FLAG_w) TT.width = 99999; > shared_main(); > > // parse command line options other than -o > @@ -1011,7 +1013,19 @@ void ps_main(void) > comma_args(&Z, &TT.fields, "-Z", parse_ko); > } > if (TT.ps.o) comma_args(TT.ps.o, &TT.fields, "bad -o field", parse_ko); > - else { > + else if (TT.ps.O) { > + struct arg_list al; > + > + al.next = 0; > + al.arg = CFG_TOYBOX_ON_ANDROID ? > + "USER,PID,PPID,VSIZE,RSS,WCHAN:10,ADDR:10=PC,S" : "PID"; > + comma_args(&al, &TT.fields, 0, parse_ko); > + comma_args(TT.ps.O, &TT.fields, "bad -O field", parse_ko); > + > + al.next = 0; > + al.arg = CFG_TOYBOX_ON_ANDROID ? "NAME" : "TTY,TIME,CMD"; > + comma_args(&al, &TT.fields, 0, parse_ko); > + } else { > struct arg_list al; > > al.next = 0; > @@ -1020,9 +1034,8 @@ void ps_main(void) > else if (toys.optflags&FLAG_l) > al.arg = "F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,WCHAN,TTY,TIME,CMD"; > else if (CFG_TOYBOX_ON_ANDROID) > - al.arg = "USER,PID,PPID,VSIZE,RSS,WCHAN:10,ADDR:10=PC,S,CMDLINE"; > + al.arg = "USER,PID,PPID,VSIZE,RSS,WCHAN:10,ADDR:10=PC,S,NAME"; > else al.arg = "PID,TTY,TIME,CMD"; > - > comma_args(&al, &TT.fields, 0, parse_ko); > } > dlist_terminate(TT.fields); > -- > 2.7.0.rc3.207.g0ac5344 >
_______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
