summaryrefslogtreecommitdiff
path: root/devel/cmdline
diff options
context:
space:
mode:
authorjlam <jlam@pkgsrc.org>2000-08-25 16:15:52 +0000
committerjlam <jlam@pkgsrc.org>2000-08-25 16:15:52 +0000
commitd133b3b2d791e75caccd132bbbf5b0577e021ebb (patch)
tree91bc4f6b08d1fbc4010c48f8659cf5765bb79760 /devel/cmdline
parent7ca512d5d1038a3cba2c7b3169fda9dfdd134713 (diff)
downloadpkgsrc-d133b3b2d791e75caccd132bbbf5b0577e021ebb.tar.gz
cmdline - C++ library for parsing command arguments
Diffstat (limited to 'devel/cmdline')
-rw-r--r--devel/cmdline/Makefile30
-rw-r--r--devel/cmdline/files/md53
-rw-r--r--devel/cmdline/files/patch-sum39
-rw-r--r--devel/cmdline/patches/patch-aa71
-rw-r--r--devel/cmdline/patches/patch-ab48
-rw-r--r--devel/cmdline/patches/patch-ac41
-rw-r--r--devel/cmdline/patches/patch-ad84
-rw-r--r--devel/cmdline/patches/patch-ae184
-rw-r--r--devel/cmdline/patches/patch-af160
-rw-r--r--devel/cmdline/patches/patch-ag123
-rw-r--r--devel/cmdline/patches/patch-ah38
-rw-r--r--devel/cmdline/patches/patch-ai81
-rw-r--r--devel/cmdline/patches/patch-aj37
-rw-r--r--devel/cmdline/patches/patch-ak102
-rw-r--r--devel/cmdline/patches/patch-al62
-rw-r--r--devel/cmdline/patches/patch-am99
-rw-r--r--devel/cmdline/patches/patch-an77
-rw-r--r--devel/cmdline/patches/patch-ao274
-rw-r--r--devel/cmdline/patches/patch-ap249
-rw-r--r--devel/cmdline/patches/patch-aq42
-rw-r--r--devel/cmdline/patches/patch-ar59
-rw-r--r--devel/cmdline/patches/patch-as35
-rw-r--r--devel/cmdline/patches/patch-at131
-rw-r--r--devel/cmdline/patches/patch-au30
-rw-r--r--devel/cmdline/patches/patch-av161
-rw-r--r--devel/cmdline/patches/patch-aw399
-rw-r--r--devel/cmdline/patches/patch-ax637
-rw-r--r--devel/cmdline/patches/patch-ay169
-rw-r--r--devel/cmdline/patches/patch-az615
-rw-r--r--devel/cmdline/patches/patch-ba102
-rw-r--r--devel/cmdline/patches/patch-bb208
-rw-r--r--devel/cmdline/patches/patch-bc100
-rw-r--r--devel/cmdline/patches/patch-bd242
-rw-r--r--devel/cmdline/patches/patch-be98
-rw-r--r--devel/cmdline/patches/patch-bf54
-rw-r--r--devel/cmdline/patches/patch-bg108
-rw-r--r--devel/cmdline/patches/patch-bh40
-rw-r--r--devel/cmdline/patches/patch-bi116
-rw-r--r--devel/cmdline/patches/patch-bj173
-rw-r--r--devel/cmdline/patches/patch-bk76
-rw-r--r--devel/cmdline/pkg/COMMENT1
-rw-r--r--devel/cmdline/pkg/DESCR3
-rw-r--r--devel/cmdline/pkg/PLIST11
43 files changed, 5412 insertions, 0 deletions
diff --git a/devel/cmdline/Makefile b/devel/cmdline/Makefile
new file mode 100644
index 00000000000..3398217bd8f
--- /dev/null
+++ b/devel/cmdline/Makefile
@@ -0,0 +1,30 @@
+# $NetBSD: Makefile,v 1.1.1.1 2000/08/25 16:15:52 jlam Exp $
+
+DISTNAME= CmdLine
+PKGNAME= cmdline-${PKG_VERS}
+DIST_VERS= 1.04
+PKG_VERS= 1.05nb1
+CATEGORIES= devel
+MASTER_SITES= http://www.enteract.com/~bradapp/ftp/src/libs/C++/
+
+MAINTAINER= jlam@netbsd.org
+HOMEPAGE= http://www.enteract.com/~bradapp/ftp/src/libs/C++/CmdLine.html
+
+DIST_SUBDIR= cmdline-${DIST_VERS}
+
+USE_LIBTOOL= # defined
+NO_CONFIGURE= # defined
+
+.if exists(/usr/include/readline.h)
+MOREUSRDEFS+= -DHAVE_READLINE_H
+MOREUSRLIBS+= -ledit -ltermcap
+.else
+DEPENDS+= readline-*:../../devel/readline
+MOREUSRDEFS+= -DHAVE_READLINE_READLINE_H
+MOREUSRLIBS+= ${LDFLAGS} -lreadline -ltermcap
+.endif
+
+MAKE_ENV+= MOREUSRDEFS="${MOREUSRDEFS}"
+MAKE_ENV+= MOREUSRLIBS="${MOREUSRLIBS}"
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/devel/cmdline/files/md5 b/devel/cmdline/files/md5
new file mode 100644
index 00000000000..4666ea501da
--- /dev/null
+++ b/devel/cmdline/files/md5
@@ -0,0 +1,3 @@
+$NetBSD: md5,v 1.1.1.1 2000/08/25 16:15:52 jlam Exp $
+
+MD5 (cmdline-1.04/CmdLine.tar.gz) = ae2d805e9ced6a862307715253d0a84a
diff --git a/devel/cmdline/files/patch-sum b/devel/cmdline/files/patch-sum
new file mode 100644
index 00000000000..0130f91d9eb
--- /dev/null
+++ b/devel/cmdline/files/patch-sum
@@ -0,0 +1,39 @@
+$NetBSD: patch-sum,v 1.1.1.1 2000/08/25 16:15:52 jlam Exp $
+
+MD5 (patch-aa) = 1b104107cf882e4cb3ffbc9eff23fce7
+MD5 (patch-ab) = a23bca184a8937f1a19f4e814bb88038
+MD5 (patch-ac) = 5463c6295dacd48b3d102599fac5e2c3
+MD5 (patch-ad) = d1c3f24f88189d1d00c5a5fb39cc15ab
+MD5 (patch-ae) = 31599930521a553ca62bfdf3891eaca0
+MD5 (patch-af) = c2bc9740df3a07244dd7a05fe9870b7f
+MD5 (patch-ag) = 22f77a05607374145827208c82b8ed81
+MD5 (patch-ah) = daaa8553bc23f4cede8c614e80c49d80
+MD5 (patch-ai) = 8a17e49a3f22b540c1aff7e76361fdd8
+MD5 (patch-aj) = bbf27ba3a4bb8ca813c070474ad9a508
+MD5 (patch-ak) = cba0e51465501ad7899eb0abdaf809a5
+MD5 (patch-al) = 5f91d3a5247e7b0497cd7faf24cb416f
+MD5 (patch-am) = 4ba04325d01722200fefde0e71207418
+MD5 (patch-an) = 028904f17214a387b5e64318049e1d85
+MD5 (patch-ao) = 9950a8b306c2c67fb4df6bb55f7c94f9
+MD5 (patch-ap) = a5a4a0b85a9d8df42f84ae5d5c2ce785
+MD5 (patch-aq) = 616beb9362ec4ed168e221ab22570430
+MD5 (patch-ar) = 189843c64b0a6df5303a62f3e65b4bc2
+MD5 (patch-as) = f93118c6fa747ffad4684c20d4b2dd23
+MD5 (patch-at) = 5cf58101bc7059ddd5fbe8f3b6431090
+MD5 (patch-au) = 9cd9ba694b52ee5d6901990431d40841
+MD5 (patch-av) = da7e83313c978d8cb6a2941df10cd4ce
+MD5 (patch-aw) = 3cd2158e8cfcf7d217a3aec11ce0c97e
+MD5 (patch-ax) = b415f2cb118bfbbb598532b88ddf48aa
+MD5 (patch-ay) = 673e1ea1b9109a29d6de4ed69beb0a2f
+MD5 (patch-az) = a29ee8df91415f0bf42b8e1328c78dde
+MD5 (patch-ba) = 182909e3184529841759736aebfdbdd2
+MD5 (patch-bb) = 4912be536b503a10c8916dc04c1bff84
+MD5 (patch-bc) = 615d0cb28394d4c539da4af293b7ed64
+MD5 (patch-bd) = 064c19014c159ddb9bfac8c53a3b3ea8
+MD5 (patch-be) = 554d8a4fbe5a0ba6d23c48debfd7baca
+MD5 (patch-bf) = c5e576e7ba35ded3ca06ddff6dc1660d
+MD5 (patch-bg) = b7fc331e0410e300a54a5fd9de0548c7
+MD5 (patch-bh) = 4c90f0610cf7e1dc4b8af5ffb0ade203
+MD5 (patch-bi) = 2827f9b0b72c6d7c91076006cd374d5f
+MD5 (patch-bj) = d74eefe364e5ed2487f84c9943ca9439
+MD5 (patch-bk) = 4ca3eb755506f6fb1fd18978491ccd26
diff --git a/devel/cmdline/patches/patch-aa b/devel/cmdline/patches/patch-aa
new file mode 100644
index 00000000000..1ad6e446041
--- /dev/null
+++ b/devel/cmdline/patches/patch-aa
@@ -0,0 +1,71 @@
+$NetBSD: patch-aa,v 1.1.1.1 2000/08/25 16:15:52 jlam Exp $
+
+--- Config.mk.orig Thu Jan 2 13:33:36 1997
++++ Config.mk
+@@ -13,7 +13,7 @@
+ ###^^#####################################################################
+
+ ## Universe to compile in (use "att" for SYSV Unix and "ucb" for BSD Unix).
+-.UNIVERSE=att
++.UNIVERSE=ucb
+
+ ## Host operating system
+ OS=unix
+@@ -28,7 +28,7 @@
+ OBJEXT=.o
+
+ ## library file extension
+-LIBEXT=.a
++LIBEXT=.la
+
+ ## executable file extension
+ EXECEXT=
+@@ -106,7 +106,7 @@
+ # their corresponding strings at the end of doc/macros.man!
+ #
+ ## common local directory
+-LOCAL=/usr/local/
++LOCAL=${PREFIX}/
+
+ ## where to install executables
+ BINDIR=$(LOCAL)bin/
+@@ -127,10 +127,10 @@
+ LOCALMAN=local_man/
+
+ ## where to install man-pages
+-MANDIR=/usr/man/$(LOCALMAN)
++MANDIR=$(LOCAL)man/
+
+ ## where to install catman-pages (preformatted manual pages)
+-CATMANDIR=/usr/catman/$(LOCALMAN)
++CATMANDIR=$(MANDIR)
+
+ ## subdirectory of MANDIR and CATMANDIR for section 1 of man-pages
+ MAN1DIR=man1/
+@@ -149,7 +149,7 @@
+ # Define C++ compilation stuff
+ #
+ ## name of C++ compiler
+-CC=CC
++CC=$(LIBTOOL) g++
+
+ ## option to specify other include directories to search
+ INC=-I
+@@ -183,7 +183,8 @@
+ FLAG=$(OPT)
+ # FLAG=$(DBG)
+ TESTDEFS=
+-USRDEFS=$(DEF)DEBUG_CMDLINE
++USRDEFS=$(DEF)unix $(DEF)DEBUG_CMDLINE $(DEF)GNU_READLINE $(MOREUSRDEFS)
++USRLIBS=$(MOREUSRLIBS)
+ OPTIONS=
+
+ #------------------------------------------------------------------------------
+@@ -192,6 +193,7 @@
+ RECUR= "FLAG=$(FLAG)" \
+ "TESTDEFS=$(TESTDEFS)" \
+ "USRDEFS=$(USRDEFS)" \
++ "USRLIBS=$(USRLIBS)" \
+ "OPTIONS=$(OPTIONS)"
+
+ #------------------------------------------------------------------------------
diff --git a/devel/cmdline/patches/patch-ab b/devel/cmdline/patches/patch-ab
new file mode 100644
index 00000000000..28d51196992
--- /dev/null
+++ b/devel/cmdline/patches/patch-ab
@@ -0,0 +1,48 @@
+$NetBSD: patch-ab,v 1.1.1.1 2000/08/25 16:15:52 jlam Exp $
+
+--- doc/Makefile.orig Thu Jan 2 13:33:24 1997
++++ doc/Makefile
+@@ -47,18 +47,16 @@
+
+ .man1.1:
+ $(SOELIM) $< >$*.1
+- $(MANTOCATMAN) $*.1
+
+ .man3.3:
+ $(SOELIM) $< >$*.3
+- $(MANTOCATMAN) $*.3
+
+ ###
+ # installation dependencies
+ ###
+ all:
+
+-install: installman installcatman
++install: installman
+
+ installman: installman1 installman3
+
+@@ -66,19 +64,19 @@
+
+ installman1: $(MAN1FILES)
+ ( $(CHDIR) $(MANDIR)$(MAN1DIR) ; $(RM) $(MAN1FILES) )
+- $(CP) $(MAN1FILES) $(MANDIR)$(MAN1DIR)
++ $(BSD_INSTALL_MAN) $(MAN1FILES) $(MANDIR)$(MAN1DIR)
+
+ installcatman1: $(CATMAN1FILES)
+ ( $(CHDIR) $(CATMANDIR)$(MAN1DIR) ; $(RM) $(CATMAN1FILES) )
+- $(CP) $(CATMAN1FILES) $(CATMANDIR)$(MAN1DIR)
++ $(BSD_INSTALL_MAN) $(CATMAN1FILES) $(CATMANDIR)$(MAN1DIR)
+
+ installman3: $(MAN3FILES)
+ ( $(CHDIR) $(MANDIR)$(MAN3DIR) ; $(RM) $(MAN3FILES) )
+- $(CP) $(MAN3FILES) $(MANDIR)$(MAN3DIR)
++ $(BSD_INSTALL_MAN) $(MAN3FILES) $(MANDIR)$(MAN3DIR)
+
+ installcatman3: $(CATMAN3FILES)
+ ( $(CHDIR) $(CATMANDIR)$(MAN3DIR) ; $(RM) $(CATMAN3FILES) )
+- $(CP) $(CATMAN3FILES) $(CATMANDIR)$(MAN3DIR)
++ $(BSD_INSTALL_MAN) $(CATMAN3FILES) $(CATMANDIR)$(MAN3DIR)
+
+ ###
+ # maintenance dependencies
diff --git a/devel/cmdline/patches/patch-ac b/devel/cmdline/patches/patch-ac
new file mode 100644
index 00000000000..b2c62e1fbb2
--- /dev/null
+++ b/devel/cmdline/patches/patch-ac
@@ -0,0 +1,41 @@
+$NetBSD: patch-ac,v 1.1.1.1 2000/08/25 16:15:52 jlam Exp $
+
+--- src/cmd/Makefile.orig Thu Jan 2 13:33:27 1997
++++ src/cmd/Makefile
+@@ -46,12 +46,12 @@
+ ###
+ # compilation options
+ ###
+-INCLUDES=$(INC)$(PROGLIBDIR)
++INCLUDES=$(INC)$(PROGLIBDIR) $(INC)$(CURDIR)
+ FLAG=$(OPT)
+ # FLAG=$(DBG)
+ TESTDEFS=
+ USRDEFS=
+-DEFINES=$(OSDEFS) $(USRDEFS) $(TESTDEFS)
++DEFINES=$(OSDEFS) $(USRDEFS) $(TESTDEFS) $(MOREUSRDEFS)
+ OPTIONS=
+ CFLAGS=$(FLAG) $(INCLUDES) $(DEFINES) $(OPTIONS)
+
+@@ -74,17 +74,16 @@
+ ( $(CHDIR) $(PROGLIBDIR) ; $(BUILD) $@ ; )
+
+ $(PROGRAM): $(OBJS)
+- $(CC) $(EXE) $@ $(OBJS) $(PROGLIB)
++ $(CC) $(EXE) $@ $(OBJS) $(PROGLIB) $(USRLIBS)
+
+ ###
+ # maintenance dependencies
+ ###
+ install: $(PROGRAM) $(BINDIR) $(PROGRAM).pl
+ -$(RM) $(BINDIR)$(PROGRAM) $(PERLLIB)$(PROGRAM).pl $(TCLLIB)$(PROGRAM).tcl
+- $(CP) $(PROGRAM) $(BINDIR)$(PROGRAM)
+- $(STRIP) $(BINDIR)$(PROGRAM)
+- -$(CP) $(PROGRAM).pl $(PERLLIB)$(PROGRAM).pl
+- -$(CP) $(PROGRAM).tcl $(TCLLIB)$(PROGRAM).tcl
++ $(LIBTOOL) $(BSD_INSTALL_PROGRAM) $(PROGRAM) $(BINDIR)$(PROGRAM)
++# -$(CP) $(PROGRAM).pl $(PERLLIB)$(PROGRAM).pl
++# -$(CP) $(PROGRAM).tcl $(TCLLIB)$(PROGRAM).tcl
+
+ clean:
+ -$(RM) *$(OBJEXT) core .exrc *~ \#*\#
diff --git a/devel/cmdline/patches/patch-ad b/devel/cmdline/patches/patch-ad
new file mode 100644
index 00000000000..91e0987e1f0
--- /dev/null
+++ b/devel/cmdline/patches/patch-ad
@@ -0,0 +1,84 @@
+$NetBSD: patch-ad,v 1.1.1.1 2000/08/25 16:15:52 jlam Exp $
+
+--- src/cmd/argtypes.c.orig Thu Jan 2 13:33:27 1997
++++ src/cmd/argtypes.c
+@@ -1,10 +1,6 @@
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
+-
+ #include "argtypes.h"
+
++using namespace cmdline;
+
+ //-----------------------------------------------------------------------------
+ // ^FUNCTION: operator() - handle an argument from the command-line
+@@ -64,7 +60,7 @@
+
+ //-------------------------------------------------------------- ShellCmdArgInt
+
+-ShellCmdArgInt::~ShellCmdArgInt(void)
++ShellCmdArgInt::~ShellCmdArgInt()
+ {
+ }
+
+@@ -80,7 +76,7 @@
+
+ //------------------------------------------------------------ ShellCmdArgFloat
+
+-ShellCmdArgFloat::~ShellCmdArgFloat(void)
++ShellCmdArgFloat::~ShellCmdArgFloat()
+ {
+ }
+
+@@ -96,7 +92,7 @@
+
+ //------------------------------------------------------------- ShellCmdArgChar
+
+-ShellCmdArgChar::~ShellCmdArgChar(void)
++ShellCmdArgChar::~ShellCmdArgChar()
+ {
+ }
+
+@@ -112,7 +108,7 @@
+
+ //-------------------------------------------------------------- ShellCmdArgStr
+
+-ShellCmdArgStr::~ShellCmdArgStr(void)
++ShellCmdArgStr::~ShellCmdArgStr()
+ {
+ }
+
+@@ -131,7 +127,7 @@
+ const char * ShellCmdArgBool::true_string = "TRUE" ;
+ const char * ShellCmdArgBool::false_string = "" ;
+
+-ShellCmdArgBool::~ShellCmdArgBool(void)
++ShellCmdArgBool::~ShellCmdArgBool()
+ {
+ }
+
+@@ -148,7 +144,7 @@
+
+ //------------------------------------------------------------ ShellCmdArgClear
+
+-ShellCmdArgClear::~ShellCmdArgClear(void)
++ShellCmdArgClear::~ShellCmdArgClear()
+ {
+ }
+
+@@ -165,7 +161,7 @@
+
+ //----------------------------------------------------------- ShellCmdArgToggle
+
+-ShellCmdArgToggle::~ShellCmdArgToggle(void)
++ShellCmdArgToggle::~ShellCmdArgToggle()
+ {
+ }
+
+@@ -179,4 +175,3 @@
+ }
+ return badval;
+ }
+-
diff --git a/devel/cmdline/patches/patch-ae b/devel/cmdline/patches/patch-ae
new file mode 100644
index 00000000000..f4b18a99a7f
--- /dev/null
+++ b/devel/cmdline/patches/patch-ae
@@ -0,0 +1,184 @@
+$NetBSD: patch-ae,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/argtypes.h.orig Thu Jan 2 13:33:27 1997
++++ src/cmd/argtypes.h
+@@ -8,6 +8,10 @@
+ //
+ // ^HISTORY:
+ // 04/26/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Refer to namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _argtypes_h
+@@ -27,21 +31,21 @@
+ char * keyword,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =cmdline::CmdArg::isOPTVALREQ)
+ : ShellCmdArg(name, optchar, keyword, value, description, syntax_flags)
+ {}
+
+ ShellCmdArgInt(char * name,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =cmdline::CmdArg::isPOSVALREQ)
+ : ShellCmdArg(name, value, description, syntax_flags)
+ {}
+
+- virtual ~ShellCmdArgInt(void);
++ virtual ~ShellCmdArgInt();
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd);
++ operator()(const char * & arg, cmdline::CmdLine & cmd);
+ } ;
+
+ //------------------------------------------------------------ ShellCmdArgFloat
+@@ -56,21 +60,21 @@
+ char * keyword,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =cmdline::CmdArg::isOPTVALREQ)
+ : ShellCmdArg(name, optchar, keyword, value, description, syntax_flags)
+ {}
+
+ ShellCmdArgFloat(char * name,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =cmdline::CmdArg::isPOSVALREQ)
+ : ShellCmdArg(name, value, description, syntax_flags)
+ {}
+
+- virtual ~ShellCmdArgFloat(void);
++ virtual ~ShellCmdArgFloat();
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd);
++ operator()(const char * & arg, cmdline::CmdLine & cmd);
+ } ;
+
+ //------------------------------------------------------------- ShellCmdArgChar
+@@ -85,21 +89,21 @@
+ char * keyword,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =cmdline::CmdArg::isOPTVALREQ)
+ : ShellCmdArg(name, optchar, keyword, value, description, syntax_flags)
+ {}
+
+ ShellCmdArgChar(char * name,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =cmdline::CmdArg::isPOSVALREQ)
+ : ShellCmdArg(name, value, description, syntax_flags)
+ {}
+
+- virtual ~ShellCmdArgChar(void);
++ virtual ~ShellCmdArgChar();
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd);
++ operator()(const char * & arg, cmdline::CmdLine & cmd);
+ } ;
+
+ //-------------------------------------------------------------- ShellCmdArgStr
+@@ -114,21 +118,21 @@
+ char * keyword,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =cmdline::CmdArg::isOPTVALREQ)
+ : ShellCmdArg(name, optchar, keyword, value, description, syntax_flags)
+ {}
+
+ ShellCmdArgStr(char * name,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =cmdline::CmdArg::isPOSVALREQ)
+ : ShellCmdArg(name, value, description, syntax_flags)
+ {}
+
+- virtual ~ShellCmdArgStr(void);
++ virtual ~ShellCmdArgStr();
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd);
++ operator()(const char * & arg, cmdline::CmdLine & cmd);
+ } ;
+
+ //------------------------------------------------------------- ShellCmdArgBool
+@@ -142,23 +146,23 @@
+ char optchar,
+ char * keyword,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =cmdline::CmdArg::isOPT)
+ : ShellCmdArg(name, optchar, keyword, description, syntax_flags)
+ {}
+
+- virtual ~ShellCmdArgBool(void);
++ virtual ~ShellCmdArgBool();
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd);
++ operator()(const char * & arg, cmdline::CmdLine & cmd);
+
+ // Need to know what the values to use for TRUE and FALSE are
+ //
+
+ static const char *
+- True(void) { return true_string ; }
++ True() { return true_string ; }
+
+ static const char *
+- False(void) { return false_string ; }
++ False() { return false_string ; }
+
+ // Need to be able to set the values to use for TRUE and FALSE
+
+@@ -184,14 +188,14 @@
+ char optchar,
+ char * keyword,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =cmdline::CmdArg::isOPT)
+ : ShellCmdArgBool(name, optchar, keyword, description, syntax_flags)
+ {}
+
+- virtual ~ShellCmdArgClear(void);
++ virtual ~ShellCmdArgClear();
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd);
++ operator()(const char * & arg, cmdline::CmdLine & cmd);
+ } ;
+
+ //----------------------------------------------------------- ShellCmdArgToggle
+@@ -202,14 +206,14 @@
+ char optchar,
+ char * keyword,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =cmdline::CmdArg::isOPT)
+ : ShellCmdArgBool(name, optchar, keyword, description, syntax_flags)
+ {}
+
+- virtual ~ShellCmdArgToggle(void);
++ virtual ~ShellCmdArgToggle();
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd);
++ operator()(const char * & arg, cmdline::CmdLine & cmd);
+ } ;
+
+ #endif /* _argtypes_h */
diff --git a/devel/cmdline/patches/patch-af b/devel/cmdline/patches/patch-af
new file mode 100644
index 00000000000..2b1df097b14
--- /dev/null
+++ b/devel/cmdline/patches/patch-af
@@ -0,0 +1,160 @@
+$NetBSD: patch-af,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/cmdparse.c.orig Thu Jan 2 13:33:27 1997
++++ src/cmd/cmdparse.c
+@@ -10,20 +10,26 @@
+ //
+ // 03/01/93 Brad Appleton <bradapp@enteract.com>
+ // - Added ALLOW_PLUS to list of CmdLine configuration flags
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Update to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <fstream.h>
+-#include <strstream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cctype>
++#include <cstdlib>
++#include <cstring>
++#include <fstream>
++#include <iostream>
++#include <strstream>
+
+ #include <argtypes.h>
+ #include "cmdparse.h"
+ #include "syntax.h"
+ #include "quoted.h"
+
++using namespace cmdline;
++using namespace std;
++
+ enum { SUCCESS = 0, FAILURE = -1 } ;
+
+ enum { MAX_IDENT_LEN = 64, MAX_DESCRIPTION_LEN = 1024 } ;
+@@ -67,8 +73,8 @@
+ copy(char * & dest, const char * src)
+ {
+ if (src == NULL) return ;
+- dest = new char[::strlen(src) + 1] ;
+- if (dest) ::strcpy(dest, src);
++ dest = new char[strlen(src) + 1] ;
++ if (dest) strcpy(dest, src);
+ }
+
+ //------------------------------------------------------------------ CmdArgVers
+@@ -78,7 +84,7 @@
+ {
+ }
+
+-CmdArgVers::~CmdArgVers(void)
++CmdArgVers::~CmdArgVers()
+ {
+ }
+
+@@ -136,7 +142,7 @@
+ // Follow along - its pretty straightforward.
+ //-^^----------------
+ int
+-CmdParseCommand::parse_declarations(void)
++CmdParseCommand::parse_declarations()
+ {
+ const char * str = input_str ;
+ const char * varname = input_var ;
+@@ -176,7 +182,7 @@
+ // means that standard input should be used.
+ //
+ if (filename) {
+- if (::strcmp(filename, "-") == 0) {
++ if (strcmp(filename, "-") == 0) {
+ rc += parse_declarations(cin);
+ } else {
+ ifstream ifs(filename);
+@@ -256,7 +262,7 @@
+ char * kwd = NULL ;
+ char * val = NULL ;
+ char * desc = NULL ;
+- unsigned flags = arg.syntax() ;
++ unsigned int flags = arg.syntax() ;
+ char opt = arg.optchar() ;
+
+ // Need to make copies of some things because we cant assume they
+@@ -333,7 +339,7 @@
+ // Parse the user's argument declarations from an input string.
+ //
+ // ^REQUIREMENTS:
+-// This member function should only be called by parse_declarations(void).
++// This member function should only be called by parse_declarations().
+ //
+ // ^SIDE-EFFECTS:
+ // - modifies usr_cmd by appending to it any valid arguments that we parse.
+@@ -348,8 +354,8 @@
+ CmdParseCommand::parse_declarations(const char * str)
+ {
+ int rc = 0;
+- char * strbuf = new char[::strlen(str) + 1] ;
+- (void) ::strcpy(strbuf, str);
++ char * strbuf = new char[strlen(str) + 1] ;
++ strcpy(strbuf, str);
+ istrstream iss(strbuf);
+ rc = parse_declarations(iss);
+ delete strbuf ;
+@@ -372,7 +378,7 @@
+ // Parse the user's argument declarations from an input steam.
+ //
+ // ^REQUIREMENTS:
+-// This member function should only be called by parse_declarations(void).
++// This member function should only be called by parse_declarations().
+ //
+ // ^SIDE-EFFECTS:
+ // - modifies usr_cmd by appending to it any valid arguments that we parse.
+@@ -394,7 +400,7 @@
+ CmdParseCommand::parse_declarations(istream & is)
+ {
+ // Keep track of the number of declarations that we parse.
+- unsigned nargs = 0;
++ unsigned int nargs = 0;
+
+ if (is.eof()) return SUCCESS;
+
+@@ -408,7 +414,7 @@
+ // Skip all non-alpha-numerics
+ int c = is.peek() ;
+ while ((c != EOF) && (c != '_') && (! isalnum(c))) {
+- (void) is.get();
++ is.get();
+ c = is.peek();
+ }
+
+@@ -510,7 +516,7 @@
+ void
+ CmdParseCommand::set_args(UnixShell * shell)
+ {
+- unsigned flags, syntax;
++ unsigned int flags, syntax;
+ CmdLineCmdArgIter iter(usr_cmd);
+
+ for (CmdArg * cmdarg = iter() ; cmdarg ; cmdarg = iter()) {
+@@ -533,8 +539,8 @@
+ if ((syntax & CmdArg::isVALTAKEN) && (! (flags & CmdArg::VALGIVEN))) {
+ // flag was given without its value - we need to record that
+ char var_name[256];
+- (void) ::strcpy(var_name, sh_cmdarg->name());
+- (void) ::strcat(var_name, suffix_str);
++ strcpy(var_name, sh_cmdarg->name());
++ strcat(var_name, suffix_str);
+ ShellVariable sh_var(var_name);
+ sh_var.set(ShellCmdArgBool::True());
+ shell->set(sh_var);
+@@ -646,7 +652,7 @@
+
+ //------------------------------------------- CmdParseCommand::~CmdParseCommand
+
+-CmdParseCommand::~CmdParseCommand(void)
++CmdParseCommand::~CmdParseCommand()
+ {
+ CmdLineCmdArgIter iter(usr_cmd);
+
diff --git a/devel/cmdline/patches/patch-ag b/devel/cmdline/patches/patch-ag
new file mode 100644
index 00000000000..8b9bd47edfd
--- /dev/null
+++ b/devel/cmdline/patches/patch-ag
@@ -0,0 +1,123 @@
+$NetBSD: patch-ag,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/cmdparse.h.orig Thu Jan 2 13:33:28 1997
++++ src/cmd/cmdparse.h
+@@ -10,6 +10,10 @@
+ //
+ // 03/01/93 Brad Appleton <bradapp@enteract.com>
+ // - Added ALLOW_PLUS to list of CmdLine configuration flags
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Refer to namespace cmdline
++// - Updated to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _cmdparse_h
+@@ -32,30 +36,30 @@
+ // CmdArgVers is a class that simply prints (on cerr) the version
+ // information for this command.
+ //
+-class CmdArgVers : public CmdArg {
++class CmdArgVers : public cmdline::CmdArg {
+ public:
+ CmdArgVers(char optchar, const char * keyword, const char * description);
+
+- virtual ~CmdArgVers(void);
++ virtual ~CmdArgVers();
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd);
++ operator()(const char * & arg, cmdline::CmdLine & cmd);
+ } ;
+
+
+ class istream ;
+ class ArgSyntax ;
+ class UnixShell ;
+-class CmdParseCommand : public CmdLine {
++class CmdParseCommand : public cmdline::CmdLine {
+ public:
+
+ CmdParseCommand(const char * name);
+
+- virtual ~CmdParseCommand(void);
++ virtual ~CmdParseCommand();
+
+ // Do whatever it is we need to do!
+ int
+- operator()(CmdLineArgIter & iter) ;
++ operator()(cmdline::CmdLineArgIter & iter) ;
+
+ private:
+ // Dont allow copying or assignment
+@@ -68,7 +72,7 @@
+
+ // Parse the users argument declarations
+ int
+- parse_declarations(void);
++ parse_declarations();
+
+ int
+ parse_declarations(const char * input);
+@@ -85,35 +89,35 @@
+
+ //------------------------------------------------ arguments to cmdparse(1)
+
+- CmdArgBool anywhere; // clear OPTS_FIRST
+- CmdArgBool anycase; // set ANY_CASE_OPTS
+- CmdArgBool no_abort; // set NO_ABORT
+- CmdArgBool no_guessing; // set NO_GUESSING
+- CmdArgBool prompt; // set PROMPT_USER
+- CmdArgBool plus; // set ALLOW_PLUS
+- CmdArgBool opts_only; // set OPTS_ONLY
+- CmdArgBool kwds_only; // set KWDS_ONLY
+- CmdArgBool quiet; // set QUIET
+-
+- CmdArgVers version; // print version and exit
+- CmdArgBool usage; // print usage and exit
+-
+- CmdArgBool array_variant; // use alternate array syntax
+- CmdArgStr true_str; // TRUE for booleans
+- CmdArgStr false_str; // FALSE for booleans
+- CmdArgStr suffix_str; // suffix for missing optional-values
+- CmdArgStr usr_shell; // the shell (command interpreter)
+-
+- CmdArgStr input_file; // read declarations from file
+- CmdArgStr input_var; // read declarations environment variable
+- CmdArgStr input_str; // read declarations from string
++ cmdline::CmdArgBool anywhere; // clear OPTS_FIRST
++ cmdline::CmdArgBool anycase; // set ANY_CASE_OPTS
++ cmdline::CmdArgBool no_abort; // set NO_ABORT
++ cmdline::CmdArgBool no_guessing; // set NO_GUESSING
++ cmdline::CmdArgBool prompt; // set PROMPT_USER
++ cmdline::CmdArgBool plus; // set ALLOW_PLUS
++ cmdline::CmdArgBool opts_only; // set OPTS_ONLY
++ cmdline::CmdArgBool kwds_only; // set KWDS_ONLY
++ cmdline::CmdArgBool quiet; // set QUIET
++
++ CmdArgVers version; // print version and exit
++ cmdline::CmdArgBool usage; // print usage and exit
++
++ cmdline::CmdArgBool array_variant; // use alternate array syntax
++ cmdline::CmdArgStr true_str; // TRUE for booleans
++ cmdline::CmdArgStr false_str; // FALSE for booleans
++ cmdline::CmdArgStr suffix_str; // suffix for missing optional-values
++ cmdline::CmdArgStr usr_shell; // the shell (command interpreter)
++
++ cmdline::CmdArgStr input_file; // read declarations from file
++ cmdline::CmdArgStr input_var; // read declarations environment variable
++ cmdline::CmdArgStr input_str; // read declarations from string
+
+- CmdArgDummy dummy_arg; // "--"
++ cmdline::CmdArgDummy dummy_arg; // "--"
+
+- CmdArgStr usr_prog; // program name
+- CmdArgStrList usr_args; // program arguments
++ cmdline::CmdArgStr usr_prog; // program name
++ cmdline::CmdArgStrList usr_args; // program arguments
+
+- CmdLine usr_cmd; // the user's CmdLine object
++ cmdline::CmdLine usr_cmd; // the user's CmdLine object
+ } ;
+
+ #endif /* _cmdparse_h */
diff --git a/devel/cmdline/patches/patch-ah b/devel/cmdline/patches/patch-ah
new file mode 100644
index 00000000000..81a14d08e7e
--- /dev/null
+++ b/devel/cmdline/patches/patch-ah
@@ -0,0 +1,38 @@
+$NetBSD: patch-ah,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/fsm.c.orig Thu Jan 2 13:33:28 1997
++++ src/cmd/fsm.c
+@@ -7,15 +7,20 @@
+ //
+ // ^HISTORY:
+ // 03/27/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <ctype.h>
+-#include <string.h>
++#include <cctype>
++#include <cstdlib>
++#include <cstring>
++#include <iostream>
+
+ #include "fsm.h"
+
++using namespace std;
++
+ // define the characters that have a "special" meaning
+ enum {
+ c_LBRACE = '[',
+@@ -214,7 +219,7 @@
+ //
+ if (! *input) {
+ fsm_state = FINAL;
+- } else if (::strncmp(input, "...", 3) == 0) {
++ } else if (strncmp(input, "...", 3) == 0) {
+ fsm_state = LIST;
+ token.set(input, 3);
+ input += 3;
diff --git a/devel/cmdline/patches/patch-ai b/devel/cmdline/patches/patch-ai
new file mode 100644
index 00000000000..bcc51628e1e
--- /dev/null
+++ b/devel/cmdline/patches/patch-ai
@@ -0,0 +1,81 @@
+$NetBSD: patch-ai,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/fsm.h.orig Thu Jan 2 13:33:28 1997
++++ src/cmd/fsm.h
+@@ -7,6 +7,9 @@
+ //
+ // ^HISTORY:
+ // 03/27/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+ class SyntaxFSM {
+@@ -23,35 +26,35 @@
+
+ struct token_t {
+ const char * start; // start address of token
+- unsigned len; // length of token
++ unsigned int len; // length of token
+
+- token_t(void) : start(0), len(0) {}
++ token_t() : start(0), len(0) {}
+
+ void
+- set(const char * s, unsigned l) { start = s, len = l; }
++ set(const char * s, unsigned int l) { start = s, len = l; }
+ } ;
+
+- SyntaxFSM(void) : ntoks(0), nbpairs(0), lev(0), fsm_state(START) {}
++ SyntaxFSM() : ntoks(0), nbpairs(0), lev(0), fsm_state(START) {}
+
+ // Reset the FSM
+ void
+- reset(void) { ntoks = 0; nbpairs = 0; lev = 0; fsm_state = START; }
++ reset() { ntoks = 0; nbpairs = 0; lev = 0; fsm_state = START; }
+
+ // Return the number of tokens parsed thus far.
+- unsigned
+- num_tokens(void) const { return ntoks; }
++ unsigned int
++ num_tokens() const { return ntoks; }
+
+ // Return the number of balanced brace-pairs parsed thus far.
+- unsigned
+- num_braces(void) const { return nbpairs; }
++ unsigned int
++ num_braces() const { return nbpairs; }
+
+ // Return the current nesting level of brace-pairs
+ int
+- level(void) const { return lev; }
++ level() const { return lev; }
+
+ // Return the current machine state
+ state_t
+- state(void) const { return fsm_state; }
++ state() const { return fsm_state; }
+
+ // Get the next token from "input" and place it in "token"
+ // (consuming characters from "input").
+@@ -63,10 +66,10 @@
+ operator()(const char * & input, token_t & token);
+
+ protected:
+- unsigned ntoks; // number of tokens parsed thus far
+- unsigned nbpairs; // number of balanced brace-pairs parsed thus far
+- int lev; // current nesting level of brace-pairs
+- state_t fsm_state; // current machine state
++ unsigned int ntoks; // number of tokens parsed thus far
++ unsigned int nbpairs; // number of balanced brace-pairs parsed thus far
++ int lev; // current nesting level of brace-pairs
++ state_t fsm_state; // current machine state
+
+ private:
+ void
+@@ -75,4 +78,3 @@
+ void
+ parse_token(const char * & input);
+ } ;
+-
diff --git a/devel/cmdline/patches/patch-aj b/devel/cmdline/patches/patch-aj
new file mode 100644
index 00000000000..08be256deba
--- /dev/null
+++ b/devel/cmdline/patches/patch-aj
@@ -0,0 +1,37 @@
+$NetBSD: patch-aj,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/main.c.orig Thu Jan 2 13:33:29 1997
++++ src/cmd/main.c
+@@ -6,21 +6,27 @@
+ //
+ // ^HISTORY:
+ // 05/03/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <new.h>
+-#include <iostream.h>
+-#include <stdlib.h>
++#include <cstdlib>
++#include <iostream>
++#include <new>
+
+ #include "cmdparse.h"
+
++using namespace std;
++using namespace cmdline;
++
+ //
+ // cmdparse_new_handler -- allocation error handler for cmdparse(1).
+ //
+-void cmdparse_new_handler(void)
++void cmdparse_new_handler()
+ {
+ cerr << "cmdparse: free-store allocation error." << endl ;
+- ::exit(127);
++ exit(127);
+ }
+
+ int
diff --git a/devel/cmdline/patches/patch-ak b/devel/cmdline/patches/patch-ak
new file mode 100644
index 00000000000..afd33e38cc0
--- /dev/null
+++ b/devel/cmdline/patches/patch-ak
@@ -0,0 +1,102 @@
+$NetBSD: patch-ak,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/quoted.c.orig Thu Jan 2 13:33:29 1997
++++ src/cmd/quoted.c
+@@ -6,18 +6,23 @@
+ //
+ // ^HISTORY:
+ // 05/01/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cctype>
++#include <cstdlib>
++#include <cstring>
++#include <iostream>
+
+ #include "quoted.h"
+
++using namespace std;
++
+ //--------------------------------------------------------------- Constructors
+
+-QuotedString::QuotedString(unsigned max_size)
++QuotedString::QuotedString(unsigned int max_size)
+ : size(max_size)
+ {
+ buffer = new char[size] ;
+@@ -26,28 +31,28 @@
+
+ QuotedString::QuotedString(const char * str)
+ {
+- size = ::strlen(str + 1);
++ size = strlen(str + 1);
+ buffer = new char[size];
+- if (buffer) ::strcpy(buffer, str);
++ if (buffer) strcpy(buffer, str);
+ }
+
+-QuotedString::QuotedString(const char * str, unsigned max_size)
++QuotedString::QuotedString(const char * str, unsigned int max_size)
+ : size(max_size)
+ {
+ buffer = new char[size];
+- if (buffer) ::strcpy(buffer, str);
++ if (buffer) strcpy(buffer, str);
+ }
+
+ QuotedString::QuotedString(const QuotedString & qstr)
+ : size(qstr.size)
+ {
+ buffer = new char[size];
+- if (buffer) ::strcpy(buffer, qstr.buffer);
++ if (buffer) strcpy(buffer, qstr.buffer);
+ }
+
+ //--------------------------------------------------------------- Destructor
+
+-QuotedString::~QuotedString(void)
++QuotedString::~QuotedString()
+ {
+ delete [] buffer ;
+ }
+@@ -60,7 +65,7 @@
+ delete [] buffer ;
+ size = qstr.size;
+ buffer = new char[size];
+- if (buffer) ::strcpy(buffer, qstr.buffer);
++ if (buffer) strcpy(buffer, qstr.buffer);
+ return *this ;
+ }
+
+@@ -68,9 +73,9 @@
+ QuotedString::operator=(const char * str)
+ {
+ delete [] buffer ;
+- size = ::strlen(str) + 1;
++ size = strlen(str) + 1;
+ buffer = new char[size];
+- if (buffer) ::strcpy(buffer, str);
++ if (buffer) strcpy(buffer, str);
+ return *this ;
+ }
+
+@@ -108,9 +113,9 @@
+
+
+ // Now fetch into "dest" until we see the ending quote.
+- char * dest = qstr.buffer;
+- unsigned end_quote = 0;
+- unsigned len = 0;
++ char * dest = qstr.buffer;
++ unsigned int end_quote = 0;
++ unsigned int len = 0;
+ int c;
+ while (! end_quote) {
+ int escape = 0;
diff --git a/devel/cmdline/patches/patch-al b/devel/cmdline/patches/patch-al
new file mode 100644
index 00000000000..231a1409dd3
--- /dev/null
+++ b/devel/cmdline/patches/patch-al
@@ -0,0 +1,62 @@
+$NetBSD: patch-al,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/quoted.h.orig Thu Jan 2 13:33:29 1997
++++ src/cmd/quoted.h
+@@ -12,24 +12,28 @@
+ //
+ // ^HISTORY:
+ // 05/01/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _quoted_h
+ #define _quoted_h
+
+-class istream ;
++#include <iosfwd>
++
+ class QuotedString {
+ public:
+ // constructors and destructors
+- QuotedString(unsigned max_size);
++ QuotedString(unsigned int max_size);
+
+ QuotedString(const char * str);
+
+- QuotedString(const char * str, unsigned max_size);
++ QuotedString(const char * str, unsigned int max_size);
+
+ QuotedString(const QuotedString & qstr);
+
+- virtual ~QuotedString(void);
++ virtual ~QuotedString();
+
+ // assignment
+ QuotedString &
+@@ -39,19 +43,19 @@
+ operator=(const char * str);
+
+ // convert to a string
+- operator char*(void) { return buffer; }
++ operator char*() { return buffer; }
+
+ // operator >> reads a quoted string from input.
+ // If no beginning or ending quote is seen, than
+ // a message is printed on cerr and the failbit
+ // of the input stream is set.
+ //
+- friend istream &
+- operator>>(istream & is, QuotedString & qstr);
++ friend std::istream &
++ operator>>(std::istream & is, QuotedString & qstr);
+
+ private:
+- unsigned size;
+- char * buffer;
++ unsigned int size;
++ char * buffer;
+ } ;
+
+ #endif /* _quoted_h */
diff --git a/devel/cmdline/patches/patch-am b/devel/cmdline/patches/patch-am
new file mode 100644
index 00000000000..3c012ea92ea
--- /dev/null
+++ b/devel/cmdline/patches/patch-am
@@ -0,0 +1,99 @@
+$NetBSD: patch-am,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/shell_arg.c.orig Thu Jan 2 13:33:29 1997
++++ src/cmd/shell_arg.c
+@@ -7,15 +7,21 @@
+ //
+ // ^HISTORY:
+ // 04/22/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cctype>
++#include <cstdlib>
++#include <cstring>
++#include <iostream>
+
+ #include "shell_arg.h"
+
++using namespace cmdline;
++using namespace std;
++
+ //----------------------------------------------------------------- initialize
+
+ void
+@@ -30,12 +36,12 @@
+
+ //---------------------------------------------------------------- constructors
+
+-ShellCmdArg::ShellCmdArg(char * variable_name,
+- char optchar,
+- char * keyword,
+- char * value,
+- char * description,
+- unsigned syntax_flags)
++ShellCmdArg::ShellCmdArg(char * variable_name,
++ char optchar,
++ char * keyword,
++ char * value,
++ char * description,
++ unsigned int syntax_flags)
+ : CmdArg(optchar, keyword, value, description, syntax_flags),
+ sca_name(variable_name), sca_keyword(keyword),
+ sca_value(value), sca_description(description)
+@@ -43,11 +49,11 @@
+ initialize(variable_name);
+ }
+
+-ShellCmdArg::ShellCmdArg(char * variable_name,
+- char optchar,
+- char * keyword,
+- char * description,
+- unsigned syntax_flags)
++ShellCmdArg::ShellCmdArg(char * variable_name,
++ char optchar,
++ char * keyword,
++ char * description,
++ unsigned int syntax_flags)
+ : CmdArg(optchar, keyword, description, syntax_flags),
+ sca_name(variable_name), sca_keyword(keyword),
+ sca_value(NULL), sca_description(description)
+@@ -55,10 +61,10 @@
+ initialize(variable_name);
+ }
+
+-ShellCmdArg::ShellCmdArg(char * variable_name,
+- char * value,
+- char * description,
+- unsigned syntax_flags)
++ShellCmdArg::ShellCmdArg(char * variable_name,
++ char * value,
++ char * description,
++ unsigned int syntax_flags)
+ : CmdArg(value, description, syntax_flags),
+ sca_name(variable_name), sca_keyword(NULL),
+ sca_value(value), sca_description(description)
+@@ -68,7 +74,7 @@
+
+ //------------------------------------------------------------------ destructor
+
+-ShellCmdArg::~ShellCmdArg(void)
++ShellCmdArg::~ShellCmdArg()
+ {
+ if (is_array()) {
+ delete shell_array ;
+@@ -84,7 +90,7 @@
+ //-------------------------------------------------------------------- is_array
+
+ int
+-ShellCmdArg::is_array(void) const
++ShellCmdArg::is_array() const
+ {
+ return (syntax() & CmdArg::isLIST) ;
+ }
diff --git a/devel/cmdline/patches/patch-an b/devel/cmdline/patches/patch-an
new file mode 100644
index 00000000000..bdb187efb50
--- /dev/null
+++ b/devel/cmdline/patches/patch-an
@@ -0,0 +1,77 @@
+$NetBSD: patch-an,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/shell_arg.h.orig Thu Jan 2 13:33:29 1997
++++ src/cmd/shell_arg.h
+@@ -8,6 +8,10 @@
+ //
+ // ^HISTORY:
+ // 04/22/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Refer to namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _shell_arg_h
+@@ -29,43 +33,43 @@
+ // already exited!).
+ //
+
+-class ShellCmdArg : public CmdArg {
++class ShellCmdArg : public cmdline::CmdArg {
+ public:
+ ShellCmdArg(char * variable_name,
+ char optchar,
+ char * keyword,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ);
++ unsigned int syntax_flags =cmdline::CmdArg::isOPTVALREQ);
+
+ ShellCmdArg(char * variable_name,
+ char optchar,
+ char * keyword,
+ char * description,
+- unsigned syntax_flags =CmdArg::isOPT);
++ unsigned int syntax_flags =cmdline::CmdArg::isOPT);
+
+ ShellCmdArg(char * variable_name,
+ char * value,
+ char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ);
++ unsigned int syntax_flags =cmdline::CmdArg::isPOSVALREQ);
+
+- virtual ~ShellCmdArg(void);
++ virtual ~ShellCmdArg();
+
+ // Return the name of this variable/array
+ const char *
+- name(void) const { return sca_name; }
++ name() const { return sca_name; }
+
+ // Are we an array or a variable?
+ int
+- is_array(void) const;
++ is_array() const;
+
+ // Return the variable portion
+ ShellVariable &
+- variable(void) { return *shell_variable; }
++ variable() { return *shell_variable; }
+
+ // Return the array portion
+ ShellArray &
+- array(void) { return *shell_array; }
++ array() { return *shell_array; }
+
+ // If we are a variable then the "set" member function sets the
+ // value of the variable, otherwise it appends to the list of
+@@ -75,7 +79,7 @@
+ set(const char * value);
+
+ virtual int
+- operator()(const char * & arg, CmdLine & cmd) = 0;
++ operator()(const char * & arg, cmdline::CmdLine & cmd) = 0;
+
+ private:
+ ShellCmdArg(const ShellCmdArg & cp);
diff --git a/devel/cmdline/patches/patch-ao b/devel/cmdline/patches/patch-ao
new file mode 100644
index 00000000000..c0bfa487f45
--- /dev/null
+++ b/devel/cmdline/patches/patch-ao
@@ -0,0 +1,274 @@
+$NetBSD: patch-ao,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/shells.c.orig Thu Jan 2 13:33:30 1997
++++ src/cmd/shells.c
+@@ -7,18 +7,24 @@
+ //
+ // ^HISTORY:
+ // 04/19/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cctype>
++#include <cstdlib>
++#include <cstring>
++#include <iostream>
+
+ #include <fifolist.h>
+
+ #include "shells.h"
+ #include "argtypes.h"
+
++using namespace cmdline;
++using namespace std;
++
+ //--------------------------------------------------------------- ShellVariable
+
+ ShellVariable::ShellVariable(const char * name)
+@@ -26,7 +32,7 @@
+ {
+ }
+
+-ShellVariable::~ShellVariable(void)
++ShellVariable::~ShellVariable()
+ {
+ }
+
+@@ -38,10 +44,10 @@
+ CharPtrList list;
+ CharPtrListArray array;
+
+- ShellArrayValues(void);
++ ShellArrayValues();
+ } ;
+
+-ShellArrayValues::ShellArrayValues(void)
++ShellArrayValues::ShellArrayValues()
+ : array(list)
+ {
+ list.self_cleaning(1);
+@@ -54,7 +60,7 @@
+ {
+ }
+
+-ShellArray::~ShellArray(void)
++ShellArray::~ShellArray()
+ {
+ delete array_value ;
+ }
+@@ -72,21 +78,21 @@
+ }
+ }
+
+-unsigned
+-ShellArray::count(void) const
++unsigned int
++ShellArray::count() const
+ {
+ return ((array_value) ? array_value->list.count() : 0);
+ }
+
+ const char *
+-ShellArray::operator[](unsigned index) const
++ShellArray::operator[](unsigned int index) const
+ {
+ return ((array_value) ? array_value->array[index] : NULL);
+ }
+
+ //----------------------------------------------------------- AbstractUnixShell
+
+-AbstractUnixShell::~AbstractUnixShell(void)
++AbstractUnixShell::~AbstractUnixShell()
+ {
+ }
+
+@@ -122,13 +128,13 @@
+ }
+ }
+
+-UnixShell::~UnixShell(void)
++UnixShell::~UnixShell()
+ {
+ delete shell;
+ }
+
+ const char *
+-UnixShell::name(void) const
++UnixShell::name() const
+ {
+ return ((shell) ? shell->name() : NULL);
+ }
+@@ -171,16 +177,16 @@
+
+ const char * BourneShell::NAME = "sh" ;
+
+-BourneShell::BourneShell(void)
++BourneShell::BourneShell()
+ {
+ }
+
+-BourneShell::~BourneShell(void)
++BourneShell::~BourneShell()
+ {
+ }
+
+ const char *
+-BourneShell::name(void) const
++BourneShell::name() const
+ {
+ return BourneShell::NAME ;
+ }
+@@ -275,16 +281,16 @@
+
+ const char * KornShell::NAME = "ksh" ;
+
+-KornShell::KornShell(void)
++KornShell::KornShell()
+ {
+ }
+
+-KornShell::~KornShell(void)
++KornShell::~KornShell()
+ {
+ }
+
+ const char *
+-KornShell::name(void) const
++KornShell::name() const
+ {
+ return KornShell::NAME ;
+ }
+@@ -323,16 +329,16 @@
+
+ const char * BourneAgainShell::NAME = "bash" ;
+
+-BourneAgainShell::BourneAgainShell(void)
++BourneAgainShell::BourneAgainShell()
+ {
+ }
+
+-BourneAgainShell::~BourneAgainShell(void)
++BourneAgainShell::~BourneAgainShell()
+ {
+ }
+
+ const char *
+-BourneAgainShell::name(void) const
++BourneAgainShell::name() const
+ {
+ return BourneAgainShell::NAME ;
+ }
+@@ -353,16 +359,16 @@
+
+ const char * CShell::NAME = "csh" ;
+
+-CShell::CShell(void)
++CShell::CShell()
+ {
+ }
+
+-CShell::~CShell(void)
++CShell::~CShell()
+ {
+ }
+
+ const char *
+-CShell::name(void) const
++CShell::name() const
+ {
+ return CShell::NAME ;
+ }
+@@ -433,16 +439,16 @@
+
+ const char * ZShell::NAME = "zsh" ;
+
+-ZShell::ZShell(void)
++ZShell::ZShell()
+ {
+ }
+
+-ZShell::~ZShell(void)
++ZShell::~ZShell()
+ {
+ }
+
+ const char *
+-ZShell::name(void) const
++ZShell::name() const
+ {
+ return ZShell::NAME ;
+ }
+@@ -515,16 +521,16 @@
+
+ const char * Plan9Shell::NAME = "rc" ;
+
+-Plan9Shell::Plan9Shell(void)
++Plan9Shell::Plan9Shell()
+ {
+ }
+
+-Plan9Shell::~Plan9Shell(void)
++Plan9Shell::~Plan9Shell()
+ {
+ }
+
+ const char *
+-Plan9Shell::name(void) const
++Plan9Shell::name() const
+ {
+ return Plan9Shell::NAME ;
+ }
+@@ -594,7 +600,7 @@
+
+ const char * PerlShell::NAME = "perl" ;
+
+-PerlShell::PerlShell(void)
++PerlShell::PerlShell()
+ {
+ static const char perl_true[] = "1" ;
+ static const char perl_false[] = "0" ;
+@@ -604,12 +610,12 @@
+ ShellCmdArgBool::False(perl_false);
+ }
+
+-PerlShell::~PerlShell(void)
++PerlShell::~PerlShell()
+ {
+ }
+
+ const char *
+-PerlShell::name(void) const
++PerlShell::name() const
+ {
+ return PerlShell::NAME ;
+ }
+@@ -683,7 +689,7 @@
+
+ const char * TclShell::NAME = "tcl" ;
+
+-TclShell::TclShell(void)
++TclShell::TclShell()
+ {
+ static const char tcl_true[] = "1" ;
+ static const char tcl_false[] = "0" ;
+@@ -693,12 +699,12 @@
+ ShellCmdArgBool::False(tcl_false);
+ }
+
+-TclShell::~TclShell(void)
++TclShell::~TclShell()
+ {
+ }
+
+ const char *
+-TclShell::name(void) const
++TclShell::name() const
+ {
+ return TclShell::NAME ;
+ }
diff --git a/devel/cmdline/patches/patch-ap b/devel/cmdline/patches/patch-ap
new file mode 100644
index 00000000000..f65c51b253d
--- /dev/null
+++ b/devel/cmdline/patches/patch-ap
@@ -0,0 +1,249 @@
+$NetBSD: patch-ap,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/shells.h.orig Thu Jan 2 13:33:30 1997
++++ src/cmd/shells.h
+@@ -16,6 +16,9 @@
+ //
+ // ^HISTORY:
+ // 04/19/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _shells_h
+@@ -28,11 +31,11 @@
+ public:
+ ShellVariable(const char * name);
+
+- virtual ~ShellVariable(void);
++ virtual ~ShellVariable();
+
+ // Return the name of this variable
+ const char *
+- name(void) const { return var_name ; }
++ name() const { return var_name ; }
+
+ // Set the value of this variable
+ void
+@@ -40,7 +43,7 @@
+
+ // Return the value of this variable
+ const char *
+- value(void) const { return var_value; }
++ value() const { return var_value; }
+
+ protected:
+ const char * var_name ;
+@@ -55,19 +58,19 @@
+ public:
+ ShellArray(const char * name);
+
+- virtual ~ShellArray(void);
++ virtual ~ShellArray();
+
+ // Return the name of this array
+ const char *
+- name(void) const { return array_name; }
++ name() const { return array_name; }
+
+ // Append to the list of values in this array
+ void
+ append(const char * value);
+
+ // Return the number of items in this array.
+- unsigned
+- count(void) const;
++ unsigned int
++ count() const;
+
+ // Return the desired element of an array
+ //
+@@ -76,7 +79,7 @@
+ // NULL-ptr dereferencing error!
+ //
+ const char *
+- operator[](unsigned index) const;
++ operator[](unsigned int index) const;
+
+ protected:
+ const char * array_name ;
+@@ -91,11 +94,11 @@
+ class AbstractUnixShell {
+ public:
+ virtual
+- ~AbstractUnixShell(void);
++ ~AbstractUnixShell();
+
+ // Return the name of this shell
+ virtual const char *
+- name(void) const = 0;
++ name() const = 0;
+
+ // Does "name" correspond to the positional-parameters for this shell?
+ virtual int
+@@ -128,7 +131,7 @@
+ set(const ShellArray & array, int variant) const = 0;
+
+ protected:
+- AbstractUnixShell(void) {};
++ AbstractUnixShell() {};
+
+ } ;
+
+@@ -145,15 +148,15 @@
+ UnixShell(const char * shell_name);
+
+ virtual
+- ~UnixShell(void);
++ ~UnixShell();
+
+ // See if this shell is valid
+ int
+- is_valid(void) const { return (valid) ? 1 : 0; }
++ is_valid() const { return (valid) ? 1 : 0; }
+
+ // Return the name of this shell
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ unset_args(const char * name) const;
+@@ -168,7 +171,7 @@
+ set(const ShellArray & array, int variant) const;
+
+ private:
+- unsigned valid : 1 ;
++ unsigned int valid : 1 ;
+ AbstractUnixShell * shell;
+
+ } ;
+@@ -197,12 +200,12 @@
+ //
+ class BourneShell : public AbstractUnixShell {
+ public:
+- BourneShell(void);
++ BourneShell();
+
+- virtual ~BourneShell(void);
++ virtual ~BourneShell();
+
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ unset_args(const char * name) const;
+@@ -244,12 +247,12 @@
+ //
+ class KornShell : public BourneShell {
+ public:
+- KornShell(void);
++ KornShell();
+
+- virtual ~KornShell(void);
++ virtual ~KornShell();
+
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ unset_args(const char * name) const;
+@@ -276,12 +279,12 @@
+ //
+ class BourneAgainShell : public BourneShell {
+ public:
+- BourneAgainShell(void);
++ BourneAgainShell();
+
+- virtual ~BourneAgainShell(void);
++ virtual ~BourneAgainShell();
+
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ set(const ShellVariable & variable) const;
+@@ -309,12 +312,12 @@
+ //
+ class CShell : public AbstractUnixShell {
+ public:
+- CShell(void);
++ CShell();
+
+- virtual ~CShell(void);
++ virtual ~CShell();
+
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ unset_args(const char * name) const;
+@@ -355,12 +358,12 @@
+ //
+ class ZShell : public AbstractUnixShell {
+ public:
+- ZShell(void);
++ ZShell();
+
+- virtual ~ZShell(void);
++ virtual ~ZShell();
+
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ unset_args(const char * name) const;
+@@ -397,12 +400,12 @@
+ //
+ class Plan9Shell : public AbstractUnixShell {
+ public:
+- Plan9Shell(void);
++ Plan9Shell();
+
+- virtual ~Plan9Shell(void);
++ virtual ~Plan9Shell();
+
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ unset_args(const char * name) const;
+@@ -438,12 +441,12 @@
+ //
+ class PerlShell : public AbstractUnixShell {
+ public:
+- PerlShell(void);
++ PerlShell();
+
+- virtual ~PerlShell(void);
++ virtual ~PerlShell();
+
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ unset_args(const char * name) const;
+@@ -479,12 +482,12 @@
+ //
+ class TclShell : public AbstractUnixShell {
+ public:
+- TclShell(void);
++ TclShell();
+
+- virtual ~TclShell(void);
++ virtual ~TclShell();
+
+ virtual const char *
+- name(void) const;
++ name() const;
+
+ virtual void
+ unset_args(const char * name) const;
diff --git a/devel/cmdline/patches/patch-aq b/devel/cmdline/patches/patch-aq
new file mode 100644
index 00000000000..c402a3b12b4
--- /dev/null
+++ b/devel/cmdline/patches/patch-aq
@@ -0,0 +1,42 @@
+$NetBSD: patch-aq,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/syntax.c.orig Thu Jan 2 13:33:29 1997
++++ src/cmd/syntax.c
+@@ -7,18 +7,24 @@
+ //
+ // ^HISTORY:
+ // 03/25/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cctype>
++#include <cstdlib>
++#include <cstring>
++#include <iostream>
+
+ #include <cmdline.h>
+
+ #include "syntax.h"
+ #include "quoted.h"
+
++using namespace cmdline;
++using namespace std;
++
+ //------------------------------------------------------------------ copy_token
+
+ //-------------------
+@@ -53,7 +59,7 @@
+ copy_token(const char * & dest, const SyntaxFSM::token_t & src)
+ {
+ char * tok = new char[src.len + 1] ;
+- ::strncpy(tok, src.start, src.len);
++ strncpy(tok, src.start, src.len);
+ tok[src.len] = '\0';
+ dest = tok;
+ }
diff --git a/devel/cmdline/patches/patch-ar b/devel/cmdline/patches/patch-ar
new file mode 100644
index 00000000000..b4592d1b2ad
--- /dev/null
+++ b/devel/cmdline/patches/patch-ar
@@ -0,0 +1,59 @@
+$NetBSD: patch-ar,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/cmd/syntax.h.orig Thu Jan 2 13:33:31 1997
++++ src/cmd/syntax.h
+@@ -8,42 +8,46 @@
+ //
+ // ^HISTORY:
+ // 04/29/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _syntax_h
+ #define _syntax_h
+
++#include <iosfwd>
++
+ #include "fsm.h"
+
+-class istream;
+ class ArgSyntax {
+ public:
+- ArgSyntax(void)
++ ArgSyntax()
+ : arg_syntax(0), arg_char(0), arg_keyword(0), arg_value(0)
+ {}
+
+ // Return the syntax flags
+- unsigned
+- syntax(void) const { return arg_syntax; }
++ unsigned int
++ syntax() const { return arg_syntax; }
+
+ // Return the option character
+ char
+- optchar(void) const { return arg_char; }
++ optchar() const { return arg_char; }
+
+ // Return the keyword name
+ const char *
+- keyword(void) const { return arg_keyword; }
++ keyword() const { return arg_keyword; }
+
+ // Return the value name
+ const char *
+- value(void) const { return arg_value; }
++ value() const { return arg_value; }
+
+ // Extract the syntax (compile it) from an input stream
+ friend istream &
+ operator>>(istream & is, ArgSyntax & arg);
+
+ private:
+- unsigned arg_syntax ;
++ unsigned int arg_syntax ;
+ char arg_char;
+ const char * arg_keyword;
+ const char * arg_value;
diff --git a/devel/cmdline/patches/patch-as b/devel/cmdline/patches/patch-as
new file mode 100644
index 00000000000..33120adf8b9
--- /dev/null
+++ b/devel/cmdline/patches/patch-as
@@ -0,0 +1,35 @@
+$NetBSD: patch-as,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/Makefile.orig Thu Jan 2 13:33:31 1997
++++ src/lib/Makefile
+@@ -70,20 +70,25 @@
+ test: cmdtest$(EXECEXT)
+
+ cmdtest$(EXECEXT): cmdtest$(OBJEXT) $(OBJS)
+- $(CC) $(EXE) $@ cmdtest$(OBJEXT) $(LIBRARY)
++ $(CC) $(EXE) $@ cmdtest$(OBJEXT) $(LIBRARY) $(USRLIBS)
+
+-$(LIBRARY): $(OBJS)
++lib$(LIBNAME).a: $(OBJS)
+ $(AR) $@ $(OBJS)
+ $(RANLIB) $@
+
++lib$(LIBNAME).la: $(OBJS)
++ $(LIBTOOL) g++ -o lib$(LIBNAME).la $(OBJS:.o=.lo) \
++ -rpath $(PREFIX)/lib -version-info 0:0
++
+ ###
+ # maintenance dependencies
+ ###
+ install: $(LIBRARY) $(LIBDIR) $(INCDIR) cmdline.h cmdargs.h
+ -$(RM) $(LIBDIR)$(LIBRARY) $(INCDIR)cmdline.h $(INCDIR)cmdargs.h
+- $(CP) $(LIBRARY) $(LIBDIR)$(LIBRARY)
+- $(CP) cmdline.h $(INCDIR)cmdline.h
+- $(CP) cmdargs.h $(INCDIR)cmdargs.h
++ $(LIBTOOL) $(BSD_INSTALL_DATA) $(LIBRARY) $(LIBDIR)$(LIBRARY)
++ $(BSD_INSTALL_DATA) cmdline.h $(INCDIR)cmdline.h
++ $(BSD_INSTALL_DATA) cmdargs.h $(INCDIR)cmdargs.h
++ $(BSD_INSTALL_DATA) fifolist.h $(INCDIR)fifolist.h
+
+ clean:
+ -$(RM) *$(OBJEXT) core .exrc *~ \#*\#
diff --git a/devel/cmdline/patches/patch-at b/devel/cmdline/patches/patch-at
new file mode 100644
index 00000000000..7d307bdb7b2
--- /dev/null
+++ b/devel/cmdline/patches/patch-at
@@ -0,0 +1,131 @@
+$NetBSD: patch-at,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/argiter.c.orig Thu Jan 2 13:33:31 1997
++++ src/lib/argiter.c
+@@ -7,32 +7,38 @@
+ //
+ // ^HISTORY:
+ // 04/03/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cstdlib>
++#include <cstring>
++#include <cctype>
++#include <iostream>
+
+ #include "cmdline.h"
+
++namespace cmdline {
++
+ //-------------------------------------------------------- class CmdLineArgIter
+
+-CmdLineArgIter::CmdLineArgIter(void) {}
++CmdLineArgIter::CmdLineArgIter() {}
+
+-CmdLineArgIter::~CmdLineArgIter(void) {}
++CmdLineArgIter::~CmdLineArgIter() {}
+
+ //----------------------------------------------------------- class CmdArgvIter
+
+-CmdArgvIter::~CmdArgvIter(void) {}
++CmdArgvIter::~CmdArgvIter() {}
+
+ const char *
+-CmdArgvIter::operator()(void) {
++CmdArgvIter::operator()() {
+ return ((index != count) && (array[index])) ? array[index++] : 0 ;
+ }
+
+ int
+-CmdArgvIter::is_temporary(void) const { return 0; }
++CmdArgvIter::is_temporary() const { return 0; }
+
+ //--------------------------------------------------------- class CmdStrTokIter
+
+@@ -46,7 +52,7 @@
+ }
+
+ // Destructor
+-CmdStrTokIter::~CmdStrTokIter(void)
++CmdStrTokIter::~CmdStrTokIter()
+ {
+ delete tokstr;
+ }
+@@ -62,24 +68,24 @@
+ tokstr = NULL;
+ token = NULL;
+ if (tokens) {
+- // Make a copy of the token-string (because ::strtok() modifies it)
++ // Make a copy of the token-string (because std::strtok() modifies it)
+ // and get the first token from the string
+ //
+- tokstr = new char[::strlen(tokens) + 1] ;
+- (void) ::strcpy(tokstr, tokens);
+- token = ::strtok(tokstr, seps);
++ tokstr = new char[std::strlen(tokens) + 1] ;
++ std::strcpy(tokstr, tokens);
++ token = std::strtok(tokstr, seps);
+ }
+ }
+
+ // Iterator function -- operator()
+- // Just use ::strtok to get the next token from the string
++ // Just use std::strtok to get the next token from the string
+ //
+ const char *
+-CmdStrTokIter::operator()(void)
++CmdStrTokIter::operator()()
+ {
+ if (seps == NULL) seps = WHITESPACE ;
+ const char * result = token;
+- if (token) token = ::strtok(NULL, seps);
++ if (token) token = std::strtok(NULL, seps);
+ return result;
+ }
+
+@@ -87,7 +93,7 @@
+ // always points to temporary space.
+ //
+ int
+-CmdStrTokIter::is_temporary(void) const
++CmdStrTokIter::is_temporary() const
+ {
+ return 1;
+ }
+@@ -102,7 +108,7 @@
+ }
+
+ // Destructor
+-CmdIstreamIter::~CmdIstreamIter(void)
++CmdIstreamIter::~CmdIstreamIter()
+ {
+ delete tok_iter;
+ }
+@@ -122,7 +128,7 @@
+ // consider the line to be a comment and we ignore it.
+ //
+ const char *
+-CmdIstreamIter::operator()(void)
++CmdIstreamIter::operator()()
+ {
+ const char * result = NULL;
+ if (tok_iter) result = tok_iter->operator()();
+@@ -151,7 +157,9 @@
+ // the tokens we return are always in temporary storage
+ //
+ int
+-CmdIstreamIter::is_temporary(void) const
++CmdIstreamIter::is_temporary() const
+ {
+ return 1;
+ }
++
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-au b/devel/cmdline/patches/patch-au
new file mode 100644
index 00000000000..e22ec621a84
--- /dev/null
+++ b/devel/cmdline/patches/patch-au
@@ -0,0 +1,30 @@
+$NetBSD: patch-au,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/arglist.h.orig Thu Jan 2 13:33:32 1997
++++ src/lib/arglist.h
+@@ -10,6 +10,9 @@
+ //
+ // ^HISTORY:
+ // 03/21/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _arglist_h
+@@ -17,11 +20,15 @@
+
+ #include "fifolist.h"
+
++namespace cmdline {
++
+ class CmdArg;
+
+ DECLARE_FIFO_LIST(CmdArgList, CmdArg);
+
+ DECLARE_FIFO_LIST(CmdArgListList, CmdArgList);
++
++} // namespace cmdline
+
+ #endif /* _arglist_h */
+
diff --git a/devel/cmdline/patches/patch-av b/devel/cmdline/patches/patch-av
new file mode 100644
index 00000000000..fcc61f2e53b
--- /dev/null
+++ b/devel/cmdline/patches/patch-av
@@ -0,0 +1,161 @@
+$NetBSD: patch-av,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/cmdarg.c.orig Thu Jan 2 13:33:32 1997
++++ src/lib/cmdarg.c
+@@ -10,18 +10,26 @@
+ //
+ // 03/01/93 Brad Appleton <bradapp@enteract.com>
+ // - Added arg_sequence field to CmdArg
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cstdlib>
++#include <cstring>
++#include <cctype>
++#include <iostream>
+
+ #include "cmdline.h"
+
++namespace cmdline {
++
++using std::cerr;
++
+ //---------------------------------------------------------------------- CmdArg
+
+-int CmdArg::is_dummy(void) { return 0; }
++int CmdArg::is_dummy() { return 0; }
+
+ // Copy-Constructor
+ CmdArg::CmdArg(const CmdArg & cp)
+@@ -35,8 +43,8 @@
+ arg_description(cp.arg_description)
+ {
+ if (alloc_value_name) {
+- char * val_name = new char[::strlen(cp.arg_value_name) + 1] ;
+- ::strcpy((char *)val_name, cp.arg_value_name);
++ char * val_name = new char[std::strlen(cp.arg_value_name) + 1] ;
++ std::strcpy((char *)val_name, cp.arg_value_name);
+ arg_value_name = val_name;
+ }
+ }
+@@ -47,7 +55,7 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags)
++ unsigned int syntax_flags)
+ : alloc_value_name(0),
+ arg_flags(0),
+ arg_syntax(syntax_flags),
+@@ -66,7 +74,7 @@
+ CmdArg::CmdArg(char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags)
++ unsigned int syntax_flags)
+ : alloc_value_name(0),
+ arg_flags(0),
+ arg_syntax(syntax_flags),
+@@ -83,7 +91,7 @@
+
+ CmdArg::CmdArg(const char * value,
+ const char * description,
+- unsigned syntax_flags)
++ unsigned int syntax_flags)
+ : alloc_value_name(0),
+ arg_flags(0),
+ arg_syntax(syntax_flags),
+@@ -100,7 +108,7 @@
+
+
+ // Destructor
+-CmdArg::~CmdArg(void)
++CmdArg::~CmdArg()
+ {
+ if (alloc_value_name) delete [] (char *)arg_value_name;
+ }
+@@ -110,7 +118,7 @@
+ // ^FUNCTION: adjust_syntax - adjust command argument syntax
+ //
+ // ^SYNOPSIS:
+-// CmdArg::adjust_syntax(void)
++// CmdArg::adjust_syntax()
+ //
+ // ^PARAMETERS:
+ // None.
+@@ -134,7 +142,7 @@
+ // Follow along in the code ...
+ //-^^----------------
+ void
+-CmdArg::adjust_syntax(void)
++CmdArg::adjust_syntax()
+ {
+ static const char default_value_name[] = "value" ;
+
+@@ -207,7 +215,7 @@
+ // ^FUNCTION: parse_description - parse the argument description string
+ //
+ // ^SYNOPSIS:
+-// CmdLine::parse_description(void)
++// CmdLine::parse_description()
+ //
+ // ^PARAMETERS:
+ // None.
+@@ -233,7 +241,7 @@
+ enum { c_HIDDEN = ';', c_OPEN = '[', c_CLOSE = ']', c_LIST = '.' } ;
+
+ void
+-CmdArg::parse_description(void)
++CmdArg::parse_description()
+ {
+ if (arg_description == NULL) return;
+ while (isspace(*arg_description)) ++arg_description;
+@@ -249,7 +257,7 @@
+ // ^FUNCTION: parse_value - parse the argument value name
+ //
+ // ^SYNOPSIS:
+-// CmdLine::parse_value(void)
++// CmdLine::parse_value()
+ //
+ // ^PARAMETERS:
+ // None.
+@@ -274,7 +282,7 @@
+ // Its kind of hairy so follow along.
+ //-^^----------------
+ void
+-CmdArg::parse_value(void)
++CmdArg::parse_value()
+ {
+ const char * save_value = arg_value_name;
+ int brace = 0;
+@@ -306,7 +314,7 @@
+ alloc_value_name = 1;
+ int len = (int) (ptr - arg_value_name);
+ char * copied_value = new char[len + 1];
+- (void) ::strncpy(copied_value, arg_value_name, len);
++ std::strncpy(copied_value, arg_value_name, len);
+ copied_value[len] = '\0';
+ arg_value_name = copied_value;
+
+@@ -338,7 +346,7 @@
+ }
+
+ // Not done - we had better see a "..."
+- if (::strncmp(ptr, "...", 3) != 0) {
++ if (std::strncmp(ptr, "...", 3) != 0) {
+ cerr << "Error: unexpected token \"" << ptr << "\"." << endl ;
+ ++errors;
+ } else {
+@@ -365,3 +373,5 @@
+ << "\t(error occurred in CmdArg constructor)" << endl ;
+ }
+ }
++
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-aw b/devel/cmdline/patches/patch-aw
new file mode 100644
index 00000000000..9cfe563b6ff
--- /dev/null
+++ b/devel/cmdline/patches/patch-aw
@@ -0,0 +1,399 @@
+$NetBSD: patch-aw,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/cmdargs.c.orig Thu Jan 2 13:33:32 1997
++++ src/lib/cmdargs.c
+@@ -10,17 +10,26 @@
+ //
+ // 03/03/93 Brad Appleton <bradapp@enteract.com>
+ // - Added exit_handler() and quit() member-functions to CmdLine
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cstdlib>
++#include <cstring>
++#include <cctype>
++#include <iostream>
+
+ #include "cmdargs.h"
+ #include "exits.h"
+ #include "fifolist.h"
+
++namespace cmdline {
++
++using std::cout;
++using std::ostream;
++
+ // return values for operator()
+ enum { SUCCESS = 0, FAILURE = -1 } ;
+
+@@ -47,7 +56,7 @@
+ // -- The internal value (of some appropriate type) that is "managed"
+ // by this command argument.
+ //
+-// unsigned default_value;
++// unsigned int default_value;
+ // -- What to assign to "value" if "arg" is NOT a value for this command
+ // argument.
+ //
+@@ -89,10 +98,10 @@
+
+ //-------------------------------------------------------------- Dummy Argument
+
+-CmdArgDummy::~CmdArgDummy(void) {}
++CmdArgDummy::~CmdArgDummy() {}
+
+ int
+-CmdArgDummy::is_dummy(void) { return 1; }
++CmdArgDummy::is_dummy() { return 1; }
+
+ // For a CmdArgDummy - operator() is a No-OP and should NEVER
+ // be called.
+@@ -114,7 +123,7 @@
+ if (os_ptr == NULL) os_ptr = &cout;
+ }
+
+-CmdArgUsage::~CmdArgUsage(void) {}
++CmdArgUsage::~CmdArgUsage() {}
+
+ void
+ CmdArgUsage::ostream_ptr(ostream * osp)
+@@ -134,7 +143,7 @@
+
+ //----------------------------------------------------------- Integer Arguments
+
+-CmdArgIntCompiler::~CmdArgIntCompiler(void) {}
++CmdArgIntCompiler::~CmdArgIntCompiler() {}
+
+ // Compile a string into an integer value.
+ int
+@@ -153,7 +162,7 @@
+ }
+
+ // compile the string into an integer
+- result = ::strtol(arg, (char **) &ptr, 0); // watch out for -c0xa vs -axc0!
++ result = std::strtol(arg, (char **) &ptr, 0); // watch out for -c0xa vs -axc0!
+ if (ptr == arg) {
+ // do we have a valid integer?
+ if (! (cmd.flags() & CmdLine::QUIET)) {
+@@ -168,7 +177,7 @@
+ }
+
+
+-CmdArgInt::~CmdArgInt(void) {}
++CmdArgInt::~CmdArgInt() {}
+
+ int
+ CmdArgInt::operator()(const char * & arg, CmdLine & cmd)
+@@ -185,7 +194,7 @@
+
+ //---------------------------------------------------- Floating-point Arguments
+
+-CmdArgFloatCompiler::~CmdArgFloatCompiler(void) {}
++CmdArgFloatCompiler::~CmdArgFloatCompiler() {}
+
+ // Compile a string into a floating-point value.
+ int
+@@ -203,7 +212,7 @@
+ return FAILURE ;
+ }
+
+- result = ::strtod(arg, (char **) &ptr); // compile the string into a float
++ result = std::strtod(arg, (char **) &ptr); // compile the string into a float
+ if (ptr == arg) {
+ // do we have a valid float?
+ if (! (cmd.flags() & CmdLine::QUIET)) {
+@@ -219,7 +228,7 @@
+ }
+
+
+-CmdArgFloat::~CmdArgFloat(void) {}
++CmdArgFloat::~CmdArgFloat() {}
+
+ int
+ CmdArgFloat::operator()(const char * & arg, CmdLine & cmd)
+@@ -236,7 +245,7 @@
+
+ //--------------------------------------------------------- Character Argumrnts
+
+-CmdArgCharCompiler::~CmdArgCharCompiler(void) {}
++CmdArgCharCompiler::~CmdArgCharCompiler() {}
+
+ int
+ CmdArgCharCompiler::compile(const char * & arg, CmdLine & cmd, char & value)
+@@ -268,7 +277,7 @@
+ }
+
+
+-CmdArgChar::~CmdArgChar(void) {}
++CmdArgChar::~CmdArgChar() {}
+
+ int
+ CmdArgChar::operator()(const char * & arg, CmdLine & cmd)
+@@ -287,7 +296,7 @@
+ typedef CmdArgStrCompiler::casc_string CmdArgString ;
+
+ #ifndef __GNUG__
+-CmdArgString::~casc_string(void)
++CmdArgString::~casc_string()
+ {
+ if (is_alloc) delete [] (char *)str;
+ }
+@@ -295,20 +304,20 @@
+
+ // Copy a string (allocating storage if necessary)
+ void
+-CmdArgString::copy(unsigned is_temporary, const char * s)
++CmdArgString::copy(unsigned int is_temporary, const char * s)
+ {
+ if (is_alloc) delete [] (char *)str;
+ is_alloc = (is_temporary) ? 1 : 0;
+ str = s;
+ if (is_alloc && s) {
+- char * new_s = new char[::strlen(s) + 1] ;
+- (void) ::strcpy(new_s, s);
++ char * new_s = new char[std::strlen(s) + 1] ;
++ std::strcpy(new_s, s);
+ str = new_s;
+ }
+ }
+
+
+-CmdArgStrCompiler::~CmdArgStrCompiler(void) {}
++CmdArgStrCompiler::~CmdArgStrCompiler() {}
+
+ int
+ CmdArgStrCompiler::compile(const char * & arg,
+@@ -326,7 +335,7 @@
+ }
+
+
+-CmdArgStr::~CmdArgStr(void) {}
++CmdArgStr::~CmdArgStr() {}
+
+ int
+ CmdArgStr::operator()(const char * & arg, CmdLine & cmd)
+@@ -356,11 +365,11 @@
+ IntList list;
+ IntListArray array;
+
+- CmdArgIntListPrivate(void);
++ CmdArgIntListPrivate();
+ } ;
+
+
+-CmdArgIntListPrivate::CmdArgIntListPrivate(void)
++CmdArgIntListPrivate::CmdArgIntListPrivate()
+ : array(list)
+ {
+ list.self_cleaning(1);
+@@ -382,19 +391,19 @@
+ return rc;
+ }
+
+-unsigned
+-CmdArgIntList::count(void) const
++unsigned int
++CmdArgIntList::count() const
+ {
+ return (val) ? val->list.count() : 0 ;
+ }
+
+ int &
+-CmdArgIntList::operator[](unsigned index)
++CmdArgIntList::operator[](unsigned int index)
+ {
+ return val->array[index];
+ }
+
+-CmdArgIntList::~CmdArgIntList(void) {}
++CmdArgIntList::~CmdArgIntList() {}
+
+
+ //------------------- Float List -------------------
+@@ -406,10 +415,10 @@
+ FloatList list;
+ FloatListArray array;
+
+- CmdArgFloatListPrivate(void);
++ CmdArgFloatListPrivate();
+ } ;
+
+-CmdArgFloatListPrivate::CmdArgFloatListPrivate(void)
++CmdArgFloatListPrivate::CmdArgFloatListPrivate()
+ : array(list)
+ {
+ list.self_cleaning(1);
+@@ -432,19 +441,19 @@
+ return rc;
+ }
+
+-unsigned
+-CmdArgFloatList::count(void) const
++unsigned int
++CmdArgFloatList::count() const
+ {
+ return (val) ? val->list.count() : 0 ;
+ }
+
+ float &
+-CmdArgFloatList::operator[](unsigned index)
++CmdArgFloatList::operator[](unsigned int index)
+ {
+ return val->array[index];
+ }
+
+-CmdArgFloatList::~CmdArgFloatList(void) {}
++CmdArgFloatList::~CmdArgFloatList() {}
+
+ //------------------- String List -------------------
+
+@@ -454,10 +463,10 @@
+ StringList list;
+ StringListArray array;
+
+- CmdArgStrListPrivate(void);
++ CmdArgStrListPrivate();
+ } ;
+
+-CmdArgStrListPrivate::CmdArgStrListPrivate(void)
++CmdArgStrListPrivate::CmdArgStrListPrivate()
+ : array(list)
+ {
+ list.self_cleaning(1);
+@@ -478,29 +487,29 @@
+ return rc;
+ }
+
+-unsigned
+-CmdArgStrList::count(void) const
++unsigned int
++CmdArgStrList::count() const
+ {
+ return (val) ? val->list.count() : 0 ;
+ }
+
+ CmdArgString &
+-CmdArgStrList::operator[](unsigned index)
++CmdArgStrList::operator[](unsigned int index)
+ {
+ return val->array[index];
+ }
+
+-CmdArgStrList::~CmdArgStrList(void) {}
++CmdArgStrList::~CmdArgStrList() {}
+
+ //----------------------------------------------------------- Boolean Arguments
+
+-CmdArgBoolCompiler::~CmdArgBoolCompiler(void) {}
++CmdArgBoolCompiler::~CmdArgBoolCompiler() {}
+
+ int
+ CmdArgBoolCompiler::compile(const char * & arg,
+ CmdLine & cmd,
+- unsigned & value,
+- unsigned default_value)
++ unsigned int & value,
++ unsigned int default_value)
+ {
+ if (arg == NULL) {
+ // if no argument was given use the default
+@@ -587,12 +596,12 @@
+
+ //------------------------------------------------------------------ CmdArgBool
+
+-CmdArgBool::~CmdArgBool(void) {}
++CmdArgBool::~CmdArgBool() {}
+
+ int
+ CmdArgBool::operator()(const char * & arg, CmdLine & cmd)
+ {
+- unsigned value = val;
++ unsigned int value = val;
+ int rc = compile(arg, cmd, value, 1);
+ val = value;
+ return rc;
+@@ -600,12 +609,12 @@
+
+ //----------------------------------------------------------------- CmdArgClear
+
+-CmdArgClear::~CmdArgClear(void) {}
++CmdArgClear::~CmdArgClear() {}
+
+ int
+ CmdArgClear::operator()(const char * & arg, CmdLine & cmd)
+ {
+- unsigned value = val;
++ unsigned int value = val;
+ int rc = compile(arg, cmd, value, 0);
+ val = value;
+ return rc;
+@@ -613,12 +622,12 @@
+
+ //---------------------------------------------------------------- CmdArgToggle
+
+-CmdArgToggle::~CmdArgToggle(void) {}
++CmdArgToggle::~CmdArgToggle() {}
+
+ int
+ CmdArgToggle::operator()(const char * & arg, CmdLine & cmd)
+ {
+- unsigned value = val;
++ unsigned int value = val;
+ int rc = compile(arg, cmd, value, (! value));
+ val = value;
+ return rc;
+@@ -626,12 +635,12 @@
+
+ //--------------------------------------------------------------- CmdArgBoolRef
+
+-CmdArgBoolRef::~CmdArgBoolRef(void) {}
++CmdArgBoolRef::~CmdArgBoolRef() {}
+
+ int
+ CmdArgBoolRef::operator()(const char * & arg, CmdLine & cmd)
+ {
+- unsigned val = ref;
++ unsigned int val = ref;
+ int rc = ref.compile(arg, cmd, val, 1);
+ ref = val;
+ return rc;
+@@ -639,12 +648,12 @@
+
+ //-------------------------------------------------------------- CmdArgClearRef
+
+-CmdArgClearRef::~CmdArgClearRef(void) {}
++CmdArgClearRef::~CmdArgClearRef() {}
+
+ int
+ CmdArgClearRef::operator()(const char * & arg, CmdLine & cmd)
+ {
+- unsigned val = ref;
++ unsigned int val = ref;
+ int rc = ref.compile(arg, cmd, val, 0);
+ ref = val;
+ return rc;
+@@ -652,14 +661,15 @@
+
+ //------------------------------------------------------------- CmdArgToggleRef
+
+-CmdArgToggleRef::~CmdArgToggleRef(void) {}
++CmdArgToggleRef::~CmdArgToggleRef() {}
+
+ int
+ CmdArgToggleRef::operator()(const char * & arg, CmdLine & cmd)
+ {
+- unsigned val = ref;
++ unsigned int val = ref;
+ int rc = ref.compile(arg, cmd, val, (! val));
+ ref = val;
+ return rc;
+ }
+
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-ax b/devel/cmdline/patches/patch-ax
new file mode 100644
index 00000000000..75c347ea2df
--- /dev/null
+++ b/devel/cmdline/patches/patch-ax
@@ -0,0 +1,637 @@
+$NetBSD: patch-ax,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/cmdargs.h.orig Thu Jan 2 13:33:33 1997
++++ src/lib/cmdargs.h
+@@ -50,13 +50,23 @@
+ //
+ // ^HISTORY:
+ // 03/25/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
++// - Removed unnecessary NULL.
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _usr_include_cmdargs_h
+ #define _usr_include_cmdargs_h
+
++#include <iosfwd>
+ #include <cmdline.h>
+
++namespace cmdline {
++
++using std::ostream;
++
+ //-------------------------------------------------------------- Dummy Argument
+
+ // A Dummy argument is one that is used only for its appearance in
+@@ -73,28 +83,28 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArg(optchar, keyword, value, description, syntax_flags) {}
+
+ CmdArgDummy(char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =CmdArg::isOPT)
+ : CmdArg(optchar, keyword, description, syntax_flags) {}
+
+ CmdArgDummy(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArg(value, description, syntax_flags) {}
+
+ CmdArgDummy(const CmdArgDummy & cp) : CmdArg(cp) {}
+
+ CmdArgDummy(const CmdArg & cp) : CmdArg(cp) {}
+
+- virtual ~CmdArgDummy(void);
++ virtual ~CmdArgDummy();
+
+ virtual int
+- is_dummy(void); // return non-zero
++ is_dummy(); // return non-zero
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd); // NO-OP
+@@ -115,20 +125,20 @@
+ CmdArgUsage(char optchar,
+ const char * keyword,
+ const char * description,
+- ostream * osp =NULL); // cout is used if "osp" is NULL
++ ostream * osp =0); // cout is used if "osp" is NULL
+
+ CmdArgUsage(const CmdArgUsage & cp) : CmdArg(cp) {}
+
+ CmdArgUsage(const CmdArg & cp) : CmdArg(cp) {}
+
+- virtual ~CmdArgUsage(void);
++ virtual ~CmdArgUsage();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+
+ // get/set the ostream that usage is printed on
+ ostream *
+- ostream_ptr(void) const { return os_ptr; }
++ ostream_ptr() const { return os_ptr; }
+
+ void
+ ostream_ptr(ostream * osp);
+@@ -150,19 +160,19 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArg(optchar, keyword, value, description, syntax_flags) {}
+
+ CmdArgIntCompiler(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArg(value, description, syntax_flags) {}
+
+ CmdArgIntCompiler(const CmdArgIntCompiler & cp) : CmdArg(cp) {}
+
+ CmdArgIntCompiler(const CmdArg & cp) : CmdArg(cp) {}
+
+- virtual ~CmdArgIntCompiler(void);
++ virtual ~CmdArgIntCompiler();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd) = 0;
+@@ -178,7 +188,7 @@
+ // a CmdArgInt as if it were an integer:
+ //
+ // operator=(int);
+- // operator int(void);
++ // operator int();
+ // operator<<(os, CmdArgInt);
+ //
+ // The integer value is initialized to zero by the constructor.
+@@ -199,16 +209,16 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArgIntCompiler(optchar, keyword, value, description, syntax_flags),
+ val(0) {}
+
+ CmdArgInt(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArgIntCompiler(value, description, syntax_flags), val(0) {}
+
+- virtual ~CmdArgInt(void);
++ virtual ~CmdArgInt();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -223,7 +233,7 @@
+ CmdArgInt &
+ operator=(int cp) { val = cp; return *this; }
+
+- operator int(void) const { return val; }
++ operator int() const { return val; }
+
+ private:
+ int val;
+@@ -246,19 +256,19 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArg(optchar, keyword, value, description, syntax_flags) {}
+
+ CmdArgFloatCompiler(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArg(value, description, syntax_flags) {}
+
+ CmdArgFloatCompiler(const CmdArgFloatCompiler & cp) : CmdArg(cp) {}
+
+ CmdArgFloatCompiler(const CmdArg & cp) : CmdArg(cp) {}
+
+- virtual ~CmdArgFloatCompiler(void);
++ virtual ~CmdArgFloatCompiler();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd) = 0;
+@@ -274,7 +284,7 @@
+ // a CmdArgFloat as if it were a float:
+ //
+ // operator=(float);
+- // operator float(void);
++ // operator float();
+ // operator<<(os, CmdArgFloat);
+ //
+ // The floating-point value is initialized to zero by the constructor.
+@@ -296,16 +306,16 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArgFloatCompiler(optchar, keyword, value, description, syntax_flags),
+ val(0) {}
+
+ CmdArgFloat(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArgFloatCompiler(value, description, syntax_flags), val(0) {}
+
+- virtual ~CmdArgFloat(void);
++ virtual ~CmdArgFloat();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -322,7 +332,7 @@
+ CmdArgFloat &
+ operator=(float cp) { val = cp; return *this; }
+
+- operator float(void) const { return val; }
++ operator float() const { return val; }
+
+ private:
+ float val;
+@@ -343,19 +353,19 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArg(optchar, keyword, value, description, syntax_flags) {}
+
+ CmdArgCharCompiler(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArg(value, description, syntax_flags) {}
+
+ CmdArgCharCompiler(const CmdArgCharCompiler & cp) : CmdArg(cp) {}
+
+ CmdArgCharCompiler(const CmdArg & cp) : CmdArg(cp) {}
+
+- virtual ~CmdArgCharCompiler(void);
++ virtual ~CmdArgCharCompiler();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd) = 0;
+@@ -371,7 +381,7 @@
+ // a CmdArgChar as if it were a character:
+ //
+ // operator=(char);
+- // operator char(void);
++ // operator char();
+ // operator<<(os, CmdArgChar);
+ //
+ // The character value is initialized to '\0' by the constructor.
+@@ -393,16 +403,16 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArgCharCompiler(optchar, keyword, value, description, syntax_flags),
+ val(0) {}
+
+ CmdArgChar(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArgCharCompiler(value, description, syntax_flags), val(0) {}
+
+- virtual ~CmdArgChar(void);
++ virtual ~CmdArgChar();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -417,7 +427,7 @@
+ CmdArgChar &
+ operator=(char cp) { val = cp; return *this; }
+
+- operator char(void) const { return val; }
++ operator char() const { return val; }
+
+ private:
+ char val;
+@@ -446,17 +456,17 @@
+ // it and a "char *" (in most cases).
+ //
+ struct casc_string {
+- unsigned is_alloc : 1 ;
++ unsigned int is_alloc : 1 ;
+ const char * str ;
+
+- casc_string(void) : is_alloc(0), str(0) {}
++ casc_string() : is_alloc(0), str(0) {}
+
+ casc_string(const char * s) : is_alloc(0), str(s) {}
+
+ void
+- copy(unsigned is_temporary, const char * s);
++ copy(unsigned int is_temporary, const char * s);
+
+- casc_string(unsigned is_temporary, const char * s)
++ casc_string(unsigned int is_temporary, const char * s)
+ : is_alloc(0), str(0) { copy(is_temporary, s); }
+
+ casc_string(const casc_string & cp)
+@@ -469,9 +479,9 @@
+ casc_string &
+ operator=(const char * cp) { copy(0, cp); return *this; }
+
+- operator const char*(void) const { return str; }
++ operator const char*() const { return str; }
+
+- virtual ~casc_string(void)
++ virtual ~casc_string()
+ #ifdef __GNUG__
+ { if (is_alloc) delete [] (char *) str; }
+ #endif
+@@ -482,19 +492,19 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArg(optchar, keyword, value, description, syntax_flags) {}
+
+ CmdArgStrCompiler(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArg(value, description, syntax_flags) {}
+
+ CmdArgStrCompiler(const CmdArgStrCompiler & cp) : CmdArg(cp) {}
+
+ CmdArgStrCompiler(const CmdArg & cp) : CmdArg(cp) {}
+
+- virtual ~CmdArgStrCompiler(void);
++ virtual ~CmdArgStrCompiler();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd) = 0;
+@@ -510,7 +520,7 @@
+ // a CmdArgStr as if it were a string:
+ //
+ // operator=(char*);
+- // operator char*(void);
++ // operator char*();
+ // operator<<(os, CmdArgStr);
+ //
+ // The string value is initialized to NULL by the constructor.
+@@ -532,16 +542,16 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALREQ)
++ unsigned int syntax_flags =CmdArg::isOPTVALREQ)
+ : CmdArgStrCompiler(optchar, keyword, value, description, syntax_flags),
+ val(0) {}
+
+ CmdArgStr(const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isPOSVALREQ)
++ unsigned int syntax_flags =CmdArg::isPOSVALREQ)
+ : CmdArgStrCompiler(value, description, syntax_flags), val(0) {}
+
+- virtual ~CmdArgStr(void);
++ virtual ~CmdArgStr();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -560,12 +570,12 @@
+ CmdArgStr &
+ operator=(const char * cp) { val = cp; return *this; }
+
+- operator CmdArgStrCompiler::casc_string(void) { return val; }
++ operator CmdArgStrCompiler::casc_string() { return val; }
+
+- operator const char*(void) const { return val.str; }
++ operator const char*() const { return val.str; }
+
+ // use this for comparing to NULL
+- int isNULL(void) const { return (val.str) ? 0 : 1; }
++ int isNULL() const { return (val.str) ? 0 : 1; }
+
+ private:
+ CmdArgStrCompiler::casc_string val;
+@@ -605,25 +615,25 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =(CmdArg::isOPTVALREQ + CmdArg::isLIST))
++ unsigned int syntax_flags =(CmdArg::isOPTVALREQ + CmdArg::isLIST))
+ : CmdArgIntCompiler(optchar, keyword, value, description, syntax_flags),
+ val(0) {}
+
+ CmdArgIntList(const char * value,
+ const char * description,
+- unsigned syntax_flags =(CmdArg::isPOSVALREQ + CmdArg::isLIST))
++ unsigned int syntax_flags =(CmdArg::isPOSVALREQ + CmdArg::isLIST))
+ : CmdArgIntCompiler(value, description, syntax_flags), val(0) {}
+
+- virtual ~CmdArgIntList(void);
++ virtual ~CmdArgIntList();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+
+- unsigned
+- count(void) const;
++ unsigned int
++ count() const;
+
+ int &
+- operator[](unsigned index);
++ operator[](unsigned int index);
+
+ private:
+ CmdArgIntList(const CmdArgInt & cp);
+@@ -652,25 +662,25 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =(CmdArg::isOPTVALREQ + CmdArg::isLIST))
++ unsigned int syntax_flags =(CmdArg::isOPTVALREQ + CmdArg::isLIST))
+ : CmdArgFloatCompiler(optchar, keyword, value, description, syntax_flags),
+ val(0) {}
+
+ CmdArgFloatList(const char * value,
+ const char * description,
+- unsigned syntax_flags =(CmdArg::isPOSVALREQ + CmdArg::isLIST))
++ unsigned int syntax_flags =(CmdArg::isPOSVALREQ + CmdArg::isLIST))
+ : CmdArgFloatCompiler(value, description, syntax_flags), val(0) {}
+
+- virtual ~CmdArgFloatList(void);
++ virtual ~CmdArgFloatList();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+
+- unsigned
+- count(void) const;
++ unsigned int
++ count() const;
+
+ float &
+- operator[](unsigned index);
++ operator[](unsigned int index);
+
+ private:
+ CmdArgFloatList(const CmdArgFloat & cp);
+@@ -699,25 +709,25 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =(CmdArg::isOPTVALREQ + CmdArg::isLIST))
++ unsigned int syntax_flags =(CmdArg::isOPTVALREQ + CmdArg::isLIST))
+ : CmdArgStrCompiler(optchar, keyword, value, description, syntax_flags),
+ val(0) {}
+
+ CmdArgStrList(const char * value,
+ const char * description,
+- unsigned syntax_flags =(CmdArg::isPOSVALREQ + CmdArg::isLIST))
++ unsigned int syntax_flags =(CmdArg::isPOSVALREQ + CmdArg::isLIST))
+ : CmdArgStrCompiler(value, description, syntax_flags), val(0) {}
+
+- virtual ~CmdArgStrList(void);
++ virtual ~CmdArgStrList();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+
+- unsigned
+- count(void) const;
++ unsigned int
++ count() const;
+
+ CmdArgStrCompiler::casc_string &
+- operator[](unsigned index);
++ operator[](unsigned int index);
+
+ private:
+ CmdArgStrList(const CmdArgStr & cp);
+@@ -754,14 +764,14 @@
+ CmdArgBoolCompiler(char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =CmdArg::isOPT)
+ : CmdArg(optchar, keyword, description, syntax_flags) {}
+
+ CmdArgBoolCompiler(const CmdArgBoolCompiler & cp) : CmdArg(cp) {}
+
+ CmdArgBoolCompiler(const CmdArg & cp) : CmdArg(cp) {}
+
+- virtual ~CmdArgBoolCompiler(void);
++ virtual ~CmdArgBoolCompiler();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd) = 0;
+@@ -769,8 +779,8 @@
+ int
+ compile(const char * & arg,
+ CmdLine & cmd,
+- unsigned & value,
+- unsigned default_value =1);
++ unsigned int & value,
++ unsigned int default_value =1);
+ } ;
+
+
+@@ -794,7 +804,7 @@
+ // a Boolean Value:
+ //
+ // operator=(int);
+- // operator int(void);
++ // operator int();
+ //
+ // Examples:
+ // CmdArgBool xflag('x', "xmode", "turn on xmode);
+@@ -808,7 +818,7 @@
+ CmdArgBool(char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =CmdArg::isOPT)
+ : CmdArgBoolCompiler(optchar, keyword, description, syntax_flags),
+ val(0) {}
+
+@@ -816,7 +826,7 @@
+
+ CmdArgBool(const CmdArg & cp) : CmdArgBoolCompiler(cp), val(0) {}
+
+- virtual ~CmdArgBool(void);
++ virtual ~CmdArgBool();
+
+ CmdArgBool &
+ operator=(const CmdArgBool & cp)
+@@ -826,13 +836,13 @@
+ operator=(int new_value)
+ { val = (new_value) ? 1 : 0; return *this; }
+
+- operator int(void) const { return val; }
++ operator int() const { return val; }
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+
+ protected:
+- unsigned val : 1;
++ unsigned int val : 1;
+ } ;
+
+ ostream &
+@@ -845,14 +855,14 @@
+ CmdArgClear(char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =CmdArg::isOPT)
+ : CmdArgBool(optchar, keyword, description, syntax_flags) { val = 1; }
+
+ CmdArgClear(const CmdArgClear & cp) : CmdArgBool(cp) {}
+
+ CmdArgClear(const CmdArg & cp) : CmdArgBool(cp) { val = 1; }
+
+- virtual ~CmdArgClear(void);
++ virtual ~CmdArgClear();
+
+ CmdArgClear &
+ operator=(const CmdArgClear & cp)
+@@ -862,7 +872,7 @@
+ operator=(int new_value)
+ { val = (new_value) ? 1 : 0; return *this; }
+
+- operator int(void) const { return val; }
++ operator int() const { return val; }
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -873,14 +883,14 @@
+ CmdArgToggle(char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =CmdArg::isOPT)
+ : CmdArgBool(optchar, keyword, description, syntax_flags) {}
+
+ CmdArgToggle(const CmdArgToggle & cp) : CmdArgBool(cp) {}
+
+ CmdArgToggle(const CmdArg & cp) : CmdArgBool(cp) {}
+
+- virtual ~CmdArgToggle(void);
++ virtual ~CmdArgToggle();
+
+ CmdArgToggle &
+ operator=(const CmdArgToggle & cp)
+@@ -890,7 +900,7 @@
+ operator=(int new_value)
+ { val = (new_value) ? 1 : 0; return *this; }
+
+- operator int(void) const { return val; }
++ operator int() const { return val; }
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -929,10 +939,10 @@
+ char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =CmdArg::isOPT)
+ : CmdArg(optchar, keyword, description, syntax_flags), ref(bool_arg) {}
+
+- virtual ~CmdArgBoolRef(void);
++ virtual ~CmdArgBoolRef();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -949,10 +959,10 @@
+ char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =CmdArg::isOPT)
+ : CmdArg(optchar, keyword, description, syntax_flags), ref(bool_arg) {}
+
+- virtual ~CmdArgClearRef(void);
++ virtual ~CmdArgClearRef();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -967,10 +977,10 @@
+ char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPT)
++ unsigned int syntax_flags =CmdArg::isOPT)
+ : CmdArg(optchar, keyword, description, syntax_flags), ref(bool_arg) {}
+
+- virtual ~CmdArgToggleRef(void);
++ virtual ~CmdArgToggleRef();
+
+ virtual int
+ operator()(const char * & arg, CmdLine & cmd);
+@@ -978,5 +988,7 @@
+ protected:
+ CmdArgBool & ref;
+ } ;
++
++} // namespace cmdline
+
+ #endif /* _usr_include_cmdargs_h */
diff --git a/devel/cmdline/patches/patch-ay b/devel/cmdline/patches/patch-ay
new file mode 100644
index 00000000000..4443b50b54c
--- /dev/null
+++ b/devel/cmdline/patches/patch-ay
@@ -0,0 +1,169 @@
+$NetBSD: patch-ay,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/cmdline.c.orig Thu Jan 2 13:33:32 1997
++++ src/lib/cmdline.c
+@@ -18,21 +18,31 @@
+ // - Added cmd_nargs_parsed field to CmdLine
+ // - Added cmd_description field to CmdLine
+ // - Added exit_handler() and quit() member-functions to CmdLine
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <cstdlib>
++#include <cstdarg>
++#include <cstring>
++#include <cctype>
++#include <iostream>
+
+ #include "cmdline.h"
+ #include "cmdargs.h"
+ #include "arglist.h"
+ #include "states.h"
+
+-#define va_CmdArgP(ap) va_arg(ap, CmdArg *)
++namespace cmdline {
+
++using std::cerr;
++using std::exit;
++using std::strcpy;
++using std::strrchr;
++
++#define va_CmdArgP(ap) va_arg(ap, CmdArg *)
+
+ //------------------------------------------------------------------- init_args
+
+@@ -139,12 +149,12 @@
+ # ifdef vms
+ char * ver;
+ // remove leading directory and/or device name
+- p1 = ::strrchr(filename, ':');
+- p2 = ::strrchr(filename, ']');
++ p1 = strrchr(filename, ':');
++ p2 = strrchr(filename, ']');
+ # else
+ // remove leading directory and/or drive name
+- p1 = ::strrchr(filename, '/');
+- p2 = ::strrchr(filename, '\\');
++ p1 = strrchr(filename, '/');
++ p2 = strrchr(filename, '\\');
+ # endif
+ if ((p1 == NULL) && (p2 == NULL)) {
+ start = filename ;
+@@ -157,15 +167,15 @@
+ }
+
+ str = new char[strlen(start) + 1];
+- (void) ::strcpy(str, start);
++ strcpy(str, start);
+
+ // remove the extension
+- ext = ::strrchr(str, '.');
++ ext = strrchr(str, '.');
+ if (ext) *ext = '\0' ;
+
+ # ifdef vms
+ // remove the version
+- ver = ::strrchr(str, ';');
++ ver = strrchr(str, ';');
+ if (ver) *ver = '\0' ;
+ # endif
+
+@@ -173,7 +183,7 @@
+
+ #else
+
+- char * p = ::strrchr(filename, '/') ;
++ char * p = strrchr(filename, '/') ;
+ return (p == NULL) ? filename : (p + 1) ;
+
+ #endif /* if (vms || msdos || os2) */
+@@ -197,7 +207,7 @@
+ cmd_quit_handler(NULL)
+ {
+ name(cmdname);
+- ::init_args(cmd_args);
++ init_args(cmd_args);
+ }
+
+ // Constructor with a name and CmdArgs
+@@ -215,7 +225,7 @@
+ cmd_quit_handler(NULL)
+ {
+ name(cmdname);
+- ::init_args(cmd_args);
++ init_args(cmd_args);
+
+ CmdArgListListIter iter(cmd_args);
+ CmdArgList * arg_list = iter();
+@@ -244,7 +254,7 @@
+ cmd_quit_handler(NULL)
+ {
+ if (cmdarg1 == NULL) return;
+- ::init_args(cmd_args);
++ init_args(cmd_args);
+
+ CmdArgListListIter iter(cmd_args);
+ CmdArgList * arg_list = iter();
+@@ -259,7 +269,7 @@
+
+
+ // Destructor
+-CmdLine::~CmdLine(void)
++CmdLine::~CmdLine()
+ {
+ delete cmd_args;
+
+@@ -278,14 +288,14 @@
+ #if (defined(vms) || defined(msdos) || defined(os2))
+ delete [] cmd_name;
+ #endif
+- cmd_name = ::filebasename((progname) ? progname : unknown_progname);
++ cmd_name = filebasename((progname) ? progname : unknown_progname);
+ }
+
+
+ // Print an error message prefix and return a reference to the
+ // error output stream for this command
+ ostream &
+-CmdLine::error(unsigned quiet) const
++CmdLine::error(unsigned int quiet) const
+ {
+ ostream * os = (cmd_err) ? cmd_err : &cerr ;
+ if (cmd_name && *cmd_name && !quiet) *os << cmd_name << ": " ;
+@@ -310,7 +320,7 @@
+ if (cmd_quit_handler != NULL) {
+ (*cmd_quit_handler)(status);
+ } else {
+- ::exit(status);
++ exit(status);
+ }
+ }
+
+@@ -338,7 +348,7 @@
+ }
+ }
+
+-CmdLineCmdArgIter::~CmdLineCmdArgIter(void)
++CmdLineCmdArgIter::~CmdLineCmdArgIter()
+ {
+ delete iter;
+ }
+@@ -347,8 +357,9 @@
+ // Returns NULL if we are already at the end of the list.
+ //
+ CmdArg *
+-CmdLineCmdArgIter::operator()(void)
++CmdLineCmdArgIter::operator()()
+ {
+ return (iter) ? iter->operator()() : NULL ;
+ }
+
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-az b/devel/cmdline/patches/patch-az
new file mode 100644
index 00000000000..1edf86d7d29
--- /dev/null
+++ b/devel/cmdline/patches/patch-az
@@ -0,0 +1,615 @@
+$NetBSD: patch-az,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/cmdline.h.orig Thu Jan 2 13:33:32 1997
++++ src/lib/cmdline.h
+@@ -16,16 +16,26 @@
+ // - Added cmd_description field to CmdLine
+ // - Added exit_handler() and quit() member-functions to CmdLine
+ // - Added ALLOW_PLUS to list of CmdLine configuration flags
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
++// - Add declarations from arglist.h.
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _usr_include_cmdline_h
+ #define _usr_include_cmdline_h
+
+-class ostream ;
+-class istream ;
++#include <iosfwd>
++#include <fifolist.h>
++
++namespace cmdline {
++
++class CmdArg ;
+ class CmdLine ;
+-class CmdArgListIter ;
+-class CmdArgListList ;
++
++DECLARE_FIFO_LIST(CmdArgList, CmdArg);
++DECLARE_FIFO_LIST(CmdArgListList, CmdArgList);
+
+ //-----------------------------------------------------------------------------
+
+@@ -110,7 +120,7 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =isOPTVALREQ);
++ unsigned int syntax_flags =isOPTVALREQ);
+
+ // Create an option that takes no value.
+ //
+@@ -123,7 +133,7 @@
+ CmdArg(char optchar,
+ const char * keyword,
+ const char * description,
+- unsigned syntax_flags =isOPT);
++ unsigned int syntax_flags =isOPT);
+
+ // Create a positional argument.
+ //
+@@ -142,18 +152,18 @@
+ //
+ CmdArg(const char * value,
+ const char * description,
+- unsigned syntax_flags =isPOSVALREQ);
++ unsigned int syntax_flags =isPOSVALREQ);
+
+
+ CmdArg(const CmdArg & cp);
+
+- virtual ~CmdArg(void);
++ virtual ~CmdArg();
+
+ // over-ride this function to return a non-zero value if you
+ // wish the argument to be ignored (except for usage messages).
+ //
+ virtual int
+- is_dummy(void);
++ is_dummy();
+
+ // Here is the "primary" function that makes everything work ...
+ //
+@@ -204,12 +214,12 @@
+ operator()(const char * & arg, CmdLine & cmd) = 0;
+
+ // Retrieve the syntax flags for this argument.
+- unsigned
+- syntax(void) const { return arg_syntax; }
++ unsigned int
++ syntax() const { return arg_syntax; }
+
+ // Get the flags that say how this argument was specified.
+- unsigned
+- flags(void) const { return arg_flags; }
++ unsigned int
++ flags() const { return arg_flags; }
+
+ // Get the sequence number corresponding to the last
+ // time this argument was matched on the command-line.
+@@ -218,65 +228,65 @@
+ // will be zero, otherwise it will be 'N' where the last
+ // time this argument was matched, it was the 'N'th argument
+ // encountered.
+- unsigned
+- sequence(void) const { return arg_sequence; }
++ unsigned int
++ sequence() const { return arg_sequence; }
+
+ // Get the character (short-option) name of this argument.
+ // Returns '\0' if there isnt one.
+ char
+- char_name(void) const { return arg_char_name; }
++ char_name() const { return arg_char_name; }
+
+ // Get the keyword (long-option) name of this argument
+ // Returns NULL if there isnt one.
+ const char *
+- keyword_name(void) const { return arg_keyword_name; }
++ keyword_name() const { return arg_keyword_name; }
+
+ // Get the value name of this argument.
+ // Returns NULL if this argument takes no value.
+ const char *
+- value_name(void) const { return arg_value_name; }
++ value_name() const { return arg_value_name; }
+
+ // Get the description (help-message) of this argument.
+ const char *
+- description(void) const { return arg_description; }
++ description() const { return arg_description; }
+
+ // If we were compiled for dubugging, then dump this argument
+ virtual void
+- dump(ostream & os, unsigned level =0) const;
++ dump(std::ostream & os, unsigned int level =0) const;
+
+ private:
+ // Member functions for internal use
+
+ void
+- adjust_syntax(void);
++ adjust_syntax();
+
+ void
+- parse_description(void);
++ parse_description();
+
+ void
+- parse_value(void);
++ parse_value();
+
+ void
+- flags(unsigned newflags) { arg_flags = newflags; }
++ flags(unsigned int newflags) { arg_flags = newflags; }
+
+ void
+- set(unsigned flags) { arg_flags |= flags; }
++ set(unsigned int flags) { arg_flags |= flags; }
+
+ void
+- clear(unsigned flags =~0) { arg_flags &= ~flags; }
++ clear(unsigned int flags =~0) { arg_flags &= ~flags; }
+
+ // set sequence number
+ void
+- sequence(unsigned num) { arg_sequence = num; }
++ sequence(unsigned int num) { arg_sequence = num; }
+
+ // Private data members
+
+- unsigned alloc_value_name : 1 ;
++ unsigned int alloc_value_name : 1 ;
+
+- unsigned arg_flags : 8 ;
+- unsigned arg_syntax : 8 ;
++ unsigned int arg_flags : 8 ;
++ unsigned int arg_syntax : 8 ;
+
+- unsigned arg_sequence;
++ unsigned int arg_sequence;
+
+ char arg_char_name;
+ const char * arg_keyword_name;
+@@ -293,19 +303,19 @@
+ //
+ class CmdLineArgIter {
+ public:
+- CmdLineArgIter(void);
++ CmdLineArgIter();
+
+- virtual ~CmdLineArgIter(void);
++ virtual ~CmdLineArgIter();
+
+ // Return the current argument and advance to the next one.
+ // Returns NULL if we are already at the end of the arguments
+ //
+ virtual const char *
+- operator()(void) = 0;
++ operator()() = 0;
+
+ // Are the args returned by operator() pointing to temporary storage?
+ virtual int
+- is_temporary(void) const = 0;
++ is_temporary() const = 0;
+
+ private:
+ CmdLineArgIter(const CmdLineArgIter &) ;
+@@ -326,14 +336,14 @@
+ CmdArgvIter(const char * const argv[])
+ : array(argv), index(0), count(-1) {}
+
+- virtual ~CmdArgvIter(void);
++ virtual ~CmdArgvIter();
+
+ virtual const char *
+- operator()(void);
++ operator()();
+
+ // is_temporary returns 0 for CmdArgvIter
+ virtual int
+- is_temporary(void) const;
++ is_temporary() const;
+
+ // Restart using a different string array.
+ void
+@@ -367,10 +377,10 @@
+ public:
+ CmdStrTokIter(const char * tokens, const char * delimiters =0);
+
+- virtual ~CmdStrTokIter(void);
++ virtual ~CmdStrTokIter();
+
+ virtual const char *
+- operator()(void);
++ operator()();
+
+ // Reset using a new token-string and delimiter set.
+ void
+@@ -378,7 +388,7 @@
+
+ // Get the current delimiter set
+ const char *
+- delimiters(void) const { return seps; }
++ delimiters() const { return seps; }
+
+ // Change the current delimiter set
+ void
+@@ -386,7 +396,7 @@
+
+ // is_temporary returns 1 for CmdStrTokIter
+ virtual int
+- is_temporary(void) const;
++ is_temporary() const;
+
+ private:
+ CmdStrTokIter(const CmdStrTokIter &) ;
+@@ -411,21 +421,21 @@
+ //
+ class CmdIstreamIter : public CmdLineArgIter {
+ public:
+- static const unsigned MAX_LINE_LEN ;
++ static const unsigned int MAX_LINE_LEN ;
+
+- CmdIstreamIter(istream & input);
++ CmdIstreamIter(std::istream & input);
+
+- virtual ~CmdIstreamIter(void);
++ virtual ~CmdIstreamIter();
+
+ virtual const char *
+- operator()(void);
++ operator()();
+
+ // is_temporary returns 1 for CmdIstreamIter
+ virtual int
+- is_temporary(void) const;
++ is_temporary() const;
+
+ private:
+- istream & is ;
++ std::istream & is ;
+ CmdStrTokIter * tok_iter ;
+ } ;
+
+@@ -496,11 +506,11 @@
+
+ CmdLine(CmdArg * cmdarg1 ...); // last arg should be NULL
+
+- virtual ~CmdLine(void);
++ virtual ~CmdLine();
+
+ // Get the command name.
+ const char *
+- name(void) const { return cmd_name; }
++ name() const { return cmd_name; }
+
+ // Specify a command name.
+ void
+@@ -508,7 +518,7 @@
+
+ // Get the command description.
+ const char *
+- description(void) const { return cmd_description; }
++ description() const { return cmd_description; }
+
+ // Specify a command description.
+ void
+@@ -548,11 +558,11 @@
+ } ;
+
+ // Print usage on the given output stream using the given verboseness
+- ostream &
+- usage(ostream & os, CmdUsageLevel level =DEFAULT_USAGE) const ;
++ std::ostream &
++ usage(std::ostream & os, CmdUsageLevel level =DEFAULT_USAGE) const ;
+
+ // Print usage on the CmdLine's error-outstream
+- ostream &
++ std::ostream &
+ usage(CmdUsageLevel level =DEFAULT_USAGE) const ;
+
+ // Obtain the current status of the command. The status will be
+@@ -560,8 +570,8 @@
+ // to a combination of CmdStatus bitmasks telling us precisely
+ // what went wrong.
+ //
+- unsigned
+- status(void) const { return cmd_status; }
++ unsigned int
++ status() const { return cmd_status; }
+
+ // Print an error message prefix on the error output stream
+ // associated with this command. The prefix printed is the
+@@ -577,8 +587,8 @@
+ // (which may be useful if you wish only to obtain a reference
+ // this CmdLine's error-outstream).
+ //
+- ostream &
+- error(unsigned quiet =0) const;
++ std::ostream &
++ error(unsigned int quiet =0) const;
+
+ // If the QUIET-flag is not set, then we need to know where
+ // to print any error messages (the default is cerr).
+@@ -587,27 +597,27 @@
+ // for error messages.
+ //
+ void
+- error(ostream & os) { cmd_err = &os; }
++ error(std::ostream & os) { cmd_err = &os; }
+
+ //
+ // Get & set the command-parsing-flags
+ //
+
+ // Get the current set of command-flags
+- unsigned
+- flags(void) const { return cmd_flags; }
++ unsigned int
++ flags() const { return cmd_flags; }
+
+ // Specify a new set of command-flags
+ void
+- flags(unsigned newflags) { cmd_flags = newflags; }
++ flags(unsigned int newflags) { cmd_flags = newflags; }
+
+ // Set only the given command-flags
+ void
+- set(unsigned flags) { cmd_flags |= flags; }
++ set(unsigned int flags) { cmd_flags |= flags; }
+
+ // Clear only the given command-flags
+ void
+- clear(unsigned flags =~0) { cmd_flags &= ~flags; }
++ clear(unsigned int flags =~0) { cmd_flags &= ~flags; }
+
+ //
+ // We are somewhat flexible in the way we parse arguments.
+@@ -632,33 +642,33 @@
+ //
+ enum { NO_PROCESSING = 0, AUTO_PROCESSING = 1 } ;
+
+- unsigned
++ unsigned int
+ parse(CmdLineArgIter & arg_iter, int processing =AUTO_PROCESSING) ;
+
+ // Perform the necessary pre-processing.
+ // Return the resultant command status.
+ //
+- unsigned
+- prologue(void) ;
++ unsigned int
++ prologue() ;
+
+ // Parse a single argument (pre- and post- processing is
+ // NOT performed).
+ //
+- unsigned
++ unsigned int
+ parse_arg(const char * arg) ;
+
+ // Perform the necessary post-processing.
+ // Return the resultant command status.
+ //
+- unsigned
+- epilogue(void) ;
++ unsigned int
++ epilogue() ;
+
+ //
+ // Find out the number of arguments parsed so far
+ //
+
+- unsigned
+- nargs_parsed(void) const { return cmd_nargs_parsed; }
++ unsigned int
++ nargs_parsed() const { return cmd_nargs_parsed; }
+
+ //
+ // Exception handling (well -- not really)
+@@ -685,7 +695,7 @@
+ // Get the current quit-handler (returns NULL if there isnt one)
+ //
+ quit_func_t
+- quit_handler(void) const { return cmd_quit_handler; }
++ quit_handler() const { return cmd_quit_handler; }
+
+
+ //
+@@ -714,16 +724,16 @@
+ //
+
+ // get the release number
+- static unsigned
+- release(void);
++ static unsigned int
++ release();
+
+ // get the patchlevel number
+- static unsigned
+- patchlevel(void);
++ static unsigned int
++ patchlevel();
+
+ // get the SCCS identifier string
+ static const char *
+- ident(void);
++ ident();
+
+ //
+ // These next few functions are used internally but are general
+@@ -740,7 +750,7 @@
+ // partial-match, and str_NONE otherwise.
+ //
+ static strmatch_t
+- strmatch(const char * src, const char * attempt, unsigned len =0);
++ strmatch(const char * src, const char * attempt, unsigned int len =0);
+
+ // Print a hanging indented paragraph on an outstream. Long lines
+ // are broken at word boundaries and are wrapped to line up with
+@@ -753,12 +763,12 @@
+ // is the second sentence. etc ...
+ //
+ static void
+- strindent(ostream & os,
+- unsigned maxcols,
+- unsigned margin,
+- const char * title,
+- unsigned indent,
+- const char * text);
++ strindent(std::ostream & os,
++ unsigned int maxcols,
++ unsigned int margin,
++ const char * title,
++ unsigned int indent,
++ const char * text);
+
+ //
+ // Debugging stuff ...
+@@ -766,24 +776,24 @@
+
+ // If we were compiled for dubugging, then dump this command
+ virtual void
+- dump(ostream & os, unsigned level =0) const;
++ dump(std::ostream & os, unsigned int level =0) const;
+
+ // If we were compiled for dubugging, then dump the argument list
+ virtual void
+- dump_args(ostream & os, unsigned level =0) const;
++ dump_args(std::ostream & os, unsigned int level =0) const;
+
+ private:
+ // Private data members
+- unsigned cmd_parse_state : 8 ;
+- unsigned cmd_state : 8 ;
+- unsigned cmd_flags : 16 ;
+- unsigned cmd_status : 16 ;
+- unsigned cmd_nargs_parsed ;
++ unsigned int cmd_parse_state : 8 ;
++ unsigned int cmd_state : 8 ;
++ unsigned int cmd_flags : 16 ;
++ unsigned int cmd_status : 16 ;
++ unsigned int cmd_nargs_parsed ;
+ const char * cmd_name ;
+ const char * cmd_description ;
+ CmdArg * cmd_matched_arg ;
+ CmdArgListList * cmd_args ;
+- ostream * cmd_err ;
++ std::ostream * cmd_err ;
+ quit_func_t cmd_quit_handler ;
+
+ // Disallow copying and assignment
+@@ -803,16 +813,16 @@
+ handle_arg(CmdArg * cmdarg, const char * & arg);
+
+ void
+- ck_need_val(void);
++ ck_need_val();
+
+ CmdLineSyntax
+- syntax(void) const;
++ syntax() const;
+
+- unsigned
++ unsigned int
+ prompt_user(CmdArg * cmdarg);
+
+- unsigned
+- missing_args(void);
++ unsigned int
++ missing_args();
+
+ CmdArg *
+ opt_match(char optchar) const;
+@@ -824,47 +834,47 @@
+ int match_value =0) const;
+
+ CmdArg *
+- pos_match(void) const;
++ pos_match() const;
+
+- unsigned
++ unsigned int
+ parse_option(const char * arg);
+
+- unsigned
++ unsigned int
+ parse_keyword(const char * arg);
+
+- unsigned
++ unsigned int
+ parse_value(const char * arg);
+
+- ostream &
++ std::ostream &
+ arg_error(const char * error_str, const CmdArg * cmdarg) const;
+
+- unsigned
++ unsigned int
+ fmt_arg(const CmdArg * cmdarg,
+ char * buf,
+- unsigned bufsize,
++ unsigned int bufsize,
+ CmdLineSyntax syntax,
+ CmdUsageLevel level) const;
+
+ static CmdUsageLevel
+- get_usage_level(void);
++ get_usage_level();
+
+- unsigned
+- print_synopsis(CmdLineSyntax syntax,
+- ostream & os,
+- int cols) const;
++ unsigned int
++ print_synopsis(CmdLineSyntax syntax,
++ std::ostream & os,
++ int cols) const;
+
+ void
+ print_descriptions(CmdLineSyntax syntax,
+- ostream & os,
++ std::ostream & os,
+ int cols,
+- unsigned longest) const;
++ unsigned int longest) const;
+
+ } ;
+
+
+ // "os << cmd" is equivalent to "cmd.usage(os)"
+-inline ostream &
+-operator <<(ostream & os, CmdLine & cmd) { return cmd.usage(os); }
++inline std::ostream &
++operator <<(std::ostream & os, CmdLine & cmd) { return cmd.usage(os); }
+
+
+ //-----------------------------------------------------------------------------
+@@ -879,13 +889,13 @@
+
+ CmdLineCmdArgIter(CmdLine * cmd);
+
+- virtual ~CmdLineCmdArgIter(void);
++ virtual ~CmdLineCmdArgIter();
+
+ // Return the current argument and advance to the next one.
+ // Returns NULL if we are already at the end of the list.
+ //
+ CmdArg *
+- operator()(void);
++ operator()();
+
+ private:
+ CmdLineCmdArgIter(const CmdLineCmdArgIter &);
+@@ -895,5 +905,7 @@
+
+ CmdArgListIter * iter;
+ } ;
++
++} // namespace cmdline
+
+ #endif /* _usr_include_cmdline_h */
diff --git a/devel/cmdline/patches/patch-ba b/devel/cmdline/patches/patch-ba
new file mode 100644
index 00000000000..d170dea3be8
--- /dev/null
+++ b/devel/cmdline/patches/patch-ba
@@ -0,0 +1,102 @@
+$NetBSD: patch-ba,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/cmdtest.c.orig Thu Jan 2 13:33:33 1997
++++ src/lib/cmdtest.c
+@@ -9,13 +9,18 @@
+ //
+ // 03/01/93 Brad Appleton <bradapp@enteract.com>
+ // - Attached a description to the command.
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <ctype.h>
++#include <cstdlib>
++#include <cctype>
++#include <iostream>
+ #include <cmdargs.h>
+
++using namespace cmdline;
++
+ //---------------------------------------------------------------- CmdArgModCmd
+
+ // CmdArgModCmd is a special argument that we use for testing.
+@@ -34,7 +39,7 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags =CmdArg::isOPTVALOPT);
++ unsigned int syntax_flags =CmdArg::isOPTVALOPT);
+
+ virtual
+ ~CmdArgModCmd(void);
+@@ -47,14 +52,14 @@
+ const char * keyword,
+ const char * value,
+ const char * description,
+- unsigned syntax_flags)
++ unsigned int syntax_flags)
+ : CmdArg(optchar, keyword, value, description, syntax_flags) {}
+
+ CmdArgModCmd::~CmdArgModCmd(void) {}
+
+ int CmdArgModCmd::operator()(const char * & arg, CmdLine & cmd)
+ {
+- unsigned new_flags = 0;
++ unsigned int new_flags = 0;
+ for (const char * p = arg ; *p ; p++) {
+ char ch = *p;
+ if (isupper(ch)) ch = tolower(ch);
+@@ -142,7 +147,7 @@
+ cout << "xflag=" << (xflag ? "ON" : "OFF") << endl ;
+ cout << "count=" << count << endl ;
+
+- unsigned sflags = str.flags();
++ unsigned int sflags = str.flags();
+ if ((sflags & CmdArg::GIVEN) && (! (sflags & CmdArg::VALGIVEN))) {
+ cout << "No string given on command-line!" << endl ;
+ } else {
+@@ -154,20 +159,20 @@
+ cout << "why=\"" << why << "\"" << endl ;
+ cout << "who=\"" << who << "\"" << endl ;
+
+- unsigned nints = ints.count();
++ unsigned int nints = ints.count();
+ for (int i = 0; i < nints ; i++) {
+ cout << "int[" << i << "]=" << ints[i] << endl ;
+ }
+
+- unsigned ngrps = grps.count();
+- for (i = 0; i < ngrps ; i++) {
++ unsigned int ngrps = grps.count();
++ for (int i = 0; i < ngrps ; i++) {
+ cout << "groups[" << i << "]=\"" << grps[i] << "\"" << endl ;
+ }
+
+ cout << "name=\"" << name << "\"" << endl ;
+
+- unsigned nfiles = files.count();
+- for (i = 0; i < nfiles ; i++) {
++ unsigned int nfiles = files.count();
++ for (int i = 0; i < nfiles ; i++) {
+ cout << "files[" << i << "]=\"" << files[i] << "\"" << endl ;
+ }
+ }
+@@ -223,12 +228,12 @@
+ name = NULL;
+
+ cout << "Parsing the command-line ..." << endl ;
+- unsigned status = cmd.parse(argv_iter);
++ unsigned int status = cmd.parse(argv_iter);
+ if (status) cmd.error() << "parsing errors occurred!" << endl ;
+
+ print_args();
+
+- unsigned dbg_flags = debug.flags();
++ unsigned int dbg_flags = debug.flags();
+ if ((dbg_flags & CmdArg::GIVEN) && (! (dbg_flags & CmdArg::VALGIVEN))) {
+ debug = 1;
+ }
diff --git a/devel/cmdline/patches/patch-bb b/devel/cmdline/patches/patch-bb
new file mode 100644
index 00000000000..0cc19b038de
--- /dev/null
+++ b/devel/cmdline/patches/patch-bb
@@ -0,0 +1,208 @@
+$NetBSD: patch-bb,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/dump.c.orig Thu Jan 2 13:33:33 1997
++++ src/lib/dump.c
+@@ -13,18 +13,23 @@
+ // - Added arg_sequence field to CmdArg
+ // - Added cmd_nargs_parsed field to CmdLine
+ // - Added cmd_description field to CmdLine
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+ #include "cmdline.h"
+
+ #ifdef DEBUG_CMDLINE
+-# include <iostream.h>
+-# include <string.h>
++# include <iostream>
+
+-# include "arglist.h"
+ # include "states.h"
+ #endif
+
++namespace cmdline {
++
++using std::ostream;
+
+ #ifdef DEBUG_CMDLINE
+
+@@ -32,7 +37,7 @@
+ // The number of spaces to indent is 3x the indent level
+ //
+ static ostream &
+-indent(ostream & os, unsigned level)
++indent(ostream & os, unsigned int level)
+ {
+ os.width(level * 3);
+ return (os << "");
+@@ -42,7 +47,7 @@
+ // Dump the arg_syntax field of a CmdArg in a mnemonic format
+ //
+ static ostream &
+-dump_arg_syntax(ostream & os, unsigned syntax)
++dump_arg_syntax(ostream & os, unsigned int syntax)
+ {
+ if (syntax & CmdArg::isREQ) {
+ os << "isREQ" ;
+@@ -78,7 +83,7 @@
+
+ // Dump the arg_flags field of a CmdArg in a mnemonic format
+ static ostream &
+-dump_arg_flags(ostream & os, unsigned flags)
++dump_arg_flags(ostream & os, unsigned int flags)
+ {
+ if (flags & CmdArg::GIVEN) {
+ os << "GIVEN" ;
+@@ -109,7 +114,7 @@
+
+ // Dump the cmd_flags field of a CmdLine in a mnemonic format
+ static ostream &
+-dump_cmd_flags(ostream & os, unsigned flags)
++dump_cmd_flags(ostream & os, unsigned int flags)
+ {
+ if (flags & CmdLine::NO_ABORT) {
+ os << "NO_ABORT" ;
+@@ -147,7 +152,7 @@
+
+ // Dump the status of a CmdLine in a mnemonic format
+ static ostream &
+-dump_cmd_status(ostream & os, unsigned status)
++dump_cmd_status(ostream & os, unsigned int status)
+ {
+ if (! status) {
+ os << "NO_ERROR";
+@@ -189,7 +194,7 @@
+
+ // Dump the state of a CmdLine in a mnemonic format
+ static ostream &
+-dump_cmd_state(ostream & os, unsigned state)
++dump_cmd_state(ostream & os, unsigned int state)
+ {
+ if (! state) {
+ os << "NO_OPTIONS";
+@@ -215,7 +220,7 @@
+
+ // Dump the parse_state of a CmdLine in a mnemonic format
+ static ostream &
+-dump_cmd_parse_state(ostream & os, unsigned parse_state)
++dump_cmd_parse_state(ostream & os, unsigned int parse_state)
+ {
+ switch (parse_state) {
+ case cmd_START_STATE :
+@@ -264,9 +269,9 @@
+
+ // Dump the arguments (including the default arguments) in an arg_list
+ static ostream &
+-dump_cmd_args(ostream & os, CmdArgListList * arg_list, unsigned level)
++dump_cmd_args(ostream & os, CmdArgListList * arg_list, unsigned int level)
+ {
+- ::indent(os, level) << "CmdLine::cmd_args {\n" ;
++ indent(os, level) << "CmdLine::cmd_args {\n" ;
+
+ CmdArgListListIter list_iter(arg_list);
+ for (CmdArgList * alist = list_iter() ; alist ; alist = list_iter()) {
+@@ -276,7 +281,7 @@
+ }
+ }
+
+- ::indent(os, level) << "}" << endl;
++ indent(os, level) << "}" << endl;
+ return os;
+ }
+
+@@ -285,72 +290,73 @@
+
+ // Dump a CmdArg
+ void
+-CmdArg::dump(ostream & os, unsigned level) const
++CmdArg::dump(ostream & os, unsigned int level) const
+ {
+ #ifdef DEBUG_CMDLINE
+- ::indent(os, level) << "CmdArg {\n" ;
++ indent(os, level) << "CmdArg {\n" ;
+
+- ::indent(os, level + 1) << "option='" << char(arg_char_name) << "', "
++ indent(os, level + 1) << "option='" << char(arg_char_name) << "', "
+ << "keyword=\"" << arg_keyword_name << "\", "
+ << "value=\"" << arg_value_name << "\"\n" ;
+
+- ::indent(os, level + 1) << "syntax=" ;
++ indent(os, level + 1) << "syntax=" ;
+ dump_arg_syntax(os, arg_syntax) << "\n";
+
+- ::indent(os, level + 1) << "flags=" ;
++ indent(os, level + 1) << "flags=" ;
+ dump_arg_flags(os, arg_flags) << "\n";
+
+- ::indent(os, level + 1) << "sequence=" << arg_sequence << "\n";
++ indent(os, level + 1) << "sequence=" << arg_sequence << "\n";
+
+- ::indent(os, level) << "}" << endl;
++ indent(os, level) << "}" << endl;
+ #endif
+ }
+
+
+ // Dump a CmdLine
+ void
+-CmdLine::dump(ostream & os, unsigned level) const
++CmdLine::dump(ostream & os, unsigned int level) const
+ {
+ #ifdef DEBUG_CMDLINE
+- ::indent(os, level) << "CmdLine {\n" ;
++ indent(os, level) << "CmdLine {\n" ;
+
+- ::indent(os, level + 1) << "name=\"" << cmd_name << "\"\n";
++ indent(os, level + 1) << "name=\"" << cmd_name << "\"\n";
+
+- ::indent(os, level + 1) << "description=\"" << cmd_description << "\"\n";
++ indent(os, level + 1) << "description=\"" << cmd_description << "\"\n";
+
+- ::indent(os, level + 1) << "flags=" ;
++ indent(os, level + 1) << "flags=" ;
+ dump_cmd_flags(os, cmd_flags) << "\n";
+
+- ::indent(os, level + 1) << "status=" ;
++ indent(os, level + 1) << "status=" ;
+ dump_cmd_status(os, cmd_status) << "\n";
+
+- ::indent(os, level + 1) << "state=" ;
++ indent(os, level + 1) << "state=" ;
+ dump_cmd_state(os, cmd_state) << "\n";
+
+- ::indent(os, level + 1) << "parse_state=" ;
++ indent(os, level + 1) << "parse_state=" ;
+ dump_cmd_parse_state(os, cmd_parse_state) << "\n";
+
+- ::indent(os, level + 1);
++ indent(os, level + 1);
+ if (cmd_matched_arg == NULL) {
+ os << "matched_arg=NULL\n";
+ } else {
+ os << "matched_arg=" << (void *)cmd_matched_arg << "\n";
+ }
+
+- ::indent(os, level + 1) << "# valid-args-parsed="
++ indent(os, level + 1) << "# valid-args-parsed="
+ << cmd_nargs_parsed << "\n" ;
+
+- ::indent(os, level) << "}" << endl;
++ indent(os, level) << "}" << endl;
+ #endif
+ }
+
+
+ // Dump the arguments of a CmdLine
+ void
+-CmdLine::dump_args(ostream & os, unsigned level) const
++CmdLine::dump_args(ostream & os, unsigned int level) const
+ {
+ #ifdef DEBUG_CMDLINE
+ dump_cmd_args(os, cmd_args, level);
+ #endif
+ }
+
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-bc b/devel/cmdline/patches/patch-bc
new file mode 100644
index 00000000000..cba0681406b
--- /dev/null
+++ b/devel/cmdline/patches/patch-bc
@@ -0,0 +1,100 @@
+$NetBSD: patch-bc,v 1.1.1.1 2000/08/25 16:15:53 jlam Exp $
+
+--- src/lib/fifolist.c.orig Thu Jan 2 13:33:33 1997
++++ src/lib/fifolist.c
+@@ -6,9 +6,14 @@
+ //
+ // ^HISTORY:
+ // 03/21/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
++// - Moved template code to fifolist.h from this file
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
++#include <cstdlib>
+ #include "cmdline.h"
+ #include "fifolist.h"
+
+@@ -16,10 +21,12 @@
+ # define NULL 0L
+ #endif
+
++namespace cmdline {
++
+ //------------------------------------------------------------- GenericFifoList
+
+ // Destructor
+-GenericFifoList::~GenericFifoList(void) {
++GenericFifoList::~GenericFifoList() {
+ GenericFifoListNode * nd = head;
+ head = NULL;
+ while (nd) {
+@@ -48,7 +55,7 @@
+
+ // Remove an item off the front
+ void *
+-GenericFifoList::remove(void) {
++GenericFifoList::remove() {
+ if (head == NULL) return NULL;
+ GenericFifoListNode * nd = head;
+ void * result = head->contents;
+@@ -61,10 +68,10 @@
+
+ //--------------------------------------------------------- GenericFifoListIter
+
+-GenericFifoListIter::~GenericFifoListIter(void) {}
++GenericFifoListIter::~GenericFifoListIter() {}
+
+ void *
+-GenericFifoListIter::operator()(void) {
++GenericFifoListIter::operator()() {
+ void * result = NULL;
+ if (current) {
+ result = current->contents;
+@@ -75,11 +82,11 @@
+
+ //-------------------------------------------------------- GenericFifoListArray
+
+-GenericFifoListArray::~GenericFifoListArray(void) {}
++GenericFifoListArray::~GenericFifoListArray() {}
+
+ void *
+-GenericFifoListArray::operator[](unsigned ndx) {
+- unsigned max_index = count();
++GenericFifoListArray::operator[](unsigned int ndx) {
++ unsigned int max_index = count();
+ if (! max_index--) return NULL; // check for underflow
+ if (ndx > max_index) return NULL; // check for overflow
+
+@@ -104,27 +111,4 @@
+ return current->contents;
+ }
+
+-//-------------------------------------------------------------------- FifoList
+-
+-#ifdef TEMPLATES
+-
+- // Destructor
+-template <class Type>
+-FifoList<Type>::~FifoList(void) {
+- GenericFifoListNode * nd = head;
+- head = NULL;
+- while (nd) {
+- GenericFifoListNode * to_delete = nd;
+- nd = nd->next;
+- if (del_items) delete (Type *)to_delete->contents;
+- delete to_delete;
+- }
+-}
+-
+-template <class Type>
+-FifoListIter<Type>::~FifoListIter(void) {}
+-
+-template <class Type>
+-FifoListArray<Type>::~FifoListArray(void) {}
+-
+-#endif
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-bd b/devel/cmdline/patches/patch-bd
new file mode 100644
index 00000000000..b8c85a167bf
--- /dev/null
+++ b/devel/cmdline/patches/patch-bd
@@ -0,0 +1,242 @@
+$NetBSD: patch-bd,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+
+--- src/lib/fifolist.h.orig Thu Jan 2 13:33:34 1997
++++ src/lib/fifolist.h
+@@ -22,6 +22,11 @@
+ //
+ // ^HISTORY:
+ // 03/21/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
++// - Moved template code from fifolist.c to this header file
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _fifolist_h
+@@ -35,6 +40,7 @@
+ # endif
+ #endif
+
++namespace cmdline {
+
+ // GenericFifoList - a FIFO linked list of void * pointers
+ //
+@@ -51,41 +57,41 @@
+ : next(nd), contents(val) {}
+ } ;
+
+- unsigned mod : 1;
+- unsigned del_items : 1;
+- unsigned num_items ;
++ unsigned int mod : 1;
++ unsigned int del_items : 1;
++ unsigned int num_items ;
+ GenericFifoListNode * head;
+ GenericFifoListNode * tail;
+
+- GenericFifoList(void)
++ GenericFifoList()
+ : head(0), tail(0), num_items(0), del_items(0), mod(0) {}
+
+ // Remove the first item from the list
+ void *
+- remove(void);
++ remove();
+
+ // Add an item to the end of the list
+ void
+ add(void * item);
+
+ public:
+- virtual ~GenericFifoList(void);
++ virtual ~GenericFifoList();
+
+ // Was the list modified since the last time we checked?
+ int
+- modified(void) { return (mod) ? (mod = 0, 1) : 0 ; }
++ modified() { return (mod) ? (mod = 0, 1) : 0 ; }
+
+ // Is the list empty?
+ int
+- is_empty(void) const { return (num_items == 0); }
++ is_empty() const { return (num_items == 0); }
+
+ // How many items are in the list?
+- unsigned
+- count(void) const { return num_items; }
++ unsigned int
++ count() const { return num_items; }
+
+ // Is the list responsible for deleting the items it contains?
+ int
+- self_cleaning(void) const { return int(del_items); }
++ self_cleaning() const { return int(del_items); }
+
+ // Tell the list who is responsible for deleting the items it contains?
+ void
+@@ -112,10 +118,10 @@
+ // returns NULL if at end-of-list
+ //
+ void *
+- operator()(void);
++ operator()();
+
+ public:
+- virtual ~GenericFifoListIter(void);
++ virtual ~GenericFifoListIter();
+
+ } ;
+
+@@ -124,7 +130,7 @@
+ class GenericFifoListArray {
+ private:
+ GenericFifoList & list;
+- unsigned index;
++ unsigned int index;
+ GenericFifoList::GenericFifoListNode * current;
+
+ protected:
+@@ -135,7 +141,7 @@
+ : list(*fifo_list), index(0), current(fifo_list->head) {}
+
+ // How many items are in the array?
+- unsigned count(void) const { return list.count(); }
++ unsigned int count() const { return list.count(); }
+
+ // Return a specified item in the array.
+ // NOTE: the programmer is responsible for making sure the given index
+@@ -146,27 +152,27 @@
+ // cause a NULL pointer dereferencing error!
+ //
+ void *
+- operator[](unsigned ndx);
++ operator[](unsigned int ndx);
+
+ public:
+- virtual ~GenericFifoListArray(void);
++ virtual ~GenericFifoListArray();
+
+ } ;
+
+-#ifdef TEMPLATES
++#if 1 // TEMPLATES
+
+ template <class Type>
+ class FifoList : public GenericFifoList {
+ public:
+- FifoList(void) {}
++ FifoList() {}
+
+- virtual ~FifoList(void);
++ virtual ~FifoList();
+
+ void
+ add(Type * item) { GenericFifoList::add((void *)item); }
+
+ Type *
+- remove(void) { return (Type *) GenericFifoList::remove(); }
++ remove() { return (Type *) GenericFifoList::remove(); }
+ } ;
+
+ template <class Type>
+@@ -175,10 +181,10 @@
+ FifoListIter(FifoList<Type> & list) : GenericFifoListIter(list) {}
+ FifoListIter(FifoList<Type> * list) : GenericFifoListIter(list) {}
+
+- virtual ~FifoListIter(void);
++ virtual ~FifoListIter();
+
+ Type *
+- operator()(void) { return (Type *) GenericFifoListIter::operator()(); }
++ operator()() { return (Type *) GenericFifoListIter::operator()(); }
+ } ;
+
+ template <class Type>
+@@ -187,13 +193,31 @@
+ FifoListArray(FifoList<Type> & list) : GenericFifoListArray(list) {}
+ FifoListArray(FifoList<Type> * list) : GenericFifoListArray(list) {}
+
+- virtual ~FifoListArray(void);
++ virtual ~FifoListArray();
+
+ Type &
+- operator[](unsigned ndx)
++ operator[](unsigned int ndx)
+ { return *((Type *) GenericFifoListArray::operator[](ndx)); }
+ } ;
+
++template <class Type>
++FifoList<Type>::~FifoList() {
++ GenericFifoListNode * nd = head;
++ head = NULL;
++ while (nd) {
++ GenericFifoListNode * to_delete = nd;
++ nd = nd->next;
++ if (del_items) delete (Type *)to_delete->contents;
++ delete to_delete;
++ }
++}
++
++template <class Type>
++FifoListIter<Type>::~FifoListIter() {}
++
++template <class Type>
++FifoListArray<Type>::~FifoListArray() {}
++
+ #define DECLARE_FIFO_LIST(Name,Type) \
+ typedef FifoList<Type> Name; \
+ typedef FifoListIter<Type> name2(Name,Iter); \
+@@ -204,9 +228,9 @@
+ #define DECLARE_FIFO_LIST(Name,Type) \
+ class Name : public GenericFifoList { \
+ public: \
+- Name(void) {} \
++ Name() {} \
+ \
+- virtual ~Name(void) { \
++ virtual ~Name() { \
+ GenericFifoListNode * nd = head; \
+ head = 0; \
+ while (nd) { \
+@@ -221,7 +245,7 @@
+ add(Type * item) { GenericFifoList::add((void *)item); } \
+ \
+ Type * \
+- remove(void) { return (Type *) GenericFifoList::remove(); } \
++ remove() { return (Type *) GenericFifoList::remove(); } \
+ \
+ friend class name2(Name,Iter); \
+ } ; \
+@@ -231,10 +255,10 @@
+ name2(Name,Iter)(Name & list) : GenericFifoListIter(list) {} \
+ name2(Name,Iter)(Name * list) : GenericFifoListIter(list) {} \
+ \
+- virtual ~ name2(Name,Iter)(void) {} \
++ virtual ~ name2(Name,Iter)() {} \
+ \
+ Type * \
+- operator()(void) { return (Type *) GenericFifoListIter::operator()(); } \
++ operator()() { return (Type *) GenericFifoListIter::operator()(); } \
+ } ; \
+ \
+ class name2(Name,Array) : public GenericFifoListArray { \
+@@ -242,15 +266,15 @@
+ name2(Name,Array)(Name & list) : GenericFifoListArray(list) {} \
+ name2(Name,Array)(Name * list) : GenericFifoListArray(list) {} \
+ \
+- virtual ~ name2(Name,Array)(void) {} \
++ virtual ~ name2(Name,Array)() {} \
+ \
+ Type & \
+- operator[](unsigned ndx) \
++ operator[](unsigned int ndx) \
+ { return *((Type *) GenericFifoListArray::operator[](ndx)); } \
+ }
+
+ #endif /* TEMPLATES */
+
++} // namespace cmdline
+
+ #endif /* _fifolist_h */
+-
diff --git a/devel/cmdline/patches/patch-be b/devel/cmdline/patches/patch-be
new file mode 100644
index 00000000000..49f7209cb93
--- /dev/null
+++ b/devel/cmdline/patches/patch-be
@@ -0,0 +1,98 @@
+$NetBSD: patch-be,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+
+--- src/lib/parse.c.orig Thu Jan 2 13:33:34 1997
++++ src/lib/parse.c
+@@ -14,24 +14,28 @@
+ // 03/01/93 Brad Appleton <bradapp@enteract.com>
+ // - Added cmd_nargs_parsed field to CmdLine
+ // - Added exit_handler() and quit() member-functions to CmdLine
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <stdlib.h>
+-#include <iostream.h>
+-#include <ctype.h>
+-#include <string.h>
++#include <cstdlib>
++#include <cstring>
++#include <cctype>
++#include <iostream>
+
+ #include "exits.h"
+ #include "states.h"
+-#include "arglist.h"
+ #include "cmdline.h"
+
++namespace cmdline {
+
+ //-------
+ // ^FUNCTION: CmdLine::prologue - initialize before parsing
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::prologue(void)
++// unsigned int CmdLine::prologue()
+ //
+ // ^PARAMETERS:
+ // None.
+@@ -55,8 +59,8 @@
+ // ^ALGORITHM:
+ // Follow along - its not too complicated.
+ //-^^----
+-unsigned
+-CmdLine::prologue(void)
++unsigned int
++CmdLine::prologue()
+ {
+ // reset parse-specific attributes
+ cmd_parse_state = cmd_START_STATE ;
+@@ -80,7 +84,7 @@
+ // ^FUNCTION: CmdLine::epilogue - clean up after parsing
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::epilogue(void)
++// unsigned int CmdLine::epilogue()
+ //
+ // ^PARAMETERS:
+ // None.
+@@ -112,8 +116,8 @@
+ // - Print usage if required
+ // - Exit if required
+ //-^^----
+-unsigned
+-CmdLine::epilogue(void)
++unsigned int
++CmdLine::epilogue()
+ {
+ if (cmd_err == NULL) cmd_err = &cerr;
+
+@@ -167,21 +171,22 @@
+ // ^ALGORITHM:
+ // Trivial - just iterate through calling parse_arg.
+ //-^^----------------
+-unsigned
++unsigned int
+ CmdLine::parse(CmdLineArgIter & arg_iter, int auto_processing)
+ {
+ // NOTE: If arg_iter.is_temporary() is TRUE then we MUST remember
+ // to set the CmdLine::TEMP flags before parsing (and put it
+ // back the way it was when we are finished.
+ //
+- if (auto_processing) (void) prologue();
+- unsigned save_flags = cmd_flags;
++ if (auto_processing) prologue();
++ unsigned int save_flags = cmd_flags;
+ if (arg_iter.is_temporary()) cmd_flags |= TEMP;
+ for (const char * arg = arg_iter() ; arg ; arg = arg_iter()) {
+- (void) parse_arg(arg);
++ parse_arg(arg);
+ }
+ if (arg_iter.is_temporary()) cmd_flags = save_flags;
+- if (auto_processing) (void) epilogue();
++ if (auto_processing) epilogue();
+ return cmd_status ;
+ }
+
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-bf b/devel/cmdline/patches/patch-bf
new file mode 100644
index 00000000000..98a9435ebbc
--- /dev/null
+++ b/devel/cmdline/patches/patch-bf
@@ -0,0 +1,54 @@
+$NetBSD: patch-bf,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+
+--- src/lib/patchlevel.c.orig Thu Jan 2 13:33:35 1997
++++ src/lib/patchlevel.c
+@@ -21,10 +21,17 @@
+ //
+ // 01/11/94 Brad Appleton <bradapp@enteract.com>
+ // - Modified for patch 4
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
++// - Modified for patch 5
+ //-^^---------------------------------------------------------------------
+
+ #include "cmdline.h"
+
++namespace cmdline {
++
+ // Record the version-identifier for this configuration of the project.
+ //
+ // My source-code management system lets me use a symbolic-name
+@@ -33,24 +40,25 @@
+ // file that makes up this version of the project.
+ //
+ static const char ident[] =
+- "@(#)SMS task: cmdline-1.04" ;
++ "@(#)SMS task: cmdline-1.05" ;
+
+
+ // Release and patchlevel information
+ #define CMDLINE_RELEASE 1
+-#define CMDLINE_PATCHLEVEL 4
+-#define CMDLINE_IDENT "@(#)CmdLine 1.04"
++#define CMDLINE_PATCHLEVEL 5
++#define CMDLINE_IDENT "@(#)CmdLine 1.05"
+
+ unsigned
+-CmdLine::release(void) { return CMDLINE_RELEASE; }
++CmdLine::release() { return CMDLINE_RELEASE; }
+
+ unsigned
+-CmdLine::patchlevel(void) { return CMDLINE_PATCHLEVEL; }
++CmdLine::patchlevel() { return CMDLINE_PATCHLEVEL; }
+
+ const char *
+-CmdLine::ident(void) {
++CmdLine::ident() {
+ static const char Ident[] = CMDLINE_IDENT ;
+
+ return Ident;
+ }
+
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-bg b/devel/cmdline/patches/patch-bg
new file mode 100644
index 00000000000..c8acdaf2509
--- /dev/null
+++ b/devel/cmdline/patches/patch-bg
@@ -0,0 +1,108 @@
+$NetBSD: patch-bg,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+
+--- src/lib/private.c.orig Thu Jan 2 13:33:34 1997
++++ src/lib/private.c
+@@ -18,20 +18,29 @@
+ //
+ // 03/03/93 Brad Appleton <bradapp@enteract.com>
+ // - Added exit_handler() and quit() member-functions to CmdLine
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
++// - Find readline.h in newer versions of readline
+ //-^^---------------------------------------------------------------------
+
+-#include <iostream.h>
+-#include <strstream.h>
+-#include <fstream.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <iostream>
++#include <strstream>
++#include <cctype>
++#include <cstdlib>
++#include <cstring>
++#include <cstdio>
+
+ extern "C" {
+ int isatty(int fd);
+
+ #ifdef GNU_READLINE
+-# include <readline.h>
++# ifdef HAVE_READLINE_H
++# include <readline.h>
++# elif HAVE_READLINE_READLINE_H
++# include <readline/readline.h>
++# endif
+ #endif
+
+ }
+@@ -48,8 +57,14 @@
+
+ #include "cmdline.h"
+ #include "states.h"
+-#include "arglist.h"
+
++namespace cmdline {
++
++using std::cerr;
++using std::cin;
++using std::isupper;
++using std::ostrstream;
++using std::tolower;
+
+ // Need a portable version of tolower
+ //
+@@ -236,7 +251,7 @@
+ // ^FUNCTION: CmdLine::prompt_user - prompt the user for a missing argument
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::prompt_user(cmdarg);
++// unsigned int CmdLine::prompt_user(cmdarg);
+ //
+ // ^PARAMETERS:
+ // CmdArg * cmdarg;
+@@ -274,7 +289,7 @@
+ // - if an invalid value was given return ARG_MISSING
+ // - else return 0
+ //-^^----
+-unsigned
++unsigned int
+ CmdLine::prompt_user(CmdArg * cmdarg)
+ {
+ // dont prompt if cin or cerr is not interactive
+@@ -316,7 +331,7 @@
+ // try to handle the value we read (remember - buf is temporary)
+ if (! errs) {
+ const char * arg = buf;
+- unsigned save_cmd_flags = cmd_flags;
++ unsigned int save_cmd_flags = cmd_flags;
+ cmd_flags |= TEMP;
+ errs = handle_arg(cmdarg, arg);
+ if (errs) {
+@@ -387,7 +402,7 @@
+ // ^FUNCTION: CmdLine::missing_args - check for missing required arguments
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::missing_args(void);
++// unsigned int CmdLine::missing_args(void);
+ //
+ // ^PARAMETERS:
+ //
+@@ -424,7 +439,7 @@
+ // endfor
+ // return the current cmd-status
+ //-^^----
+-unsigned
++unsigned int
+ CmdLine::missing_args(void)
+ {
+ char buf[256];
+@@ -649,3 +664,5 @@
+ } //for list_iter
+ return last_pos_list ;
+ }
++
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-bh b/devel/cmdline/patches/patch-bh
new file mode 100644
index 00000000000..76a585e860e
--- /dev/null
+++ b/devel/cmdline/patches/patch-bh
@@ -0,0 +1,40 @@
+$NetBSD: patch-bh,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+
+--- src/lib/states.h.orig Thu Jan 2 13:33:34 1997
++++ src/lib/states.h
+@@ -9,6 +9,9 @@
+ //
+ // ^HISTORY:
+ // 03/26/92 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
+ //-^^---------------------------------------------------------------------
+
+ #ifndef _states_h
+@@ -16,14 +19,16 @@
+
+ #include "cmdline.h"
+
++namespace cmdline {
++
+ #ifdef unix_style
+ // Default command-flags for a unix-command
+- static const unsigned DEFAULT_CMDFLAGS = CmdLine::OPTS_FIRST ;
++ static const unsigned int DEFAULT_CMDFLAGS = CmdLine::OPTS_FIRST ;
+ #endif
+
+ #ifdef vms_style
+ // Default command-flags for a vms-command
+- static const unsigned DEFAULT_CMDFLAGS = CmdLine::TEMP ;
++ static const unsigned int DEFAULT_CMDFLAGS = CmdLine::TEMP ;
+ #endif
+
+ //
+@@ -67,5 +72,6 @@
+ #endif
+ } ;
+
++} // namespace cmdline
+
+ #endif /* _states_h */
diff --git a/devel/cmdline/patches/patch-bi b/devel/cmdline/patches/patch-bi
new file mode 100644
index 00000000000..4c45c71226e
--- /dev/null
+++ b/devel/cmdline/patches/patch-bi
@@ -0,0 +1,116 @@
+$NetBSD: patch-bi,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+
+--- src/lib/strindent.c.orig Thu Jan 2 13:33:34 1997
++++ src/lib/strindent.c
+@@ -11,11 +11,15 @@
+ //
+ // ^HISTORY:
+ // 12/05/91 Brad Appleton <bradapp@enteract.com> Created
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^-----------------------------------------------------------------------
+
+-#include <iostream.h>
+-#include <string.h>
+-#include <ctype.h>
++#include <iostream>
++#include <cstring>
++#include <cctype>
+
+ #include "cmdline.h"
+
+@@ -26,6 +30,7 @@
+ //
+ #define TO_LOWER(c) ((isupper(c)) ? tolower(c) : c)
+
++namespace cmdline {
+
+ //-------
+ // ^FUNCTION: strmatch - match a keyword
+@@ -40,7 +45,7 @@
+ // const char * attempt;
+ // -- the "candidate" that may or may not match the keyword
+ //
+-// unsigned len;
++// unsigned int len;
+ // -- the number of character of "attempt" to consider (==0 if all
+ // characters of "attempt" should be used).
+ //
+@@ -67,9 +72,9 @@
+ // else return str_PARTIAL
+ //-^^----
+ CmdLine::strmatch_t
+-CmdLine::strmatch(const char * src, const char * attempt, unsigned len)
++CmdLine::strmatch(const char * src, const char * attempt, unsigned int len)
+ {
+- unsigned i;
++ unsigned int i;
+
+ if (src == attempt) return str_EXACT ;
+ if ((src == NULL) || (attempt == NULL)) return str_NONE ;
+@@ -94,16 +99,16 @@
+ // ostream & os;
+ // -- the stream to which output is sent
+ //
+-// unsigned maxcols;
++// unsigned int maxcols;
+ // -- the maximum width (in characters) of the output
+ //
+-// unsigned margin;
++// unsigned int margin;
+ // -- the number of spaces to use as the left margin
+ //
+ // char * title;
+ // -- the paragraph title
+ //
+-// unsigned indent;
++// unsigned int indent;
+ // -- the distance between the title and the paragraph body
+ //
+ // char * text;
+@@ -134,10 +139,10 @@
+ //-^^-----------------------------------------------------------------------
+ void
+ CmdLine::strindent(ostream & os,
+- unsigned maxcols,
+- unsigned margin,
++ unsigned int maxcols,
++ unsigned int margin,
+ const char * title,
+- unsigned indent,
++ unsigned int indent,
+ const char * text)
+ {
+ // If we were given non-sensical parameters then dont use them
+@@ -168,9 +173,9 @@
+ // Loop through the paragraph text witing to print until we absolutely
+ // have to.
+ //
+- unsigned col = margin + indent + 1;
+- unsigned index = 0 ;
+- unsigned last_white = 0 ;
++ unsigned int col = margin + indent + 1;
++ unsigned int index = 0 ;
++ unsigned int last_white = 0 ;
+ const char * p = text ;
+
+ while (p[index]) {
+@@ -291,8 +296,8 @@
+ getsym(const char * sym_name)
+ {
+ static char sym_value[256];
+- unsigned long stat;
+- unsigned short buflen;
++ unsigned int long stat;
++ unsigned int short buflen;
+ $DESCRIPTOR(sym_name_d, sym_name);
+ $DESCRIPTOR(sym_value_d, sym_value);
+
+@@ -309,3 +314,5 @@
+ }
+
+ #endif /* vms */
++
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-bj b/devel/cmdline/patches/patch-bj
new file mode 100644
index 00000000000..4a7a67ab3f2
--- /dev/null
+++ b/devel/cmdline/patches/patch-bj
@@ -0,0 +1,173 @@
+$NetBSD: patch-bj,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+
+--- src/lib/unix.c.orig Thu Jan 2 13:33:35 1997
++++ src/lib/unix.c
+@@ -19,17 +19,26 @@
+ //
+ // 03/01/93 Brad Appleton <bradapp@enteract.com>
+ // - Added ALLOW_PLUS to list of CmdLine configuration flags
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <iostream.h>
+-#include <strstream.h>
+-#include <stdlib.h>
+-#include <string.h>
++#include <iostream>
++#include <strstream>
++#include <cstdlib>
++#include <cstring>
+
+ #include "exits.h"
+ #include "cmdline.h"
+ #include "states.h"
+
++namespace cmdline {
++
++using std::ostream;
++using std::strpbrk;
++
+ //
+ // Some Helper function for getting and recognizing prefixes
+ //
+@@ -42,7 +51,7 @@
+
+ // Function to return the option-prefix
+ inline static const char *
+-OptionPrefix(void) { return "-" ; }
++OptionPrefix() { return "-" ; }
+
+
+ // Function to tell us if an argument looks like a long-option.
+@@ -67,14 +76,14 @@
+
+ // Function to return the "end-of-options" string
+ inline static const char *
+-EndOptions(void) { return "--" ; }
++EndOptions() { return "--" ; }
+
+
+ //-------
+ // ^FUNCTION: CmdLine::parse_option - parse a Unix option
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::parse_option(arg);
++// unsigned int CmdLine::parse_option(arg);
+ //
+ // ^PARAMETERS:
+ // const char * arg;
+@@ -120,11 +129,11 @@
+ // endif
+ // endfor
+ //-^^----
+-unsigned
++unsigned int
+ CmdLine::parse_option(const char * arg)
+ {
+ const char * save_arg = arg;
+- unsigned save_flags = 0, rc = 0 ;
++ unsigned int save_flags = 0, rc = 0 ;
+ CmdArg * cmdarg = NULL;
+ int bad_val;
+
+@@ -242,7 +251,7 @@
+ // ^FUNCTION: CmdLine::parse_keyword - parse a Unix keyword
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::parse_keyword(arg);
++// unsigned int CmdLine::parse_keyword(arg);
+ //
+ // ^PARAMETERS:
+ // const char * arg;
+@@ -285,10 +294,10 @@
+ // update the state of the argument.
+ // endif
+ //-^^----
+-unsigned
++unsigned int
+ CmdLine::parse_keyword(const char * arg)
+ {
+- unsigned save_flags = 0, rc = 0 ;
++ unsigned int save_flags = 0, rc = 0 ;
+ CmdArg * cmdarg = NULL ;
+ int ambiguous = 0, len = -1, bad_val;
+ const char * val = NULL ;
+@@ -412,7 +421,7 @@
+ // ^FUNCTION: CmdLine::parse_value - parse a Unix value
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::parse_value(arg);
++// unsigned int CmdLine::parse_value(arg);
+ //
+ // ^PARAMETERS:
+ // const char * arg;
+@@ -448,10 +457,10 @@
+ // endif
+ // handle the given value and update the argument and command states.
+ //-^^----
+-unsigned
++unsigned int
+ CmdLine::parse_value(const char * arg)
+ {
+- unsigned save_flags = 0, rc = 0 ;
++ unsigned int save_flags = 0, rc = 0 ;
+ int bad_val;
+ CmdArg * cmdarg = NULL;
+
+@@ -514,7 +523,7 @@
+ // ^FUNCTION: CmdLine::parse_arg - parse an argv[] element unix-style
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::parse_arg(arg)
++// unsigned int CmdLine::parse_arg(arg)
+ //
+ // ^PARAMETERS:
+ // const char * arg;
+@@ -552,7 +561,7 @@
+ // call parse_value()
+ // endif
+ //-^^----
+-unsigned
++unsigned int
+ CmdLine::parse_arg(const char * arg)
+ {
+ if (arg == NULL) return cmd_status ;
+@@ -660,7 +669,7 @@
+ // ^FUNCTION: CmdLine::fmt_arg - format an argument for usage messages
+ //
+ // ^SYNOPSIS:
+-// unsigned CmdLine::fmt_arg(cmdarg, buf, bufsize, syntax, level);
++// unsigned int CmdLine::fmt_arg(cmdarg, buf, bufsize, syntax, level);
+ //
+ // ^PARAMETERS:
+ // const CmdArg * cmdarg;
+@@ -669,7 +678,7 @@
+ // char * buf;
+ // -- where to print the formatted result
+ //
+-// unsigned bufsize;
++// unsigned int bufsize;
+ // -- number of bytes allocated for buf.
+ //
+ // CmdLine::CmdLineSyntax syntax;
+@@ -695,10 +704,10 @@
+ // ^ALGORITHM:
+ // Its kind of tedious so follow along.
+ //-^^----
+-unsigned
++unsigned int
+ CmdLine::fmt_arg(const CmdArg * cmdarg,
+ char * buf,
+- unsigned bufsize,
++ unsigned int bufsize,
+ CmdLine::CmdLineSyntax syntax,
+ CmdLine::CmdUsageLevel level) const
+ {
+@@ -819,3 +828,4 @@
+ return (oss.pcount() - 1) ;
+ }
+
++} // namespace cmdline
diff --git a/devel/cmdline/patches/patch-bk b/devel/cmdline/patches/patch-bk
new file mode 100644
index 00000000000..50059a22995
--- /dev/null
+++ b/devel/cmdline/patches/patch-bk
@@ -0,0 +1,76 @@
+$NetBSD: patch-bk,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+
+--- src/lib/usage.c.orig Thu Jan 2 13:33:35 1997
++++ src/lib/usage.c
+@@ -11,15 +11,25 @@
+ //
+ // 03/01/93 Brad Appleton <bradapp@enteract.com>
+ // - Added cmd_description field to CmdLine
++//
++// 08/16/00 Johnny Lam <lamj@stat.cmu.edu>
++// - Wrapped in namespace cmdline
++// - Updated to follow ISO C++ standard
+ //-^^---------------------------------------------------------------------
+
+-#include <iostream.h>
+-#include <stdlib.h>
+-#include <string.h>
++#include <iostream>
++#include <cstdlib>
++#include <cstring>
+
+ #include "cmdline.h"
+ #include "states.h"
+-#include "arglist.h"
++
++namespace cmdline {
++
++using std::getenv;
++using std::ostream;
++using std::strlen;
++using std::strtol;
+
+ #ifdef vms
+ # define getenv getsym
+@@ -31,7 +41,7 @@
+ // ^FUNCTION: CmdLine::get_usage_level
+ //
+ // ^SYNOPSIS:
+-// CmdLine::CmdUsageLevel CmdLine::get_usage_level(void)
++// CmdLine::CmdUsageLevel CmdLine::get_usage_level()
+ //
+ // ^PARAMETERS:
+ // NONE.
+@@ -61,15 +71,15 @@
+ // Read the usage_level from the environment and return it.
+ //-^^----
+ CmdLine::CmdUsageLevel
+-CmdLine::get_usage_level(void)
++CmdLine::get_usage_level()
+ {
+ long level;
+- char * end_scan, * level_str = ::getenv("USAGE_LEVEL");
++ char * end_scan, * level_str = getenv("USAGE_LEVEL");
+
+ if (level_str == NULL) return VERBOSE_USAGE ;
+ if (*level_str == '\0') return NO_USAGE ;
+
+- level = ::strtol(level_str, &end_scan, 0);
++ level = strtol(level_str, &end_scan, 0);
+ if (end_scan == level_str) return VERBOSE_USAGE ;
+
+ switch(level) {
+@@ -127,7 +137,7 @@
+
+ // first print the command name
+ os << usg_prefix << cmd_name ;
+- ll = (cmd_name ? ::strlen(cmd_name) : 0) + (sizeof(usg_prefix) - 1);
++ ll = (cmd_name ? strlen(cmd_name) : 0) + (sizeof(usg_prefix) - 1);
+
+ // set margin so that we always start printing arguments in a column
+ // that is *past* the command name.
+@@ -322,3 +332,4 @@
+ return usage(*cmd_err, usage_level);
+ }
+
++} // namespace cmdline
diff --git a/devel/cmdline/pkg/COMMENT b/devel/cmdline/pkg/COMMENT
new file mode 100644
index 00000000000..47ae8fbcd52
--- /dev/null
+++ b/devel/cmdline/pkg/COMMENT
@@ -0,0 +1 @@
+C++ library for parsing command arguments
diff --git a/devel/cmdline/pkg/DESCR b/devel/cmdline/pkg/DESCR
new file mode 100644
index 00000000000..651bc43c0db
--- /dev/null
+++ b/devel/cmdline/pkg/DESCR
@@ -0,0 +1,3 @@
+This is CmdLine, a C++ library for parsing command arguments and assigning
+the corresponding values to program variables. Also included is cmdparse,
+a program to provide an interface to CmdLine for shell-scripts.
diff --git a/devel/cmdline/pkg/PLIST b/devel/cmdline/pkg/PLIST
new file mode 100644
index 00000000000..135ed7a6971
--- /dev/null
+++ b/devel/cmdline/pkg/PLIST
@@ -0,0 +1,11 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2000/08/25 16:15:54 jlam Exp $
+bin/cmdparse
+include/cmdline.h
+include/cmdargs.h
+include/fifolist.h
+lib/libcmdline.a
+lib/libcmdline.la
+lib/libcmdline.so.0.0
+man/man1/cmdparse.1
+man/man3/cmdline.3
+man/man3/cmdargs.3