summaryrefslogtreecommitdiff
path: root/network/w3m
diff options
context:
space:
mode:
authorMatteo Bernardini <ponce@slackbuilds.org>2012-09-23 17:59:23 +0200
committerRobby Workman <rworkman@slackbuilds.org>2012-09-24 22:53:31 -0500
commitce3950f8bd373932f10584519d91491b6a485a48 (patch)
treee3f9731fac56fa57d6f1c07b29dc4a5e1f7ec8ea /network/w3m
parent6e1757e71076dacc15716626f84611618b0f5704 (diff)
downloadslackbuilds-ce3950f8bd373932f10584519d91491b6a485a48.tar.gz
network/w3m: Added various patches.
Signed-off-by: Matteo Bernardini <ponce@slackbuilds.org>
Diffstat (limited to 'network/w3m')
-rw-r--r--network/w3m/patches/w3m-0.5.2-gc72.patch27
-rw-r--r--network/w3m/patches/w3m-0.5.3-button.patch439
-rw-r--r--network/w3m/patches/w3m-0.5.3-gdk-pixbuf.patch46
-rw-r--r--network/w3m/patches/w3m-0.5.3-glibc214.patch58
-rw-r--r--network/w3m/patches/w3m-0.5.3-underlinking.patch15
-rw-r--r--network/w3m/w3m.SlackBuild5
6 files changed, 589 insertions, 1 deletions
diff --git a/network/w3m/patches/w3m-0.5.2-gc72.patch b/network/w3m/patches/w3m-0.5.2-gc72.patch
new file mode 100644
index 0000000000..f2df44f06b
--- /dev/null
+++ b/network/w3m/patches/w3m-0.5.2-gc72.patch
@@ -0,0 +1,27 @@
+diff -Naurb w3m-0.5.2.orig/main.c w3m-0.5.2/main.c
+--- w3m-0.5.2.orig/main.c 2007-05-31 10:19:50.000000000 +0900
++++ w3m-0.5.2/main.c 2009-11-09 08:20:02.184953443 +0900
+@@ -312,7 +312,11 @@
+ lock = 0;
+ }
+ }
++#if GC_VERSION_MAJOR >= 7 && GC_VERSION_MINOR >= 2
++ else if (orig_GC_warn_proc = GC_get_warn_proc())
++#else
+ else if (orig_GC_warn_proc)
++#endif
+ orig_GC_warn_proc(msg, arg);
+ else
+ fprintf(stderr, msg, (unsigned long)arg);
+@@ -842,7 +846,11 @@
+ mySignal(SIGPIPE, SigPipe);
+ #endif
+
++#if GC_VERSION_MAJOR >= 7 && GC_VERSION_MINOR >= 2
++ GC_set_warn_proc(wrap_GC_warn_proc);
++#else
+ orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc);
++#endif
+ err_msg = Strnew();
+ if (load_argc == 0) {
+ /* no URL specified */
diff --git a/network/w3m/patches/w3m-0.5.3-button.patch b/network/w3m/patches/w3m-0.5.3-button.patch
new file mode 100644
index 0000000000..a645e25637
--- /dev/null
+++ b/network/w3m/patches/w3m-0.5.3-button.patch
@@ -0,0 +1,439 @@
+Description: Support the button element as defined in HTML 4.01
+Origin: upstream, http://www.sic.med.tohoku.ac.jp/~satodai/w3m-dev/201009.month/4411.html
+Bug-Debian: http://bugs.debian.org/136810
+
+Index: file.c
+===================================================================
+RCS file: /cvsroot/w3m/w3m/file.c,v
+retrieving revision 1.264
+diff -u -r1.264 file.c
+--- w3m.orig/file.c 3 Aug 2010 10:02:16 -0000 1.264
++++ w3m/file.c 17 Sep 2010 12:18:55 -0000
+@@ -2467,6 +2467,7 @@
+ bcopy((void *)&obuf->anchor, (void *)&obuf->bp.anchor,
+ sizeof(obuf->anchor));
+ obuf->bp.img_alt = obuf->img_alt;
++ obuf->bp.input_alt = obuf->input_alt;
+ obuf->bp.in_bold = obuf->in_bold;
+ obuf->bp.in_italic = obuf->in_italic;
+ obuf->bp.in_under = obuf->in_under;
+@@ -2484,6 +2485,7 @@
+ bcopy((void *)&obuf->bp.anchor, (void *)&obuf->anchor,
+ sizeof(obuf->anchor));
+ obuf->img_alt = obuf->bp.img_alt;
++ obuf->input_alt = obuf->bp.input_alt;
+ obuf->in_bold = obuf->bp.in_bold;
+ obuf->in_italic = obuf->bp.in_italic;
+ obuf->in_under = obuf->bp.in_under;
+@@ -2727,7 +2729,7 @@
+ Str line = obuf->line, pass = NULL;
+ char *hidden_anchor = NULL, *hidden_img = NULL, *hidden_bold = NULL,
+ *hidden_under = NULL, *hidden_italic = NULL, *hidden_strike = NULL,
+- *hidden_ins = NULL, *hidden = NULL;
++ *hidden_ins = NULL, *hidden_input, *hidden = NULL;
+
+ #ifdef DEBUG
+ if (w3m_debug) {
+@@ -2759,6 +2761,12 @@
+ hidden = hidden_img;
+ }
+ }
++ if (obuf->input_alt.in) {
++ if ((hidden_input = has_hidden_link(obuf, HTML_INPUT_ALT)) != NULL) {
++ if (!hidden || hidden_input < hidden)
++ hidden = hidden_input;
++ }
++ }
+ if (obuf->in_bold) {
+ if ((hidden_bold = has_hidden_link(obuf, HTML_B)) != NULL) {
+ if (!hidden || hidden_bold < hidden)
+@@ -2810,6 +2818,8 @@
+ Strcat_charp(line, "</a>");
+ if (obuf->img_alt && !hidden_img)
+ Strcat_charp(line, "</img_alt>");
++ if (obuf->input_alt.in && !hidden_input)
++ Strcat_charp(line, "</input_alt>");
+ if (obuf->in_bold && !hidden_bold)
+ Strcat_charp(line, "</b>");
+ if (obuf->in_italic && !hidden_italic)
+@@ -3020,6 +3030,18 @@
+ Strcat_charp(tmp, "\">");
+ push_tag(obuf, tmp->ptr, HTML_IMG_ALT);
+ }
++ if (!hidden_input && obuf->input_alt.in) {
++ Str tmp;
++ if (obuf->input_alt.hseq > 0)
++ obuf->input_alt.hseq = - obuf->input_alt.hseq;
++ tmp = Sprintf("<INPUT_ALT hseq=\"%d\" fid=\"%d\" name=\"%s\" type=\"%s\" value=\"%s\">",
++ obuf->input_alt.hseq,
++ obuf->input_alt.fid,
++ obuf->input_alt.name->ptr,
++ obuf->input_alt.type->ptr,
++ obuf->input_alt.value->ptr);
++ push_tag(obuf, tmp->ptr, HTML_INPUT_ALT);
++ }
+ if (!hidden_bold && obuf->in_bold)
+ push_tag(obuf, "<B>", HTML_B);
+ if (!hidden_italic && obuf->in_italic)
+@@ -3730,6 +3752,63 @@
+ }
+
+ Str
++process_button(struct parsed_tag *tag)
++{
++ Str tmp = NULL;
++ char *p, *q, *r, *qq = NULL;
++ int qlen, v;
++
++ if (cur_form_id < 0) {
++ char *s = "<form_int method=internal action=none>";
++ tmp = process_form(parse_tag(&s, TRUE));
++ }
++ if (tmp == NULL)
++ tmp = Strnew();
++
++ p = "submit";
++ parsedtag_get_value(tag, ATTR_TYPE, &p);
++ q = NULL;
++ parsedtag_get_value(tag, ATTR_VALUE, &q);
++ r = "";
++ parsedtag_get_value(tag, ATTR_NAME, &r);
++
++ v = formtype(p);
++ if (v == FORM_UNKNOWN)
++ return NULL;
++
++ if (!q) {
++ switch (v) {
++ case FORM_INPUT_SUBMIT:
++ case FORM_INPUT_BUTTON:
++ q = "SUBMIT";
++ break;
++ case FORM_INPUT_RESET:
++ q = "RESET";
++ break;
++ }
++ }
++ if (q) {
++ qq = html_quote(q);
++ qlen = strlen(q);
++ }
++
++ // Strcat_charp(tmp, "<pre_int>");
++ Strcat(tmp, Sprintf("<input_alt hseq=\"%d\" fid=\"%d\" type=%s "
++ "name=\"%s\" value=\"%s\">",
++ cur_hseq++, cur_form_id, p, html_quote(r), qq));
++ return tmp;
++}
++
++Str
++process_n_button(void)
++{
++ Str tmp = Strnew();
++ Strcat_charp(tmp, "</input_alt>");
++ // Strcat_charp(tmp, "</pre_int>");
++ return tmp;
++}
++
++Str
+ process_select(struct parsed_tag *tag)
+ {
+ Str tmp = NULL;
+@@ -4859,7 +4938,35 @@
+ if (i > obuf->bottom_margin)
+ obuf->bottom_margin = i;
+ }
++ if (parsedtag_get_value(tag, ATTR_HSEQ, &hseq)) {
++ obuf->input_alt.hseq = hseq;
++ }
++ if (parsedtag_get_value(tag, ATTR_FID, &i)) {
++ obuf->input_alt.fid = i;
++ }
++ if (parsedtag_get_value(tag, ATTR_TYPE, &p)) {
++ obuf->input_alt.type = Strnew_charp(p);
++ }
++ if (parsedtag_get_value(tag, ATTR_VALUE, &p)) {
++ obuf->input_alt.value = Strnew_charp(p);
++ }
++ if (parsedtag_get_value(tag, ATTR_NAME, &p)) {
++ obuf->input_alt.name = Strnew_charp(p);
++ }
++ obuf->input_alt.in = 1;
+ return 0;
++ case HTML_N_INPUT_ALT:
++ if (obuf->input_alt.in) {
++ if (!close_effect0(obuf, HTML_INPUT_ALT))
++ push_tag(obuf, "</input_alt>", HTML_N_INPUT_ALT);
++ obuf->input_alt.hseq = 0;
++ obuf->input_alt.fid = -1;
++ obuf->input_alt.in = 0;
++ obuf->input_alt.type = NULL;
++ obuf->input_alt.name = NULL;
++ obuf->input_alt.value = NULL;
++ }
++ return 1;
+ case HTML_TABLE:
+ close_anchor(h_env, obuf);
+ obuf->table_level++;
+@@ -4968,6 +5075,16 @@
+ case HTML_INPUT:
+ close_anchor(h_env, obuf);
+ tmp = process_input(tag);
++ if (tmp)
++ HTMLlineproc1(tmp->ptr, h_env);
++ return 1;
++ case HTML_BUTTON:
++ tmp = process_button(tag);
++ if (tmp)
++ HTMLlineproc1(tmp->ptr, h_env);
++ return 1;
++ case HTML_N_BUTTON:
++ tmp = process_n_button();
+ if (tmp)
+ HTMLlineproc1(tmp->ptr, h_env);
+ return 1;
+@@ -5680,6 +5797,21 @@
+ putHmarker(buf->hmarklist, currentLn(buf),
+ hpos, hseq - 1);
+ }
++ else if (hseq < 0) {
++ int h = -hseq - 1;
++ int hpos = pos;
++ if (*str == '[')
++ hpos++;
++ if (buf->hmarklist &&
++ h < buf->hmarklist->nmark &&
++ buf->hmarklist->marks[h].invalid) {
++ buf->hmarklist->marks[h].pos = hpos;
++ buf->hmarklist->marks[h].line = currentLn(buf);
++ buf->hmarklist->marks[h].invalid = 0;
++ hseq = -hseq;
++ }
++ }
++
+ if (!form->target)
+ form->target = buf->baseTarget;
+ if (a_textarea &&
+@@ -6747,6 +6879,12 @@
+ obuf->nobr_level = 0;
+ bzero((void *)&obuf->anchor, sizeof(obuf->anchor));
+ obuf->img_alt = 0;
++ obuf->input_alt.hseq = 0;
++ obuf->input_alt.fid = -1;
++ obuf->input_alt.in = 0;
++ obuf->input_alt.type = NULL;
++ obuf->input_alt.name = NULL;
++ obuf->input_alt.value = NULL;
+ obuf->in_bold = 0;
+ obuf->in_italic = 0;
+ obuf->in_under = 0;
+@@ -6782,6 +6920,15 @@
+ push_tag(obuf, "</img_alt>", HTML_N_IMG_ALT);
+ obuf->img_alt = NULL;
+ }
++ if (obuf->input_alt.in) {
++ push_tag(obuf, "</input_alt>", HTML_N_INPUT_ALT);
++ obuf->input_alt.hseq = 0;
++ obuf->input_alt.fid = -1;
++ obuf->input_alt.in = 0;
++ obuf->input_alt.type = NULL;
++ obuf->input_alt.name = NULL;
++ obuf->input_alt.value = NULL;
++ }
+ if (obuf->in_bold) {
+ push_tag(obuf, "</b>", HTML_N_B);
+ obuf->in_bold = 0;
+Index: fm.h
+===================================================================
+RCS file: /cvsroot/w3m/w3m/fm.h,v
+retrieving revision 1.149
+diff -u -r1.149 fm.h
+--- w3m.orig/fm.h 20 Aug 2010 09:47:09 -0000 1.149
++++ w3m/fm.h 17 Sep 2010 12:18:55 -0000
+@@ -562,6 +562,13 @@
+ #define INIT_BUFFER_WIDTH ((_INIT_BUFFER_WIDTH > 0) ? _INIT_BUFFER_WIDTH : 0)
+ #define FOLD_BUFFER_WIDTH (FoldLine ? (INIT_BUFFER_WIDTH + 1) : -1)
+
++struct input_alt_attr {
++ int hseq;
++ int fid;
++ int in;
++ Str type, name, value;
++};
++
+ typedef struct {
+ int pos;
+ int len;
+@@ -569,6 +576,7 @@
+ long flag;
+ Anchor anchor;
+ Str img_alt;
++ struct input_alt_attr input_alt;
+ char fontstat[FONTSTAT_SIZE];
+ short nobr_level;
+ Lineprop prev_ctype;
+@@ -591,6 +599,7 @@
+ short nobr_level;
+ Anchor anchor;
+ Str img_alt;
++ struct input_alt_attr input_alt;
+ char fontstat[FONTSTAT_SIZE];
+ char fontstat_stack[FONT_STACK_SIZE][FONTSTAT_SIZE];
+ int fontstat_sp;
+Index: html.c
+===================================================================
+RCS file: /cvsroot/w3m/w3m/html.c,v
+retrieving revision 1.32
+diff -u -r1.32 html.c
+--- w3m.orig/html.c 14 Aug 2010 01:29:40 -0000 1.32
++++ w3m/html.c 17 Sep 2010 12:18:55 -0000
+@@ -56,6 +56,9 @@
+ ATTR_CORE
+ };
+ #define MAXA_INPUT MAXA_CORE + 12
++unsigned char ALST_BUTTON[] =
++ { ATTR_TYPE, ATTR_VALUE, ATTR_NAME, ATTR_CORE };
++#define MAXA_BUTTON MAXA_CORE + 3
+ unsigned char ALST_TEXTAREA[] =
+ { ATTR_COLS, ATTR_ROWS, ATTR_NAME, ATTR_READONLY, ATTR_CORE };
+ #define MAXA_TEXTAREA MAXA_CORE + 4
+@@ -247,24 +250,24 @@
+ {"/bdo", NULL, 0, TFLG_END}, /* 121 HTML_N_BDO */
+ {"big", ALST_NOP, MAXA_NOP, 0}, /* 122 HTML_BIG */
+ {"/big", NULL, 0, TFLG_END}, /* 123 HTML_N_BIG */
+- {"button", ALST_NOP, MAXA_NOP, 0}, /* 124 HTML_BUTTON */
+- {"fieldset", ALST_NOP, MAXA_NOP, 0}, /* 125 HTML_FIELDSET */
+- {"/fieldset", NULL, 0, TFLG_END}, /* 126 HTML_N_FIELDSET */
+- {"iframe", ALST_NOP, MAXA_NOP, 0}, /* 127 HTML_IFRAME */
+- {"label", ALST_NOP, MAXA_NOP, 0}, /* 128 HTML_LABEL */
+- {"/label", NULL, 0, TFLG_END}, /* 129 HTML_N_LABEL */
+- {"legend", ALST_NOP, MAXA_NOP, 0}, /* 130 HTML_LEGEND */
+- {"/legend", NULL, 0, TFLG_END}, /* 131 HTML_N_LEGEND */
+- {"noscript", ALST_NOP, MAXA_NOP, 0}, /* 132 HTML_NOSCRIPT */
+- {"/noscript", NULL, 0, TFLG_END}, /* 133 HTML_N_NOSCRIPT */
+- {"object", ALST_NOP, MAXA_NOP, 0}, /* 134 HTML_OBJECT */
+- {"optgroup", ALST_NOP, MAXA_NOP, 0}, /* 135 HTML_OPTGROUP */
+- {"/optgroup", NULL, 0, TFLG_END}, /* 136 HTML_N_OPTGROUP */
+- {"param", ALST_NOP, MAXA_NOP, 0}, /* 137 HTML_PARAM */
+- {"small", ALST_NOP, MAXA_NOP, 0}, /* 138 HTML_SMALL */
+- {"/small", NULL, 0, TFLG_END}, /* 139 HTML_N_SMALL */
++ {"button", ALST_BUTTON, MAXA_BUTTON, 0}, /* 124 HTML_BUTTON */
++ {"/button", NULL, 0, TFLG_END}, /* 125 HTML_N_BUTTON */
++ {"fieldset", ALST_NOP, MAXA_NOP, 0}, /* 126 HTML_FIELDSET */
++ {"/fieldset", NULL, 0, TFLG_END}, /* 127 HTML_N_FIELDSET */
++ {"iframe", ALST_NOP, MAXA_NOP, 0}, /* 128 HTML_IFRAME */
++ {"label", ALST_NOP, MAXA_NOP, 0}, /* 129 HTML_LABEL */
++ {"/label", NULL, 0, TFLG_END}, /* 130 HTML_N_LABEL */
++ {"legend", ALST_NOP, MAXA_NOP, 0}, /* 131 HTML_LEGEND */
++ {"/legend", NULL, 0, TFLG_END}, /* 132 HTML_N_LEGEND */
++ {"noscript", ALST_NOP, MAXA_NOP, 0}, /* 133 HTML_NOSCRIPT */
++ {"/noscript", NULL, 0, TFLG_END}, /* 134 HTML_N_NOSCRIPT */
++ {"object", ALST_NOP, MAXA_NOP, 0}, /* 135 HTML_OBJECT */
++ {"optgroup", ALST_NOP, MAXA_NOP, 0}, /* 136 HTML_OPTGROUP */
++ {"/optgroup", NULL, 0, TFLG_END}, /* 137 HTML_N_OPTGROUP */
++ {"param", ALST_NOP, MAXA_NOP, 0}, /* 138 HTML_PARAM */
++ {"small", ALST_NOP, MAXA_NOP, 0}, /* 139 HTML_SMALL */
++ {"/small", NULL, 0, TFLG_END}, /* 140 HTML_N_SMALL */
+
+- {NULL, NULL, 0, 0}, /* 140 Undefined */
+ {NULL, NULL, 0, 0}, /* 141 Undefined */
+ {NULL, NULL, 0, 0}, /* 142 Undefined */
+ {NULL, NULL, 0, 0}, /* 143 Undefined */
+Index: html.h
+===================================================================
+RCS file: /cvsroot/w3m/w3m/html.h,v
+retrieving revision 1.31
+diff -u -r1.31 html.h
+--- w3m.orig/html.h 14 Aug 2010 01:29:40 -0000 1.31
++++ w3m/html.h 17 Sep 2010 12:18:55 -0000
+@@ -214,21 +214,22 @@
+ #define HTML_BIG 122
+ #define HTML_N_BIG 123
+ #define HTML_BUTTON 124
+-#define HTML_FIELDSET 125
+-#define HTML_N_FIELDSET 126
+-#define HTML_IFRAME 127
+-#define HTML_LABEL 128
+-#define HTML_N_LABEL 129
+-#define HTML_LEGEND 130
+-#define HTML_N_LEGEND 131
+-#define HTML_NOSCRIPT 132
+-#define HTML_N_NOSCRIPT 133
+-#define HTML_OBJECT 134
+-#define HTML_OPTGROUP 135
+-#define HTML_N_OPTGROUP 136
+-#define HTML_PARAM 137
+-#define HTML_SMALL 138
+-#define HTML_N_SMALL 139
++#define HTML_N_BUTTON 125
++#define HTML_FIELDSET 126
++#define HTML_N_FIELDSET 127
++#define HTML_IFRAME 128
++#define HTML_LABEL 129
++#define HTML_N_LABEL 130
++#define HTML_LEGEND 131
++#define HTML_N_LEGEND 132
++#define HTML_NOSCRIPT 133
++#define HTML_N_NOSCRIPT 134
++#define HTML_OBJECT 135
++#define HTML_OPTGROUP 136
++#define HTML_N_OPTGROUP 137
++#define HTML_PARAM 138
++#define HTML_SMALL 139
++#define HTML_N_SMALL 140
+
+ /* pseudo tag */
+ #define HTML_SELECT_INT 160
+Index: proto.h
+===================================================================
+RCS file: /cvsroot/w3m/w3m/proto.h,v
+retrieving revision 1.104
+diff -u -r1.104 proto.h
+--- w3m.orig/proto.h 25 Jul 2010 09:55:05 -0000 1.104
++++ w3m/proto.h 17 Sep 2010 12:18:55 -0000
+@@ -207,6 +207,8 @@
+ extern Str process_img(struct parsed_tag *tag, int width);
+ extern Str process_anchor(struct parsed_tag *tag, char *tagbuf);
+ extern Str process_input(struct parsed_tag *tag);
++extern Str process_button(struct parsed_tag *tag);
++extern Str process_n_button(void);
+ extern Str process_select(struct parsed_tag *tag);
+ extern Str process_n_select(void);
+ extern void feed_select(char *str);
+Index: table.c
+===================================================================
+RCS file: /cvsroot/w3m/w3m/table.c,v
+retrieving revision 1.58
+diff -u -r1.58 table.c
+--- w3m.orig/table.c 9 Aug 2010 11:59:19 -0000 1.58
++++ w3m/table.c 17 Sep 2010 12:18:55 -0000
+@@ -2878,6 +2878,14 @@
+ tmp = process_input(tag);
+ feed_table1(tbl, tmp, mode, width);
+ break;
++ case HTML_BUTTON:
++ tmp = process_button(tag);
++ feed_table1(tbl, tmp, mode, width);
++ break;
++ case HTML_N_BUTTON:
++ tmp = process_n_button();
++ feed_table1(tbl, tmp, mode, width);
++ break;
+ case HTML_SELECT:
+ tmp = process_select(tag);
+ if (tmp)
+Index: tagtable.tab
+===================================================================
+RCS file: /cvsroot/w3m/w3m/tagtable.tab,v
+retrieving revision 1.14
+diff -u -r1.14 tagtable.tab
+--- w3m.orig/tagtable.tab 14 Aug 2010 01:29:40 -0000 1.14
++++ w3m/tagtable.tab 17 Sep 2010 12:18:55 -0000
+@@ -176,6 +176,7 @@
+ big HTML_BIG
+ /big HTML_N_BIG
+ button HTML_BUTTON
++/button HTML_N_BUTTON
+ fieldset HTML_FIELDSET
+ /fieldset HTML_N_FIELDSET
+ iframe HTML_IFRAME
diff --git a/network/w3m/patches/w3m-0.5.3-gdk-pixbuf.patch b/network/w3m/patches/w3m-0.5.3-gdk-pixbuf.patch
new file mode 100644
index 0000000000..d41a699633
--- /dev/null
+++ b/network/w3m/patches/w3m-0.5.3-gdk-pixbuf.patch
@@ -0,0 +1,46 @@
+--- a/w3mimg/x11/x11_w3mimg.c 2004-11-08 18:14:06.000000000 +0100
++++ b/w3mimg/x11/x11_w3mimg.c 2012-05-19 06:31:08.908783927 +0200
+@@ -14,7 +14,7 @@
+ #elif defined(USE_GDKPIXBUF)
+ #if defined(USE_GTK2)
+ #include <glib-object.h>
+-#include <gdk/gdk.h>
++#include <gdk-pixbuf/gdk-pixbuf.h>
+ #include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
+ #else
+ #include <gdk-pixbuf/gdk-pixbuf-xlib.h>
+--- a/w3mimg/fb/fb_gdkpixbuf.c 2004-11-08 18:14:06.000000000 +0100
++++ b/w3mimg/fb/fb_gdkpixbuf.c 2012-05-20 05:06:07.744816661 +0200
+@@ -6,7 +6,7 @@
+ #include "config.h"
+ #if defined(USE_GTK2)
+ #include <glib-object.h>
+-#include <gdk/gdk.h>
++#include <gdk-pixbuf/gdk-pixbuf.h>
+ #endif
+ #include <gdk-pixbuf/gdk-pixbuf.h>
+ #include "fb.h"
+--- a/acinclude.m4 2011-01-04 10:22:18.000000000 +0100
++++ b/acinclude.m4 2012-05-20 05:15:36.158981506 +0200
+@@ -705,8 +705,8 @@ AC_DEFUN([AC_W3M_IMAGE],
+ IMGTARGETS="x11"
+ AC_DEFINE(USE_GDKPIXBUF)
+ AC_DEFINE(USE_GTK2)
+- IMGX11CFLAGS="`${PKG_CONFIG} --cflags gdk-pixbuf-2.0 gdk-pixbuf-xlib-2.0 gtk+-2.0`"
+- IMGX11LDFLAGS="`${PKG_CONFIG} --libs gdk-pixbuf-2.0 gdk-pixbuf-xlib-2.0 gtk+-2.0`"
++ IMGX11CFLAGS="`${PKG_CONFIG} --cflags gdk-pixbuf-2.0 gdk-pixbuf-xlib-2.0`"
++ IMGX11LDFLAGS="`${PKG_CONFIG} --libs gdk-pixbuf-2.0 gdk-pixbuf-xlib-2.0`"
+ elif test x"$have_gdkpixbuf" = xyes; then
+ AC_DEFINE(USE_W3MIMG_X11)
+ IMGOBJS="$IMGOBJS x11/x11_w3mimg.o"
+@@ -740,8 +740,8 @@ AC_DEFUN([AC_W3M_IMAGE],
+ IMGTARGETS="${IMGTARGETS} fb"
+ AC_DEFINE(USE_GDKPIXBUF)
+ AC_DEFINE(USE_GTK2)
+- IMGFBCFLAGS="`${PKG_CONFIG} --cflags gdk-pixbuf-2.0 gtk+-2.0`"
+- IMGFBLDFLAGS="`${PKG_CONFIG} --libs gdk-pixbuf-2.0 gtk+-2.0`"
++ IMGFBCFLAGS="`${PKG_CONFIG} --cflags gdk-pixbuf-2.0`"
++ IMGFBLDFLAGS="`${PKG_CONFIG} --libs gdk-pixbuf-2.0`"
+ elif test x"$have_gdkpixbuf" = xyes; then
+ AC_DEFINE(USE_W3MIMG_FB)
+ IMGOBJS="$IMGOBJS fb/fb_w3mimg.o fb/fb.o fb/fb_img.o"
diff --git a/network/w3m/patches/w3m-0.5.3-glibc214.patch b/network/w3m/patches/w3m-0.5.3-glibc214.patch
new file mode 100644
index 0000000000..84ab9d7d88
--- /dev/null
+++ b/network/w3m/patches/w3m-0.5.3-glibc214.patch
@@ -0,0 +1,58 @@
+--- a/istream.c.~1.27.~ 2011-01-04 18:22:22.000000000 +0900
++++ a/istream.c 2011-06-24 08:15:23.522990618 +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 afile_handle *handle);
++static int file_read(struct afile_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 afile_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 afile_handle *handle)
+ {
+ handle->close(handle->f);
+ }
+
+ static int
+-file_read(struct file_handle *handle, char *buf, int len)
++file_read(struct afile_handle *handle, char *buf, int len)
+ {
+ return fread(buf, 1, len, handle->f);
+ }
+--- a/istream.h.~1.12.~ 2003-10-21 01:41:56.000000000 +0900
++++ a/istream.h 2011-06-24 08:15:54.392991144 +0900
+@@ -20,7 +20,7 @@
+
+ typedef struct stream_buffer *StreamBuffer;
+
+-struct file_handle {
++struct afile_handle {
+ FILE *f;
+ void (*close) ();
+ };
+@@ -53,7 +53,7 @@
+
+ struct file_stream {
+ struct stream_buffer stream;
+- struct file_handle *handle;
++ struct afile_handle *handle;
+ char type;
+ char iseos;
+ int (*read) ();
diff --git a/network/w3m/patches/w3m-0.5.3-underlinking.patch b/network/w3m/patches/w3m-0.5.3-underlinking.patch
new file mode 100644
index 0000000000..1b034b46cb
--- /dev/null
+++ b/network/w3m/patches/w3m-0.5.3-underlinking.patch
@@ -0,0 +1,15 @@
+Description: Explicitly link w3mimgdisplay with -lX11 to build with gcc 4.5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Bug: https://sourceforge.net/tracker/?func=detail&aid=3126430&group_id=39518&atid=425441
+
+--- w3m-0.5.3.orig/Makefile.in 2011-01-04 18:22:18.000000000 +0900
++++ w3m-0.5.3/Makefile.in 2011-02-06 12:05:40.000000000 +0900
+@@ -199,7 +199,7 @@
+ $(CC) $(CFLAGS) -DDUMMY -c -o $@ $?
+
+ $(IMGDISPLAY): w3mimgdisplay.o $(ALIB) w3mimg/w3mimg.a
+- $(IMGLINK) $(CFLAGS) -o $(IMGDISPLAY) w3mimgdisplay.o w3mimg/w3mimg.a $(LDFLAGS) $(LIBS) $(IMGLDFLAGS)
++ $(IMGLINK) $(CFLAGS) -o $(IMGDISPLAY) w3mimgdisplay.o w3mimg/w3mimg.a $(LDFLAGS) $(LIBS) -lX11 $(IMGLDFLAGS)
+
+ w3mimgdisplay.o: w3mimgdisplay.c w3mimg/w3mimg.h
+ $(CC) $(CFLAGS) $(IMGCFLAGS) -o $@ -c $(srcdir)/w3mimgdisplay.c
diff --git a/network/w3m/w3m.SlackBuild b/network/w3m/w3m.SlackBuild
index 801a3d3131..4fe32af225 100644
--- a/network/w3m/w3m.SlackBuild
+++ b/network/w3m/w3m.SlackBuild
@@ -21,7 +21,7 @@
PRGNAM=w3m
VERSION=${VERSION:-0.5.3}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
@@ -68,6 +68,9 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Thanks go to gentoo for these patches
+for i in $CWD/patches/* ; do patch -p1 < $i ; done
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \