Hidetaka Iwai
tyuyu****@debia*****
2005年 4月 30日 (土) 17:06:36 JST
岩井です。 kanou****@khdd***** wrote: Message-ID: <20050****@lists*****> > 以下のような作業を手伝ってくださる開発協力者を募集しています。 > ・各種プラットフォーム上でのバイナリ作成 > ・バグ出しのための試用とバグ修正 > ・文字定義の改良 (とくに汚い文字) > ・その他いろいろ RedHat 7.3 上で試用してみました。FontForge は 2005/04/30 の cvs 幹、パッ チは 4/29 のものです。以下、気になった事を列挙します。 1. fontforge/autotrace.c の FindLispName() について、eaccess(2) をサポー トしていないプラットフォームのために、configure.in で AC_CHECK_FUNC を使って eaccess の有無を判別させた方が良いのではないか? 2. サンプルファイル(prim-sample.l.gz) を開こうとすると fontforge/sfd.c の utf7_enc() で SIGSEGV になる。utf7_u_strcpy() で確保している buf が少ないのではないか? 2. については、Unichar 一文字毎に base64 エンコードに出たり入ったりす るとすれば、16 ビット を 6 ビット毎にエンコードして 3 + 前後の'+' '-' の一文字当たり最大 5 バイト必要なように思いますが、必要な文字数 の最適な出し方はちょっとわかりません。 参考までに(拙劣な)パッチを添付します。 regards, -- Hidetaka Iwai tyuyu****@debia***** -------------- next part -------------- diff -urN tmp2/configure.in tmp/configure.in --- tmp2/configure.in Sat Apr 30 16:35:44 2005 +++ tmp/configure.in Sat Apr 30 12:09:12 2005 @@ -201,6 +201,7 @@ dnl older libc's don't have snprintf AC_CHECK_FUNC(snprintf, : , AC_DEFINE(_NO_SNPRINTF)) +AC_CHECK_FUNC(eaccess, : , AC_DEFINE(_NO_EACCESS)) AC_C_CONST AC_PATH_XTRA diff -urN tmp2/fontforge/autotrace.c tmp/fontforge/autotrace.c --- tmp2/fontforge/autotrace.c Sat Apr 30 16:36:00 2005 +++ tmp/fontforge/autotrace.c Sat Apr 30 12:14:29 2005 @@ -262,8 +262,14 @@ static char *FindLispName(void) { if ( lispname==NULL ) lispname = getenv("LISP"); - if ( lispname==NULL && eaccess(default_lisp_name, X_OK)==0 ) +#if defined(_NO_EACCESS) + /* I think it should use, at least, euidaccess, but I have no idea.. */ + if ( lispname==NULL && access(default_lisp_name, X_OK)==0 ) +#else + if ( lispname==NULL && eaccess(default_lisp_name, X_OK)==0 ) +#endif lispname = default_lisp_name; + return lispname; } diff -urN tmp2/fontforge/sfd.c tmp/fontforge/sfd.c --- tmp2/fontforge/sfd.c Sat Apr 30 16:36:00 2005 +++ tmp/fontforge/sfd.c Sat Apr 30 16:23:53 2005 @@ -149,8 +149,10 @@ static char *u2utf7_copy(const unichar_t *ubuf) { int len = u_strlen(ubuf); char *buf;; - +#if 0 if ((buf=galloc(len*sizeof(unichar_t)))==NULL) +#endif + if ((buf=galloc(len*5))==NULL) return NULL; utf7_u_strcpy(buf,ubuf); return buf;