diff --git a/testing/w3m/APKBUILD b/testing/w3m/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..1576bd3c52badc0d41861ee70c1ef87549c033b7
--- /dev/null
+++ b/testing/w3m/APKBUILD
@@ -0,0 +1,67 @@
+pkgname=w3m
+pkgver=0.5.3
+pkgrel=0
+pkgdesc='Text-based Web browser, as well as pager'
+url='http://w3m.sourceforge.net/'
+license='custom'
+arch='i686 x86_64'
+makedepends="imlib2-dev openssl-dev gc-dev ncurses-dev"
+source="http://downloads.sourceforge.net/project/${pkgname}/${pkgname}/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.gz
+        form_unknown.patch
+        file_handle.patch
+        https.patch
+        gc72.patch"
+
+prepare() {
+	local i
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
+}
+
+build() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	./configure \
+		--prefix=/usr \
+		--libexecdir=/usr/lib \
+		--enable-image=fb \
+		--with-ssl \
+      --disable-nntp \
+      --disable-dict \
+      --disable-help-cgi \
+		--with-imagelib=imlib2 \
+		--with-termlib=ncurses \
+		--disable-w3mmailer \
+		--disable-mouse \
+
+	#sed 's/@my_libs@/-lX11/g' -i Makefile
+	make
+}
+
+package() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	make DESTDIR="${pkgdir}" install
+
+	install -d "${pkgdir}"/usr/share/doc/"${pkgname}"
+	install -d "${pkgdir}"/usr/share/licenses/"${pkgname}"
+	find doc/* | grep -v CVS | while read path; do install -m644 "$path" "${pkgdir}/usr/share/doc/${pkgname}"; done
+	ln -s ../../doc/"${pkgname}"/README "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+md5sums="1b845a983a50b8dec0169ac48479eacc  w3m-0.5.3.tar.gz
+4db72a234824f8b5d45eb78fe3e1f526  form_unknown.patch
+d1bbc652a9e63f5e65b4112e88037ded  file_handle.patch
+a5e1038b5fb36ac1465700433ae00d0b  https.patch
+46ca1e8264a3a521b073453600fb3c5f  gc72.patch"
+sha256sums="e994d263f2fd2c22febfbe45103526e00145a7674a0fda79c822b97c2770a9e3  w3m-0.5.3.tar.gz
+7d2f4ff43eeb1b81fb6126063cf091902205c375fdcdffe0998ff51e73ff9d27  form_unknown.patch
+dbf746808b64cd163dbcc6d299d80abdbbb7b5eff633d39c3f73dd42370633bc  file_handle.patch
+ab8f2b6c7e1cf2d8485fa9928784c8dbd2f0d8cd26a5c32384543eea173de986  https.patch
+1e0e573e5fc6c0938b1941a81cffdd604a0167f7cf46e1a8479e2e10969e1d04  gc72.patch"
+sha512sums="43508c76d07b4d8f19c19f975c0b870aeb94abf0744b6128ee01c759d4e409a8b57bc866baeaf990f309ff73e9a7b02ca455d272b1dd0a93fafb8c72b1fe6d14  w3m-0.5.3.tar.gz
+fd7e4d1bf05d5109e64cc2971d3f98ad28ba4404dfa6510953150550590991b910ca6b96bf66993f63e77ff59ffe1e266eed8f1dde43efd8272825d9de36948a  form_unknown.patch
+b67c1ddb37536838fa753a5171801fa170d77c1b4bce5d5de1fcb119cd6d3c158267d472a75940a6fbe6169365ad45963f64050cbb56440613df33ab66a20d4e  file_handle.patch
+3844b3a079524ad403da7fe03461210a433ff1cd562862c4df55c3be250ccba0c34eb61bcc8df1973d70e2ef034edaf1804bb2fa682b01723322f108f523932a  https.patch
+31989443973af87672cdc00ac04533530c40c5cc393703db79ce5836ae56300baa898ee21e9bebcd77cce623321d6194665d965be89c3eed1990f5b984375ccd  gc72.patch"
diff --git a/testing/w3m/file_handle.patch b/testing/w3m/file_handle.patch
new file mode 100644
index 0000000000000000000000000000000000000000..15422294f979c62939e6aa99f71c3b758a5df6ff
--- /dev/null
+++ b/testing/w3m/file_handle.patch
@@ -0,0 +1,60 @@
+diff -Naur old/istream.c new/istream.c
+--- old/istream.c	2011-01-04 20:22:22.000000000 +1100
++++ new/istream.c	2012-07-04 21:50:51.529661517 +1000
+@@ -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 file_handle_rofl *handle);
++static int file_read(struct file_handle_rofl *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 file_handle_rofl);
+     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 file_handle_rofl *handle)
+ {
+     handle->close(handle->f);
+ }
+ 
+ static int
+-file_read(struct file_handle *handle, char *buf, int len)
++file_read(struct file_handle_rofl *handle, char *buf, int len)
+ {
+     return fread(buf, 1, len, handle->f);
+ }
+diff -Naur old/istream.h new/istream.h
+--- old/istream.h	2003-10-21 02:41:56.000000000 +1000
++++ new/istream.h	2012-07-04 21:50:51.529661517 +1000
+@@ -20,7 +20,7 @@
+ 
+ typedef struct stream_buffer *StreamBuffer;
+ 
+-struct file_handle {
++struct file_handle_rofl {
+     FILE *f;
+     void (*close) ();
+ };
+@@ -53,7 +53,7 @@
+ 
+ struct file_stream {
+     struct stream_buffer stream;
+-    struct file_handle *handle;
++    struct file_handle_rofl *handle;
+     char type;
+     char iseos;
+     int (*read) ();
diff --git a/testing/w3m/form_unknown.patch b/testing/w3m/form_unknown.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b22b176ac4105f5e246249845659cda51426c397
--- /dev/null
+++ b/testing/w3m/form_unknown.patch
@@ -0,0 +1,15 @@
+See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=615843
+
+Index: w3m-git/form.c
+===================================================================
+--- w3m-git.orig/form.c	2011-02-28 15:03:36.000000000 +0100
++++ w3m-git/form.c	2011-02-28 15:32:33.000000000 +0100
+@@ -196,7 +196,7 @@
+ 	if (!strcasecmp(typestr, _formtypetbl[i]))
+ 	    return i;
+     }
+-    return FORM_UNKNOWN;
++    return FORM_INPUT_TEXT;
+ }
+ 
+ void
diff --git a/testing/w3m/gc72.patch b/testing/w3m/gc72.patch
new file mode 100644
index 0000000000000000000000000000000000000000..47bd4c85c885131465ff1127d44c4181492141ed
--- /dev/null
+++ b/testing/w3m/gc72.patch
@@ -0,0 +1,13 @@
+diff -Naur old/main.c new/main.c
+--- old/main.c	2011-01-04 20:42:19.000000000 +1100
++++ new/main.c	2012-07-04 21:49:10.136212236 +1000
+@@ -833,7 +833,8 @@
+     mySignal(SIGPIPE, SigPipe);
+ #endif
+ 
+-    orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc);
++    orig_GC_warn_proc = GC_get_warn_proc();
++    GC_set_warn_proc(wrap_GC_warn_proc);
+     err_msg = Strnew();
+     if (load_argc == 0) {
+ 	/* no URL specified */
diff --git a/testing/w3m/https.patch b/testing/w3m/https.patch
new file mode 100644
index 0000000000000000000000000000000000000000..31286a70d5ae2b979f7ef08c568a0563da0f7cf7
--- /dev/null
+++ b/testing/w3m/https.patch
@@ -0,0 +1,19 @@
+Fedora patch; see https://bugzilla.redhat.com/show_bug.cgi?id=707994
+
+--- old/url.c	2011-01-04 14:52:24.000000000 +0530
++++ new/url.c	2011-09-02 18:25:43.305652690 +0530
+@@ -82,11 +82,11 @@
+     {"ftp", SCM_FTP},
+     {"local", SCM_LOCAL},
+     {"file", SCM_LOCAL},
+-    /*  {"exec", SCM_EXEC}, */
++    {"exec", SCM_EXEC}, 
+     {"nntp", SCM_NNTP},
+-    /*  {"nntp", SCM_NNTP_GROUP}, */
++    {"nntp", SCM_NNTP_GROUP}, 
+     {"news", SCM_NEWS},
+-    /*  {"news", SCM_NEWS_GROUP}, */
++    {"news", SCM_NEWS_GROUP}, 
+     {"data", SCM_DATA},
+ #ifndef USE_W3MMAILER
+     {"mailto", SCM_MAILTO},