Re: ps and AIX field descriptors
Hi.
On Fri, Feb 17, 2023 at 07:46:23AM +0100, Andreas Leha wrote:
> Now my question: How can I restore the previous behaviour that allowed
> other than whitespace separators between fields?
diff -purw procps-3.3.17/ps/sortformat.c procps-4.0.2/src/ps/sortformat.c
shows me that:
@@ -128,22 +127,24 @@ static const char *aix_format_parse(sf_n
items = 0;
walk = sfn->sf;
/* state machine */ {
- int c;
+ int c = *walk++;
initial:
- c = *walk++;
if(c=='%') goto get_desc;
if(!c) goto looks_ok;
/* get_text: */
items++;
- get_more_text:
+ get_more:
c = *walk++;
if(c=='%') goto get_desc;
- if(c) goto get_more_text;
+ if(c==' ') goto get_more;
+ if(c) goto aix_oops;
goto looks_ok;
get_desc:
items++;
c = *walk++;
- if(c) goto initial;
+ if(c&&c!=' ') goto initial;
+ return _("missing AIX field descriptor");
+ aix_oops:
return _("improper AIX field descriptor");
looks_ok:
;
If you look at "get_more" label, you'll notice that "old" version of
procps (bullseye's) checked for any character after "%<char>" block.
"New" one (bookworm's) explicitly checks for space, and goes to
"aix_oops" in any other case.
And there is no #ifdefs, no environment variable checks, no options
etc.
So, to answer your question - currently the only way to restore the
behaviour you want is to patch procps and rebuild it.
Reco
Reply to: