Bug 229453 - ps (process status) charset problem
Summary: ps (process status) charset problem
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: bin (show other bugs)
Version: 11.1-RELEASE
Hardware: i386 Any
: --- Affects Some People
Assignee: freebsd-bugs mailing list
URL:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2018-07-01 15:34 UTC by Vladimir
Modified: 2018-07-01 15:37 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir 2018-07-01 15:34:20 UTC
If current LOCALE not UTF-8, national encoding in "ps" output broken.

For example, mplayer with cyrillic args (filename in KOI8-R) not present in "COMMAND" column.

Bug in bin/ps/ps.c:

# diff -u bin/ps/ps.c.orig bin/ps/ps.c 
--- bin/ps/ps.c.orig    2017-07-21 06:43:20.000000000 +0700
+++ bin/ps/ps.c 2018-07-01 22:05:52.817718000 +0700
@@ -668,7 +668,7 @@
                        fwidthmin = (xo_get_style(NULL) != XO_STYLE_TEXT ||
                            (STAILQ_NEXT(vent, next_ve) == NULL &&
                            (vent->var->flag & LJUST))) ? 0 : vent->var->width;
-                       snprintf(fmtbuf, sizeof(fmtbuf), "{:%s/%%%s%d..%ds}",
+                       snprintf(fmtbuf, sizeof(fmtbuf), "{:%s/%%%s%d..%dhs}",
                            vent->var->field ?: vent->var->name,
                            (vent->var->flag & LJUST) ? "-" : "",
                            fwidthmin, fwidthmax);


Function xo_emit requires an argument %s in UTF-8 only encoding. But acceptably
replace %s with %hs, in which case pass argument in $LANG encoding.