ports/79348: net/boinc-client: update port to 4.67, now with GUI support

J.R. Oldroyd fbsd at opal.com
Wed Mar 30 02:00:15 UTC 2005


>Number:         79348
>Category:       ports
>Synopsis:       net/boinc-client: update port to 4.67, now with GUI support
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 30 02:00:12 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     J.R. Oldroyd
>Release:        FreeBSD 6.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD linwhf.opal.com 6.0-CURRENT FreeBSD 6.0-CURRENT #77: Tue Mar 29 12:02:15 EST 2005 jr at linwhf.opal.com:/usr/src-current/sys/i386/compile/LINWHF i386
>Description:
Update port to BOINC 4.67.

The BOINC versions 4.19/20/21 are now relegated to bug fixes only.
New development is in the 4.65/66/67 track.  I am therefore switching
the port to this track.

This version supports the GUI.  Details of additional changes at:
	http://opal.com/boinc/
Note that there may problems with the GUI on FreeBSD 4.x.  If so,
compile with "make -DWITHOUT_X11" to disable the GUI.

Notes to committer:

Files deleted:
	boinc-client
	boinc-client.1
	boinc.sh-4.x
	extra-patch-api::boinc_api.C
	extra-patch-client::gui_rpc_server.C
	extra-patch-client::net_xfer.C
	patch-api::boinc_gl.h
	patch-client::gui_rpc_server.C
	patch-client::net_xfer.C

Files added:
	alt-patch-api::boinc_api.C
	boinc.1
	extra-patch-clientgui::MainDocument.cpp
	extra-patch-clientgui::MainFrame.cpp
	extra-patch-clientgui::ViewProjects.cpp
	extra-patch-clientgui::ViewResources.cpp
	extra-patch-clientgui::ViewTransfers.cpp
	extra-patch-clientgui::ViewWork.cpp
	extra-patch-clientgui::stdwx.h
	extra-patch-lib::acct_mgr_client.C
	extra-patch-lib::gui_rpc_client.C
	extra-patch-lib::network.h
	extra-patch-lib::parse.C
	extra-patch-zip::boinc_zip.cpp
	patch-api::boinc_api.C
	patch-clientgui::BOINCGUIApp.cpp
	rc::boinc.sh

>How-To-Repeat:

>Fix:

diff -ruN /usr/ports/net/boinc-client/Makefile net/boinc-client/Makefile
--- /usr/ports/net/boinc-client/Makefile	Mon Jan 31 15:15:10 2005
+++ net/boinc-client/Makefile	Tue Mar 29 17:18:29 2005
@@ -6,113 +6,130 @@
 #
 
 PORTNAME=	boinc-client
-PORTVERSION=	4.19
+PORTVERSION=	4.67.20050320
 CATEGORIES=	net
 MASTER_SITES=	http://boinc.berkeley.edu/source/nightly/
-DISTNAME=	boinc_public-cvs-2005-01-26
+DISTNAME=	boinc-cvs-2005-03-20
 
 MAINTAINER=	fbsd at opal.com
 COMMENT=	Berkeley Open Infrastructure for Network Computing client
 
+.include <bsd.port.pre.mk>
+
+# Build with "make -DWITHOUT_X11" if you don't want the boincmgr
+# GUI management interface or the "screensaver" status displays
+# from any of the client applications.
+#
+# Defining WITHOUT_X11 removes the dependencies on the X11 libs
+# and the wxgtk2 toolkit and jpeg graphics lib.
+
+.if !defined(WITHOUT_X11)
+LIB_DEPENDS=	iconv:${PORTSDIR}/converters/libiconv \
+		wx_gtk2:${PORTSDIR}/x11-toolkits/wxgtk2 \
+		jpeg:${PORTSDIR}/graphics/jpeg
+USE_XLIBS=	yes
+.endif
+
+USE_AUTOMAKE_VER=	19
+USE_AUTOCONF_VER=	259
+USE_AUTOHEADER_VER=	259
+USE_LIBTOOL_VER=	15
+
 USE_REINPLACE=	yes
 GNU_CONFIGURE=	yes
 CONFIGURE_ARGS=	--disable-server
-CONFIGURE_ENV=	CPPFLAGS=-I${X11BASE}/include CXXFLAGS=-I${X11BASE}/include
+.if defined(WITHOUT_X11)
+CONFIGURE_ARGS+=	--with-wx-config=false
+.endif
+CONFIGURE_ENV=	CPPFLAGS=-I${X11BASE}/include CXXFLAGS="-I${X11BASE}/include -I${LOCALBASE}/include"
 
-WRKSRC=		${WRKDIR}/boinc_public
+WRKSRC=		${WRKDIR}/boinc
 PKGINSTALL=	${WRKDIR}/pkg-install
 PKGPLIST=	${WRKDIR}/pkg-plist
 
-MAN1=		boinc-client.1
+MAN1=		boinc.1
+.if !defined(WITHOUT_X11)
+MLINKS=		boinc.1 boincmgr.1
+.endif
 
-FIND_BOINC_BINARY=(cd ${WRKDIR}/boinc_public/client; make -V CLIENT_BIN_FILENAME)
+FIND_BOINC_BINARY=(cd ${WRKSRC}/client; make -V CLIENT_BIN_FILENAME)
+FIND_BOINCMGR_BINARY=(cd ${WRKSRC}/client; make -V CLIENT_GUI_BIN_FILENAME)
+BOINC_BINARY=	boinc-client
 
 BOINC_USER=	boinc
 BOINC_GROUP=	nobody
 BOINC_HOME=	/var/db/boinc
-BOINC_DATADIR=	${PREFIX}/boinc
-
-.include <bsd.port.pre.mk>
-
-.if ${OSVERSION} < 500000
-EXTRA_PATCHES+=	${FILESDIR}/extra-patch-api::boinc_api.C
-.endif
 
-post-patch:
 .if ${OSVERSION} < 500000
-	${PATCH} -d ${WRKSRC} <${FILESDIR}/extra-patch-client::gui_rpc_server.C
-	${PATCH} -d ${WRKSRC} <${FILESDIR}/extra-patch-client::net_xfer.C
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-clientgui::MainDocument.cpp
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-clientgui::MainFrame.cpp
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-clientgui::ViewProjects.cpp
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-clientgui::ViewResources.cpp
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-clientgui::ViewTransfers.cpp
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-clientgui::ViewWork.cpp
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-clientgui::stdwx.h
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-lib::acct_mgr_client.C
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-lib::network.h
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-lib::gui_rpc_client.C
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-lib::parse.C
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-zip::boinc_zip.cpp
 .endif
-	${CHMOD} +x ${WRKDIR}/boinc_public/configure
 
-do-build:
-	@(cd ${WRKDIR}/boinc_public/client; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET})
-	@(cd ${WRKDIR}/boinc_public/api; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET})
-	@(cd ${WRKDIR}/boinc_public/lib; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET})
+pre-configure:
+	cd ${WRKSRC}; ${ACLOCAL} -I ${LOCALBASE}/share/libtool${USE_LIBTOOL_VER}/libltdl -I m4
 
 post-build:
-	BBIN=`${FIND_BOINC_BINARY}`; \
-	${SED}  -e "s:%%BOINC_BINARY%%:$$BBIN:g" \
-		-e "s:%%BOINC_DATADIR%%:${BOINC_DATADIR}:g" \
+	${SED}  -e "s:%%BOINC_BINARY%%:${BOINC_BINARY}:g" \
 		-e "s:%%BOINC_HOME%%:${BOINC_HOME}:g" \
 		-e "s:%%BOINC_USER%%:${BOINC_USER}:g" \
 		-e "s:%%BOINC_GROUP%%:${BOINC_GROUP}:g" \
-		< ${FILESDIR}/boinc-client > ${WRKDIR}/boinc-client; \
-	${SED}  -e "s:%%BOINC_BINARY%%:$$BBIN:g" \
-		-e "s:%%BOINC_DATADIR%%:${BOINC_DATADIR}:g" \
+		-e "s:%%LOCALBASE%%:${LOCALBASE}:g" \
+		< ${FILESDIR}/boinc.sh > ${WRKDIR}/boinc.sh
+	${SED}  -e "s:%%BOINC_BINARY%%:${BOINC_BINARY}:g" \
 		-e "s:%%BOINC_HOME%%:${BOINC_HOME}:g" \
 		-e "s:%%BOINC_USER%%:${BOINC_USER}:g" \
 		-e "s:%%BOINC_GROUP%%:${BOINC_GROUP}:g" \
-		< ${FILESDIR}/boinc-client.1 > ${WRKDIR}/boinc-client.1; \
-	${SED}  -e "s:%%BOINC_BINARY%%:$$BBIN:g" \
-		-e "s:%%BOINC_DATADIR%%:${BOINC_DATADIR}:g" \
+		-e "s:%%LOCALBASE%%:${LOCALBASE}:g" \
+		< ${FILESDIR}/boinc.1 > ${WRKDIR}/boinc.1
+	${SED}  -e "s:%%BOINC_BINARY%%:${BOINC_BINARY}:g" \
 		-e "s:%%BOINC_HOME%%:${BOINC_HOME}:g" \
 		-e "s:%%BOINC_USER%%:${BOINC_USER}:g" \
 		-e "s:%%BOINC_GROUP%%:${BOINC_GROUP}:g" \
+		-e "s:%%LOCALBASE%%:${LOCALBASE}:g" \
 		< ${PKGDIR}/pkg-install > ${WRKDIR}/pkg-install
