[Anthy-dev 1814] Re: uim-0.4.6alpha on Solaris8

アーカイブの一覧に戻る

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*****



Anthy-dev メーリングリストの案内
アーカイブの一覧に戻る