w3m-0.5.3

久々に w3m をビルドする必要が出てきたので LFS-SVN20111223 (Linux-3.0.5, glibc-2.14, etc.) をベースに、BLFSブックにて示される w3m-0.5.2 をビルドしようとしてエラー。ん? glibc-2.14 の影響? Linux-3.x.x の影響?

w3m のアップストリームを確認したら w3m-0.5.3 になっていたため、こちらをビルドするも、同様のエラー:

funcname.tab updated
sort funcname.tab | gawk -f ./funcname1.awk > funcname1.h
gcc  -I. -I. -g -O2 -I./libwc    -DHAVE_CONFIG_H -DAUXBIN_DIR=\"/usr/lib/w3m\" -
DCGIBIN_DIR=\"/usr/lib/w3m/cgi-bin\" -DHELP_DIR=\"/usr/share/w3m\" -DETC_DIR=\"/
etc\" -DCONF_DIR=\"/etc/w3m\" -DRC_DIR=\"~/.w3m\" -DLOCALEDIR=\"/usr/share/local
e\"   -c -o main.o main.c
In file included from html.h:10:0,
                 from fm.h:39,
                 from main.c:3:
istream.h:23:8: エラー: ‘struct file_handle’ の再定義です
/usr/include/bits/fcntl.h:254:8: 備考: 元々はここで定義されました
main.c: 関数 ‘getChar’ 内:
main.c:2264:5: 警告: 互換性のないポインタ型から 1 番目の ‘wtf_parse1’ の引数に
渡しています [デフォルトで有効]
./libwc/wtf.h:71:19: 備考: expected ‘wc_uchar **’ but argument is of type ‘ch
ar **’
make: *** [main.o] エラー 1

opensuse にてパッチがあがっている:
https://build.opensuse.org/package/view_file?file=w3m-fh-def.patch&package=w3m&project=network&rev=02bc48adba1f62318d8c93eacb2aaab6

上を参考にパッチを作成して再ビルド。正常ビルドできたが、これで良いのかどうなのか・・・

diff -Naur w3m-0.5.3.orig/istream.c w3m-0.5.3/istream.c
--- w3m-0.5.3.orig/istream.c    2011-01-04 18:22:22.000000000 +0900
+++ w3m-0.5.3/istream.c 2011-12-29 11:11:45.606166398 +0900
@@ -22,8 +22,8 @@
 static void basic_close(int *handle);
 static int basic_read(int *handle, char *buf, int len);

-static void file_close(struct file_handle *handle);
-static int file_read(struct file_handle *handle, char *buf, int len);
+static void file_close(struct w3m_file_handle *handle);
+static int file_read(struct w3m_file_handle *handle, char *buf, int len);

 static int str_read(Str handle, char *buf, int len);

@@ -114,7 +114,7 @@
     stream = New(union input_stream);
     init_base_stream(&stream->base, STREAM_BUF_SIZE);
     stream->file.type = IST_FILE;
-    stream->file.handle = New(struct file_handle);
+    stream->file.handle = New(struct w3m_file_handle);
     stream->file.handle->f = f;
     if (closep)
        stream->file.handle->close = closep;
@@ -658,13 +658,13 @@
 }

 static void
-file_close(struct file_handle *handle)
+file_close(struct w3m_file_handle *handle)
 {
     handle->close(handle->f);
 }

 static int
-file_read(struct file_handle *handle, char *buf, int len)
+file_read(struct w3m_file_handle *handle, char *buf, int len)
 {
     return fread(buf, 1, len, handle->f);
 }
diff -Naur w3m-0.5.3.orig/istream.h w3m-0.5.3/istream.h
--- w3m-0.5.3.orig/istream.h    2003-10-21 01:41:56.000000000 +0900
+++ w3m-0.5.3/istream.h 2011-12-29 11:11:59.436167181 +0900
@@ -20,7 +20,7 @@

 typedef struct stream_buffer *StreamBuffer;

-struct file_handle {
+struct w3m_file_handle {
     FILE *f;
     void (*close) ();
 };
@@ -53,7 +53,7 @@

 struct file_stream {
     struct stream_buffer stream;
-    struct file_handle *handle;
+    struct w3m_file_handle *handle;
     char type;
     char iseos;
     int (*read) ();
カテゴリー: LFS, ビルドエラー パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です