Etsushi Kato
ekato****@ees*****
2005年 2月 13日 (日) 10:09:05 JST
こんにちは。加藤です。 On Sun, Feb 13, 2005 at 07:29:43AM +0900, Konosuke Watanabe <nosuk****@csc*****> wrote: > uim-0.4.6正式リリースが近いようなので,Solarisでもビルドでき > るかどうか,r623で試してみました.残念ながらそのままではビル > ドできなかったのですが,あれこれいじった結果,なんとか動くよ > うになったので報告します. 報告ありがとうございます。 > まず,uim-helper.c で使われてる sig_tですが,これはSolarisに > はないみたいです. > > 単なるsignalハンドラだと信じて,とりあえずここは, > > void (*old_sigpipe) (int); > > と置き換えて切りぬけてみました. OK です。ちょっと調べてポータブルな書き方に変えてみます。 > それから,uim-ximの中で使われているstrsepなんですが,自前の > 場合,util.hの中で「extern "C"」しないとuim-ximがリンクに失 > 敗します・・・. 忘れてました… > が,これだけだとまだだめで,自前strsepの関数名を「uim_strsep」 > のように「uim」で始まる名前にしないとuim-xim からリンクでき > ませんでした. なるほど。libuim のほうは strtok にしようか迷ったんですよね… > とりあえず locale.cppのget_valid_localesで,localesのNULLチェッ > クをつけたところ先に進むようになりました. > が,まだだめで,今度はasprintf周辺で落ちてしまいます. 一つ目の vsnprintf に渡す NULL を (char *)NULL にしても落ちますか? > +++ util.cpp 2005-02-13 04:11:12.000000000 +0900 > @@ -85,9 +85,10 @@ > int vasprintf(char **ret, const char *fmt, va_list ap) > { > int len; > + char c; > > - len = vsnprintf(NULL, 0, fmt, ap); > - if (len <= 0) > + len = vsnprintf(&c, 1, fmt, ap); > + if (len < 0) > return len; > > (*ret) = (char *)malloc(len + 1); > 動かすためにいじった箇所の差分をメールに添付します. ありがとうございました。すぐ修正してみます。 -- Etsushi Kato ekato****@ees*****