From f5a722684f18dc16a69e10fce24ddf553b2e83a1 Mon Sep 17 00:00:00 2001 From: Kris Moore Date: Tue, 22 Oct 2013 15:54:02 -0400 Subject: [PATCH] Add w3m port with fixed main.c --- build-files/ports-overlay/www/w3m/Makefile | 100 +++ build-files/ports-overlay/www/w3m/distinfo | 4 + .../www/w3m/files/patch-configure | 11 + .../ports-overlay/www/w3m/files/patch-main.c | 17 + .../www/w3m/files/patch-w3mimg_fb_fb.c | 751 ++++++++++++++++++ .../www/w3m/files/patch-w3mimg_fb_fb.h | 14 + .../www/w3m/files/patch-w3mimg_fb_fb_w3mimg.c | 29 + build-files/ports-overlay/www/w3m/pkg-descr | 9 + build-files/ports-overlay/www/w3m/pkg-message | 12 + build-files/ports-overlay/www/w3m/pkg-plist | 54 ++ 10 files changed, 1001 insertions(+) create mode 100644 build-files/ports-overlay/www/w3m/Makefile create mode 100644 build-files/ports-overlay/www/w3m/distinfo create mode 100644 build-files/ports-overlay/www/w3m/files/patch-configure create mode 100644 build-files/ports-overlay/www/w3m/files/patch-main.c create mode 100644 build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb.c create mode 100644 build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb.h create mode 100644 build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb_w3mimg.c create mode 100644 build-files/ports-overlay/www/w3m/pkg-descr create mode 100644 build-files/ports-overlay/www/w3m/pkg-message create mode 100644 build-files/ports-overlay/www/w3m/pkg-plist diff --git a/build-files/ports-overlay/www/w3m/Makefile b/build-files/ports-overlay/www/w3m/Makefile new file mode 100644 index 000000000..578dd66b5 --- /dev/null +++ b/build-files/ports-overlay/www/w3m/Makefile @@ -0,0 +1,100 @@ +# Created by: MANTANI Nobutaka +# $FreeBSD: www/w3m/Makefile 327776 2013-09-20 23:36:50Z bapt $ + +PORTNAME= w3m +PORTVERSION= 0.5.3 +PORTREVISION= 2 +CATEGORIES+= www ipv6 +MASTER_SITES= SF/w3m/w3m/w3m-${PORTVERSION} + +MAINTAINER?= nobutaka@FreeBSD.org +COMMENT?= A pager/text-based WWW browser + +USE_OPENSSL= yes +LIB_DEPENDS= gc:${PORTSDIR}/devel/boehm-gc + +MAKE_JOBS_UNSAFE= yes + +CONFLICTS?= ja-w3m-0.5.* ja-w3m-img-0.5.* w3m-img-0.5.* +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --with-gc=${LOCALBASE} + +MAN1= w3m.1 w3mman.1 +MANLANG= "" ja + +DOCS= FAQ.html HISTORY MANUAL.html README \ + README.dict README.func README.m17n STORY.html keymap.default \ + keymap.lynx menu.default menu.submenu + +OPTIONS_DEFINE= JAPANESE INLINE_IMAGE KEY_LYNX DOCS +JAPANESE_DESC= Japanese messages and migemo support +INLINE_IMAGE_DESC= Inline image support +KEY_LYNX_DESC= Keymap like lynx browser + +NO_STAGE= yes +.include + +.if ${PORT_OPTIONS:MJAPANESE} +USES+= gettext +CONFIGURE_ARGS+= --enable-japanese=E --with-migemo=yes gt_cv_func_gnugettext1_libintl=yes +DOCS_JP= ${DOCS} README.SSL README.cookie README.keymap README.mailcap \ + README.menu README.migemo + +PLIST_SUB+= JAPANESE="" +.else +CONFIGURE_ARGS+= --disable-nls +PLIST_SUB+= JAPANESE="@comment " +.endif + +.if ${PORT_OPTIONS:MINLINE_IMAGE} +USE_GNOME= gtk20 +CONFIGURE_ARGS+= --with-imagelib=gtk2 --enable-image=fb,x11 + +DOCS+= README.img +DOCS_JP+= README.img +PLIST_SUB+= INLINE_IMAGE="" + +PKGMESSAGE= ${MASTERDIR}/pkg-message +.else +CONFIGURE_ARGS+= --enable-image=no +PLIST_SUB+= INLINE_IMAGE="@comment " + +# Don't use pkg-message +PKGMESSAGE= ${NONEXISTENT} +.endif + +.if ${PORT_OPTIONS:MKEY_LYNX} +CONFIGURE_ARGS+= --enable-keymap=lynx +.endif + +CONFIGURE_ENV= DEFS="-I${LOCALBASE}/include" + +post-patch: + @${REINPLACE_CMD} -e \ + 's|\`\(expr\) \(.*\) : \(.*\)`|`\1 \\( \2 : \3 \\)`|' \ + -e 's|/usr/local|${LOCALBASE}|g' \ + ${WRKSRC}/configure + @${FIND} ${WRKSRC}/doc* -type f \! -name HISTORY \ + -exec ${REINPLACE_CMD} -e 's|/usr/local|${PREFIX}|g' {} + + +post-install: +.if ${PORT_OPTIONS:MDOCS} +.if ${PORT_OPTIONS:MJAPANESE} + @${MKDIR} ${PREFIX}/share/doc/ja/w3m + @cd ${WRKSRC}/doc-jp; \ + for i in ${DOCS_JP} ; do \ + ${INSTALL_DATA} $$i ${PREFIX}/share/doc/ja/w3m/ ; \ + done +.endif + @cd ${WRKSRC}/doc; \ + ${MKDIR} ${PREFIX}/share/doc/w3m/; \ + for i in ${DOCS} ; do \ + ${INSTALL_DATA} $$i ${PREFIX}/share/doc/w3m/ ; \ + done +.endif + @${INSTALL_MAN} ${WRKSRC}/scripts/w3mman/w3mman.1 ${PREFIX}/man/ja/man1 +.if ${PORT_OPTIONS:MINLINE_IMAGE} + @${CAT} ${PKGMESSAGE} +.endif + +.include diff --git a/build-files/ports-overlay/www/w3m/distinfo b/build-files/ports-overlay/www/w3m/distinfo new file mode 100644 index 000000000..7818f4259 --- /dev/null +++ b/build-files/ports-overlay/www/w3m/distinfo @@ -0,0 +1,4 @@ +SHA256 (w3m-0.5.3.tar.gz) = e994d263f2fd2c22febfbe45103526e00145a7674a0fda79c822b97c2770a9e3 +SIZE (w3m-0.5.3.tar.gz) = 2202328 +SHA256 (w3m-0.5-version-xhtml.patch) = 3cc144a233f566a4b718eec480f3008bb67b8155ecf10663bb98b0aa47a33796 +SIZE (w3m-0.5-version-xhtml.patch) = 8965 diff --git a/build-files/ports-overlay/www/w3m/files/patch-configure b/build-files/ports-overlay/www/w3m/files/patch-configure new file mode 100644 index 000000000..94abb5595 --- /dev/null +++ b/build-files/ports-overlay/www/w3m/files/patch-configure @@ -0,0 +1,11 @@ +--- configure.orig 2007-11-23 02:39:52.000000000 +0900 ++++ configure 2007-11-23 02:43:22.000000000 +0900 +@@ -5532,7 +5532,7 @@ + if test x"$enable_image" = xyes; then + enable_image=x11 + case "`uname -s`" in +- Linux|linux|LINUX) ++ Linux|linux|LINUX|FreeBSD|freebsd|FREEBSD) + if test -c /dev/fb0; then + enable_image=x11,fb + fi;; diff --git a/build-files/ports-overlay/www/w3m/files/patch-main.c b/build-files/ports-overlay/www/w3m/files/patch-main.c new file mode 100644 index 000000000..e863a9bb3 --- /dev/null +++ b/build-files/ports-overlay/www/w3m/files/patch-main.c @@ -0,0 +1,17 @@ +diff --git a/main.c b/main.c +index b421943..865c744 100644 +--- main.c ++++ main.c +@@ -833,7 +833,12 @@ main(int argc, char **argv, char **envp) + mySignal(SIGPIPE, SigPipe); + #endif + ++#if GC_VERSION_MAJOR >= 7 && GC_VERSION_MINOR >= 2 ++ orig_GC_warn_proc = GC_get_warn_proc(); ++ 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/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb.c b/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb.c new file mode 100644 index 000000000..832837020 --- /dev/null +++ b/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb.c @@ -0,0 +1,751 @@ +--- w3mimg/fb/fb.c.orig 2003-07-14 01:19:10.000000000 +0900 ++++ w3mimg/fb/fb.c 2007-11-23 08:59:36.000000000 +0900 +@@ -12,12 +12,24 @@ + #include + #include + #include ++#if defined(__linux__) + #include ++#elif defined(__FreeBSD__) ++#include ++#endif ++#if defined(__FreeBSD__) ++#include ++#include ++#endif + + #include "fb.h" + + #define FB_ENV "FRAMEBUFFER" ++#if defined(__linux__) + #define FB_DEFDEV "/dev/fb0" ++#elif defined(__FreeBSD__) ++#define FB_DEFDEV "/dev/ttyv0" ++#endif + + #define MONO_OFFSET_8BIT 0x40 + #define COLORS_MONO_8BIT 0x40 +@@ -38,22 +50,65 @@ + + #define IMAGE_SIZE_MAX 10000 + ++#if defined(__linux__) + static struct fb_cmap *fb_cmap_create(struct fb_fix_screeninfo *, + struct fb_var_screeninfo *); ++#elif defined(__FreeBSD__) ++static video_color_palette_t *fb_cmap_create(video_info_t *video_info, ++ video_adapter_info_t *video_adapter_info); ++#endif ++#if defined(__linux__) + static void fb_cmap_destroy(struct fb_cmap *cmap); ++#elif defined(__FreeBSD__) ++static void fb_cmap_destroy(video_color_palette_t *cmap); ++#endif ++#if defined(__linux__) + static int fb_fscrn_get(int fbfp, struct fb_fix_screeninfo *scinfo); ++#endif ++#if defined(__linux__) + static void *fb_mmap(int fbfp, struct fb_fix_screeninfo *scinfo); ++#elif defined(__FreeBSD__) ++static void *fb_mmap(int fbfp, video_adapter_info_t *video_adapter_info); ++#endif ++#if defined(__linux__) + static int fb_munmap(void *buf, struct fb_fix_screeninfo *scinfo); ++#elif defined(__FreeBSD__) ++static int fb_munmap(void *buf, video_adapter_info_t *video_adapter_info); ++#endif ++#if defined(__linux__) + static int fb_vscrn_get(int fbfp, struct fb_var_screeninfo *scinfo); ++#endif ++#if defined(__linux__) + static int fb_cmap_set(int fbfp, struct fb_cmap *cmap); ++#elif defined(__FreeBSD__) ++static int fb_cmap_set(int fbfp, video_color_palette_t *cmap); ++#endif ++#if defined(__linux__) + static int fb_cmap_get(int fbfp, struct fb_cmap *cmap); ++#elif defined(__FreeBSD__) ++static int fb_cmap_get(int fbfp, video_color_palette_t *cmap); ++#endif + static int fb_cmap_init(void); + static int fb_get_cmap_index(int r, int g, int b); + static unsigned long fb_get_packed_color(int r, int g, int b); ++#if defined(__FreeBSD__) ++static int fb_video_mode_get(int fbfp, int *video_mode); ++static int fb_video_info_get(int fbfp, video_info_t *video_info); ++static int fb_video_adapter_info_get(int fbfp, video_adapter_info_t *video_adapter_info); ++#endif + ++#if defined(__linux__) + static struct fb_fix_screeninfo fscinfo; + static struct fb_var_screeninfo vscinfo; ++#elif defined(__FreeBSD__) ++static video_info_t video_info; ++static video_adapter_info_t video_adapter_info; ++#endif ++#if defined(__linux__) + static struct fb_cmap *cmap = NULL, *cmap_org = NULL; ++#elif defined(__FreeBSD__) ++static video_color_palette_t *cmap = NULL, *cmap_org = NULL; ++#endif + static int is_open = FALSE; + static int fbfp = -1; + static size_t pixel_size = 0; +@@ -63,6 +118,9 @@ + fb_open(void) + { + char *fbdev = { FB_DEFDEV }; ++#if defined(__FreeBSD__) ++ int video_mode; ++#endif + + if (is_open == TRUE) + return 1; +@@ -76,6 +134,7 @@ + goto ERR_END; + } + ++#if defined(__linux__) + if (fb_fscrn_get(fbfp, &fscinfo)) { + goto ERR_END; + } +@@ -83,22 +142,67 @@ + if (fb_vscrn_get(fbfp, &vscinfo)) { + goto ERR_END; + } ++#elif defined(__FreeBSD__) ++ if (fb_video_mode_get(fbfp, &video_mode)) { ++ goto ERR_END; ++ } ++ video_info.vi_mode = video_mode; ++ ++ if (fb_video_info_get(fbfp, &video_info)) { ++ goto ERR_END; ++ } ++ ++ if (fb_video_adapter_info_get(fbfp, &video_adapter_info)) { ++ goto ERR_END; ++ } ++ if (!(video_info.vi_flags & V_INFO_GRAPHICS) || ++ !(video_info.vi_flags & V_INFO_LINEAR)) { ++ goto ERR_END; ++ } ++#endif + ++#if defined(__linux__) + if ((cmap = fb_cmap_create(&fscinfo, &vscinfo)) == (struct fb_cmap *)-1) { + goto ERR_END; + } ++#elif defined(__FreeBSD__) ++ if ((cmap = fb_cmap_create(&video_info, &video_adapter_info)) == (video_color_palette_t *)-1) { ++ goto ERR_END; ++ } ++#endif + ++#if defined(__linux__) + if (!(buf = fb_mmap(fbfp, &fscinfo))) { + fprintf(stderr, "Can't allocate memory.\n"); + goto ERR_END; + } ++#elif defined(__FreeBSD__) ++ if (!(buf = fb_mmap(fbfp, &video_adapter_info))) { ++ fprintf(stderr, "Can't allocate memory.\n"); ++ goto ERR_END; ++ } ++#endif + ++#if defined(__linux__) + if (fscinfo.type != FB_TYPE_PACKED_PIXELS) { + fprintf(stderr, "This type of framebuffer is not supported.\n"); + goto ERR_END; + } ++#elif defined(__FreeBSD__) ++ if (!(video_info.vi_mem_model == V_INFO_MM_PACKED || ++ video_info.vi_mem_model == V_INFO_MM_DIRECT)) { ++ fprintf(stderr, "This type of framebuffer is not supported.\n"); ++ goto ERR_END; ++ } ++#endif + ++#if defined(__linux__) + if (fscinfo.visual == FB_VISUAL_PSEUDOCOLOR && vscinfo.bits_per_pixel == 8) { ++#elif defined(__FreeBSD__) ++ if (video_adapter_info.va_flags & V_ADP_PALETTE && ++ video_info.vi_mem_model == V_INFO_MM_PACKED && ++ video_info.vi_depth == 8) { ++#endif + if (fb_cmap_get(fbfp, cmap)) { + fprintf(stderr, "Can't get color map.\n"); + fb_cmap_destroy(cmap); +@@ -111,12 +215,20 @@ + + pixel_size = 1; + } ++#if defined(__linux__) + else if ((fscinfo.visual == FB_VISUAL_TRUECOLOR || + fscinfo.visual == FB_VISUAL_DIRECTCOLOR) && + (vscinfo.bits_per_pixel == 15 || + vscinfo.bits_per_pixel == 16 || + vscinfo.bits_per_pixel == 24 || vscinfo.bits_per_pixel == 32)) { + pixel_size = (vscinfo.bits_per_pixel + 7) / CHAR_BIT; ++#elif defined(__FreeBSD__) ++ else if (video_info.vi_mem_model == V_INFO_MM_DIRECT && ++ (video_info.vi_depth == 15 || ++ video_info.vi_depth == 16 || ++ video_info.vi_depth == 24 || video_info.vi_depth == 32)) { ++ pixel_size = (video_info.vi_depth + 7) / CHAR_BIT; ++#endif + } + else { + fprintf(stderr, "This type of framebuffer is not supported.\n"); +@@ -147,7 +259,11 @@ + cmap = NULL; + } + if (buf != NULL) { ++#if defined(__linux__) + fb_munmap(buf, &fscinfo); ++#elif defined(__FreeBSD__) ++ fb_munmap(buf, &video_adapter_info); ++#endif + buf = NULL; + } + +@@ -259,11 +375,19 @@ + if (y + height > fb_height()) + height = fb_height() - y; + ++#if defined(__linux__) + offset_fb = fscinfo.line_length * y + pixel_size * x; ++#elif defined(__FreeBSD__) ++ offset_fb = video_adapter_info.va_line_width * y + pixel_size * x; ++#endif + offset_img = image->rowstride * sy + pixel_size * sx; + for (i = 0; i < height; i++) { + memcpy(buf + offset_fb, image->data + offset_img, pixel_size * width); ++#if defined(__linux__) + offset_fb += fscinfo.line_length; ++#elif defined(__FreeBSD__) ++ offset_fb += video_adapter_info.va_line_width; ++#endif + offset_img += image->rowstride; + } + +@@ -336,7 +460,11 @@ + if (is_open != TRUE) + return 0; + ++#if defined(__linux__) + return vscinfo.xres; ++#elif defined(__FreeBSD__) ++ return video_info.vi_width; ++#endif + } + + int +@@ -345,7 +473,11 @@ + if (is_open != TRUE) + return 0; + ++#if defined(__linux__) + return vscinfo.yres; ++#elif defined(__FreeBSD__) ++ return video_info.vi_height; ++#endif + } + + int +@@ -369,7 +501,11 @@ + h = fb_height() - y; + + if (tmp == NULL) { ++#if defined(__linux__) + tmp = malloc(fscinfo.line_length); ++#elif defined(__FreeBSD__) ++ tmp = malloc(video_adapter_info.va_line_width); ++#endif + if (tmp == NULL) + return 1; + } +@@ -384,10 +520,18 @@ + gg = g; + bb = b; + } ++#if defined(__linux__) + offset_fb = fscinfo.line_length * y + pixel_size * x; ++#elif defined(__FreeBSD__) ++ offset_fb = video_adapter_info.va_line_width * y + pixel_size * x; ++#endif + for (i = 0; i < h; i++) { + memcpy(buf + offset_fb, tmp, pixel_size * w); ++#if defined(__linux__) + offset_fb += fscinfo.line_length; ++#elif defined(__FreeBSD__) ++ offset_fb += video_adapter_info.va_line_width; ++#endif + } + return 0; + } +@@ -400,11 +544,21 @@ + return fb_get_cmap_index(r, g, b); + } + else { ++#if defined(__linux__) + return + ((r >> (CHAR_BIT - vscinfo.red.length)) << vscinfo.red.offset) + + ((g >> (CHAR_BIT - vscinfo.green.length)) << vscinfo.green. + offset) + + ((b >> (CHAR_BIT - vscinfo.blue.length)) << vscinfo.blue.offset); ++#elif defined(__FreeBSD__) ++ return ++ ((r >> (CHAR_BIT - video_info.vi_pixel_fsizes[0])) << ++ video_info.vi_pixel_fields[0]) + ++ ((g >> (CHAR_BIT - video_info.vi_pixel_fsizes[1])) << ++ video_info.vi_pixel_fields[1]) + ++ ((b >> (CHAR_BIT - video_info.vi_pixel_fsizes[2])) << ++ video_info.vi_pixel_fields[2]); ++#endif + } + } + +@@ -433,16 +587,31 @@ + if (cmap == NULL) + return 1; + ++#if defined(__linux__) + if (cmap->len < COLOR_OFFSET_8BIT + COLORS_8BIT) { + fprintf(stderr, "Can't allocate enough color.\n"); + return 1; + } ++#elif defined(__FreeBSD__) ++ if (cmap->count < COLOR_OFFSET_8BIT + COLORS_8BIT) { ++ fprintf(stderr, "Can't allocate enough color.\n"); ++ return 1; ++ } ++#endif + + if (cmap_org == NULL) { ++#if defined(__linux__) + if ((cmap_org = + fb_cmap_create(&fscinfo, &vscinfo)) == (struct fb_cmap *)-1) { + return 1; + } ++#elif defined(__FreeBSD__) ++ if ((cmap_org = ++ fb_cmap_create(&video_info, &video_adapter_info)) == ++ (video_color_palette_t *)-1) { ++ return 1; ++ } ++#endif + + if (fb_cmap_get(fbfp, cmap_org)) { + fprintf(stderr, "Can't get color map.\n"); +@@ -452,8 +621,13 @@ + } + } + ++#if defined(__linux__) + cmap->start = MONO_OFFSET_8BIT; + cmap->len = COLORS_8BIT + COLORS_MONO_8BIT; ++#elif defined(__FreeBSD__) ++ cmap->index = MONO_OFFSET_8BIT; ++ cmap->count = COLORS_8BIT + COLORS_MONO_8BIT; ++#endif + + for (lp = 0; lp < COLORS_MONO_8BIT; lp++) { + int c; +@@ -506,73 +680,213 @@ + + #define LUT_MAX (256) + ++#if defined(__linux__) + static struct fb_cmap * + fb_cmap_create(struct fb_fix_screeninfo *fscinfo, + struct fb_var_screeninfo *vscinfo) ++#elif defined(__FreeBSD__) ++static video_color_palette_t * ++fb_cmap_create(video_info_t *video_info, ++ video_adapter_info_t *video_adapter_info) ++#endif + { ++#if defined(__linux__) + struct fb_cmap *cmap; ++#elif defined(__FreeBSD__) ++ video_color_palette_t *cmap; ++#endif + int cmaplen = LUT_MAX; + + /* check the existence of colormap */ ++#if defined(__linux__) + if (fscinfo->visual == FB_VISUAL_MONO01 || + fscinfo->visual == FB_VISUAL_MONO10 || + fscinfo->visual == FB_VISUAL_TRUECOLOR) + return NULL; ++#elif defined(__FreeBSD__) ++ if (!(video_adapter_info->va_flags & V_ADP_PALETTE)) ++ return NULL; ++#endif + ++#if defined(__linux__) + cmap = (struct fb_cmap *)malloc(sizeof(struct fb_cmap)); ++#elif defined(__FreeBSD__) ++ cmap = (video_color_palette_t *)malloc(sizeof(video_color_palette_t)); ++#endif + if (!cmap) { + perror("cmap malloc error\n"); ++#if defined(__linux__) + return (struct fb_cmap *)-1; ++#elif defined(__FreeBSD__) ++ return (video_color_palette_t *)-1; ++#endif + } ++#if defined(__linux__) + memset(cmap, 0, sizeof(struct fb_cmap)); ++#elif defined(__FreeBSD__) ++ memset(cmap, 0, sizeof(video_color_palette_t)); ++#endif ++ ++#if defined(__FreeBSD__) ++ if (video_info->vi_mem_model == V_INFO_MM_PACKED) { ++ cmap->red = (u_char *) malloc(sizeof(u_char) * cmaplen); ++ if (!cmap->red) { ++ perror("red lut malloc error\n"); ++ return (video_color_palette_t *)-1; ++ } ++ cmap->green = (u_char *) malloc(sizeof(u_char) * cmaplen); ++ if (!cmap->green) { ++ perror("green lut malloc error\n"); ++ free(cmap->red); ++ return (video_color_palette_t *)-1; ++ } ++ cmap->blue = (u_char *) malloc(sizeof(u_char) * cmaplen); ++ if (!cmap->blue) { ++ perror("blue lut malloc error\n"); ++ free(cmap->red); ++ free(cmap->green); ++ return (video_color_palette_t *)-1; ++ } ++ cmap->transparent = (u_char *) malloc(sizeof(u_char) * cmaplen); ++ if (!cmap->transparent) { ++ perror("transparent lut malloc error\n"); ++ free(cmap->red); ++ free(cmap->green); ++ free(cmap->blue); ++ return (video_color_palette_t *)-1; ++ } ++ cmap->count = cmaplen; ++ return cmap; ++ } ++#endif + + /* Allocates memory for a colormap */ ++#if defined(__linux__) + if (vscinfo->red.length) { + cmap->red = (__u16 *) malloc(sizeof(__u16) * cmaplen); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[0]) { ++ cmap->red = (u_char *) malloc(sizeof(u_char) * cmaplen); ++#endif + if (!cmap->red) { + perror("red lut malloc error\n"); ++#if defined(__linux__) + return (struct fb_cmap *)-1; ++#elif defined(__FreeBSD__) ++ return (video_color_palette_t *)-1; ++#endif + } + } ++#if defined(__linux__) + if (vscinfo->green.length) { + cmap->green = (__u16 *) malloc(sizeof(__u16) * cmaplen); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[1]) { ++ cmap->green = (u_char *) malloc(sizeof(u_char) * cmaplen); ++#endif + if (!cmap->green) { ++#if defined(__linux__) + if (vscinfo->red.length) + free(cmap->red); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[0]) ++ free(cmap->red); ++#endif + perror("green lut malloc error\n"); ++#if defined(__linux__) + return (struct fb_cmap *)-1; ++#elif defined(__FreeBSD__) ++ return (video_color_palette_t *)-1; ++#endif + } + } ++#if defined(__linux__) + if (vscinfo->blue.length) { + cmap->blue = (__u16 *) malloc(sizeof(__u16) * cmaplen); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[2]) { ++ cmap->blue = (u_char *) malloc(sizeof(u_char) * cmaplen); ++#endif + if (!cmap->blue) { ++#if defined(__linux__) + if (vscinfo->red.length) + free(cmap->red); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[0]) ++ free(cmap->red); ++#endif ++#if defined(__linux__) + if (vscinfo->green.length) + free(cmap->green); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[1]) ++ free(cmap->green); ++#endif + perror("blue lut malloc error\n"); ++#if defined(__linux__) + return (struct fb_cmap *)-1; ++#elif defined(__FreeBSD__) ++ return (video_color_palette_t *)-1; ++#endif + } + } ++#if defined(__linux__) + if (vscinfo->transp.length) { + cmap->transp = (__u16 *) malloc(sizeof(__u16) * cmaplen); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[3]) { ++ cmap->transparent = (u_char *) malloc(sizeof(u_char) * cmaplen); ++#endif ++#if defined(__linux__) + if (!cmap->transp) { ++#elif defined(__FreeBSD__) ++ if (!cmap->transparent) { ++#endif ++#if defined(__linux__) + if (vscinfo->red.length) + free(cmap->red); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[0]) ++ free(cmap->red); ++#endif ++#if defined(__linux__) + if (vscinfo->green.length) + free(cmap->green); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[1]) ++ free(cmap->green); ++#endif ++#if defined(__linux__) + if (vscinfo->blue.length) + free(cmap->blue); + perror("transp lut malloc error\n"); ++#elif defined(__FreeBSD__) ++ if (video_info->vi_pixel_fsizes[2]) ++ free(cmap->blue); ++ perror("transparent lut malloc error\n"); ++#endif ++#if defined(__linux__) + return (struct fb_cmap *)-1; ++#elif defined(__FreeBSD__) ++ return (video_color_palette_t *)-1; ++#endif + } + } ++#if defined(__linux__) + cmap->len = cmaplen; ++#elif defined(__FreeBSD__) ++ cmap->count = cmaplen; ++#endif + return cmap; + } + ++#if defined(__linux__) + static void + fb_cmap_destroy(struct fb_cmap *cmap) ++#elif defined(__FreeBSD__) ++static void ++fb_cmap_destroy(video_color_palette_t *cmap) ++#endif + { + if (cmap->red) + free(cmap->red); +@@ -580,28 +894,57 @@ + free(cmap->green); + if (cmap->blue) + free(cmap->blue); ++#if defined(__linux__) + if (cmap->transp) + free(cmap->transp); ++#elif defined(__FreeBSD__) ++ if (cmap->transparent) ++ free(cmap->transparent); ++#endif + free(cmap); + } + ++#if defined(__linux__) + static int + fb_cmap_get(int fbfp, struct fb_cmap *cmap) ++#elif defined(__FreeBSD__) ++static int ++fb_cmap_get(int fbfp, video_color_palette_t *cmap) ++#endif + { ++#if defined(__linux__) + if (ioctl(fbfp, FBIOGETCMAP, cmap)) { + perror("ioctl FBIOGETCMAP error\n"); + return -1; + } ++#elif defined(__FreeBSD__) ++ if (ioctl(fbfp, FBIO_GETPALETTE, cmap) == -1) { ++ perror("ioctl FBIO_GETPALETTE error\n"); ++ return -1; ++ } ++#endif + return 0; + } + ++#if defined(__linux__) + static int + fb_cmap_set(int fbfp, struct fb_cmap *cmap) ++#elif defined(__FreeBSD__) ++static int ++fb_cmap_set(int fbfp, video_color_palette_t *cmap) ++#endif + { ++#if defined(__linux__) + if (ioctl(fbfp, FBIOPUTCMAP, cmap)) { + perror("ioctl FBIOPUTCMAP error\n"); + return -1; + } ++#elif defined(__FreeBSD__) ++ if (ioctl(fbfp, FBIO_SETPALETTE, cmap) == -1) { ++ perror("ioctl FBIO_SETPALETTE error\n"); ++ return -1; ++ } ++#endif + return 0; + } + +@@ -612,10 +955,16 @@ + * fb_munmap() deletes the mappings + */ + ++#if defined(__linux__) + static void * + fb_mmap(int fbfp, struct fb_fix_screeninfo *scinfo) ++#elif defined(__FreeBSD__) ++static void * ++fb_mmap(int fbfp, video_adapter_info_t *video_adapter_info) ++#endif + { + void *buf; ++#if defined(__linux__) + if ((buf = (unsigned char *) + mmap(NULL, scinfo->smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fbfp, + (off_t) 0)) +@@ -623,13 +972,41 @@ + perror("mmap error"); + return NULL; + } ++#elif defined(__FreeBSD__) ++ size_t mmap_offset; ++ size_t mmap_length; ++ mmap_offset = (size_t)(video_adapter_info->va_window) & (PAGE_MASK); ++ mmap_length = (size_t)(video_adapter_info->va_window_size + ++ mmap_offset + PAGE_MASK) & (~PAGE_MASK); ++ if ((buf = (unsigned char *) ++ mmap(NULL, mmap_length, PROT_READ | PROT_WRITE, MAP_SHARED, fbfp, ++ (off_t) 0)) ++ == MAP_FAILED) { ++ perror("mmap error"); ++ return NULL; ++ } ++#endif + return buf; + } + ++#if defined(__linux__) + static int + fb_munmap(void *buf, struct fb_fix_screeninfo *scinfo) ++#elif defined(__FreeBSD__) ++static int ++fb_munmap(void *buf, video_adapter_info_t *video_adapter_info) ++#endif + { ++#if defined(__linux__) + return munmap(buf, scinfo->smem_len); ++#elif defined(__FreeBSD__) ++ size_t mmap_offset; ++ size_t mmap_length; ++ mmap_offset = (size_t)(video_adapter_info->va_window) & (PAGE_MASK); ++ mmap_length = (size_t)(video_adapter_info->va_window_size + ++ mmap_offset + PAGE_MASK) & (~PAGE_MASK); ++ return munmap((void *)((u_long)buf & (~PAGE_MASK)), mmap_length); ++#endif + } + + /* +@@ -637,6 +1014,7 @@ + * + * fb_fscrn_get() get information + */ ++#if defined(__linux__) + static int + fb_fscrn_get(int fbfp, struct fb_fix_screeninfo *scinfo) + { +@@ -646,12 +1024,14 @@ + } + return 0; + } ++#endif + + /* + * (struct fb_var_screeninfo) device independent variable information + * + * fb_vscrn_get() get information + */ ++#if defined(__linux__) + static int + fb_vscrn_get(int fbfp, struct fb_var_screeninfo *scinfo) + { +@@ -661,3 +1041,41 @@ + } + return 0; + } ++#endif ++ ++#if defined(__FreeBSD__) ++static int ++fb_video_mode_get(int fbfp, int *video_mode) ++{ ++ if (ioctl(fbfp, FBIO_GETMODE, video_mode) == -1) { ++ perror("ioctl FBIO_GETMODE error\n"); ++ return -1; ++ } ++ return 0; ++} ++#endif ++ ++#if defined(__FreeBSD__) ++static int ++fb_video_info_get(int fbfp, video_info_t *video_info) ++{ ++ if (ioctl(fbfp, FBIO_MODEINFO, video_info) == -1) { ++ perror("ioctl FBIO_MODEINFO error\n"); ++ return -1; ++ } ++ return 0; ++} ++#endif ++ ++#if defined(__FreeBSD__) ++static int ++fb_video_adapter_info_get(int fbfp, video_adapter_info_t *video_adapter_info) ++{ ++ if (ioctl(fbfp, FBIO_ADPINFO, video_adapter_info) == -1) { ++ perror("ioctl FBIO_ADPINFO error\n"); ++ return -1; ++ } ++ return 0; ++} ++#endif ++ diff --git a/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb.h b/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb.h new file mode 100644 index 000000000..14b3e26b5 --- /dev/null +++ b/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb.h @@ -0,0 +1,14 @@ +--- w3mimg/fb/fb.h.orig 2003-07-08 00:48:17.000000000 +0900 ++++ w3mimg/fb/fb.h 2007-11-23 02:43:22.000000000 +0900 +@@ -1,7 +1,11 @@ + /* $Id: fb.h,v 1.7 2003/07/07 15:48:17 ukai Exp $ */ + #ifndef fb_header + #define fb_header ++#if defined(__linux__) + #include ++#elif defined(__FreeBSD__) ++#include ++#endif + + typedef struct { + int num; diff --git a/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb_w3mimg.c b/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb_w3mimg.c new file mode 100644 index 000000000..5a2aeb8c8 --- /dev/null +++ b/build-files/ports-overlay/www/w3m/files/patch-w3mimg_fb_fb_w3mimg.c @@ -0,0 +1,29 @@ +--- w3mimg/fb/fb_w3mimg.c.orig Wed Aug 4 17:32:28 2004 ++++ w3mimg/fb/fb_w3mimg.c Mon Dec 3 10:42:23 2007 +@@ -153,10 +153,15 @@ + return 0; + if (strncmp(tty, "/dev/", 5) == 0) + tty += 5; ++#if defined(__linux__) + if (strncmp(tty, "tty", 3) == 0 && isdigit(*(tty + 3))) + return 1; + if (strncmp(tty, "vc/", 3) == 0 && isdigit(*(tty + 3))) + return 1; ++#elif defined(__FreeBSD__) ++ if (strncmp(tty, "ttyv", 4) == 0 && isxdigit(*(tty + 4))) ++ return 1; ++#endif + return 0; + } + #else +@@ -172,7 +177,9 @@ + return NULL; + memset(wop, 0, sizeof(w3mimg_op)); + +- if (!check_tty_console(getenv("W3M_TTY")) && strcmp("jfbterm", getenv("TERM")) != 0) { ++ if (!check_tty_console(getenv("W3M_TTY")) && ++ strcmp("jfbterm", getenv("TERM")) != 0 && ++ strncmp("jfbterm-", getenv("TERM"), 8) != 0) { + fprintf(stderr, "w3mimgdisplay/fb: tty is not console\n"); + goto error; + } diff --git a/build-files/ports-overlay/www/w3m/pkg-descr b/build-files/ports-overlay/www/w3m/pkg-descr new file mode 100644 index 000000000..1db92019e --- /dev/null +++ b/build-files/ports-overlay/www/w3m/pkg-descr @@ -0,0 +1,9 @@ +w3m is a pager/text-based WWW browser. + +It is a similar application to Lynx, but it has several features Lynx +doesn't have. + +* Rendering tables. +* Rendering frames. (It converts frames into a table). + +WWW: http://w3m.sourceforge.net/ diff --git a/build-files/ports-overlay/www/w3m/pkg-message b/build-files/ports-overlay/www/w3m/pkg-message new file mode 100644 index 000000000..5cbeb642b --- /dev/null +++ b/build-files/ports-overlay/www/w3m/pkg-message @@ -0,0 +1,12 @@ +********************************************************** +* To display images in proper positions, * +* you should set font size of your terminal emulator to * +* "# of pixels per character" and "# of pixels per line" * +* in Option Setting Panel. * +* * +* For example, if you use 14 pixel fonts, the values * +* should be these. * +* * +* # of pixels per character = 7 * +* # of pixels per line = 14 * +********************************************************** diff --git a/build-files/ports-overlay/www/w3m/pkg-plist b/build-files/ports-overlay/www/w3m/pkg-plist new file mode 100644 index 000000000..1b7d9647e --- /dev/null +++ b/build-files/ports-overlay/www/w3m/pkg-plist @@ -0,0 +1,54 @@ +bin/w3m +bin/w3mman +libexec/w3m/cgi-bin/dirlist.cgi +libexec/w3m/cgi-bin/multipart.cgi +libexec/w3m/cgi-bin/w3mbookmark +libexec/w3m/cgi-bin/w3mhelp.cgi +libexec/w3m/cgi-bin/w3mmail.cgi +libexec/w3m/cgi-bin/w3mman2html.cgi +libexec/w3m/cgi-bin/w3mhelperpanel +libexec/w3m/inflate +libexec/w3m/xface2xpm +%%INLINE_IMAGE%%libexec/w3m/w3mimgdisplay +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/FAQ.html +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/HISTORY +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/MANUAL.html +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.SSL +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.cookie +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.dict +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.func +%%PORTDOCS%%%%JAPANESE%%%%INLINE_IMAGE%%share/doc/ja/w3m/README.img +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.keymap +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.m17n +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.mailcap +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.menu +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/README.migemo +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/STORY.html +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/keymap.default +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/keymap.lynx +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/menu.default +%%PORTDOCS%%%%JAPANESE%%share/doc/ja/w3m/menu.submenu +%%PORTDOCS%%%%DOCSDIR%%/FAQ.html +%%PORTDOCS%%%%DOCSDIR%%/HISTORY +%%PORTDOCS%%%%DOCSDIR%%/MANUAL.html +%%PORTDOCS%%%%DOCSDIR%%/README +%%PORTDOCS%%%%DOCSDIR%%/README.dict +%%PORTDOCS%%%%DOCSDIR%%/README.func +%%PORTDOCS%%%%INLINE_IMAGE%%%%DOCSDIR%%/README.img +%%PORTDOCS%%%%DOCSDIR%%/README.m17n +%%PORTDOCS%%%%DOCSDIR%%/STORY.html +%%PORTDOCS%%%%DOCSDIR%%/keymap.default +%%PORTDOCS%%%%DOCSDIR%%/keymap.lynx +%%PORTDOCS%%%%DOCSDIR%%/menu.default +%%PORTDOCS%%%%DOCSDIR%%/menu.submenu +%%JAPANESE%%share/locale/ja/LC_MESSAGES/w3m.mo +share/w3m/w3mhelp-funcdesc.en.pl +share/w3m/w3mhelp-funcdesc.ja.pl +share/w3m/w3mhelp-funcname.pl +share/w3m/w3mhelp.html +@dirrm libexec/w3m/cgi-bin +@dirrm libexec/w3m +%%PORTDOCS%%@dirrm %%DOCSDIR%% +@dirrm share/w3m +%%PORTDOCS%%%%JAPANESE%%@dirrm share/doc/ja/w3m