From owner-freebsd-bugs@FreeBSD.ORG Tue Aug 19 13:00:09 2008 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC49E1065683 for ; Tue, 19 Aug 2008 13:00:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 8735C8FC20 for ; Tue, 19 Aug 2008 13:00:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m7JD0976064336 for ; Tue, 19 Aug 2008 13:00:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m7JD09F8064335; Tue, 19 Aug 2008 13:00:09 GMT (envelope-from gnats) Resent-Date: Tue, 19 Aug 2008 13:00:09 GMT Resent-Message-Id: <200808191300.m7JD09F8064335@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Johan van Selst Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BFA081065676 for ; Tue, 19 Aug 2008 12:52:59 +0000 (UTC) (envelope-from johans@serv6.ilse.nl) Received: from serv6.ilse.nl (nat.sux.experimental.net [62.69.160.1]) by mx1.freebsd.org (Postfix) with ESMTP id 2B1248FC0C for ; Tue, 19 Aug 2008 12:52:58 +0000 (UTC) (envelope-from johans@serv6.ilse.nl) Received: from serv6.ilse.nl (localhost [127.0.0.1]) by serv6.ilse.nl (8.14.2/8.14.2) with ESMTP id m7JCbOoP074161 for ; Tue, 19 Aug 2008 14:37:24 +0200 (CEST) (envelope-from johans@serv6.ilse.nl) Received: (from johans@localhost) by serv6.ilse.nl (8.14.2/8.14.2/Submit) id m7JCbOlL074160; Tue, 19 Aug 2008 14:37:24 +0200 (CEST) (envelope-from johans) Message-Id: <200808191237.m7JCbOlL074160@serv6.ilse.nl> Date: Tue, 19 Aug 2008 14:37:24 +0200 (CEST) From: Johan van Selst To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: bin/126657: [patch] w(1) breaks multibyte date format X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Johan van Selst List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Aug 2008 13:00:09 -0000 >Number: 126657 >Category: bin >Synopsis: [patch] w(1) breaks multibyte date format >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Aug 19 13:00:08 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Johan van Selst >Release: FreeBSD 6.3-STABLE i386 >Organization: >Environment: System: FreeBSD serv6.ilse.nl 6.3-STABLE FreeBSD 6.3-STABLE #0: Mon May 26 15:49:18 CEST 2008 root@serv6.ilse.nl:/usr/obj/usr/src/sys/SERV6 i386 >Description: w(1) uses strftime %b with to print the abbreviated month name if a user logged in more than a week ago. This may contain multibyte characters (e.g. when using UTF-8). This string is then aligned on byte-length rathern than char-length, resulting in misalignment and unfinished multibyte characters. >How-To-Repeat: If you have a user logged on for more than a week: $ env LANG=ru_RU.UTF-8 w >Fix: replace printf by wprintf (to use character length): --- w/pr_time.c 2008-08-19 14:14:03.000000000 +0200 +++ w/pr_time.c 2008-08-19 14:23:17.000000000 +0200 @@ -43,6 +43,7 @@ #include #include +#include #include #include "extern.h" @@ -82,7 +83,7 @@ } (void)strftime(buf, sizeof(buf), fmt, &tp); - (void)printf("%-7.7s", buf); + (void)wprintf(L"%-7.7s", buf); } /* >Release-Note: >Audit-Trail: >Unformatted: