Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 May 2010 23:50:49 +0800 (CST)
From:      Sunpoet Po-Chuan Hsieh <sunpoet@sunpoet.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        jhp@cocoja.holywar.net
Subject:   ports/146736: [PATCH] net/tintin++: update to 2.00.1
Message-ID:  <20100519155049.1CB942AEC6AD@sunpoet.net>
Resent-Message-ID: <201005191600.o4JG0FkH098812@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         146736
>Category:       ports
>Synopsis:       [PATCH] net/tintin++: update to 2.00.1
>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:   Wed May 19 16:00:15 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Sunpoet Po-Chuan Hsieh
>Release:        FreeBSD 8.1-PRERELEASE amd64
>Organization:
SUNPOET.net
>Environment:
System: FreeBSD bonjour.sunpoet.net 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #0: Wed May 19 00:13:00 CST 2010
>Description:
Regarding TinTin++, we have net/tintin++ (1.5pl9) and net/tintin++-devel (2.00.1).
The former is maintained by jhp@cocoja.holywar.net.
The latter is maintained by me.

The version update is based on the following reasons:
1. The latest version (2.00.1) is no longer a *devel* version. It's stable already.
2. The outdated version (1.5pl9) was unmaintained and unfetchable by upstream.
   Latest version update was done almost 10 years ago.

I would like to request as follows:
1. Update net/tintin++ to the latest version (mainly from net/tintin++-devel with minor fixes)
2. Retire net/tintin++-devel
3. Rectify PORTNAME

Also, since the maintainer of net/tintin++ is unreachable (mail rejected),
I would like to take maintainership of new net/tintin++.

- Sunpoet


Changes in brief:
- Update net/tintin++ to 2.00.1
- Retire net/tintin++-devel
- Reset maintainer and take maintainership (if possible)

Affected ports:
- chinese/tintin++
- net/tintin++
- net/tintin++-devel (dead)

Added file(s):
- files/patch-configure

Removed file(s):
- files/patch-ac
- files/patch-ad
- files/patch-ae
- files/patch-af
- files/patch-ag
- files/patch-ah
- files/patch-antisub.c
- files/patch-term.c
- pkg-plist

Port maintainer (jhp@cocoja.holywar.net) is cc'd.

Generated with FreeBSD Port Tools 0.99
>How-To-Repeat:
>Fix:

--- tintin-2.00.1.patch begins here ---
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/Makefile /usr/ports/sunpoet/tintin++/Makefile
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/Makefile	2003-12-26 09:59:55.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/Makefile	2010-05-19 23:41:23.000000000 +0800
@@ -5,17 +5,40 @@
 # $FreeBSD: ports/net/tintin++/Makefile,v 1.24 2003/12/26 01:59:55 linimon Exp $
 #
 
-PORTNAME=	tintin
-PORTVERSION=	1.5.9
+PORTNAME=	tintin++
+PORTVERSION=	2.00.1
 CATEGORIES+=	net games
-MASTER_SITES=	http://mail.newclear.net/tintin/download/ \
-		http://freebsd.hanirc.org/~jhp/tintin++/
-DISTNAME=	tintin++v1.5pl9
+MASTER_SITES=	GOOGLE_CODE
+DISTNAME=	tintin-${PORTVERSION}
 
-MAINTAINER=	jhp@cocoja.holywar.net
-COMMENT=	A client program to help playing muds
+MAINTAINER=	sunpoet@sunpoet.net
+COMMENT=	A client program to help playing MUDs
 
-WRKSRC=		${WRKDIR}/tintin++/v1.5/src
+LIB_DEPENDS=	pcre.0:${PORTSDIR}/devel/pcre
+
+CONFIGURE_ARGS+=--includedir=${LOCALBASE}/include --libdir=${LOCALBASE}/lib \
+		--prefix=${PREFIX}
+CONFIGURE_ENV=	LDFLAGS="${LDFLAGS} -L${LOCALBASE}/lib ${PTHREAD_LIBS}"
 GNU_CONFIGURE=	yes