-.if ${OSVERSION} >= 500000
-	BBIN=`${FIND_BOINC_BINARY}`; \
-	${SED}  -e "s:%%BOINC_BINARY%%:$$BBIN:g" \
-		-e "s:%%BOINC_DATADIR%%:${BOINC_DATADIR}:g" \
-		-e "s:%%BOINC_HOME%%:${BOINC_HOME}:g" \
-		-e "s:%%BOINC_USER%%:${BOINC_USER}:g" \
-		-e "s:%%BOINC_GROUP%%:${BOINC_GROUP}:g" \
-		< ${FILESDIR}/boinc.sh > ${WRKDIR}/boinc.sh
-.else
-	BBIN=`${FIND_BOINC_BINARY}`; \
-	${SED}  -e "s:%%BOINC_BINARY%%:$$BBIN:g" \
-		-e "s:%%BOINC_DATADIR%%:${BOINC_DATADIR}:g" \
+	${SED}  -e "s:%%BOINC_BINARY%%:${BOINC_BINARY}:g" \
 		-e "s:%%BOINC_HOME%%:${BOINC_HOME}:g" \
 		-e "s:%%BOINC_USER%%:${BOINC_USER}:g" \
 		-e "s:%%BOINC_GROUP%%:${BOINC_GROUP}:g" \
-		< ${FILESDIR}/boinc.sh-4.x > ${WRKDIR}/boinc.sh
-.endif
+		-e "s:%%LOCALBASE%%:${LOCALBASE}:g" \
+		< ${FILESDIR}/rc::boinc.sh > ${WRKDIR}/rc::boinc.sh
 
 do-install:
