From owner-FreeBSD-users-jp@jp.freebsd.org  Wed Jan 15 20:29:19 1997
Received: by jaz.jp.freebsd.org (8.8.4+2.7Wbeta4/8.7.3) id UAA16235
	Wed, 15 Jan 1997 20:29:19 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.8.4+2.7Wbeta4/8.7.3) with ESMTP id UAA16230
	for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 15 Jan 1997 20:29:17 +0900 (JST)
Received: (from ume@localhost) by tasogare.imasy.or.jp (8.8.4+2.7Wbeta4/3.4W4-96030215) with UUCP id UAA06891 for FreeBSD-users-jp@jp.freebsd.org; Wed, 15 Jan 1997 20:14:22 +0900 (JST)
Received: from localhost (ume@localhost [127.0.0.1]) by chaos.calm.imasy.or.jp (8.8.4/3.5Wpl2-CHAOS1.5) with ESMTP id UAA00760 for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 15 Jan 1997 20:12:49 +0900 (JST)
To: FreeBSD-users-jp@jp.freebsd.org
In-Reply-To: Your message of "Tue, 14 Jan 1997 17:04:35 +0900 (JST)"
References: <199701140804.RAA25041@sirius.sbl.cl.nec.co.jp>
X-Mailer: Mew version 1.54 on Emacs 19.34.1, Mule 2.3
X-PGP-Fingerprint: 6B 0C 53 FC 5D D0 37 91  05 D0 B3 EF 36 9B 6A BC
X-URL: http://www.imasy.or.jp/~ume/
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <19970115201246M.ume@chaos.calm.imasy.or.jp>
Date: Wed, 15 Jan 1997 20:12:46 +0900
From: Hajimu UMEMOTO <ume@calm.imasy.or.jp>
X-Dispatcher: impost version 0.95++ (Dec. 1, 1996)
Lines: 297
Reply-To: FreeBSD-users-jp@jp.freebsd.org
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 8607
Subject: [FreeBSD-users-jp 8607] LC_TIME
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

  $BG_K\!wF|N)$G$9!#(B

# X_LOCALE $B$NOC$8$c$J$$$N$G!"(BSubject: $B$rJQ$($^$7$?!#(B

>>>>> On Tue, 14 Jan 1997 17:04:35 +0900 (JST),
	Naoki Hamada <nao@sbl.cl.nec.co.jp> said:

