蝉は、やがて死ぬる午後に気づいた。ああ、私たち、もっと仕合せになってよかったのだ。:2003年04月03日分

2003/04/03(Thu)

mklocale is not unsigned 32bit clean

@読んでみた

調べてみりゃつまんない理由ですた。

Index: lex.l
===================================================================
RCS file: /home/cvs/NetBSD/src/usr.bin/mklocale/lex.l,v
retrieving revision 1.8
diff -u -r1.8 lex.l
--- lex.l	10 Mar 2003 21:18:50 -0000	1.8
+++ lex.l	3 Apr 2003 07:54:20 -0000
@@ -84,11 +84,11 @@
 '\\v'				{ yylval.rune = '\v';
 				  return(RUNE); }
 
-0x{XDIGIT}+			{ yylval.rune = strtol(yytext, 0, 16);
+0x{XDIGIT}+			{ yylval.rune = strtoul(yytext, 0, 16);
 				  return(RUNE); }
-0{ODIGIT}+			{ yylval.rune = strtol(yytext, 0, 8);
+0{ODIGIT}+			{ yylval.rune = strtoul(yytext, 0, 8);
 				  return(RUNE); }
-{DIGIT}+			{ yylval.rune = strtol(yytext, 0, 10);
+{DIGIT}+			{ yylval.rune = strtoul(yytext, 0, 10);
 				  return(RUNE); }
 
 

uint32_t v = (__nbrune_t)(wchar_t)v として扱うのであれば
result = LONG_MAX errno = ERANGEで32bit目が
落ちてしまうstrtolではダメ。strtoulでつな。
なんとか時間作って週末までにはzh_CN.GB18030.srcと一緒にsend-prする予定。
それが終ったら次はHZ+(ある程度できてるんだけど)ですな。

@上のpatchだけじゃ

せぐぽって落ちるな。 __nbrune_tをuint32_tにするのを忘れてたわ。

@つーか

こりゃ動くようにするの大変だわ...

@というわけで

とりあえずwchar_tを32bit clean にするpatch。近いうちに投げます。
投げマスタ