]> granicus.if.org Git - procps-ng/commit
ps: Add configurable date format for lstart field
authorCraig Small <csmall@dropbear.xyz>
Wed, 18 Jan 2023 06:46:06 +0000 (17:46 +1100)
committerCraig Small <csmall@dropbear.xyz>
Wed, 18 Jan 2023 06:46:06 +0000 (17:46 +1100)
commit2532b5d2ddf9158fdec488a25234155be6153aa5
treed311f1d17ac875b196dab6b5b2fb3b58eb67cb32
parentbfe65a2cce8f2536e673b7ebbef84f4397b40f8a
ps: Add configurable date format for lstart field

The lstart field has been converted to use the strftime()
function so that it uses the locale. A new option -D
allows the user to define the format that would want this
field to show.

This may mean the field will be longer than it should be,
especially for French locales and the user defined field,
but the field length can be specified too.

---

This commit started off making all the relevant fields use the
locale correctly so it could solve #226 as well. The issue
is there an implied restriction (or not) around
strftime("%b") and probably strftime("%a") for abbrievated month
and day names respectively.

English, and some/most other languages put an additional
restriction that all abbreviations are 3 characters long.
The problem is, not all languages do this.

French is a good example:
janv. févr. mars avril mai juin juil. août sept. oct. nov. déc.

Maybe strip the . at the end?
 That helps for some months, not all
Maybe take the first three characters?
 Several wide languages will have big issues
Maybe convert wide, get wcslen then use that.
 Even after that June "juin" and July "juil" are both "jui".

So, anything that uses the month (bsdstart,start) use ctime which
doesn't use locale. That solves the length issue.

stime does, which means it has this issue but its been like that
for years. You get stuff like this:

janv.13 482261
00:00 1151918
 2022 1458628
06:12 1957584

The only way to fix that would be to
 a)Make the field two characters longer
 b)Convert it back to ctime() which means everyone else
   loses.

This could have be oh-so easy if everyone made %b and %a three
(wide) characters everywhere.

References:
 procps-ng/procps#228
 procps-ng/procps#226

Signed-off-by: Craig Small <csmall@dropbear.xyz>
man/ps.1
src/ps/common.h
src/ps/global.c
src/ps/help.c
src/ps/output.c
src/ps/parser.c