nao>   $B$&!<$s!"9M$($i$l$k%Q%?!<%s$K$D$$$F$O(B LC_TIME $B$KF~$C$F$$$F$7$+$k$Y$-(B
nao> $B$J$s$G$7$g$&$1$I!D(B

  $B$H$O8@$&$b$N$N!"$3$NJU$N;EMM$C$F(B POSIX (XPG?) $B$G5,Dj$5$l$F$$$k$o$1$G(B
$B$7$g(B?

nao>  1$B7n(B
nao> 1$B7n(B

  $B$J$s$G!"$3$s$JDj5A$N;EJ}$r$7$F$$$k$N$+$H;W$C$?$i!"7n$KBP$7$F(B %e $B$N$h(B
$B$&$K%V%i%s%/$rJd$C$F$/$l$k=q<0$,(B strftime() $B$K$J$$$N$G$9$M!#7k9=6lO+$7(B
$B$F$$$k$s$@$J!#(B

nao> ($BF|(B)

  $B$3$l$C$F!"(B3bytes $B$K<}$^$C$F$J$$$h$M!#(BSolaris2.4 $B$G$bF1MM$NDj5A$K$J$C(B
$B$F$k$7!"(B

>     %a    is replaced by national representation of the abbreviated weekday
>           name, where the abbreviation is the first three characters.

$B$K$"$k(B three characters $B$C$F$$$&$N$O!"$I$NJU$G5,Dj$5$l$F$k$s$G$7$g$&$M(B? 
POSIX $B$J$$$7$O(B XPG $B$G5,Dj$5$l$F$F!">&MQ(B OS $B$G$O<i$i$l$F$$$J$$$H$+(B?

nao> >  $B<h$j4:$($:(B c_fmt $B$@$18_49@-$rJ]$C$F$N$O$I$&$G$7$g$&$+(B?
nao> >  $B$+$J$j$$$$2C8:$G$O$"$k$N$G$9$,!"(Blong form $B$H(B short form $B$,$"$C$F$b!"(B
nao> >$BF|K\8l$@$H$"$^$j@8$-$F$J$$$h$&$K8+$($^$9$7!"$I$C$A$+$K1Q8l$N(B short
nao> >form $B$r$=$N$^$^FM$C9~$s$8$c$&$C$F$N$O$I$&$G$7$g$&(B? $BNc$($P$3$s$J46$8$G(B
nao> >$B$9!#(B
nao> 
nao>   $B$=$C$+!"$=$&$$$&@^Co:v$b$"$k$N$G$9$M!#$&$&$`!#(B

  LC_TIME $B$r;H$C$?%"%W%j%1!<%7%g%s$N0\?"@-$H$$$&4QE@$G$O!">&MQ(B OS $B$K9g(B
$B$o$;$?J}$,NI$$$s$G$7$g$&$M!#(B
  Solaris2.4 $B$d(B HPUX10 $B$G(B man strftime $B$7$F$_$?$1$l$I!"=q<0$K859f$r;H(B
$B$&%1!<%9$,$"$kDxEY$G!"4pK\E*$K(B FreeBSD $B$N$H0c$o$J$$$J$C$F46$8$G$7$?!#(B
$B$H$$$&$3$H$O!"??LLL\$K$d$k(B (?) $B$J$i!"(Bstrftime() $B$N;EMM$N3HD%$b4^$a$F!"(B
$B%"%W%j%1!<%7%g%s$b4^$a$F9M$($J$$$H$$$1$J$$$C$F$3$H$J$s$G$7$g$&$M!"$-$C(B
$B$H!#(B
  $B$=$3$^$G9M$($J$$$J$i!"<h$j4:$($:!"$A$g$C$H%b%G%#%U%!%$$7$F!"$3$s$J46(B
$B$8$G$9$+$M(B?

-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --
# $Id$
#
# WARNING: spaces may be essential at the end of lines
# WARNING: empty lines are essential too
#
# Short month names
#
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#
# Long month names
#
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
#
# Short weekday names
#
$BF|(B
$B7n(B
$B2P(B
$B?e(B
$BLZ(B
$B6b(B
$BEZ(B
#
# Long weekday names
#
Sun
Mon
Tue
Wed
Thu
Fri
Sat
#
# X_fmt
#
%H$B;~(B%M$BJ,(B%S$BIC(B
#
# x_fmt
#
%y$BG/(B%m$B7n(B%d$BF|(B
#
# c_fmt
#
%A %B %e %H:%M:%S %Y
#
# am
#
$B8aA0(B
#
# pm
#
$B8a8e(B
#
# date_fmt
#
%Y$BG/(B%b$B7n(B%e$BF|(B (%a) %X %Z
-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --

  $B$3$NDj5A$r;H$&$H!"(Bcal $B$O(B %B $B$H(B %a $B$r;H$C$F$$$k$N$G!"=PNO$,!"(B

	      Jan 1997
	$BF|(B $B7n(B $B2P(B $B?e(B $BLZ(B $B6b(B $BEZ(B
	          1  2  3  4
	 5  6  7  8  9 10 11
	12 13 14 15 16 17 18
	19 20 21 22 23 24 25
	26 27 28 29 30 31

$B$H$J$C$F!"$A$g$C$HJQ$J$s$G$9$1$I$M!#(B

  $B$A$g$C$H$@$1!"$3$NDj5A$r;H$C$F!"F|K\8lI=<($5$l$k$h$&$K$7$F$_$^$7$?!#(B
cal, who, ls $B$G$9!#(B
  ja_JP.EUC $B$+$I$&$+$rH=Dj$7$F%U%)!<%^%C%H$r@ZBX$($k$h$&$K$7$F$$$^$9!#(B
locale $B$NH=Dj$,F~$k$N$O;EJ}$,$J$$$H$7$F!"%=!<%9Cf$K(B 2bytes $B%3!<%I$,F~(B
$B$i$6$k$rF@$J$$$N$G!"$A$g$C$HG<F@$,$$$+$J$$$G$9!#(B:-(
  $B>&MQ(B OS $B$C$F!"$3$s$J$3$H$d$C$F$k$N$+$J$!(B?

-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --
diff -ur org/usr.bin/cal/cal.c usr.bin/cal/cal.c
--- org/usr.bin/cal/cal.c	Thu Jan 25 07:50:24 1996
+++ usr.bin/cal/cal.c	Wed Jan 15 15:50:35 1997
@@ -179,7 +179,10 @@
 
 	for (i = 0; i < 12; i++) {
 		zero_tm.tm_mon = i;
-		strftime(buf, sizeof(buf), "%B", &zero_tm);
+		if ( strcmp(setlocale(LC_TIME, NULL), "ja_JP.EUC") == 0 )
+			strftime(buf, sizeof(buf), "%b$B7n(B", &zero_tm);
+		    else
+			strftime(buf, sizeof(buf), "%B", &zero_tm);
 		month_names[i] = strdup(buf);
 	}
 	for (i = 0; i < 7; i++) {
@@ -213,7 +216,10 @@
 	char *p, lineout[30];
 
 	day_array(month, year, days);
-	len = sprintf(lineout, "%s %d", month_names[month - 1], year);
+	if ( strcmp(setlocale(LC_TIME, NULL), "ja_JP.EUC") == 0 )
+	    len = sprintf(lineout, "%d$BG/(B %s", year, month_names[month - 1]);
+	else
+	    len = sprintf(lineout, "%s %d", month_names[month - 1], year);
 	(void)printf("%*s%s\n%s\n",
 	    ((julian ? J_WEEK_LEN : WEEK_LEN) - len) / 2, "",
 	    lineout, julian ? j_day_headings : day_headings);
@@ -235,7 +241,10 @@
 	int days[12][MAXDAYS];
 	char *p, lineout[80];
 
-	(void)sprintf(lineout, "%d", year);
+	if ( strcmp(setlocale(LC_TIME, NULL), "ja_JP.EUC") == 0 )
+		(void)sprintf(lineout, "%d$BG/(B", year);
+	    else
+		(void)sprintf(lineout, "%d", year);
 	center(lineout, J_WEEK_LEN * 2 + J_HEAD_SEP, 0);
 	(void)printf("\n\n");
 	for (i = 0; i < 12; i++)
@@ -270,7 +279,10 @@
 	int days[12][MAXDAYS];
 	char *p, lineout[80];
 
-	(void)sprintf(lineout, "%d", year);
+	if ( strcmp(setlocale(LC_TIME, NULL), "ja_JP.EUC") == 0 )
+	    (void)sprintf(lineout, "%d$BG/(B", year);
+	else
+	    (void)sprintf(lineout, "%d", year);
 	center(lineout, WEEK_LEN * 3 + HEAD_SEP * 2, 0);
 	(void)printf("\n\n");
 	for (i = 0; i < 12; i++)
-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --

-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --
diff -ur org/usr.bin/who/who.c usr.bin/who/who.c
--- org/src/usr.bin/who/who.c	Tue Oct 24 13:06:02 1995
+++ usr.bin/who/who.c	Wed Jan 15 16:49:01 1997
@@ -115,8 +115,15 @@
 
 	(void)printf("%-*.*s %-*.*s", UT_NAMESIZE, UT_NAMESIZE, up->ut_name,
 	    UT_LINESIZE, UT_LINESIZE, up->ut_line);
-	(void)strftime(buf, sizeof(buf), "%c", localtime(&up->ut_time));
-	(void)printf("%.12s", buf + 4);
+	if ( strcmp(setlocale(LC_TIME, NULL), "ja_JP.EUC") == 0 ) {
+	    (void)strftime(buf, sizeof(buf), "%b$B7n(B %e$BF|(B %H$B;~(B%M$BJ,(B",
+			   localtime(&up->ut_time));
+	    (void)printf("%s", buf);
+	} else {
+	    (void)strftime(buf, sizeof(buf), "%b %e %H:%M",
+			   localtime(&up->ut_time));
+	    (void)printf("%.12s", buf);
+	}
 	if (*up->ut_host)
 		printf("\t(%.*s)", UT_HOSTSIZE, up->ut_host);
 	(void)putchar('\n');
-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --

-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --
diff -ur org/bin/ls/Makefile bin/ls/Makefile
--- org/bin/ls/Makefile	Sat Sep 24 11:55:51 1994
+++ bin/ls/Makefile	Tue Jan 14 23:46:55 1997
@@ -3,5 +3,6 @@
 
 PROG=	ls
 SRCS=	cmp.c stat_flags.c ls.c print.c util.c
+LDADD+=-lxpg4
 
 .include <bsd.prog.mk>
diff -ur org/bin/ls/print.c bin/ls/print.c
--- org/bin/ls/print.c	Sat Jan 20 19:31:14 1996
+++ bin/ls/print.c	Wed Jan 15 02:02:07 1997
@@ -53,6 +53,7 @@
 #include <string.h>
 #include <time.h>
 #include <unistd.h>
+#include <locale.h>
 
 #include "ls.h"
 #include "extern.h"
@@ -230,24 +231,27 @@
 	time_t ftime;
 {
 	int i;
+	char *fmt;
 	char longstring[80];
 
-	strftime(longstring, sizeof(longstring), "%c", localtime(&ftime));
-	for (i = 4; i < 11; ++i)
-		(void)putchar(longstring[i]);
-
 #define	SIXMONTHS	((365 / 2) * 86400)
-	if (f_sectime)
-		for (i = 11; i < 24; i++)
-			(void)putchar(longstring[i]);
-	else if (ftime + SIXMONTHS > time(NULL))
-		for (i = 11; i < 16; ++i)
-			(void)putchar(longstring[i]);
-	else {
-		(void)putchar(' ');
-		for (i = 20; i < 24; ++i)
-			(void)putchar(longstring[i]);
+	if ( strcmp(setlocale(LC_TIME, NULL), "ja_JP.EUC") == 0 ) {
+		if (f_sectime)
+			fmt ="%b$B7n(B %e$BF|(B %H:%M:%S %Y$BG/(B";
+		else if (ftime + SIXMONTHS > time(NULL))
+			fmt ="%b$B7n(B %e$BF|(B  %H:%M";
+		else
+			fmt ="%b$B7n(B %e$BF|(B %Y$BG/(B";
+	} else {
+		if (f_sectime)
+			fmt ="%b %e %H:%M:%S %Y";
+		else if (ftime + SIXMONTHS > time(NULL))
+			fmt ="%b %e %H:%M";
+		else
+			fmt ="%b %e  %Y";
 	}
+	strftime(longstring, sizeof(longstring), fmt, localtime(&ftime));
+	fputs(longstring, stdout);
 	(void)putchar(' ');
 }
 
-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --

--
$BG_K\(B $BH%(B $B!w(B $B%$%s%?!<%M%C%H8_=u2q2#IM(B
ume@imasy.or.jp  ume@iabs.hitachi.co.jp  http://www.imasy.or.jp/~ume/
$B%W%m%0%i%`$O=q$$$??M$N0U?^$G$O$J$/=q$+$l$?DL$jF0$/(B
