From: WATANABE Tetsuya Date: 2003-03-04T16:00:48+09:00 Subject: [ruby-dev:19736] Re: [1.8.0 preview2] HP-UX 11.11 渡辺哲也です。 In message "[ruby-dev:19732] Re: [1.8.0 preview2] HP-UX 11.11" on 03/03/04, WATANABE Hirofumi さん writes: |わたなべです。 |それはちょっと想像外でした。ac_cv_c_inline=noとします。 お願いします。 |> HP-UX の古いシステムでは strftime(3) が実装されてい |> ないと思います(HP-UX 10.X など)。この辺のことを考え |> ると、strftime.c についてコンパイルできるようにする |> のがいいのでしょうね。私のほうですこし確認してみます。 | |HP-UXのときは単純に宣言をやめればよさそうです。 はい。 古い HP-UX 10.x での回避策として、コンパイラだけでも パッチをあてるという対応も可能なのですが、これが現実 的か? というと、けっこうモジュールが大きいので、難し い場合もありそうです。目的が strftime(3) を使うためだ けということであればなおさら。 私のほうで、strftime.c へのとりあえずのパッチを作って みました。HP-UX の場合 extern char *tzname[2]; のサポートはありますが extern 変数 altzone は使えませ ん。このため、結局 gettimeofday(2) からひっぱってくる 形になってしまいます。ちょっと汚いのですが、とりあえ ず機能するようにしてみました。 ------------------------------ --- strftime.c.org 2002-12-15 22:52:48.000000000 +0900 +++ strftime.c 2003-03-04 15:30:52.000000000 +0900 @@ -121,9 +121,13 @@ #ifdef SOLARIS extern long timezone, altzone; #else +#ifdef __hpux +extern long timezone; +#else extern int timezone, altzone; #endif #endif +#endif #undef min /* just in case */ @@ -189,6 +193,11 @@ extern char *timezone(); struct timeval tv; struct timezone zone; +#else +#ifdef __hpux + struct timeval tv; + struct timezone zone; +#endif #endif /* HAVE_TZNAME */ #endif /* HAVE_TM_NAME */ #endif /* HAVE_TM_ZONE */ @@ -418,7 +427,12 @@ * Systems with tzname[] probably have timezone as * secs west of GMT. Convert to mins east of GMT. */ +#ifdef __hpux + gettimeofday(&tv, &zone); + off = -zone.tz_minuteswest; +#else off = -(daylight ? timezone : altzone) / 60; +#endif #else /* !HAVE_TZNAME */ gettimeofday(&tv, &zone); off = -zone.tz_minuteswest; ------------------------------