-	${INSTALL_SCRIPT} ${WRKDIR}/boinc-client ${PREFIX}/bin
-	${INSTALL_MAN} ${WRKDIR}/boinc-client.1 ${PREFIX}/man/man1
-	${MKDIR} ${PREFIX}/boinc/client
-	${INSTALL_PROGRAM} ${WRKDIR}/boinc_public/client/`${FIND_BOINC_BINARY}` ${PREFIX}/boinc/client
-	${MKDIR} ${PREFIX}/boinc/lib
-	${INSTALL} ${WRKDIR}/boinc_public/lib/*.h ${PREFIX}/boinc/lib
-	${INSTALL} ${WRKDIR}/boinc_public/lib/libboinc.a ${PREFIX}/boinc/lib
-	${INSTALL} ${WRKDIR}/boinc_public/RSAEuro/source/librsaeuro.a ${PREFIX}/boinc/lib
-	${MKDIR} ${PREFIX}/boinc/api
-	${INSTALL} ${WRKDIR}/boinc_public/api/*.h ${PREFIX}/boinc/api
-	${TOUCH} ${PREFIX}/boinc/api/Makefile.am
-	${TOUCH} ${PREFIX}/boinc/lib/Makefile.am
-	${TOUCH} ${PREFIX}/boinc/Makefile.am
-	${MKDIR} ${PREFIX}/boinc/projects
-	${MKDIR} ${PREFIX}/etc/rc.d
-	${INSTALL_SCRIPT} ${WRKDIR}/boinc.sh ${PREFIX}/etc/rc.d
-	${CAT} ${PKGMESSAGE}
+	${MKDIR} ${PREFIX}/lib/boinc
+	${INSTALL_PROGRAM} ${WRKSRC}/client/`${FIND_BOINC_BINARY}` ${PREFIX}/lib/boinc/${BOINC_BINARY}
+.if !defined(WITHOUT_X11)
+	${INSTALL_PROGRAM} ${WRKSRC}/clientgui/`${FIND_BOINCMGR_BINARY}` ${PREFIX}/bin
+.endif
+	${MKDIR} ${PREFIX}/include/BOINC
+	${INSTALL} ${WRKSRC}/api/*.h ${PREFIX}/include/BOINC
+	${INSTALL} ${WRKSRC}/lib/*.h ${PREFIX}/include/BOINC
+	${INSTALL} ${WRKSRC}/zip/*.h ${PREFIX}/include/BOINC
+	${INSTALL} ${WRKSRC}/api/*.a ${PREFIX}/lib
+	${INSTALL} ${WRKSRC}/lib/*.a ${PREFIX}/lib
+	${INSTALL} ${WRKSRC}/zip/*.a ${PREFIX}/lib
+	${INSTALL} ${WRKSRC}/RSAEuro/source/librsaeuro.a ${PREFIX}/lib
 
 post-install:
+	${INSTALL_SCRIPT} ${WRKDIR}/boinc.sh ${PREFIX}/bin/boinc
+	${INSTALL_MAN} ${WRKDIR}/boinc.1 ${PREFIX}/man/man1
+	${MKDIR} ${PREFIX}/etc/rc.d
+	${INSTALL_SCRIPT} ${WRKDIR}/rc::boinc.sh ${PREFIX}/etc/rc.d/boinc.sh
 	${REINPLACE_CMD} \
-	    -e "s:%%BOINC_BINARY%%:`${FIND_BOINC_BINARY}`:g" \
+	    -e "s:%%BOINC_BINARY%%:${BOINC_BINARY}:g" \
 	    -e "s:%%BOINC_HOME%%:${BOINC_HOME}:g" \
 	    -e "s:%%BOINC_USER%%:${BOINC_USER}:g" \
 	    ${TMPPLIST}
+	${CAT} ${PKGMESSAGE}
 	@${SETENV} ${SCRIPTS_ENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
 
 .include <bsd.port.post.mk>
diff -ruN /usr/ports/net/boinc-client/distinfo net/boinc-client/distinfo
--- /usr/ports/net/boinc-client/distinfo	Mon Jan 31 15:15:10 2005
+++ net/boinc-client/distinfo	Sun Mar 20 20:37:57 2005
@@ -1,2 +1,2 @@
-MD5 (boinc_public-cvs-2005-01-26.tar.gz) = 59c8ca1810bd83f58d57ea54c8c27615
-SIZE (boinc_public-cvs-2004-01-26.tar.gz) = 3845012
+MD5 (boinc-cvs-2005-03-20.tar.gz) = 48ff80bf1839af0a744560f1eb4a858e
+SIZE (boinc-cvs-2004-03-20.tar.gz) = 4755507
diff -ruN /usr/ports/net/boinc-client/files/alt-patch-api::boinc_api.C net/boinc-client/files/alt-patch-api::boinc_api.C
--- /usr/ports/net/boinc-client/files/alt-patch-api::boinc_api.C	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/alt-patch-api::boinc_api.C	Mon Mar 21 12:28:55 2005
@@ -0,0 +1,49 @@
+--- api/boinc_api.C.orig	Sat Mar 19 16:39:16 2005
++++ api/boinc_api.C	Mon Mar 21 11:08:09 2005
+@@ -59,7 +59,7 @@
+ static APP_INIT_DATA aid;
+ static FILE_LOCK file_lock;
+ APP_CLIENT_SHM* app_client_shm = 0;
+-static volatile double time_until_checkpoint;
++static volatile int time_until_checkpoint;
+     // time until enable checkpoint
+ static volatile double time_until_fraction_done_update;
+     // time until report fraction done to core client
+@@ -79,7 +79,7 @@
+ static volatile int nrunning_ticks = 0;
+ #endif
+ 
+-#define TIMER_PERIOD 1.0
++#define TIMER_PERIOD 1
+     // period of API timer
+     // This determines the resolution of fraction done and CPU time reporting
+     // to the core client, and of checkpoint enabling.
+@@ -164,7 +164,7 @@
+     // the following may not be needed, but do it anyway
+     //
+     fraction_done = -1;
+-    time_until_checkpoint = aid.checkpoint_period;
++    time_until_checkpoint = (int) aid.checkpoint_period;
+     last_checkpoint_cpu_time = aid.wu_cpu_time;
+     time_until_fraction_done_update = aid.fraction_done_update_period;
+     last_wu_cpu_time = aid.wu_cpu_time;
+@@ -548,8 +548,8 @@
+         perror("boinc set_worker_timer() sigaction");
+         return retval;
+     }
+-    value.it_value.tv_sec = (int)TIMER_PERIOD;
+-    value.it_value.tv_usec = ((int)(TIMER_PERIOD*1000000))%1000000;
++    value.it_value.tv_sec = TIMER_PERIOD;
++    value.it_value.tv_usec = 0;
+     value.it_interval = value.it_value;
+     retval = setitimer(ITIMER_REAL, &value, NULL);
+     if (retval) {
+@@ -616,7 +616,7 @@
+     last_checkpoint_cpu_time = last_wu_cpu_time;
+     update_app_progress(last_checkpoint_cpu_time, last_checkpoint_cpu_time, 0);
+     ready_to_checkpoint = false;
+-    time_until_checkpoint = aid.checkpoint_period;
++    time_until_checkpoint = (int) aid.checkpoint_period;
+ 
+     return 0;
+ }
diff -ruN /usr/ports/net/boinc-client/files/boinc-client net/boinc-client/files/boinc-client
--- /usr/ports/net/boinc-client/files/boinc-client	Sat Oct 16 15:29:30 2004
+++ net/boinc-client/files/boinc-client	Wed Dec 31 19:00:00 1969
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-args="$@"
-
-exec idprio 31 su - %%BOINC_USER%% -c "%%BOINC_DATADIR%%/client/%%BOINC_BINARY%% $args"
-
diff -ruN /usr/ports/net/boinc-client/files/boinc-client.1 net/boinc-client/files/boinc-client.1
--- /usr/ports/net/boinc-client/files/boinc-client.1	Sat Oct 16 15:29:30 2004
+++ net/boinc-client/files/boinc-client.1	Wed Dec 31 19:00:00 1969
@@ -1,170 +0,0 @@
-.TH boinc-client 1 "October 1, 2004" "" "BOINC"
-.SH NAME
-boinc-client \- client for Berkeley Open Infrastructure for Network Computing
-.SH SYNOPSIS
-boinc-client [ options ]
-.PP
-sh /usr/local/etc/rc.d/boinc.sh start|stop|restart|status
-.SH DESCRIPTION
-.I boinc-client
-is the client for the Berkeley Open Infrastructure for Network
-Computing (BOINC) service.  It is used by projects such as SETI at HOME
-and ClimatePredictor to offer your spare CPU cycles to such projects.
-BOINC allows you to configure one or more projects to which you offer
-your spare CPU cycles for their computations.
-.PP
-BOINC is a scheduler; you configure projects under BOINC and BOINC
-then runs each one according to what percentage of time you have
-specified for that project.
-When a project is run, BOINC runs the project's client program to
-download computational work units from the project, then perform the
-work unit computation, and finally upload the results back to the
-project.  If no work is available for one of your projects, BOINC
-will run another of your projects.
-.PP
-BOINC runs project clients at low priority, with a
-.IR nice (1)
-value of 19, to ensure that as soon as you need your computer for
-any other work, BOINC projects stop so that you are not delayed
-by them.
-.PP
-After choosing which projects to participate in, you must register
-with each on the project's website.  You can find out about BOINC
-projects on the BOINC website.  Upon registering with a project,
-you will receive an account ID for the project.
-Run
-.I "boinc-client -attach_project"
-to add new projects to your BOINC configuration using the project
-URL and your account ID.
-Depending on what operating system platforms the project supports
-you may be able to immediately start the project or you may need to
-download the project client's source code and compile it.  For
-further information, see the BOINC web site and the project's own
-website.  Some projects are already available as FreeBSD ports
-(e.g., SETI at HOME in port astro/boinc-setiathome).  Not all projects
-support FreeBSD and some do not make their client's source code
-available.  In such cases, you will not be able to participate in
-that project from FreeBSD.
-.PP
-Running
-.I boinc-client
-with no arguments starts the service and any configured projects.
-.PP
-You can edit both BOINC general preferences and project-specific
-preferences on the website of any BOINC projects which you are
-registered with.  Preferences will take effect next time BOINC
-contacts that project's server, e.g., to download more work or
-to upload results.
-.PP
-.I /usr/local/etc/rc.d/boinc.sh
-script is run automatically at system boot time.
-The
-.I /etc/rc.conf
-variable
-.I boinc_enable
-must be set to
-.I boinc_enable="YES"
-for this script to start BOINC at boot time.
-.PP
-The user
-.I %%BOINC_USER%%
-needs to exist; all invocations of boinc-client will run as this
-user.  If you want users other than root to be able to start
-BOINC, set a password on this account so that anyone can run
-.I boinc_client
-and supply the password.
-.PP
-IMPORTANT NOTE:  The project clients are programs running
-on your computer with full access (as the user
-.IR %%BOINC_USER%% )
-to all files and resources of your computer.  Before running any
-project client, you should establish for yourself that the
-program is trustworthy and will not abuse your computer.  The
-BOINC scheduler does not restrict clients in any way other than to
-run them as the user
-.IR %%BOINC_USER%% .
-.SH OPTIONS
-The command-line client has the following command-line options:
-.IP -attach_project
-Attach this computer to a new project.
-You must have an account with that project.
-You will be asked for the project URL and the account ID.
-.IP -show_projects
-Print a list of projects to which this computer is attached.
-.IP -detach_project URL
-Detach this computer from a project.
-.IP -reset_project URL
-Clear pending work for a project.
-Use this if there is a problem that is preventing
-your computer from working.
-.IP -update_prefs URL
-Contact a project's server to obtain new preferences.
-This will also report completed results
-and get new work if needed.
-.IP -return_results_immediately
-Contact scheduler as soon as any result done.
-.IP -run_cpu_benchmarks
-Run CPU benchmarks.
-Do this if you have modified your computer's hardware.
-.IP -check_all_logins
-If 'run if user active' preference is off,
-check for input activity on all current logins;
-default is to check only local mouse/keyboard
-.IP -exit_when_idle
-Get, process and report work, then exit.
-.IP -allow_remote_gui_rpc
-Allow GUI RPCs from remote hosts
-.IP -help
-Show client options.
-.IP -version
-Show client version.
-.SH "ENVIRONMENT VARIABLES"
-The command-line client has the following optional environment variables:
-.IP HTTP_PROXY
-URL of HTTP proxy
-.IP HTTP_USER_NAME
-User name for proxy authentication
-.IP HTTP_USER_PASSWD
-Password for proxy authentication
-.IP SOCKS4_SERVER
-URL of SOCKS 4 server
-.IP SOCKS5_SERVER
-URL of SOCKS 5 server
-.IP SOCKS5_USER
-User name for SOCKS authentication
-.IP SOCKS5_PASSWD
-Password for SOCKS authentication
-.SH FILES
-.IP %%BOINC_HOME%%
-default home directory for
-.I %%BOINC_USER%%
-user
-.IP %%BOINC_HOME%%/*
-boinc-client configuration files
-.IP %%BOINC_HOME%%/projects/*
-BOINC projects
-.IP %%BOINC_HOME%%/projects/*/*
-BOINC project work unit files
-.IP %%BOINC_DATADIR%%
-boinc-client and BOINC project programs
-.SH BUGS
-Suspending
-.I boinc-client
-using ^Z works, but resuming using
-.I fg
-or
-.I bg
-does not resume any client processes (e.g., SETI).  These need to be
-restarted using
-.I "kill -CONT"
-for each process.
-.PP
-Placing files in %%BOINC_HOME%% or its subdirectories can cause work
-to fail as those files will be counted in disk usage limit checks.  In
-addition to configurable overall disk usage limits, each client may
-further restrict the size of its project or slot directories.
-.PP
-On a hyperthreadded processor, performance may be limited due to shared
-use of processor modules such as the FPU.
-.SH "SEE ALSO"
-http://boinc.berkeley.edu/
diff -ruN /usr/ports/net/boinc-client/files/boinc.1 net/boinc-client/files/boinc.1
--- /usr/ports/net/boinc-client/files/boinc.1	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/boinc.1	Tue Mar  1 11:06:10 2005
@@ -0,0 +1,235 @@
+.TH boinc 1 "October 1, 2004" "" "BOINC"
+.SH NAME
+boinc \- client for Berkeley Open Infrastructure for Network Computing
+.SH SYNOPSIS
+boinc [ options ]
+.PP
+boincmgr
+.PP
+sh /usr/local/etc/rc.d/boinc.sh start|stop|restart|status
+.SH DESCRIPTION
+.I boinc
+is the client for the Berkeley Open Infrastructure for Network
+Computing (BOINC) service.  It is used by projects such as SETI at HOME
+and ClimatePredictor to offer your spare CPU cycles to such projects.
+BOINC allows you to configure one or more projects to which you offer
+your spare CPU cycles for their computations.
+.PP
+BOINC is a scheduler; you configure projects under BOINC and BOINC
+then runs each one according to what percentage of time you have
+specified for that project.
+When a project is run, BOINC runs the project's client program to
+download computational work units from the project, then perform the
+work unit computation, and finally upload the results back to the
+project.  If no work is available for one of your projects, BOINC
+will run another of your projects.
+.PP
+BOINC runs project clients at low priority, with an
+.IR idprio (1)
+value of 31, to ensure that as soon as you need your computer for
+any other work, BOINC projects stop so that you are not delayed
+by them.
+.PP
+After choosing which projects to participate in, you must register
+with each on the project's website.  You can find out about BOINC
+projects on the BOINC website.  Upon registering with a project,
+you will receive an account ID for the project.
+Run
+.I "boinc -attach_project"
+to add new projects to your BOINC configuration using the project
+URL and your account ID.
+Depending on what operating system platforms the project supports
+you may be able to immediately start the project or you may need to
+download the project client's source code and compile it.  For
+further information, see the BOINC web site and the project's own
+website.  Some projects are already available as FreeBSD ports
+(e.g., SETI at HOME in port astro/boinc-setiathome).  Not all projects
+support FreeBSD and some do not make their client's source code
+available.  In such cases, you will not be able to participate in
+that project from FreeBSD.
+.PP
+Running
+.I boinc
+with no arguments starts the service and any configured projects.
+.PP
+You can edit both BOINC general preferences and project-specific
+preferences on the website of any BOINC projects which you are
+registered with.  Preferences will take effect next time BOINC
+contacts that project's server, e.g., to download more work or
+to upload results.
+.PP
+The user
+.I %%BOINC_USER%%
+needs to exist; all invocations of boinc will run as this
+user.  If you want users other than root to be able to start
+BOINC, set a password on this account so that anyone can run
+.I boinc_client
+and supply the password.
+.PP
+IMPORTANT NOTE:  The project clients are programs running
+on your computer with full access (as the user
+.IR %%BOINC_USER%% )
+to all files and resources of your computer.  Before running any
+project client, you should establish for yourself that the
+program is trustworthy and will not abuse your computer.  The
+BOINC scheduler does not restrict clients in any way other than to
+run them as the user
+.IR %%BOINC_USER%% .
+.SH "GRAPHICAL MANAGEMENT INTERFACE"
+Running
+.I "boinc -allow_remote_gui_rpc"
+allows the
+.I boincmgr
+graphical management interface to interact with the client.
+.PP
+The
+.I boincmgr
+program provides a graphical management interface to the core
+boinc.  After
+.I boinc
+has been started, run
+.I boincmgr
+to add new projects, to see the status of existing projects'
+work units, and to control the client.
+.PP
+.I boincmgr
+can also be used to monitor and manage BOINC clients on other
+hosts.
+.PP
+On the
+.I Work
+tab, there is a
+.I "Show graphics"
+button which displays a graphical status window from the client
+application.
+For the
+.I "Show graphics"
+option to have effect, it must be understood that it is the
+client application that opens up the status window.  The value
+of the
+.I DISPLAY
+environment variable of the
+.I boincmgr
+process is passed to the BOINC core and then to the client
+application, and must have meaning to that client.  A value
+of
+.I ":0.0"
+will work for local clients, but for clients on remote hosts,
+a value such as
+.I "hostname:0.0"
+or
+.I "hostname.domain.com:0.0"
+will be needed.
+In addition, the local X-server host access permissions must
+allow access to the display by the client.
+For local clients, the simplest way to allow this is to use
+.IR xhost (1),
+e.g.,
+.IR "xhost\ +local:" .
+.PP
+Full documentation of
+.I boincmgr
+is not provided here, but may be added in a future release.
+.SH "STARTING BOINC AT BOOT TIME"
+The
+.I /usr/local/etc/rc.d/boinc.sh
+script is run automatically at system boot time.
+Several variables can be set in
+.I /etc/rc.conf
+to control the BOINC client's behavior.
+.IP boinc_enable
+set to
+.I "YES"
+to start BOINC at boot time
+.IP boinc_flags
+passed to the BOINC client, e.g.,
+.I boinc_flags="-allow_remote_gui_rpc"
+to allow access from the
+.I boincmgr
+graphical management interface.
+.SH OPTIONS
+The command-line client has the following command-line options:
+.IP -attach_project
+Attach this computer to a new project.
+You must have an account with that project.
+You will be asked for the project URL and the account ID.
+.IP -show_projects
+Print a list of projects to which this computer is attached.
+.IP -detach_project URL
+Detach this computer from a project.
+.IP -reset_project URL
+Clear pending work for a project.
+Use this if there is a problem that is preventing
+your computer from working.
+.IP -update_prefs URL
+Contact a project's server to obtain new preferences.
+This will also report completed results
+and get new work if needed.
+.IP -return_results_immediately
+Contact scheduler as soon as any result done.
+.IP -run_cpu_benchmarks
+Run CPU benchmarks.
+Do this if you have modified your computer's hardware.
+.IP -check_all_logins
+If 'run if user active' preference is off,
+check for input activity on all current logins;
+default is to check only local mouse/keyboard
+.IP -exit_when_idle
+Get, process and report work, then exit.
+.IP -redirectio
+Redirect stdout and stderr to log files.
+.IP -allow_remote_gui_rpc
+Allow GUI RPCs from remote hosts
+.IP -help
+Show client options.
+.IP -version
+Show client version.
+.SH "ENVIRONMENT VARIABLES"
+The command-line client has the following optional environment variables:
+.IP HTTP_PROXY
+URL of HTTP proxy
+.IP HTTP_USER_NAME
+User name for proxy authentication
+.IP HTTP_USER_PASSWD
+Password for proxy authentication
+.IP SOCKS4_SERVER
+URL of SOCKS 4 server
+.IP SOCKS5_SERVER
+URL of SOCKS 5 server
+.IP SOCKS5_USER
+User name for SOCKS authentication
+.IP SOCKS5_PASSWD
+Password for SOCKS authentication
+.SH FILES
+.IP %%BOINC_HOME%%
+default home directory for
+.I %%BOINC_USER%%
+user
+.IP %%BOINC_HOME%%/*
+boinc configuration files
+.IP %%BOINC_HOME%%/projects/*
+BOINC projects
+.IP %%BOINC_HOME%%/projects/*/*
+BOINC project work unit files
+.SH BUGS
+Suspending
+.I boinc
+using ^Z works, but resuming using
+.I fg
+or
+.I bg
+does not resume any client processes (e.g., SETI).  These need to be
+restarted using
+.I "kill -CONT"
+for each process.
+.PP
+Placing files in %%BOINC_HOME%% or its subdirectories can cause work
+to fail as those files will be counted in disk usage limit checks.  In
+addition to configurable overall disk usage limits, each client may
+further restrict the size of its project or slot directories.
+.PP
+On a hyperthreadded processor, performance may be limited due to shared
+use of processor modules such as the FPU.
+.SH "SEE ALSO"
+.IR xhost (1),
+http://boinc.berkeley.edu/
diff -ruN /usr/ports/net/boinc-client/files/boinc.sh net/boinc-client/files/boinc.sh
--- /usr/ports/net/boinc-client/files/boinc.sh	Sat Oct 16 15:29:30 2004
+++ net/boinc-client/files/boinc.sh	Wed Mar  2 16:39:03 2005
@@ -1,61 +1,7 @@
 #!/bin/sh
