Bug 183029 - watch(1) doesn't know and ignores unicode characters
Summary: watch(1) doesn't know and ignores unicode characters
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: procps
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Tomas Smetana
QA Contact: Brian Brock
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2006-02-25 16:39 UTC by Radek Bíba
Modified: 2007-11-30 22:11 UTC (History)
1 user (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2007-05-23 08:14:36 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
Unicode support for watch (3.09 KB, patch)
2006-12-29 14:30 UTC, Jan Cholasta
no flags Details | Diff
A more general version (3.34 KB, patch)
2007-01-16 17:15 UTC, Miloslav Trmač
no flags Details | Diff

Description Radek Bíba 2006-02-25 16:39:24 UTC
Description of problem:
SSIA

Version-Release number of selected component (if applicable):
procps-3.2.6-3.2

How reproducible:
Always

Steps to Reproduce:
1. tell watch to watch output of a command that produces unicode output,
reliable reproducer is e.g:
$ watch LC_ALL=ru_RU.utf8 date
(also see `LC_ALL=ru_RU.utf8 date` for comparision)
  
Actual results:
Where have the beautiful national characters gone?

Expected results:
I want the beautiful national characters back :)

Comment 1 Jan Cholasta 2006-12-29 14:30:48 UTC
Created attachment 144544 [details]
Unicode support for watch

This patch fixes the problem. It's a little bit hacky, though. I wanted to
replace the call to getc with getwc, but the program always ended with
segmentation fault when ran, so I wrote readwc function which reads a
multi-byte character from the given stream. The problem is that it works only
with 7-bit ASCII and UTF-8 (is that really a problem?). If anyone knows how to
make getwc work, please do so.

Comment 2 Miloslav Trmač 2007-01-16 17:15:49 UTC
Created attachment 145709 [details]
A more general version

This patch:
* rewrites readwc to respect LC_CTYPE.
  (getwc() can't be used because the stream returned by popen() is
byte-oriented).
* adds minimal support for multi-column characters - although it still doesn't
  seem to work quite right, see (LC_ALL=fa_IR.UTF-8 ./watch -d -n 1 date)


Note You need to log in before you can comment on or make changes to this bug.