Date: Mon, 16 Jan 2006 22:45:54 -0300 From: "Alejandro Pulver" <alejandro@varnet.biz> To: "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org> Subject: ports/91893: [UPDATE] games/fuhquake: remove some options (will be split to another port) Message-ID: <1137462354.0@phobos.mars.bsd> Resent-Message-ID: <200601170150.k0H1o33e050413@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 91893 >Category: ports >Synopsis: [UPDATE] games/fuhquake: remove some options (will be split to another port) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Tue Jan 17 01:50:03 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Alejandro Pulver >Release: FreeBSD 5.4-RELEASE i386 >Organization: >Environment: System: FreeBSD 5.4-RELEASE #0: Sat May 21 12:14:47 ART 2005 root@ale.varnet.bsd:/usr/src/sys/i386/compile/ATHLON-ALE >Description: * Remove obsolete svga patch. * Remove LITS and SKYBOXES options (JoeQuake is based on FuhQuake, so it also supports them - a separate port will be done). * Use patches instead of ${REINPLACE_CMD}. >How-To-Repeat: >Fix: --- fuhquake.diff begins here --- diff -urN /usr/ports/games/fuhquake/Makefile fuhquake/Makefile --- /usr/ports/games/fuhquake/Makefile Mon Dec 12 06:25:24 2005 +++ fuhquake/Makefile Mon Jan 16 22:42:42 2006 @@ -9,17 +9,13 @@ PORTVERSION= 0.31 PORTREVISION= 1 CATEGORIES= games -MASTER_SITES= http://www.fuhquake.net/files/releases/v${PORTVERSION}/:q \ - http://www.fuhquake.net/files/extras/:s \ - ftp://gibbage.mine.nu/clients/fuhquake/releases/v${PORTVERSION}/:q \ - http://gamefiles.blueyonder.co.uk/blueyondergames/quake/quakeworld/clients/fuhquake/source/:q \ - http://gamefiles.blueyonder.co.uk/blueyondergames/quake/quakeworld/clients/fuhquake/addons/:s +MASTER_SITES= http://www.fuhquake.net/files/releases/v${PORTVERSION}/ \ + ftp://gibbage.mine.nu/clients/fuhquake/releases/v${PORTVERSION}/ \ + http://gamefiles.blueyonder.co.uk/blueyondergames/quake/quakeworld/clients/fuhquake/source/ DISTNAME= ${PORTNAME}-source-v${PORTVERSION} -DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:q \ - ${PORTNAME}-linux-v${PORTVERSION}${EXTRACT_SUFX}:q -DIST_SUBDIR= ${PORTNAME} -EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} \ +DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \ ${PORTNAME}-linux-v${PORTVERSION}${EXTRACT_SUFX} +DIST_SUBDIR= ${PORTNAME} MAINTAINER= danfe@FreeBSD.org COMMENT= An excellent QuakeWorld client @@ -27,24 +23,26 @@ WRKSRC= ${WRKDIR}/source USE_ZIP= yes -USE_REINPLACE= yes MAKEFILE= ${FILESDIR}/Makefile OPTIONS= GLX "Build GLX client" on \ - LITS "Enable coloured lighting" off \ OPTIMIZED_CFLAGS "Enable compilation optimizations" on \ - SKYBOXES "Install skyboxes pak" off \ X11 "Build X11 client" on \ X86_ASM "Enable x86 assembly code" on \ XMMS "Enable MP3 Player feature" off DATADIR= ${Q1DIR} +MAKE_ENV= DATADIR="${DATADIR}" .include "${.CURDIR}/../quake-data/Makefile.include" .include <bsd.port.pre.mk> +.if !defined(WITH_GLX) && !defined(WITH_X11) +IGNORE= "Please select at least one client." +.endif + .if defined(WITH_GLX) USE_GL= yes LIB_DEPENDS+= png.5:${PORTSDIR}/graphics/png \ @@ -55,14 +53,6 @@ PLIST_SUB+= GLX="@comment " .endif -.if defined(WITH_LITS) -DISTFILES+= ${PORTNAME}-lits.rar:s -BUILD_DEPENDS+= unrar:${PORTSDIR}/archivers/unrar -PLIST_SUB+= LITS="" -.else -PLIST_SUB+= LITS="@comment " -.endif - .for f in OPTIMIZED_CFLAGS X86_ASM . if defined(WITH_${f}) MAKE_ARGS+= -DWITH_${f} @@ -71,14 +61,6 @@ . endif .endfor -.if defined(WITH_SKYBOXES) -DISTFILES+= ${PORTNAME}-skyboxes${EXTRACT_SUFX}:s -EXTRACT_ONLY+= ${PORTNAME}-skyboxes${EXTRACT_SUFX} -PLIST_SUB+= SKYBOXES="" -.else -PLIST_SUB+= SKYBOXES="@comment " -.endif - .if defined(WITH_X11) USE_XLIB= yes PLIST_SUB+= X11="" @@ -95,16 +77,7 @@ PTHREAD_LIBS=${PTHREAD_LIBS} .endif -.if defined(WITH_LITS) -post-extract: - @${MKDIR} ${WRKDIR}/lits - @unrar x -inul ${DISTDIR}/${DIST_SUBDIR}/${PORTNAME}-lits.rar \ - ${WRKDIR}/lits -.endif - post-patch: - @${REINPLACE_CMD} -e 's|%%BASEDIR%%|${DATADIR}|' ${WRKSRC}/common.c - @${REINPLACE_CMD} -e 's|%%X11BASE%%|${X11BASE}|' ${WRKSRC}/mp3_player.c @${CP} ${FILESDIR}/*.c ${WRKSRC} do-build: @@ -121,12 +94,6 @@ ${MKDIR} ${DATADIR}/${PORTNAME} ${INSTALL_DATA} ${WRKDIR}/qw/*.dat ${DATADIR}/${PORTNAME} ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}/pak0.pak ${DATADIR}/${PORTNAME} -.if defined(WITH_LITS) - ${CP} -R ${WRKDIR}/lits ${DATADIR}/${PORTNAME} -.endif -.if defined(WITH_SKYBOXES) - ${INSTALL_DATA} ${WRKDIR}/pakX.pak ${DATADIR}/${PORTNAME}/pak1.pak -.endif .if !defined(NOPORTDOCS) ${MKDIR} ${DOCSDIR} ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}/doc/*.txt ${DOCSDIR} diff -urN /usr/ports/games/fuhquake/distinfo fuhquake/distinfo --- /usr/ports/games/fuhquake/distinfo Thu Nov 17 09:17:11 2005 +++ fuhquake/distinfo Sun Jan 15 01:27:52 2006 @@ -1,8 +1,6 @@ MD5 (fuhquake/fuhquake-source-v0.31.zip) = 3db5852cfbdf4a4855072305c32f6075 +SHA256 (fuhquake/fuhquake-source-v0.31.zip) = 905c973e34e3d511665cc26f9f2b64fcb568e9c8363b93af5d5685e979309139 SIZE (fuhquake/fuhquake-source-v0.31.zip) = 789610 MD5 (fuhquake/fuhquake-linux-v0.31.zip) = 479a6f8dad1174333819e850b3aca8c1 +SHA256 (fuhquake/fuhquake-linux-v0.31.zip) = f9a9bce98a2a8f76f75c344b14a338b33ebc9d0e9b018e0965a1080586b9cda4 SIZE (fuhquake/fuhquake-linux-v0.31.zip) = 4520020 -MD5 (fuhquake/fuhquake-lits.rar) = 9e345bee7f331652c2e926e705d25b19 -SIZE (fuhquake/fuhquake-lits.rar) = 8388829 -MD5 (fuhquake/fuhquake-skyboxes.zip) = 9360d7902e24e8b89d74600ce5d61b81 -SIZE (fuhquake/fuhquake-skyboxes.zip) = 3258479 diff -urN /usr/ports/games/fuhquake/files/Makefile fuhquake/files/Makefile --- /usr/ports/games/fuhquake/files/Makefile Thu Nov 17 09:17:11 2005 +++ fuhquake/files/Makefile Mon Jan 16 21:43:04 2006 @@ -11,7 +11,7 @@ # $FreeBSD: ports/games/fuhquake/files/Makefile,v 1.5 2005/11/17 12:17:11 edwin Exp $ # -DO_CFLAGS = ${CFLAGS} -funsigned-char -I${LOCALBASE}/include -I${X11BASE}/include +DO_CFLAGS = ${CFLAGS} -funsigned-char -I${LOCALBASE}/include -I${X11BASE}/include -DDATADIR='"${DATADIR}"' -DX11BASE='"${X11BASE}"' .if ${MACHINE_ARCH} == "i386" && !defined(WITHOUT_X86_ASM) DO_CFLAGS += -Did386 @@ -22,7 +22,7 @@ .endif .if defined(WITH_OPTIMIZED_CFLAGS) -DO_CFLAGS += -O3 -pipe -s -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations +DO_CFLAGS += -O -pipe -s -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations .endif .if defined(WITH_XMMS) diff -urN /usr/ports/games/fuhquake/files/patch-common.c fuhquake/files/patch-common.c --- /usr/ports/games/fuhquake/files/patch-common.c Fri Jun 18 05:16:23 2004 +++ fuhquake/files/patch-common.c Mon Jan 16 21:59:56 2006 @@ -1,11 +1,11 @@ ---- common.c.orig Thu Feb 5 01:05:19 2004 -+++ common.c Thu Feb 5 01:09:07 2004 +--- common.c.orig Wed Jan 7 00:39:44 2004 ++++ common.c Mon Jan 16 21:59:39 2006 @@ -1006,7 +1006,7 @@ if ((i = COM_CheckParm ("-basedir")) && i < com_argc - 1) Q_strncpyz (com_basedir, com_argv[i + 1], sizeof(com_basedir)); else - getcwd(com_basedir, sizeof(com_basedir) - 1); -+ strcpy(com_basedir, "%%BASEDIR%%"); ++ Q_strncpyz(com_basedir, DATADIR, sizeof(com_basedir)); for (i = 0; i < strlen(com_basedir); i++) if (com_basedir[i] == '\\') diff -urN /usr/ports/games/fuhquake/files/patch-mp3_player.c fuhquake/files/patch-mp3_player.c --- /usr/ports/games/fuhquake/files/patch-mp3_player.c Fri Jun 18 05:16:23 2004 +++ fuhquake/files/patch-mp3_player.c Mon Jan 16 20:47:55 2006 @@ -8,7 +8,7 @@ #include <sys/wait.h> -cvar_t mp3_dir = {"mp3_xmms_dir", "/usr/local/bin"}; -+cvar_t mp3_dir = {"mp3_xmms_dir", "%%X11BASE%%/bin"}; ++cvar_t mp3_dir = {"mp3_xmms_dir", X11BASE "/bin"}; cvar_t mp3_xmms_session = {"mp3_xmms_session", "0"}; #endif diff -urN /usr/ports/games/fuhquake/files/patch-vid_svga.c fuhquake/files/patch-vid_svga.c --- /usr/ports/games/fuhquake/files/patch-vid_svga.c Fri Jun 18 05:16:23 2004 +++ fuhquake/files/patch-vid_svga.c Wed Dec 31 21:00:00 1969 @@ -1,107 +0,0 @@ ---- vid_svgalib.c.orig Thu Feb 5 00:41:00 2004 -+++ vid_svgalib.c Thu Feb 5 00:51:44 2004 -@@ -20,12 +20,18 @@ - #include <termios.h> - #include <sys/ioctl.h> - #include <sys/stat.h> -+#ifdef __linux__ - #include <sys/vt.h> -+#endif - #include <stdarg.h> - #include <stdio.h> - #include <signal.h> - -+#if defined(__linux__) - #include <asm/io.h> -+#elif defined(__FreeBSD__) -+#include <machine/cpufunc.h> -+#endif - - #include "vga.h" - #include "vgakeyboard.h" -@@ -92,7 +98,6 @@ - float old_mouse_x, old_mouse_y; - int mx, my; - --cvar_t _windowed_mouse = {"_windowed_mouse", "1", CVAR_ARCHIVE}; //dummy for menu.c - cvar_t m_filter = {"m_filter","0"}; - cvar_t cl_keypad = {"cl_keypad", "1"}; - -@@ -307,45 +312,41 @@ - } - - static byte scantokey_kp[128] = { --// 0 1 2 3 4 5 6 7 --// 8 9 A B C D E F -- 0 , K_ESCAPE,'1', '2', '3', '4', '5', '6', -- '7', '8', '9', '0', '-', '=', K_BACKSPACE, 9, // 0 -- 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', -- 'o', 'p', '[', ']', K_ENTER,K_LCTRL, 'a', 's', // 1 -- 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', -- '\'', '`', K_LSHIFT,'\\', 'z', 'x', 'c', 'v', // 2 -- 'b', 'n', 'm', ',', '.', '/', K_RSHIFT,KP_STAR, -- K_LALT, ' ', K_CAPSLOCK,K_F1, K_F2, K_F3, K_F4, K_F5, // 3 -- K_F6, K_F7, K_F8, K_F9, K_F10, KP_NUMLOCK,K_SCRLCK,KP_HOME, -- KP_UPARROW,KP_PGUP,KP_MINUS,KP_LEFTARROW,KP_5,KP_RIGHTARROW,KP_PLUS,KP_END, // 4 -- KP_DOWNARROW,KP_PGDN,KP_INS,KP_DEL, 0, 0, 0, K_F11, -- K_F12, 0, 0, 0, 0, 0, 0, 0, // 5 -- KP_ENTER,K_RCTRL,KP_SLASH,0, K_RALT, K_PAUSE,K_HOME, K_UPARROW, -- K_PGUP, K_LEFTARROW,K_RIGHTARROW,K_END, K_DOWNARROW,K_PGDN,K_INS,K_DEL, // 6 -- 0, 0, 0, 0, 0, 0, 0, K_PAUSE, -- 0, 0, 0, 0, 0, K_LWIN, K_RWIN, K_MENU // 7 -+ 0, K_ESCAPE, '1', '2', '3', '4', '5', '6', -+ '7', '8', '9', '0', '-', '=', K_BACKSPACE, 9, -+ 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', -+ 'o', 'p', '[', ']', K_ENTER, K_LCTRL, 'a', 's', -+ 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', -+ '\'', '`', K_LSHIFT, '\\', 'z', 'x', 'c', 'v', -+ 'b', 'n', 'm', ',', '.', '/', K_RSHIFT, KP_STAR, -+ K_LALT, ' ', K_CAPSLOCK, K_F1, K_F2, K_F3, K_F4, K_F5, -+ K_F6, K_F7, K_F8, K_F9, K_F10, KP_NUMLOCK, K_SCRLCK, KP_HOME, -+ KP_UPARROW, KP_PGUP, KP_MINUS, KP_LEFTARROW, KP_5, KP_RIGHTARROW, KP_PLUS, KP_END, -+ KP_DOWNARROW, KP_PGDN, KP_INS, KP_DEL, 0, 0, 0, K_F11, -+ K_F12, KP_ENTER, K_RCTRL, KP_SLASH, K_PRINTSCR, K_RALT, K_HOME, K_UPARROW, -+ K_PGUP, K_LEFTARROW, K_RIGHTARROW, K_END, K_DOWNARROW, K_PGDN, K_INS, K_DEL, -+ K_PAUSE, K_LWIN, K_RWIN, K_MENU, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0 - }; - - static byte scantokey[128] = { --// 0 1 2 3 4 5 6 7 --// 8 9 A B C D E F -- 0 , K_ESCAPE,'1', '2', '3', '4', '5', '6', -- '7', '8', '9', '0', '-', '=', K_BACKSPACE, 9, // 0 -- 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', -- 'o', 'p', '[', ']', K_ENTER,K_LCTRL, 'a', 's', // 1 -- 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', -- '\'', '`', K_LSHIFT,'\\', 'z', 'x', 'c', 'v', // 2 -- 'b', 'n', 'm', ',', '.', '/', K_RSHIFT,KP_STAR, -- K_LALT, ' ', K_CAPSLOCK,K_F1, K_F2, K_F3, K_F4, K_F5, // 3 -- K_F6, K_F7, K_F8, K_F9, K_F10, KP_NUMLOCK,K_SCRLCK,K_HOME, -- K_UPARROW,K_PGUP,'-',K_LEFTARROW,'5',K_RIGHTARROW,'+', K_END, // 4 -- K_DOWNARROW,K_PGDN,K_INS,K_DEL, 0, 0, 0, K_F11, -- K_F12, 0, 0, 0, 0, 0, 0, 0, // 5 -- K_ENTER,K_RCTRL,'/', 0, K_RALT, K_PAUSE,K_HOME, K_UPARROW, -- K_PGUP, K_LEFTARROW,K_RIGHTARROW,K_END, K_DOWNARROW,K_PGDN,K_INS,K_DEL, // 6 -- 0, 0, 0, 0, 0, 0, 0, K_PAUSE, -- 0, 0, 0, 0, 0, K_LWIN, K_RWIN, K_MENU // 7 -+ 0, K_ESCAPE, '1', '2', '3', '4', '5', '6', -+ '7', '8', '9', '0', '-', '=', K_BACKSPACE, 9, -+ 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', -+ 'o', 'p', '[', ']', K_ENTER, K_LCTRL, 'a', 's', -+ 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', -+ '\'', '`', K_LSHIFT, '\\', 'z', 'x', 'c', 'v', -+ 'b', 'n', 'm', ',', '.', '/', K_RSHIFT, KP_STAR, -+ K_LALT, ' ', K_CAPSLOCK, K_F1, K_F2, K_F3, K_F4, K_F5, -+ K_F6, K_F7, K_F8, K_F9, K_F10, KP_NUMLOCK, K_SCRLCK, K_HOME, -+ K_UPARROW, K_PGUP, '-', K_LEFTARROW, '5', K_RIGHTARROW, '+', K_END, -+ K_DOWNARROW, K_PGDN, K_INS, K_DEL, 0, 0, 0, K_F11, -+ K_F12, K_ENTER, K_RCTRL, '/', K_PRINTSCR, K_RALT, K_HOME, K_UPARROW, -+ K_PGUP, K_LEFTARROW, K_RIGHTARROW, K_END, K_DOWNARROW, K_PGDN, K_INS, K_DEL, -+ K_PAUSE, K_LWIN, K_RWIN, K_MENU, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0 - }; - - void keyhandler(int scancode, int state) { diff -urN /usr/ports/games/fuhquake/pkg-message fuhquake/pkg-message --- /usr/ports/games/fuhquake/pkg-message Thu Nov 17 09:17:11 2005 +++ fuhquake/pkg-message Sun Jan 15 01:37:04 2006 @@ -0,0 +1,15 @@ +============================================================================== + +FuhQuake has been installed. + +To start it in full-screen mode you can run it with the "-fullscreen" +parameter. + +If you have mouse problems you can try running it with the "-nomdga" +parameter (this will make the mouse work fine when the DGA X11 extension is +disabled). + +If you hace sound problems try running it with the parameter +"-sndspeed <speed>", where "<speed>" could be 22050 or 44100 for example. + +============================================================================== diff -urN /usr/ports/games/fuhquake/pkg-plist fuhquake/pkg-plist --- /usr/ports/games/fuhquake/pkg-plist Thu Nov 17 09:17:11 2005 +++ fuhquake/pkg-plist Mon Jan 16 21:17:54 2006 @@ -15,48 +15,8 @@ %%PORTDOCS%%%%DOCSDIR%%/rulesets.txt %%PORTDOCS%%%%DOCSDIR%%/track.txt %%DATADIR%%/fuhquake/fragfile.dat -%%LITS%%%%DATADIR%%/fuhquake/lits/dm1.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/dm2.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/dm3.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/dm4.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/dm5.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/dm6.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e1m1.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e1m2.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e1m3.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e1m4.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e1m5.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e1m6.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e1m7.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e2m1.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e2m2.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e2m3.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e2m4.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e2m5.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e2m6.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e2m7.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e3m1.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e3m2.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e3m3.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e3m4.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e3m5.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e3m6.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e3m7.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e4m1.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e4m2.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e4m3.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e4m4.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e4m5.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e4m6.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e4m7.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/e4m8.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/end.lit -%%LITS%%%%DATADIR%%/fuhquake/lits/start.lit %%DATADIR%%/fuhquake/pak0.pak -%%SKYBOXES%%%%DATADIR%%/fuhquake/pak1.pak %%DATADIR%%/fuhquake/qwprogs.dat %%DATADIR%%/fuhquake/spprogs.dat -%%LITS%%@dirrm %%DATADIR%%/fuhquake/lits @dirrm %%DATADIR%%/fuhquake -@dirrm %%DATADIR%% %%PORTDOCS%%@dirrm %%DOCSDIR%% --- fuhquake.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1137462354.0>