-#
-# $FreeBSD: ports/net/boinc-client/files/boinc.sh,v 1.1 2004/10/16 19:29:30 pav Exp $
-#
-# Start or stop BOINC
-#
 
-. /etc/rc.subr
+export LD_LIBRARY_PATH=%%LOCALBASE%%/lib/boinc
 
-name="boinc"
-rcvar=`set_rcvar`
-
-boinc_user=%%BOINC_USER%%
-boinc_home=%%BOINC_HOME%%
-program_file=%%BOINC_BINARY%%
-program_path=%%BOINC_DATADIR%%/client/${program_file}
-
-[ -z "$boinc_enable" ] && boinc_enable="NO"
-
-load_rc_config $name
-
-case "$1" in
-start)
-	if checkyesno boinc_enable
-	then
-		if [ ! -x ${program_path} ]
-		then
-			logger -sp ${syslog_facility} -t ${program_file} \
-				"unable to start: ${program_path} is missing."
-			exit 72
-		fi
-		if ps axo ucomm | egrep ${program_file}; then
-			logger -sp ${syslog_facility} -t ${program_file} \
-			"unable to start: ${program_file} is already running."
-			exit 72
-		fi
-		echo -n "BOINC "
-		idprio 31 su - ${boinc_user} -c "${program_path} >/dev/null &"
-	fi
-	;;
-
-stop)
-	program=`expr ${program_file} : '^\(...................\).*$'`
-	killall ${program} 2> /dev/null
-	;;
-
-restart)
-	$0 stop
-	$0 start
-	;;
-
-status)
-	ps auxww | egrep ${program_file} | egrep -v "($0|egrep)"
-	;;
-
-*)
-	echo "usage: ${name} {start|stop|restart|status}" >&2
-	exit 64
-	;;
-esac
+args=${@+"$@"}
+exec idprio 31 su - %%BOINC_USER%% -c "%%LOCALBASE%%/lib/boinc/%%BOINC_BINARY%% $args"
 