+PLIST_FILES=	bin/tt++
+PORTDOCS=	${DOCS:T}
+USE_GMAKE=	yes
+WRKSRC=		${WRKDIR}/tt/src
+
+DOCS=		CREDITS FAQ README SCRIPTS TODO \
+		docs/chat_protocol.txt docs/tintin19.txt
+PROJECTHOST=	tintin-mud-client
+
+.include <bsd.port.pre.mk>
+
+post-configure:
+	@${REINPLACE_CMD} -e 's|-lpthread|${PTHREAD_LIBS}|' ${WRKSRC}/Makefile
+
+do-install:
+	${INSTALL_PROGRAM} ${WRKSRC}/tt++ ${PREFIX}/bin
+.if !defined(NOPORTDOCS)
+	@${INSTALL} -d ${DOCSDIR}
+	@cd ${WRKSRC}/.. && ${INSTALL_DATA} ${DOCS} ${DOCSDIR}
+.endif
 
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/distinfo /usr/ports/sunpoet/tintin++/distinfo
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/distinfo	2006-01-23 05:23:56.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/distinfo	2010-05-06 03:48:59.000000000 +0800
@@ -1,3 +1,3 @@
-MD5 (tintin++v1.5pl9.tar.gz) = 0635a327e074d83e7c4b1f70149b6b35
-SHA256 (tintin++v1.5pl9.tar.gz) = 5032a09107c8ba32044e64c7b3c27509218286e945517cfa3833b73911e436e5
-SIZE (tintin++v1.5pl9.tar.gz) = 125700
+MD5 (tintin-2.00.1.tar.gz) = 5bc8d0f4df124f7fe01a5904084ae01b
+SHA256 (tintin-2.00.1.tar.gz) = 0dc1f6805a2e408e6733504310d006bc2f98bd7ff23ff365c570cdb1ac016bef
+SIZE (tintin-2.00.1.tar.gz) = 241875
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ac /usr/ports/sunpoet/tintin++/files/patch-ac
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ac	2002-08-24 03:35:21.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-ac	1970-01-01 08:00:00.000000000 +0800
@@ -1,40 +0,0 @@
---- Makefile.in.orig	Thu Mar 25 11:03:34 1999
-+++ Makefile.in	Tue Sep 26 18:07:31 2000
-@@ -10,7 +10,6 @@
- # try uncommenting the 'gcc' line and commenting the 'cc' one.
- # Tintin++ doesn't *need* an ANSI compiler anymore, but gcc
- # is still better than cc on many platforms...
--CC = @CC@ -O
- CFLAGS = @DEFS@
- LIBS = @LIBS@
- PIPE = @PIPE@
-@@ -22,10 +21,10 @@
- 
- # BINDIR is the directory you wish tt++ to be placed if you wish to use
- # make install.  
--BINDIR = ..
-+BINDIR = /usr/local/bin
- 
- # DEFAULT_FILE_DIR is the path to tintin files. 
--DEFAULT_FILE_DIR = ~
-+DEFAULT_FILE_DIR = /usr/local/lib/tintin
- 
- #########################################
- # You shouldn't need to change anything #
-@@ -41,14 +40,14 @@
- 	variables.c highlight.c antisub.c ivars.c help.c text.c glob.c
- OFILES = $(CFILES:.c=.o)
- 
--all: tintin++ install
-+all: tintin++
- 
- tintin++: $(OFILES) tintin.h
- 	@echo "Linking..."
- 	$(CC) $(CFLAGS) $(FFLAGS) $(LFLAGS) -o tt++ $(OFILES) $(LIBS)
- 
- install: all
--	@./install.sh $(BINDIR) $(DEFAULT_FILE_DIR) $(COMPRESSED_HELP)
-+	@./install.sh $(BINDIR) $(DEFAULT_FILE_DIR) Ok
- 
- # Autocompile all .c files into .o files using this rule:
- .c.o:
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ad /usr/ports/sunpoet/tintin++/files/patch-ad
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ad	2008-01-21 20:59:07.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-ad	1970-01-01 08:00:00.000000000 +0800
@@ -1,53 +0,0 @@
---- main.c.orig	Thu Mar 25 11:26:53 1999
-+++ main.c	Tue Sep 26 17:27:58 2000
-@@ -100,12 +100,8 @@
- extern void term_echo();
- 
- int last_line_length;
--#if defined(HAVE_SYS_TERMIO_H) && !defined(BSD_ECHO) || defined(HAVE_TERMIO_H)
--#if defined(HAVE_SYS_TERMIO_H)
--#include <sys/termio.h>
--#else
--#include <termio.h>
--#endif
-+#if 1
-+#include <termios.h>
- tcflag_t c_lflag;
- cc_t c_cc[NCCS];
- #else
-@@ -580,7 +576,7 @@
-     if(ses->logfile) {
-       if (!OLD_LOG) {
-       count=0;
--      for(n=0;n<=didget;n++) 
-+      for(n=0;n<didget;n++)
-          if (buffer[n]!='\r') { 
-             temp[count]=buffer[n]; 
-             count++;
-@@ -750,7 +746,7 @@
-       sprintf(strng,"%c8%s\n\r%c7%c[%d;%df", E, cptr, E, E, input_row, input_col);
-     else
-       sprintf(strng,"%s\n\r", cptr);
--    write(1,strng, strlen(strng)+1);
-+    write(1,strng, strlen(strng));
-     display_col=1;
-     if (redraw && term_echoing && !is_split)
-       write(1, k_input, strlen(k_input));
-@@ -806,7 +802,7 @@
-       cptr++;
-       sprintf(strng,"%s\n\r", cptr);
-     }
--    write(1,strng, strlen(strng)+1);
-+    write(1,strng, strlen(strng));
-     display_col=1;
-   } 
-   text_came=TRUE;  
-@@ -876,7 +872,7 @@
-   input_col=1;  
-   sprintf(fn, "%c[2J%c[1;%dr%c[%d;1f", E, E, display_row, E, split_line);
-   write(1,fn, strlen(fn));
--  write(1,"-------------------------------------------------------------------------------", 80);
-+  write(1,"--------------------------------------------------------------------------------", 80);
-   sprintf(fn, "%c[%d;1f%c7", E, split_line-1, E);
-   write(1,fn,strlen(fn));
-   sprintf(fn, "%c[%d;1f", E, input_row);
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ae /usr/ports/sunpoet/tintin++/files/patch-ae
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ae	2002-08-24 03:35:21.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-ae	1970-01-01 08:00:00.000000000 +0800
@@ -1,25 +0,0 @@
---- utils.c.orig	Thu Mar  4 08:58:57 1999
-+++ utils.c	Fri Aug 23 12:30:37 2002
-@@ -21,6 +21,10 @@
- #include <unistd.h>
- #endif
- 
-+#include <stdio.h>
-+#include <errno.h>
-+#include <sys/param.h>
-+
- void syserr();
- 
- /*********************************************/
-@@ -55,8 +59,9 @@
- void syserr(msg)
-      char *msg;
- {
--  extern int errno, sys_nerr;
--  //extern char *sys_errlist[];
-+#if !defined(BSD) || (BSD < 199306)
-+    extern char *sys_errlist[];
-+#endif
- 
-   fprintf(stderr,"ERROR: %s (%d",msg, errno);
-   if(errno>0 && errno<sys_nerr)
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-af /usr/ports/sunpoet/tintin++/files/patch-af
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-af	2002-08-24 03:35:21.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-af	1970-01-01 08:00:00.000000000 +0800
@@ -1,20 +0,0 @@
---- misc.c.orig	Fri Mar  5 21:40:11 1999
-+++ misc.c	Tue Sep 26 17:20:07 2000
-@@ -106,7 +106,7 @@
-   char temp[2];
-   temp[0]=7;
-   temp[1]=0;
--  write(1, temp, 2);
-+  write(1, temp, 1);
- }
- 
- 
-@@ -176,7 +176,7 @@
-     }
-     ses=NULL;  
-     if (is_split) 
--      write(1, "c", 3);
-+      write(1, "c", 2);
-     tintin_puts2("TINTIN suffers from bloodlack, and the lack of a beating heart...", ses);
-     tintin_puts2("TINTIN is dead! R.I.P.", ses);
-     tintin_puts2("Your blood freezes as you hear TINTIN's death cry.", ses);
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ag /usr/ports/sunpoet/tintin++/files/patch-ag
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ag	2002-08-24 03:35:21.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-ag	1970-01-01 08:00:00.000000000 +0800
@@ -1,15 +0,0 @@
---- parse.c.orig	Sun Aug 28 22:12:10 1994
-+++ parse.c	Tue Sep 26 17:20:07 2000
-@@ -670,10 +670,10 @@
-   if(ses && !PSEUDO_PROMPT)
-     write_line_mud("", ses);
-   else if (!is_split)
--    write(1,"> ", 3);
-+    write(1,"> ", 2);
-   else {
-     sprintf(strng,"8> 7[%d;%df", input_row, input_col);
--    write(1,strng, strlen(strng)+1);
-+    write(1,strng, strlen(strng));
-     display_col+=2;
-   } 
- }
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ah /usr/ports/sunpoet/tintin++/files/patch-ah
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-ah	2002-08-24 03:35:21.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-ah	1970-01-01 08:00:00.000000000 +0800
@@ -1,17 +0,0 @@
---- install.sh.orig	Thu Mar 25 11:13:50 1999
-+++ install.sh	Tue Sep 26 18:13:52 2000
-@@ -6,11 +6,12 @@
- echo " "
- echo "Copying the tintin++ executable to \"$1\"..."
- #strip tt++
--cp tt++ "$1"
-+install -c -s -o bin -g bin -m 555 tt++ "$1"
- 
- echo "Copying the tintin++ help file to \"$2\"..."
- if [ "$3" ]; then 
--  cp support/.tt_help.txt.Z "$2/"
-+ [ -d "$2" ] || mkdir -p "$2"
-+ install -c -o bin -g bin -m 555 support/.tt_help.txt.Z "$2/"
- fi
- 
- echo 
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-antisub.c /usr/ports/sunpoet/tintin++/files/patch-antisub.c
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-antisub.c	2002-11-17 20:26:14.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-antisub.c	1970-01-01 08:00:00.000000000 +0800
@@ -1,15 +0,0 @@
---- antisub.c.orig	Sun Nov 17 13:26:33 2002
-+++ antisub.c	Sun Nov 17 13:26:43 2002
-@@ -6,12 +6,8 @@
- /*                     coded by peter unold 1992                     */
- /*********************************************************************/
- #include "tintin.h"
--#ifdef HAVE_STRING_H
--#include <string.h>
--#else
- #ifdef HAVE_STRINGS_H
- #include <strings.h>
--#endif
- #endif
- 
- #ifdef HAVE_STDLIB_H
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-configure /usr/ports/sunpoet/tintin++/files/patch-configure
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-configure	1970-01-01 08:00:00.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-configure	2009-07-23 23:59:00.000000000 +0800
@@ -0,0 +1,18 @@
+--- ./configure.orig	2009-07-22 10:02:23.000000000 -0400
++++ ./configure	2009-07-22 10:02:40.000000000 -0400
+@@ -6176,11 +6176,11 @@
+   { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
+ $as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
+    { (exit 1); exit 1; }; }
+-if test -r "/dev/ptmx"; then
+-  ac_cv_file__dev_ptmx=yes
+-else
++#if test -r "/dev/ptmx"; then
++#  ac_cv_file__dev_ptmx=yes
++#else
+   ac_cv_file__dev_ptmx=no
+-fi
++#fi
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_file__dev_ptmx" >&5
+ $as_echo "$ac_cv_file__dev_ptmx" >&6; }
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-term.c /usr/ports/sunpoet/tintin++/files/patch-term.c
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/files/patch-term.c	2008-01-21 20:59:07.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/files/patch-term.c	1970-01-01 08:00:00.000000000 +0800
@@ -1,79 +0,0 @@
---- echo.c	1999-03-04 19:23:42.000000000 +0100
-+++ echo.c	2007-12-28 15:23:31.000000000 +0100
-@@ -18,12 +18,8 @@
- #include <sys/ioctl.h>
- #endif
- 
--#if defined(HAVE_SYS_TERMIO_H) && !defined(BSD_ECHO) || defined(HAVE_TERMIO_H)
--#if defined(HAVE_SYS_TERMIO_H)
--#include <sys/termio.h>
--#else
--#include <termio.h>
--#endif
-+#if 1
-+#include <termios.h>
- #else
- #include <sgtty.h>
- #if DIRTY_REDEFINE
-@@ -34,8 +30,8 @@
- #endif
- #endif
- 
--#if defined(HAVE_SYS_TERMIO_H) && !defined(BSD_ECHO) || defined(HAVE_TERMIO_H)
--#ifdef HAVE_TCFLAG_T
-+#if 1
-+#if 1
- extern tcflag_t c_lflag;
- extern cc_t c_cc[NCCS];
- #else
-@@ -44,10 +40,10 @@
- #endif
- void init_echo()
- {
--  struct  termio io;
-+  struct  termios io;
- 
--  if(ioctl(0, TCGETA, &io)<0)
--    syserr("ioctl");
-+  if(tcgetattr(0, &io)<0)
-+    syserr("tcgetattr");
-   c_lflag = io.c_lflag;
-   c_cc[VMIN] = io.c_cc[VMIN];
-   c_cc[VTIME] = io.c_cc[VTIME];
-@@ -58,14 +54,14 @@
- /********************************/
- void term_echo()
- {
--  struct  termio io;
-+  struct  termios io;
- 
--  if(ioctl(0, TCGETA, &io)<0)
-+  if(tcgetattr(0, &io)<0)
-     syserr("ioctl");
-   io.c_lflag = c_lflag;
-   io.c_cc[VMIN] = c_cc[VMIN];
-   io.c_cc[VTIME] = c_cc[VTIME];
--  if(ioctl(0, TCSETA, &io)<0)
-+  if(tcsetattr(0, TCSANOW, &io)<0)
-     syserr("ioctl");
- }
- 
-@@ -74,15 +70,15 @@
- /*********************************/
- void term_noecho()
- {
--  struct  termio io;
-+  struct  termios io;
- 
--  if(ioctl(0, TCGETA, &io)<0)
-+  if(tcgetattr(0, &io)<0)
-     syserr("ioctl");
-   io.c_lflag &= ~ECHO; 
-   io.c_lflag &= ~ICANON;
-   io.c_cc[VMIN]=1;
-   io.c_cc[VTIME]=0;
--  if(ioctl(0, TCSETA, &io) < 0)
-+  if(tcsetattr(0, TCSANOW, &io) < 0)
-     syserr("ioctl");
- }
- 
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/pkg-descr /usr/ports/sunpoet/tintin++/pkg-descr
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/pkg-descr	2007-01-14 00:40:58.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/pkg-descr	2010-03-12 19:40:50.000000000 +0800
@@ -1,8 +1,9 @@
-     TINTIN++ is a client program specialized to help playing muds.
-     This is a souped up version of TINTIN III, many new features
-     have been added since III.  We saw room for improvement on the
-     features available from TINTIN, and since we like the format of
-     the program, we decided to use TINTIN as a base for what we
-     hope to make one of the most powerful clients around.
+TinTin++ is a console MUD client for Windows, Linux, and Mac OS X. Its main
+assets are an easy to learn and use scripting language, full telnet support,
+a split screen interface to separate mud output from client input, and
+keyboard macros that work on all systems. 
 
-WWW: http://tintin.sourceforge.net/
+TinTin++ projet is now hosted on Google Code sine version 1.99.6b1.
+
+WWW:    http://tintin.sourceforge.net/
+	http://code.google.com/p/tintin-mud-client
diff -ruN --exclude=CVS /usr/ports/sunpoet/tintin++/../../net/tintin++/pkg-plist /usr/ports/sunpoet/tintin++/pkg-plist
--- /usr/ports/sunpoet/tintin++/../../net/tintin++/pkg-plist	2000-09-25 22:42:58.000000000 +0800
+++ /usr/ports/sunpoet/tintin++/pkg-plist	1970-01-01 08:00:00.000000000 +0800
@@ -1,3 +0,0 @@
-bin/tt++
-lib/tintin/.tt_help.txt.Z
-@dirrm lib/tintin
--- tintin-2.00.1.patch ends here ---

--- zh-tintin-2.00.1.patch begins here ---
diff -ruN /usr/ports/chinese/tintin++/Makefile.orig /usr/ports/chinese/tintin++/Makefile
--- /usr/ports/chinese/tintin++/Makefile.orig	2008-12-15 18:36:26.850442000 +0800
+++ /usr/ports/chinese/tintin++/Makefile	2010-05-19 23:45:29.000000000 +0800
@@ -9,7 +9,7 @@
 
 MAINTAINER=	sunpoet@sunpoet.net
 
-MASTERDIR=	${.CURDIR}/../../net/tintin++-devel
+MASTERDIR=	${.CURDIR}/../../net/tintin++
 
 CONFIGURE_ARGS=	--enable-big5
 
--- zh-tintin-2.00.1.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100519155049.1CB942AEC6AD>