diff -ruN /usr/ports/net/boinc-client/files/boinc.sh-4.x net/boinc-client/files/boinc.sh-4.x
--- /usr/ports/net/boinc-client/files/boinc.sh-4.x	Wed Dec 15 00:14:36 2004
+++ net/boinc-client/files/boinc.sh-4.x	Wed Dec 31 19:00:00 1969
@@ -1,61 +0,0 @@
-#!/bin/sh
-#
-# $FreeBSD: ports/net/boinc-client/files/boinc.sh-4.x,v 1.1 2004/12/15 05:14:36 edwin Exp $
-#
-# Start or stop BOINC
-#
-
-. /usr/local/etc/rc.subr
-
-name="boinc"
-rcvar=`set_rcvar`
-
-boinc_user=%%BOINC_USER%%
-boinc_home=%%BOINC_HOME%%
-program_file=%%BOINC_BINARY%%
-program_path=%%BOINC_DATADIR%%/client/${program_file}
-
-[ -z "$boinc_enable" ] && boinc_enable="NO"
-
-load_rc_config $name
-
-case "$1" in
-start)
-	if checkyesno boinc_enable
-	then
-		if [ ! -x ${program_path} ]
-		then
-			logger -sp ${syslog_facility} -t ${program_file} \
-				"unable to start: ${program_path} is missing."
-			exit 72
-		fi
-		if ps axo ucomm | egrep ${program_file}; then
-			logger -sp ${syslog_facility} -t ${program_file} \
-			"unable to start: ${program_file} is already running."
-			exit 72
-		fi
-		echo -n "BOINC "
-		idprio 31 su - ${boinc_user} -c "${program_path} >/dev/null &"
-	fi
-	;;
-
-stop)
-	program=`expr ${program_file} : '^\(................\).*$'`
-	killall ${program} 2> /dev/null
-	;;
-
-restart)
-	$0 stop
-	$0 start
-	;;
-
-status)
-	ps auxww | egrep ${program_file} | egrep -v "($0|egrep)"
-	;;
-
-*)
-	echo "usage: ${name} {start|stop|restart|status}" >&2
-	exit 64
-	;;
-esac
-
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-api::boinc_api.C net/boinc-client/files/extra-patch-api::boinc_api.C
--- /usr/ports/net/boinc-client/files/extra-patch-api::boinc_api.C	Wed Dec 15 00:14:36 2004
+++ net/boinc-client/files/extra-patch-api::boinc_api.C	Wed Dec 31 19:00:00 1969
@@ -1,11 +0,0 @@
---- api/boinc_api.C.orig	Sun Sep  5 19:28:46 2004
-+++ api/boinc_api.C	Thu Dec  9 10:22:30 2004
-@@ -116,7 +116,7 @@
-     options.handle_trickle_ups = true;
-     options.handle_trickle_downs = true;
-     options.handle_process_control = true;
--    options.send_status_msgs = true;
-+    options.send_status_msgs = false;
-     options.direct_process_action = true;
-     return boinc_init_options(options);
- }
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-client::gui_rpc_server.C net/boinc-client/files/extra-patch-client::gui_rpc_server.C
--- /usr/ports/net/boinc-client/files/extra-patch-client::gui_rpc_server.C	Tue Jan 25 19:13:43 2005
+++ net/boinc-client/files/extra-patch-client::gui_rpc_server.C	Wed Dec 31 19:00:00 1969
@@ -1,11 +0,0 @@
---- client/gui_rpc_server.C.orig	Tue Dec 21 13:25:39 2004
-+++ client/gui_rpc_server.C	Tue Dec 21 13:27:04 2004
-@@ -49,7 +49,7 @@
- typedef int socklen_t;
- #elif defined(__APPLE__)
- typedef int32_t socklen_t;
--#elif !defined(GETSOCKOPT_SOCKLEN_T) && !defined(_SOCKLEN_T_DECLARED) && !defined(socklen_t)
-+#elif !defined(__FreeBSD__)
- typedef size_t socklen_t;
- #endif
- 
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-client::net_xfer.C net/boinc-client/files/extra-patch-client::net_xfer.C
--- /usr/ports/net/boinc-client/files/extra-patch-client::net_xfer.C	Tue Jan 25 19:13:43 2005
+++ net/boinc-client/files/extra-patch-client::net_xfer.C	Wed Dec 31 19:00:00 1969
@@ -1,11 +0,0 @@
---- client/net_xfer.C.orig	Tue Dec 21 13:25:39 2004
-+++ client/net_xfer.C	Tue Dec 21 13:28:15 2004
-@@ -80,7 +80,7 @@
- typedef int socklen_t;
- #elif defined(__APPLE__)
- typedef int32_t socklen_t;
--#elif !defined(GETSOCKOPT_SOCKLEN_T) && !defined(_SOCKLEN_T_DECLARED) && !defined(socklen_t)
-+#elif !defined(__FreeBSD__)
- typedef size_t socklen_t;
- #endif
- 
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-clientgui::MainDocument.cpp net/boinc-client/files/extra-patch-clientgui::MainDocument.cpp
--- /usr/ports/net/boinc-client/files/extra-patch-clientgui::MainDocument.cpp	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-clientgui::MainDocument.cpp	Sun Mar 20 21:59:21 2005
@@ -0,0 +1,551 @@
+--- clientgui/MainDocument.cpp.orig	Tue Mar 15 16:53:12 2005
++++ clientgui/MainDocument.cpp	Sun Mar 20 21:59:15 2005
+@@ -178,7 +178,7 @@
+     if ( IsConnected() )
+         return BOINC_SUCCESS;
+ 
+-    str.clear();
++    str = "";
+ 
+     if ( strMachine.empty() && !m_strConnectedComputerName.empty() )
+         str = m_strConnectedComputerName.c_str();
+@@ -416,7 +416,7 @@
+ 
+     m_fProjectTotalResourceShare = 0.0;
+     for (i=0; i < (long)project_status.projects.size(); i++) {
+-        m_fProjectTotalResourceShare += project_status.projects.at( i )->resource_share;
++        m_fProjectTotalResourceShare += project_status.projects[i]->resource_share;
+     }
+ 
+     return iRetVal;
+@@ -445,7 +445,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -470,7 +470,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -491,7 +491,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -512,7 +512,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -533,7 +533,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -554,7 +554,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -575,7 +575,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -603,7 +603,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -653,7 +653,7 @@
+ 
+     if ( NULL != pProject )
+     {
+-        Url = pProject->gui_urls.at( iWebsiteIndex );
++        Url = pProject->gui_urls[iWebsiteIndex];
+         strBuffer = Url.name.c_str();
+     }
+ 
+@@ -676,7 +676,7 @@
+ 
+     if ( NULL != pProject )
+     {
+-        Url = pProject->gui_urls.at( iWebsiteIndex );
++        Url = pProject->gui_urls[iWebsiteIndex];
+         strBuffer = Url.description.c_str();
+     }
+ 
+@@ -699,7 +699,7 @@
+ 
+     if ( NULL != pProject )
+     {
+-        Url = pProject->gui_urls.at( iWebsiteIndex );
++        Url = pProject->gui_urls[iWebsiteIndex];
+         strBuffer = Url.url.c_str();
+     }
+ 
+@@ -715,7 +715,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -737,7 +737,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -765,7 +765,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -787,7 +787,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -809,7 +809,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -832,7 +832,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -866,7 +866,7 @@
+     try
+     {
+         if ( !project_status.projects.empty() )
+-            pProject = project_status.projects.at( iIndex );
++            pProject = project_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -930,7 +930,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -963,7 +963,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -987,7 +987,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1027,7 +1027,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1064,7 +1064,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1085,7 +1085,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1106,7 +1106,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1127,7 +1127,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1148,7 +1148,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1169,7 +1169,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1191,7 +1191,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1213,7 +1213,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1235,7 +1235,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1257,7 +1257,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1279,7 +1279,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1301,7 +1301,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1323,7 +1323,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1345,7 +1345,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1368,7 +1368,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1404,7 +1404,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1440,7 +1440,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1472,7 +1472,7 @@
+     try
+     {
+         if ( !results.results.empty() )
+-            pResult = results.results.at( iIndex );
++            pResult = results.results[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1512,7 +1512,7 @@
+     }
+ 
+     if ( messages.messages.size() != 0 )
+-        m_iMessageSequenceNumber = messages.messages.at( messages.messages.size()-1 )->seqno;
++        m_iMessageSequenceNumber = messages.messages[messages.messages.size()-1]->seqno;
+ 
+     return iRetVal;
+ }
+@@ -1539,7 +1539,7 @@
+     try
+     {
+         if ( !messages.messages.empty() )
+-            pMessage = messages.messages.at( iIndex );
++            pMessage = messages.messages[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1560,7 +1560,7 @@
+     try
+     {
+         if ( !messages.messages.empty() )
+-            pMessage = messages.messages.at( iIndex );
++            pMessage = messages.messages[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1584,7 +1584,7 @@
+     try
+     {
+         if ( !messages.messages.empty() )
+-            pMessage = messages.messages.at( iIndex );
++            pMessage = messages.messages[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1605,7 +1605,7 @@
+     try
+     {
+         if ( !messages.messages.empty() )
+-            pMessage = messages.messages.at( iIndex );
++            pMessage = messages.messages[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1663,7 +1663,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1684,7 +1684,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1705,7 +1705,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1726,7 +1726,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1747,7 +1747,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1768,7 +1768,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1789,7 +1789,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1810,7 +1810,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1832,7 +1832,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1853,7 +1853,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1875,7 +1875,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1897,7 +1897,7 @@
+     try
+     {
+         if ( !ft.file_transfers.empty() )
+-            pFT = ft.file_transfers.at( iIndex );
++            pFT = ft.file_transfers[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1949,7 +1949,7 @@
+     try
+     {
+         if ( !resource_status.projects.empty() )
+-            pProject = resource_status.projects.at( iIndex );
++            pProject = resource_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
+@@ -1978,7 +1978,7 @@
+     try
+     {
+         if ( !resource_status.projects.empty() )
+-            pProject = resource_status.projects.at( iIndex );
++            pProject = resource_status.projects[iIndex];
+     }
+     catch ( std::out_of_range e )
+     {
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-clientgui::MainFrame.cpp net/boinc-client/files/extra-patch-clientgui::MainFrame.cpp
--- /usr/ports/net/boinc-client/files/extra-patch-clientgui::MainFrame.cpp	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-clientgui::MainFrame.cpp	Thu Mar 24 11:13:44 2005
@@ -0,0 +1,20 @@
+--- clientgui/MainFrame.cpp.orig	Sat Mar 12 01:51:31 2005
++++ clientgui/MainFrame.cpp	Thu Mar 24 11:12:36 2005
+@@ -1106,7 +1106,6 @@
+                     wxString strConnectedMachine = wxEmptyString;
+                     wxString strStatusText = wxEmptyString;
+                     wxString strTitle = m_strBaseTitle;
+-                    wxString strLocale = setlocale(LC_NUMERIC, NULL);
+      
+                     pDoc->GetConnectedComputerName( strConnectedMachine );
+                     if ( strConnectedMachine.empty() )
+@@ -1119,9 +1118,7 @@
+                         strStatusText += strConnectedMachine;
+                     }
+ 
+-                    setlocale(LC_NUMERIC, "C");
+                     strBuffer.Printf(wxT("%.2f"), pDoc->GetCoreClientVersion()/100.0);
+-                    setlocale(LC_NUMERIC, strLocale.c_str());
+ 
+                     strTitle.Printf(_("%s - (%s)"), m_strBaseTitle.c_str(), strConnectedMachine.c_str());
+                     strStatusText.Printf(_("Connected to %s (%s)"), strConnectedMachine.c_str(), strBuffer.c_str());
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-clientgui::ViewProjects.cpp net/boinc-client/files/extra-patch-clientgui::ViewProjects.cpp
--- /usr/ports/net/boinc-client/files/extra-patch-clientgui::ViewProjects.cpp	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-clientgui::ViewProjects.cpp	Sun Mar 20 21:29:09 2005
@@ -0,0 +1,20 @@
+--- clientgui/ViewProjects.cpp.orig	Tue Mar 15 18:44:48 2005
++++ clientgui/ViewProjects.cpp	Sun Mar 20 21:29:09 2005
+@@ -230,7 +230,7 @@
+ 
+ wxString CViewProjects::OnListGetItemText(long item, long column) const 
+ {
+-    CProject* project     = m_ProjectCache.at( item );
++    CProject* project     = m_ProjectCache[item];
+     wxString  strBuffer   = wxEmptyString;
+ 
+     switch(column)
+@@ -536,7 +536,7 @@
+ 
+ wxInt32 CViewProjects::UpdateCache( long item, long column, wxString& strNewData )
+ {
+-    CProject* project     = m_ProjectCache.at( item );
++    CProject* project     = m_ProjectCache[item];
+ 
+     switch(column)
+     {
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-clientgui::ViewResources.cpp net/boinc-client/files/extra-patch-clientgui::ViewResources.cpp
--- /usr/ports/net/boinc-client/files/extra-patch-clientgui::ViewResources.cpp	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-clientgui::ViewResources.cpp	Sun Mar 20 21:31:22 2005
@@ -0,0 +1,20 @@
+--- clientgui/ViewResources.cpp.orig	Tue Mar 15 18:44:48 2005
++++ clientgui/ViewResources.cpp	Sun Mar 20 21:31:22 2005
+@@ -145,7 +145,7 @@
+ 
+ wxString CViewResources::OnListGetItemText( long item, long column ) const
+ {
+-    CResource* resource   = m_ResourceCache.at( item );
++    CResource* resource   = m_ResourceCache[item];
+     wxString   strBuffer  = wxEmptyString;
+ 
+     switch(column)
+@@ -270,7 +270,7 @@
+ 
+ wxInt32 CViewResources::UpdateCache( long item, long column, wxString& strNewData )
+ {
+-    CResource* resource   = m_ResourceCache.at( item );
++    CResource* resource   = m_ResourceCache[item];
+ 
+     switch(column)
+     {
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-clientgui::ViewTransfers.cpp net/boinc-client/files/extra-patch-clientgui::ViewTransfers.cpp
--- /usr/ports/net/boinc-client/files/extra-patch-clientgui::ViewTransfers.cpp	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-clientgui::ViewTransfers.cpp	Sun Mar 20 21:32:00 2005
@@ -0,0 +1,20 @@
+--- clientgui/ViewTransfers.cpp.orig	Tue Mar 15 18:44:48 2005
++++ clientgui/ViewTransfers.cpp	Sun Mar 20 21:32:00 2005
+@@ -177,7 +177,7 @@
+ 
+ wxString CViewTransfers::OnListGetItemText(long item, long column) const
+ {
+-    CTransfer* transfer   = m_TransferCache.at( item );
++    CTransfer* transfer   = m_TransferCache[item];
+     wxString   strBuffer  = wxEmptyString;
+ 
+     switch(column)
+@@ -372,7 +372,7 @@
+ 
+ wxInt32 CViewTransfers::UpdateCache( long item, long column, wxString& strNewData )
+ {
+-    CTransfer* transfer   = m_TransferCache.at( item );
++    CTransfer* transfer   = m_TransferCache[item];
+ 
+     switch(column)
+     {
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-clientgui::ViewWork.cpp net/boinc-client/files/extra-patch-clientgui::ViewWork.cpp
--- /usr/ports/net/boinc-client/files/extra-patch-clientgui::ViewWork.cpp	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-clientgui::ViewWork.cpp	Sun Mar 20 21:35:51 2005
@@ -0,0 +1,31 @@
+--- clientgui/ViewWork.cpp.orig	Tue Mar 15 18:44:48 2005
++++ clientgui/ViewWork.cpp	Sun Mar 20 21:35:22 2005
+@@ -190,7 +190,7 @@
+ 
+ wxString CViewWork::OnListGetItemText( long item, long column ) const
+ {
+-    CWork*    work      = m_WorkCache.at( item );
++    CWork*    work      = m_WorkCache[item];
+     wxString  strBuffer = wxEmptyString;
+ 
+     switch(column)
+@@ -436,7 +436,7 @@
+ 
+ wxInt32 CViewWork::UpdateCache( long item, long column, wxString& strNewData )
+ {
+-    CWork* work   = m_WorkCache.at( item );
++    CWork* work   = m_WorkCache[item];
+ 
+     switch(column)
+     {
+@@ -589,10 +589,7 @@
+     pDoc->GetWorkApplicationName(item, strTempName);
+     pDoc->GetWorkApplicationVersion(item, iBuffer);
+ 
+-    wxString strLocale = setlocale(LC_NUMERIC, NULL);
+-    setlocale(LC_NUMERIC, "C");
+     strBuffer.Printf(wxT("%s %.2f"), strTempName.c_str(), iBuffer/100.0);
+-    setlocale(LC_NUMERIC, strLocale.c_str());
+ 
+     return 0;
+ }
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-clientgui::stdwx.h net/boinc-client/files/extra-patch-clientgui::stdwx.h
--- /usr/ports/net/boinc-client/files/extra-patch-clientgui::stdwx.h	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-clientgui::stdwx.h	Sun Mar 20 21:38:45 2005
@@ -0,0 +1,10 @@
+--- clientgui/stdwx.h.orig	Thu Feb 17 18:44:35 2005
++++ clientgui/stdwx.h	Sun Mar 20 21:38:15 2005
+@@ -136,7 +136,6 @@
+ #include <sstream>
+ #include <vector>
+ #include <list>
+-#include <locale>
+ 
+ 
+ #ifdef __WXMSW__
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-lib::acct_mgr_client.C net/boinc-client/files/extra-patch-lib::acct_mgr_client.C
--- /usr/ports/net/boinc-client/files/extra-patch-lib::acct_mgr_client.C	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-lib::acct_mgr_client.C	Thu Mar 24 10:14:11 2005
@@ -0,0 +1,24 @@
+--- lib/acct_mgr_client.C.orig	Sat Mar 12 01:51:33 2005
++++ lib/acct_mgr_client.C	Thu Mar 24 10:12:20 2005
+@@ -65,8 +65,8 @@
+ }
+ 
+ void ACCT_MGR::clear() {
+-    name.clear();
+-    url.clear();
++    name = "";
++    url = "";
+ }
+ 
+ ACCT_MGR_LOGIN::ACCT_MGR_LOGIN() {
+@@ -93,8 +93,8 @@
+ }
+ 
+ void ACCT_MGR_LOGIN::clear() {
+-    login.clear();
+-    password.clear();
++    login = "";
++    password = "";
+ }
+ 
+ 
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-lib::gui_rpc_client.C net/boinc-client/files/extra-patch-lib::gui_rpc_client.C
--- /usr/ports/net/boinc-client/files/extra-patch-lib::gui_rpc_client.C	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-lib::gui_rpc_client.C	Sun Mar 20 22:32:18 2005
@@ -0,0 +1,125 @@
+--- lib/gui_rpc_client.C.orig	Thu Mar 17 16:04:53 2005
++++ lib/gui_rpc_client.C	Sun Mar 20 22:32:04 2005
+@@ -164,11 +164,11 @@
+ }
+ 
+ void PROJECT::clear() {
+-    master_url.clear();
++    master_url = "";
+     resource_share = 0.0;
+-    project_name.clear();
+-    user_name.clear();
+-    team_name.clear();
++    project_name = "";
++    user_name = "";
++    team_name = "";
+     user_total_credit = 0.0;
+     user_expavg_credit = 0.0;
+     host_total_credit = 0.0;
+@@ -209,7 +209,7 @@
+ }
+ 
+ void APP::clear() {
+-    name.clear();
++    name = "";
+     project = NULL;
+ }
+ 
+@@ -238,7 +238,7 @@
+ }
+ 
+ void APP_VERSION::clear() {
+-    app_name.clear();
++    app_name = "";
+     version_num = 0;
+     app = NULL;
+     project = NULL;
+@@ -276,8 +276,8 @@
+ }
+ 
+ void WORKUNIT::clear() {
+-    name.clear();
+-    app_name.clear();
++    name = "";
++    app_name = "";
+     version_num = 0;
+     rsc_fpops_est = 0.0;
+     rsc_fpops_bound = 0.0;
+@@ -376,9 +376,9 @@
+ }
+ 
+ void RESULT::clear() {
+-    name.clear();
+-    wu_name.clear();
+-    project_url.clear();
++    name = "";
++    wu_name = "";
++    project_url = "";
+     report_deadline = 0;
+     ready_to_report = false;
+     got_server_ack = false;
+@@ -389,7 +389,7 @@
+     signal = 0;
+     active_task_state = 0;
+     active_task = false;
+-    stderr_out.clear();
++    stderr_out = "";
+     app_version_num = 0;
+     checkpoint_cpu_time = 0.0;
+     current_cpu_time = 0.0;
+@@ -463,9 +463,9 @@
+ }
+ 
+ void FILE_TRANSFER::clear() {
+-    name.clear();
+-    project_url.clear();
+-    project_name.clear();
++    name = "";
++    project_url = "";
++    project_name = "";
+     nbytes = 0.0;
+     generated_locally = false;
+     uploaded = false;
+@@ -481,7 +481,7 @@
+     bytes_xferred = 0.0;
+     file_offset = 0.0;
+     xfer_speed = 0.0;
+-    hostname.clear();
++    hostname = "";
+     project = NULL;
+ }
+ 
+@@ -516,10 +516,10 @@
+ }
+ 
+ void MESSAGE::clear() {
+-    project.clear();
++    project = "";
+     priority = 0;
+     timestamp = 0;
+-    body.clear();
++    body = "";
+ }
+ 
+ PROXY_INFO::PROXY_INFO() {
+@@ -570,14 +570,14 @@
+     use_socks_proxy = false;
+     use_http_authentication = false;
+     socks_version = 0;
+-    socks_server_name.clear();
+-    http_server_name.clear();
++    socks_server_name = "";
++    http_server_name = "";
+     socks_server_port = 0;
+     http_server_port = 0;
+-    http_user_name.clear();
+-    http_user_passwd.clear();
+-    socks5_user_name.clear();
+-    socks5_user_passwd.clear();
++    http_user_name = "";
++    http_user_passwd = "";
++    socks5_user_name = "";
++    socks5_user_passwd = "";
+ }
+ 
+ HOST_INFO::HOST_INFO() {
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-lib::network.h net/boinc-client/files/extra-patch-lib::network.h
--- /usr/ports/net/boinc-client/files/extra-patch-lib::network.h	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-lib::network.h	Sun Mar 20 22:36:08 2005
@@ -0,0 +1,11 @@
+--- lib/network.h.orig	Mon Mar  7 16:19:09 2005
++++ lib/network.h	Sun Mar 20 22:35:20 2005
+@@ -25,7 +25,7 @@
+ #define SHUT_WR SD_SEND
+ #elif defined( __APPLE__)
+ typedef int32_t socklen_t;
+-#elif !defined(GETSOCKOPT_SOCKLEN_T) && !defined(_SOCKLEN_T_DECLARED) && !defined(socklen_t)
++#elif !defined(__FreeBSD__)
+ typedef size_t socklen_t;
+ #endif
+ 
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-lib::parse.C net/boinc-client/files/extra-patch-lib::parse.C
--- /usr/ports/net/boinc-client/files/extra-patch-lib::parse.C	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-lib::parse.C	Sun Mar 20 21:45:49 2005
@@ -0,0 +1,32 @@
+--- lib/parse.C.orig	Tue Mar 15 15:23:24 2005
++++ lib/parse.C	Sun Mar 20 21:45:20 2005
+@@ -31,7 +31,6 @@
+ #ifndef _WIN32
+ #include <cstring>
+ #include <cstdlib>
+-#include <locale>
+ #include <string>
+ #endif
+ 
+@@ -63,10 +62,7 @@
+ bool parse_int(const char* buf, const char* tag, int& x) {
+     char* p = strstr(buf, tag);
+     if (!p) return false;
+-    std::string strLocale = setlocale(LC_NUMERIC, NULL);
+-    setlocale(LC_NUMERIC, "C");
+     x = strtol(p+strlen(tag), 0, 0);        // this parses 0xabcd correctly
+-    setlocale(LC_NUMERIC, strLocale.c_str());
+     return true;
+ }
+ 
+@@ -75,10 +71,7 @@
+ bool parse_double(const char* buf, const char* tag, double& x) {
+     char* p = strstr(buf, tag);
+     if (!p) return false;
+-    std::string strLocale = setlocale(LC_NUMERIC, NULL);
+-    setlocale(LC_NUMERIC, "C");
+     x = atof(p+strlen(tag));
+-    setlocale(LC_NUMERIC, strLocale.c_str());
+     return true;
+ }
+ 
diff -ruN /usr/ports/net/boinc-client/files/extra-patch-zip::boinc_zip.cpp net/boinc-client/files/extra-patch-zip::boinc_zip.cpp
--- /usr/ports/net/boinc-client/files/extra-patch-zip::boinc_zip.cpp	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/extra-patch-zip::boinc_zip.cpp	Sun Mar 20 21:49:33 2005
@@ -0,0 +1,20 @@
+--- zip/boinc_zip.cpp.orig	Sun Jan  2 13:29:37 2005
++++ zip/boinc_zip.cpp	Sun Mar 20 21:49:07 2005
+@@ -129,7 +129,7 @@
+ 		//sz 3 onward will be each vector
+ 		int jj;
+ 		for (jj=0; jj<nVecSize; jj++)
+-			strcpy(av[3+jj], pvectszFileIn->at(jj).c_str());
++			strcpy(av[3+jj], (*pvectszFileIn)[jj].c_str());
+ 	}
+ 	else 
+ 	{
+@@ -141,7 +141,7 @@
+ 
+ 		// if they passed in a directory unzip there
+ 		if (carg == 4)
+-			sprintf(av[3], "-d%s", pvectszFileIn->at(0).c_str());
++			sprintf(av[3], "-d%s", (*pvectszFileIn)[0].c_str());
+ 	}
+ 	// strcpy(av[carg-1], "");  // null arg	
+ 	// printf("args: %s %s %s %s\n", av[0], av[1], av[2], av[3]);
diff -ruN /usr/ports/net/boinc-client/files/patch-api::boinc_api.C net/boinc-client/files/patch-api::boinc_api.C
--- /usr/ports/net/boinc-client/files/patch-api::boinc_api.C	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/patch-api::boinc_api.C	Wed Mar 23 15:49:52 2005
@@ -0,0 +1,55 @@
+--- api/boinc_api.C.orig	Sat Mar 19 16:39:16 2005
++++ api/boinc_api.C	Wed Mar 23 15:49:01 2005
+@@ -56,6 +56,8 @@
+ // Unless otherwise noted, "CPU time" refers to the sum over all episodes
+ // (not counting the part after the last checkpoint in an episode).
+ 
++pthread_t timer_thread_handle;
++
+ static APP_INIT_DATA aid;
+ static FILE_LOCK file_lock;
+ APP_CLIENT_SHM* app_client_shm = 0;
+@@ -506,6 +508,19 @@
+ #endif
+ }
+ 
++#ifndef _USECONDS_T_DECLARED
++typedef unsigned int useconds_t;
++#endif
++
++void *
++timer_thread(void *)
++{
++	while(1) {
++		usleep((useconds_t)(TIMER_PERIOD*1000000));
++		worker_timer(0);
++	}
++	/*NOTREACHED*/
++}
+ 
+ // set up a periodic timer interrupt for the worker thread.
+ // This is called only and always by the worker thread
+@@ -539,21 +554,9 @@
+     //
+     SetThreadPriority(worker_thread_handle, THREAD_PRIORITY_LOWEST);
+ #else
+-    struct sigaction sa;
+-    itimerval value;
+-    sa.sa_handler = worker_timer;
+-    sa.sa_flags = SA_RESTART;
+-    retval = sigaction(SIGALRM, &sa, NULL);
+-    if (retval) {
+-        perror("boinc set_worker_timer() sigaction");
+-        return retval;
+-    }
+-    value.it_value.tv_sec = (int)TIMER_PERIOD;
+-    value.it_value.tv_usec = ((int)(TIMER_PERIOD*1000000))%1000000;
+-    value.it_interval = value.it_value;
+-    retval = setitimer(ITIMER_REAL, &value, NULL);
++    retval = pthread_create(&timer_thread_handle, NULL, timer_thread, NULL);
+     if (retval) {
+-        perror("boinc set_worker_timer() setitimer");
++        perror("boinc set_worker_timer() pthread_create(timer_thread)");
+     }
+ #endif
+     return retval;
diff -ruN /usr/ports/net/boinc-client/files/patch-api::boinc_gl.h net/boinc-client/files/patch-api::boinc_gl.h
--- /usr/ports/net/boinc-client/files/patch-api::boinc_gl.h	Sat Oct 16 15:29:30 2004
+++ net/boinc-client/files/patch-api::boinc_gl.h	Wed Dec 31 19:00:00 1969
@@ -1,19 +0,0 @@
---- api/boinc_gl.h.orig	Wed Sep  1 19:15:30 2004
-+++ api/boinc_gl.h	Fri Oct  1 12:06:47 2004
-@@ -54,8 +54,6 @@
- #    include <OpenGL/glu.h>
- #  endif
- 
--# include "GL/glut.h"
--/*
- #  if defined(HAVE_GLUT_H)
- #    include "glut.h"
- #  elif defined(HAVE_GL_GLUT_H)
-@@ -65,7 +63,6 @@
- #  elif defined(HAVE_GLUT_GLUT_H)
- #    include <GLUT/glut.h>
- #  endif
--*/
- 
- #endif // _WIN32
- 
diff -ruN /usr/ports/net/boinc-client/files/patch-client::gui_rpc_server.C net/boinc-client/files/patch-client::gui_rpc_server.C
--- /usr/ports/net/boinc-client/files/patch-client::gui_rpc_server.C	Wed Dec 15 00:14:36 2004
+++ net/boinc-client/files/patch-client::gui_rpc_server.C	Wed Dec 31 19:00:00 1969
@@ -1,17 +0,0 @@
---- client/gui_rpc_server.C.orig	Mon Sep 27 15:07:29 2004
-+++ client/gui_rpc_server.C	Thu Dec  2 20:59:58 2004
-@@ -47,12 +47,10 @@
- 
- #if defined(_WIN32)
- typedef int socklen_t;
--#elif defined ( __APPLE__)
-+#elif defined(__APPLE__)
- typedef int32_t socklen_t;
--#elif !GETSOCKOPT_SOCKLEN_T
--#ifndef socklen_t
-+#elif !defined(GETSOCKOPT_SOCKLEN_T) && !defined(_SOCKLEN_T_DECLARED) && !defined(socklen_t)
- typedef size_t socklen_t;
--#endif
- #endif
- 
- static void boinc_close_socket(int sock) {
diff -ruN /usr/ports/net/boinc-client/files/patch-client::net_xfer.C net/boinc-client/files/patch-client::net_xfer.C
--- /usr/ports/net/boinc-client/files/patch-client::net_xfer.C	Wed Dec 15 00:14:36 2004
+++ net/boinc-client/files/patch-client::net_xfer.C	Wed Dec 31 19:00:00 1969
@@ -1,17 +0,0 @@
---- client/net_xfer.C.orig	Mon Sep 27 15:07:30 2004
-+++ client/net_xfer.C	Thu Dec  2 21:00:11 2004
-@@ -78,12 +78,10 @@
- 
- #if defined(_WIN32)
- typedef int socklen_t;
--#elif defined ( __APPLE__)
-+#elif defined(__APPLE__)
- typedef int32_t socklen_t;
--#elif !GETSOCKOPT_SOCKLEN_T
--#ifndef socklen_t
-+#elif !defined(GETSOCKOPT_SOCKLEN_T) && !defined(_SOCKLEN_T_DECLARED) && !defined(socklen_t)
- typedef size_t socklen_t;
--#endif
- #endif
- 
- using std::vector;
diff -ruN /usr/ports/net/boinc-client/files/patch-clientgui::BOINCGUIApp.cpp net/boinc-client/files/patch-clientgui::BOINCGUIApp.cpp
--- /usr/ports/net/boinc-client/files/patch-clientgui::BOINCGUIApp.cpp	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/patch-clientgui::BOINCGUIApp.cpp	Tue Mar 22 14:06:09 2005
@@ -0,0 +1,11 @@
+--- clientgui/BOINCGUIApp.cpp.orig	Fri Mar 11 08:08:50 2005
++++ clientgui/BOINCGUIApp.cpp	Tue Mar 22 14:05:34 2005
+@@ -81,8 +81,6 @@
+         BOINC_DIAG_DUMPCALLSTACKENABLED | 
+         BOINC_DIAG_HEAPCHECKENABLED |
+         BOINC_DIAG_MEMORYLEAKCHECKENABLED |
+-        BOINC_DIAG_REDIRECTSTDERR |
+-        BOINC_DIAG_REDIRECTSTDOUT |
+         BOINC_DIAG_TRACETOSTDOUT;
+ 
+     diagnostics_init(
diff -ruN /usr/ports/net/boinc-client/files/rc::boinc.sh net/boinc-client/files/rc::boinc.sh
--- /usr/ports/net/boinc-client/files/rc::boinc.sh	Wed Dec 31 19:00:00 1969
+++ net/boinc-client/files/rc::boinc.sh	Wed Mar  2 16:39:38 2005
@@ -0,0 +1,69 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/net/boinc-client/files/boinc.sh,v 1.1 2004/10/16 19:29:30 pav Exp $
+#
+# Start or stop BOINC
+#
+
+if [ -f /etc/rc.subr ]
+then
+	. /etc/rc.subr
+elif [ -f /usr/local/etc/rc.subr ]
+then
+	# FreeBSD 4.x
+	. /usr/local/etc/rc.subr
+fi
+
+name="boinc"
+rcvar=`set_rcvar`
+
+boinc_user=%%BOINC_USER%%
+boinc_home=%%BOINC_HOME%%
+program_file=%%BOINC_BINARY%%
+program_path=%%LOCALBASE%%/lib/boinc/${program_file}
+syslog_facility=daemon.err
+
+[ -z "$boinc_enable" ] && boinc_enable="NO"
+
+load_rc_config $name
+
+case "$1" in
+start)
+	if checkyesno boinc_enable
+	then
+		if [ ! -x ${program_path} ]
+		then
+			logger -sp ${syslog_facility} -t ${program_file} \
+				"unable to start: ${program_path} is missing."
+			exit 72
+		fi
+		if ps axo ucomm | egrep ${program_file}; then
+			logger -sp ${syslog_facility} -t ${program_file} \
+			"unable to start: ${program_file} is already running."
+			exit 72
+		fi
+		echo "Starting BOINC client."
+		export LD_LIBRARY_PATH=%%LOCALBASE%%/lib/boinc
+		idprio 31 su - ${boinc_user} -c "${program_path} ${boinc_flags} >/dev/null &"
+	fi
+	;;
+
+stop)
+	killall ${program_file} 2> /dev/null
+	;;
+
+restart)
+	$0 stop
+	$0 start
+	;;
+
+status)
+	ps auxww | egrep ${program_file} | egrep -v "($0|egrep)"
+	;;
+
+*)
+	echo "usage: ${name} {start|stop|restart|status}" >&2
+	exit 64
+	;;
+esac
+
diff -ruN /usr/ports/net/boinc-client/pkg-message net/boinc-client/pkg-message
--- /usr/ports/net/boinc-client/pkg-message	Sat Oct 16 15:29:30 2004
+++ net/boinc-client/pkg-message	Wed Mar 23 12:32:42 2005
@@ -1,8 +1,8 @@
 -------------------------------------------------------------------
-BOINC's boinc-client is now installed.  You now need to register
-with and install one or more projects.
+The BOINC client is now installed.  You now need to register with
+and install one or more projects.
 
-Refer to the BOINC web page at
+Refer to the BOINC web page at:
 	http://boinc.berkeley.edu/
 for a list of projects and refer to each of their sites for info
 on how to register with them and how to use them on FreeBSD.
@@ -11,4 +11,18 @@
 don't work on FreeBSD at all.
 
 SETI at HOME for FreeBSD is available in port astro/boinc-setiathome.
+
+Einstein at Home will soon be available as a binary port for
+	FreeBSD/i386 users; it may also be available as an
+	automatic BOINC download.
+
+Read the "boinc" man page for more info on running BOINC and
+attaching projects.
+
+This version of the port includes the "boincmgr" GUI management
+interface and support for the client application status screens.
+Read the "boincmgr" man page for info on setting up your DISPLAY
+environment variable and xhost access permissions to use this.
+NB: Due to bugs in the x11-toolkits/wxgtk port on FreeBSD 4.x/alpha
+boincmgr may not work on that platform.
 -------------------------------------------------------------------
diff -ruN /usr/ports/net/boinc-client/pkg-plist net/boinc-client/pkg-plist
--- /usr/ports/net/boinc-client/pkg-plist	Wed Dec 15 17:51:43 2004
+++ net/boinc-client/pkg-plist	Mon Mar 21 10:49:52 2005
@@ -1,51 +1,57 @@
- at exec mkdir -p %D/boinc/projects
-bin/boinc-client
-boinc/client/%%BOINC_BINARY%%
+bin/boinc
+bin/boincmgr
 etc/rc.d/boinc.sh
-boinc/Makefile.am
-boinc/lib/Makefile.am
-boinc/lib/app_ipc.h
-boinc/lib/base64.h
-boinc/lib/boinc_win.h
-boinc/lib/crypt.h
-boinc/lib/diagnostics.h
-boinc/lib/error_numbers.h
-boinc/lib/exception.h
-boinc/lib/filesys.h
-boinc/lib/gui_rpc_client.h
-boinc/lib/hostinfo.h
-boinc/lib/language.h
-boinc/lib/libboinc.a
-boinc/lib/librsaeuro.a
-boinc/lib/md5.h
-boinc/lib/md5_file.h
-boinc/lib/mfile.h
-boinc/lib/miofile.h
-boinc/lib/msg_log.h
-boinc/lib/msg_queue.h
-boinc/lib/parse.h
-boinc/lib/proxy_info.h
-boinc/lib/result_state.h
-boinc/lib/shmem.h
-boinc/lib/stackwalker_win.h
-boinc/lib/std_fixes.h
-boinc/lib/synch.h
-boinc/lib/util.h
-boinc/api/Makefile.am
-boinc/api/boinc_api.h
-boinc/api/boinc_gl.h
-boinc/api/graphics_api.h
-boinc/api/graphics_data.h
-boinc/api/gutil.h
-boinc/api/mac_app_opengl.h
-boinc/api/mac_carbon_gl.h
-boinc/api/reduce.h
-boinc/api/x_opengl.h
- at dirrm boinc/api
- at dirrm boinc/client
- at dirrm boinc/lib
- at dirrm boinc/projects
- at dirrm boinc
+include/BOINC/acct_mgr_client.h
+include/BOINC/app_ipc.h
+include/BOINC/base64.h
+include/BOINC/bmplib.h
+include/BOINC/boinc_api.h
+include/BOINC/boinc_gl.h
+include/BOINC/boinc_win.h
+include/BOINC/boinc_zip.h
+include/BOINC/crypt.h
+include/BOINC/diagnostics.h
+include/BOINC/error_numbers.h
+include/BOINC/exception.h
+include/BOINC/filesys.h
+include/BOINC/graphics_api.h
+include/BOINC/graphics_data.h
+include/BOINC/graphics_impl.h
+include/BOINC/graphics_lib.h
+include/BOINC/gui_rpc_client.h
+include/BOINC/gutil.h
+include/BOINC/hostinfo.h
+include/BOINC/language.h
+include/BOINC/md5.h
+include/BOINC/md5_file.h
+include/BOINC/mem_usage.h
+include/BOINC/mfile.h
+include/BOINC/miofile.h
+include/BOINC/msg_log.h
+include/BOINC/msg_queue.h
+include/BOINC/network.h
+include/BOINC/parse.h
+include/BOINC/prefs.h
+include/BOINC/proxy_info.h
+include/BOINC/reduce.h
+include/BOINC/result_state.h
+include/BOINC/shmem.h
+include/BOINC/stackwalker_win.h
+include/BOINC/std_fixes.h
+include/BOINC/synch.h
+include/BOINC/tgalib.h
+include/BOINC/util.h
+include/BOINC/x_opengl.h
+lib/boinc/%%BOINC_BINARY%%
+lib/libboinc.a
+lib/libboinc_api.a
+lib/libboinc_graphics_api.a
+lib/libboinc_graphics_impl.a
+lib/libboinc_graphics_lib.a
+lib/librsaeuro.a
+lib/libboinc_zip.a
+ at dirrm include/BOINC
+ at dirrm lib/boinc
 @unexec if [ -d %%BOINC_HOME%% ]; then echo "If you are deinstalling boinc completely, remove the %%BOINC_HOME%% directory."; fi
 @unexec if [ -d %%BOINC_HOME%% ]; then echo -n "Also, d"; else echo -n "D"; fi
 @unexec echo "on't forget to remove the \"%%BOINC_USER%%\" user."
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list