diff --git a/_service b/_service
new file mode 100644
index 0000000..3411f69
--- /dev/null
+++ b/_service
@@ -0,0 +1,13 @@
+
+
+ github.com
+ https
+ /BOINC/boinc/archive/client_release/7.6/7.6.22.tar.gz
+ boinc-client_release-7.6-7.6.22.tar.gz
+
+
+ _service:download_url:boinc-client_release-7.6-7.6.22.tar.gz
+ sha256
+ b5b2b211725bc46399d3504bd6b0b60a9f9506d9f6b5a04d524991f239c16585
+
+
diff --git a/_service:download_url:boinc-client_release-7.6-7.6.22.tar.gz b/_service:download_url:boinc-client_release-7.6-7.6.22.tar.gz
new file mode 100644
index 0000000..d241b63
--- /dev/null
+++ b/_service:download_url:boinc-client_release-7.6-7.6.22.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b5b2b211725bc46399d3504bd6b0b60a9f9506d9f6b5a04d524991f239c16585
+size 44305861
diff --git a/boinc-7.2.42.tar.bz2 b/boinc-7.2.42.tar.bz2
deleted file mode 100644
index bd0a502..0000000
--- a/boinc-7.2.42.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dfff203487f9d030f916891074f978abde6c0d34b3147cfc36e42a5060b8d4b8
-size 40873943
diff --git a/boinc-LC_MESSAGES.patch b/boinc-LC_MESSAGES.patch
deleted file mode 100644
index 5716b06..0000000
--- a/boinc-LC_MESSAGES.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Index: locale/Makefile.am
-===================================================================
---- locale/Makefile.am.orig
-+++ locale/Makefile.am
-@@ -45,12 +45,12 @@ locale_dirs = \
- install-data-hook:
- mydir=$(DESTDIR)$(datadir) ;\
- for ldir in $(locale_dirs) ; do \
-- $(INSTALL) -d $$mydir/$$ldir ; \
-+ $(INSTALL) -d $$mydir/$$ldir/LC_MESSAGES ; \
- if [ -f $$ldir/BOINC-Manager.mo ] ; then \
-- $(INSTALL_DATA) $$ldir/BOINC-Manager.mo $$mydir/$$ldir/BOINC-Manager.mo ; \
-+ $(INSTALL_DATA) $$ldir/BOINC-Manager.mo $$mydir/$$ldir/LC_MESSAGES/BOINC-Manager.mo ; \
- fi ;\
- if [ -f $$ldir/BOINC-Client.mo ] ; then \
-- $(INSTALL_DATA) $$ldir/BOINC-Client.mo $$mydir/$$ldir/BOINC-Client.mo ; \
-+ $(INSTALL_DATA) $$ldir/BOINC-Client.mo $$mydir/$$ldir/LC_MESSAGES/BOINC-Client.mo ; \
- fi ;\
- done
-
diff --git a/boinc-client-AM_CONDITIONAL.patch b/boinc-client-AM_CONDITIONAL.patch
index 159e49b..512cb03 100644
--- a/boinc-client-AM_CONDITIONAL.patch
+++ b/boinc-client-AM_CONDITIONAL.patch
@@ -2,7 +2,7 @@ Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
-@@ -45,6 +45,7 @@ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCX
+@@ -64,6 +64,7 @@ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCX
dnl ------
AC_PROG_F77
AC_PROG_CPP
@@ -10,7 +10,7 @@ Index: configure.ac
AC_PROG_MAKE_SET
SAH_LINKS
AC_LANG_PUSH(C)
-@@ -793,6 +794,8 @@ AM_CONDITIONAL(ENABLE_LIBRARIES, [test "
+@@ -1071,6 +1072,8 @@ AM_CONDITIONAL(ENABLE_LIBRARIES, [test "
AM_CONDITIONAL(INSTALL_HEADERS, [test "${enable_install_headers}" = yes])
AM_CONDITIONAL(HAVE_CUDA_LIB, [test "${enable_client}" = yes -a -f ./coprocs/CUDA/posix/${boinc_platform}/libcudart.so])
@@ -19,19 +19,3 @@ Index: configure.ac
dnl ======================================================================
dnl some more vodoo required for building portable client-binary (client, clientgui)
dnl ======================================================================
-Index: clientgui/Makefile.am
-===================================================================
---- clientgui/Makefile.am.orig
-+++ clientgui/Makefile.am
-@@ -117,9 +117,8 @@ EXTRA_DIST = *.h \
- ../lib/error_numbers.h \
- locale $(mac_headers)
-
--boincmgr_CPPFLAGS = $(AM_CPPFLAGS) $(WX_CPPFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) `pkg-config --cflags gtk+-2.0`
--boincmgr_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CXXFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) `pkg-config --cflags gtk+-2.0`
--boincmgr_LDFLAGS = $(LIBBOINC) $(SQLITE3_LIBS) $(LIBNOTIFY_LIBS) $(CLIENTGUILIBS) $(BOINC_EXTRA_LIBS) $(CLIENTLIBS) `pkg-config --libs gtk+-2.0` -lnotify
-+boincmgr_CPPFLAGS = $(AM_CPPFLAGS) $(WX_CPPFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) $(GTK2_CFLAGS)
-+boincmgr_LDFLAGS = $(LIBBOINC) $(SQLITE3_LIBS) $(LIBNOTIFY_LIBS) $(CLIENTGUILIBS) $(BOINC_EXTRA_LIBS) $(CLIENTLIBS) $(GTK2_LIBS) -lnotify
-
- win_config.h: $(top_srcdir)/config.h
- grep '#define.*BOINC.*VERSION' $^ > $@
diff --git a/boinc-client.changes b/boinc-client.changes
index 5b78f9c..009253b 100644
--- a/boinc-client.changes
+++ b/boinc-client.changes
@@ -1,3 +1,35 @@
+-------------------------------------------------------------------
+Fri Apr 22 21:48:48 UTC 2016 - aaronpuchert@alice-dsl.net
+
+- Replaced quick fix for compiler errors by a proper solution,
+ which is already upstreamed.
+- Removed dependency to mysql, because that is only needed for the
+ BOINC server, which we don't build anyway.
+- Removed dependency to libboinc, because it's meant to be
+ statically linked to science apps and not necessary for end user.
+
+-------------------------------------------------------------------
+Sun Mar 27 22:13:10 UTC 2016 - aaronpuchert@alice-dsl.net
+
+- Update to version 7.6.22. The main advantage: GPUs running on
+ the open source stack (Mesa) are now recognized and can be used
+ for BOINC. Additional packages are needed though:
+ * libOpenCL1,
+ * libMesaOpenCL,
+ * libclc.
+ Further, the GPU device in /dev/dri needs to have r+w rights for
+ the BOINC user, since it doesn't have access to the X session.
+- Fetch from GitHub instead of SVN, removed the fetch script
+- Rebased all patches, removed obsolete boinc-LC_MESSAGES.patch
+- Fixed compiler errors because openSUSEs wxWidgets is configured
+ with wxUSE_STL=1, which is incompatible with BOINC. There is an
+ open issue on GitHub: https://github.com/BOINC/boinc/issues/1515.
+- Building the manager and locales separately is no longer
+ necessary.
+- The icons seem to have disappeared.
+- The BOINC manager should be called with the data directory
+ instead of the binary directory. Otherwise it can't connect.
+
-------------------------------------------------------------------
Wed Jun 24 10:53:06 UTC 2015 - jengelh@inai.de
diff --git a/boinc-client.spec b/boinc-client.spec
index 6cc2027..134e897 100644
--- a/boinc-client.spec
+++ b/boinc-client.spec
@@ -1,7 +1,8 @@
#
# spec file for package boinc-client
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 by Aaron Puchert
# Copyright (c) 2011 by Sascha Manns
#
# All modifications and additions to the file contributed by third parties
@@ -19,40 +20,22 @@
# Global definitions
%define _use_internal_dependency_generator 0
-%define __find_requires %{wx_requires}
%define soname 7
%define boinc_dir %{_localstatedir}/lib/boinc
Name: boinc-client
-Version: 7.2.42
+Version: 7.6.22
Release: 0
Summary: The BOINC client
License: GPL-3.0+ or LGPL-3.0+
Group: Productivity/Clustering/Computing
Url: http://boinc.berkeley.edu/
-# There is no real tarball, hence I did
-#
-# git clone git://boinc.berkeley.edu/boinc.git
-# git checkout master
-# git checkout -t client_release/7.2/7.2.42
-#
-# then I created an archive via git
-#
-# git archive -v --format=tar --prefix=boinc-7.2.42/ \
-# client_release/7.2/7.2.42 | bzip2 >../boinc-7.2.42.tar.bz2
-Source0: boinc-%{version}.tar.bz2
+Source0: %{name}_release-7.6-%{version}.tar.gz
Source1: boinc-icons.tar.bz2
Source2: boinc-gui.desktop
Source3: README.SUSE
Source4: sysconfig.%{name}
Source5: boinc-logrotate
Source6: boinc-manager
-# The source for this package was pulled from upstream's vcs. Use the
-# following commands to generate the tarball:
-#
-# ./generate-tarball.sh boinc_core_release_VERSION
-#
-# Trim all binaries and other unnecessary things.
-Source8: generate-tarball.sh
Source20: %{name}.service
Source100: %{name}-rpmlintrc
# PATCH-FIX-OPENSUSE boinc-guirpcauth.patch
@@ -61,8 +44,6 @@ Source100: %{name}-rpmlintrc
# This won't be probably upstreamed as it might be unsafe for common usage
# without setting proper group ownership of the password file.
Patch0: boinc-guirpcauth.patch
-# PATCH-FIX-OPENSUSE boinc-LC_MESSAGES.patch
-Patch2: boinc-LC_MESSAGES.patch
# PATCH-FIX-OPENSUSE boinc-docbook2x.patch
Patch4: boinc-docbook2x.patch
# PATCH-FIX-OPENSUSE coolo - #error: am__fastdepOBJCXX does not appear in AM_CONDITIONAL
@@ -71,6 +52,15 @@ Patch7: %{name}-AM_CONDITIONAL.patch
# configure.ac:898: required file `test/version.inc.in' not found
# configure.ac:898: required file `py/Boinc/version.py.in' not found
Patch8: boinc-configure.patch
+# PATCH-FIX-UPSTREAM boinc-remove-dead-code.patch
+# This is a cherry-pick of commit 1c4f391 and removes dead code that wouldn't
+# compile on openSUSE
+Patch9: boinc-remove-dead-code.patch
+# PATCH-FIX-UPSTREAM boinc-use-wxstring.patch
+# This is a squashed cherry-pick of the commits 9604566, b7cc65a and 8c11cad.
+# This solves the remaining compiler errors on openSUSE by replacing naked
+# char* and wxChar* by wxStrings.
+Patch10: boinc-use-wxstring.patch
BuildRequires: Mesa-devel
BuildRequires: docbook2x
BuildRequires: docbook_4
@@ -84,21 +74,14 @@ BuildRequires: libjpeg-devel
BuildRequires: libnotify-devel
BuildRequires: libtool
BuildRequires: libxslt
-BuildRequires: mysql-devel
BuildRequires: openssl-devel
BuildRequires: pkg-config
BuildRequires: pwdutils
-BuildRequires: python-mysql
BuildRequires: sqlite3-devel
BuildRequires: systemd
BuildRequires: update-desktop-files
-BuildRequires: wxWidgets-devel >= 2.8.0
+BuildRequires: wxWidgets-3_0-devel >= 3.0.2
BuildRequires: xorg-x11-libXmu-devel
-### FIXME:
-## updating boinc-client or boinc-manager does not update libboinc6
-## hence we define this dependency
-## !! Do not remove this dependency !!
-Requires: libboinc%{soname} = %{version}-%{release}
Recommends: boinc-client-lang = %{version}
Recommends: logrotate
Requires(pre): pwdutils
@@ -146,7 +129,6 @@ in which all information and all control elements are available.
Summary: Development files for boinc-client
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}-%{release}
-Requires: mysql-devel
Requires: openssl-devel
%description devel
@@ -172,30 +154,19 @@ BuildArch: noarch
This package contains documentation files for %{name}.
%prep
-%setup -q -n boinc-%{version} -D -a 1
+%setup -q -n %{name}_release-7.6-%{version} -D -a 1
%patch0
-%patch2
%patch4
%patch7
%patch8
+%patch9 -p1
+%patch10 -p1
# Install user hints
install -m0644 %{SOURCE3} README.SUSE
# Fix lang directories (refer patch2)
mv locale/pt_PT locale/pt
-mv locale/sv_SE locale/sv
-
-# fix warning: deprecated conversion from string constant to 'char*'
-pushd clientgui/common/
-sed -i 's/static char/static const char/g' wxFlatNotebookImages.h
-popd
-pushd clientgui/res/
-sed -i 's/static char/static const char/g' *.xpm
-popd
-pushd clientgui/res/skins/default/graphic/
-sed -i 's/static char/static const char/g' *.xpm
-popd
# fix utf8
iconv -f ISO88591 -t UTF8 < checkin_notes_2005 > checkin_notes_2005.utf8
@@ -214,13 +185,10 @@ mv checkin_notes_2010.utf8 checkin_notes_2010
chmod 644 clientgui/{DlgItemProperties.h,AsyncRPC.cpp,DlgItemProperties.cpp}
sed -i 's/\r//' clientgui/DlgItemProperties.cpp
-### bnc#745656
## remove files with questionable licenses
# removing NVIDIA owned file that does not clearly allow redistribution or
# modification
rm coprocs/NVIDIA/include/nvapi.h
-# removing unnecessary APSL licensed files
-rm client/app_stats_mac.cpp
%build
#remove run libtoolize and ./_autosetup
@@ -228,6 +196,8 @@ rm client/app_stats_mac.cpp
./_autosetup
%configure \
+ --enable-optimize \
+ --enable-shared \
--disable-static \
--enable-dynamic-client-linkage \
--disable-server \
@@ -247,22 +217,6 @@ make libboinc_la_LIBADD="-L%{_libdir} -lssl -ldl" \
CXXFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT" \
DESTDIR=%{_prefix} %{?_smp_mflags}
-### hmm, boincmgr is not build by default (but stated in configure)
-# BOINC Default enable values
-# --enable-server --enable-client --enable-libraries
-# --enable-manager: builds server, client, and libraries
-#
-# hence we jump into clientgui and build it manually
-pushd clientgui
-make libboinc_la_LIBADD="-L%{_libdir} -lssl -ldl" \
- CFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT -lgtk-x11-2.0" \
- CXXFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT -lgtk-x11-2.0" \
- DESTDIR=%{_prefix} %{?_smp_mflags}
-popd
-pushd locale
-make %{?_smp_mflags}
-popd
-
%install
make DESTDIR=%{buildroot} install %{?_smp_mflags}
for i in clientgui locale; do
@@ -322,11 +276,6 @@ install -Dm0644 boinc-gui-32.png %{buildroot}%{_datadir}/icons/hicolor/32x32/app
install -Dm0644 boinc-gui-22.png %{buildroot}%{_datadir}/icons/hicolor/22x22/apps/boinc-gui.png
install -Dm0644 boinc-gui-16.png %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/boinc-gui.png
-# install icons
-install -m0644 clientgui/res/boincmgr.16x16.png %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/boincmanager.png
-install -m0644 clientgui/res/boincmgr.32x32.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/boincmanager.png
-install -m0644 clientgui/res/boincmgr.48x48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/boincmanager.png
-
# Install *.desktop File
%suse_update_desktop_file -i boinc-gui Utility
diff --git a/boinc-configure.patch b/boinc-configure.patch
index 0b83522..5069f36 100644
--- a/boinc-configure.patch
+++ b/boinc-configure.patch
@@ -2,7 +2,7 @@ Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
-@@ -968,7 +968,6 @@ AC_CONFIG_FILES([
+@@ -1305,7 +1305,6 @@ AC_CONFIG_FILES([
lib/Makefile
locale/Makefile
Makefile
@@ -10,8 +10,8 @@ Index: configure.ac
py/Makefile
py/boinc_path_config.py:py/boinc_path_config.py.in
py/setup.py
-@@ -990,7 +989,6 @@ AC_CONFIG_FILES([
- packages/solaris/CSW/boincmanager/prototype
+@@ -1328,7 +1327,6 @@ AC_CONFIG_FILES([
+ samples/Makefile
test/boinc_path_config.py:py/boinc_path_config.py.in
test/Makefile
- test/version.inc
diff --git a/boinc-docbook2x.patch b/boinc-docbook2x.patch
index 68a5c1d..fe8f2b0 100644
--- a/boinc-docbook2x.patch
+++ b/boinc-docbook2x.patch
@@ -2,7 +2,7 @@ Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
-@@ -297,7 +297,7 @@ AC_SUBST([TOP_BUILD_DIR], [`pwd`])
+@@ -333,7 +333,7 @@ AC_SUBST([TOP_BUILD_DIR], [`pwd`])
dnl Check for docbook2x-man, which we use to create the manpages in
dnl doc/manpages, and set the conditional HAVE_DOCBOOK2X_MAN to build
dnl the manpages only if docbook2x-man is available.
diff --git a/boinc-guirpcauth.patch b/boinc-guirpcauth.patch
index 92b7b5c..4d784b1 100644
--- a/boinc-guirpcauth.patch
+++ b/boinc-guirpcauth.patch
@@ -2,7 +2,7 @@ Index: client/gui_rpc_server.cpp
===================================================================
--- client/gui_rpc_server.cpp.orig
+++ client/gui_rpc_server.cpp
-@@ -169,12 +169,7 @@ void GUI_RPC_CONN_SET::get_password() {
+@@ -175,12 +175,7 @@ void GUI_RPC_CONN_SET::get_password() {
// they can cause code to execute as this user.
// So better protect it.
//
diff --git a/boinc-manager b/boinc-manager
index 8f72960..31b1670 100644
--- a/boinc-manager
+++ b/boinc-manager
@@ -7,4 +7,4 @@ if ! test -f ~/gui_rpc_auth.cfg ; then
ln -s @boinc_dir@/gui_rpc_auth.cfg ~/.
fi
-exec boinc-gui -e @bindir@
+exec boinc-gui -d @boinc_dir@
diff --git a/boinc-remove-dead-code.patch b/boinc-remove-dead-code.patch
new file mode 100644
index 0000000..732ffc9
--- /dev/null
+++ b/boinc-remove-dead-code.patch
@@ -0,0 +1,465 @@
+diff --git a/clientgui/AdvancedFrame.cpp b/clientgui/AdvancedFrame.cpp
+index e9b08e8..5c41497 100644
+--- a/clientgui/AdvancedFrame.cpp
++++ b/clientgui/AdvancedFrame.cpp
+@@ -199,7 +199,6 @@ BEGIN_EVENT_TABLE (CAdvancedFrame, CBOINCBaseFrame)
+ // Custom Events & Timers
+ EVT_FRAME_CONNECT(CAdvancedFrame::OnConnect)
+ EVT_FRAME_NOTIFICATION(CAdvancedFrame::OnNotification)
+- EVT_FRAME_UPDATESTATUS(CAdvancedFrame::OnUpdateStatus)
+ EVT_TIMER(ID_REFRESHSTATETIMER, CAdvancedFrame::OnRefreshState)
+ EVT_TIMER(ID_FRAMERENDERTIMER, CAdvancedFrame::OnFrameRender)
+ EVT_NOTEBOOK_PAGE_CHANGED(ID_FRAMENOTEBOOK, CAdvancedFrame::OnNotebookSelectionChanged)
+@@ -1951,16 +1950,6 @@ void CAdvancedFrame::OnNotification(CFrameEvent& WXUNUSED(event)) {
+ }
+
+
+-void CAdvancedFrame::OnUpdateStatus(CFrameEvent& event) {
+- wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnUpdateStatus - Function Begin"));
+-
+- m_pStatusbar->SetStatusText(event.m_message);
+- ::wxSleep(0);
+-
+- wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnUpdateStatus - Function End"));
+-}
+-
+-
+ void CAdvancedFrame::OnRefreshState(wxTimerEvent& WXUNUSED(event)) {
+ wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnRefreshState - Function Begin"));
+
+diff --git a/clientgui/AdvancedFrame.h b/clientgui/AdvancedFrame.h
+index a44bce9..4ddfc60 100644
+--- a/clientgui/AdvancedFrame.h
++++ b/clientgui/AdvancedFrame.h
+@@ -98,8 +98,6 @@ public:
+ void OnConnect( CFrameEvent& event );
+ void OnNotification( CFrameEvent& event );
+
+- void OnUpdateStatus( CFrameEvent& event );
+-
+ void ResetReminderTimers();
+
+ bool RestoreState();
+diff --git a/clientgui/BOINCBaseFrame.h b/clientgui/BOINCBaseFrame.h
+index 3e226bf..0d4ef92 100644
+--- a/clientgui/BOINCBaseFrame.h
++++ b/clientgui/BOINCBaseFrame.h
+@@ -87,8 +87,6 @@ public:
+ virtual void StopTimers();
+ virtual void UpdateRefreshTimerInterval();
+
+- inline void UpdateStatusText( const wxChar* ){}
+-
+ void ShowAlert(
+ const wxString title,
+ const wxString message,
+diff --git a/clientgui/MainDocument.cpp b/clientgui/MainDocument.cpp
+index 9fa22c4..fa7b953 100644
+--- a/clientgui/MainDocument.cpp
++++ b/clientgui/MainDocument.cpp
+@@ -581,7 +581,6 @@ int CMainDocument::OnPoll() {
+ }
+
+ if (IsComputerNameLocal(hostName)) {
+- pFrame->UpdateStatusText(_("Starting client"));
+ if (m_pClientManager->StartupBOINCCore()) {
+ Connect(wxT("localhost"), portNum, password, TRUE, TRUE);
+ } else {
+@@ -589,11 +588,8 @@ int CMainDocument::OnPoll() {
+ pFrame->ShowDaemonStartFailedAlert();
+ }
+ } else {
+- pFrame->UpdateStatusText(_("Connecting to client"));
+ Connect(hostName, portNum, password, TRUE, password.IsEmpty());
+ }
+-
+- pFrame->UpdateStatusText(wxEmptyString);
+ }
+
+ // Check connection state, connect if needed.
+@@ -1203,7 +1199,6 @@ int CMainDocument::ForceCacheUpdate(bool immediate) {
+
+ if (IsConnected()) {
+ wxASSERT(wxDynamicCast(pFrame, CBOINCBaseFrame));
+- pFrame->UpdateStatusText(_("Retrieving system state; please wait..."));
+
+ m_dtCachedStateTimestamp = wxDateTime::Now();
+ m_iGet_state_rpc_result = rpc.get_state(state);
+@@ -1213,7 +1208,6 @@ int CMainDocument::ForceCacheUpdate(bool immediate) {
+ m_pNetworkConnection->SetStateDisconnected();
+ }
+
+- pFrame->UpdateStatusText(wxEmptyString);
+ } else {
+ retval = -1;
+ }
+diff --git a/clientgui/ViewProjects.cpp b/clientgui/ViewProjects.cpp
+index e7be8ba..d63f622 100644
+--- a/clientgui/ViewProjects.cpp
++++ b/clientgui/ViewProjects.cpp
+@@ -390,7 +390,6 @@ void CViewProjects::OnProjectUpdate( wxCommandEvent& WXUNUSED(event) ) {
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+ wxASSERT(m_pListPane);
+
+- pFrame->UpdateStatusText(_("Updating project..."));
+ row = -1;
+ while (1) {
+ // Step through all selected items
+@@ -399,7 +398,6 @@ void CViewProjects::OnProjectUpdate( wxCommandEvent& WXUNUSED(event) ) {
+
+ pDoc->ProjectUpdate(m_iSortedIndexes[row]);
+ }
+- pFrame->UpdateStatusText(wxT(""));
+
+ m_bForceUpdateSelection = true;
+ UpdateSelection();
+@@ -432,13 +430,9 @@ void CViewProjects::OnProjectSuspend( wxCommandEvent& WXUNUSED(event) ) {
+ PROJECT* project = pDoc->project(m_iSortedIndexes[row]);
+ if (project) {
+ if (project->suspended_via_gui) {
+- pFrame->UpdateStatusText(_("Resuming project..."));
+ pDoc->ProjectResume(m_iSortedIndexes[row]);
+- pFrame->UpdateStatusText(wxT(""));
+ } else {
+- pFrame->UpdateStatusText(_("Suspending project..."));
+ pDoc->ProjectSuspend(m_iSortedIndexes[row]);
+- pFrame->UpdateStatusText(wxT(""));
+ }
+ }
+ }
+@@ -473,13 +467,9 @@ void CViewProjects::OnProjectNoNewWork( wxCommandEvent& WXUNUSED(event) ) {
+ PROJECT* project = pDoc->project(m_iSortedIndexes[row]);
+ if (project) {
+ if (project->dont_request_more_work) {
+- pFrame->UpdateStatusText(_("Telling project to allow additional task downloads..."));
+ pDoc->ProjectAllowMoreWork(m_iSortedIndexes[row]);
+- pFrame->UpdateStatusText(wxT(""));
+ } else {
+- pFrame->UpdateStatusText(_("Telling project to not fetch any additional tasks..."));
+ pDoc->ProjectNoMoreWork(m_iSortedIndexes[row]);
+- pFrame->UpdateStatusText(wxT(""));
+ }
+ }
+ }
+@@ -513,8 +503,6 @@ void CViewProjects::OnProjectReset( wxCommandEvent& WXUNUSED(event) ) {
+ if (!pDoc->IsUserAuthorized())
+ return;
+
+- pFrame->UpdateStatusText(_("Resetting project..."));
+-
+ row = -1;
+ while (1) {
+ // Step through all selected items
+@@ -542,8 +530,6 @@ void CViewProjects::OnProjectReset( wxCommandEvent& WXUNUSED(event) ) {
+ }
+ }
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ m_bForceUpdateSelection = true;
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -571,8 +557,6 @@ void CViewProjects::OnProjectDetach( wxCommandEvent& WXUNUSED(event) ) {
+ if (!pDoc->IsUserAuthorized())
+ return;
+
+- pFrame->UpdateStatusText(_("Removing project..."));
+-
+ row = -1;
+ while (1) {
+ // Step through all selected items
+@@ -600,8 +584,6 @@ void CViewProjects::OnProjectDetach( wxCommandEvent& WXUNUSED(event) ) {
+ }
+ }
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ m_bForceUpdateSelection = true;
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -631,15 +613,12 @@ void CViewProjects::OnProjectWebsiteClicked( wxEvent& event ) {
+
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+- pFrame->UpdateStatusText(_("Launching browser..."));
+
+ int website_task_index = event.GetId() - ID_TASK_PROJECT_WEB_PROJDEF_MIN;
+ wxLaunchDefaultBrowser(
+ m_TaskGroups[1]->m_Tasks[website_task_index]->m_strWebSiteLink
+ );
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ UpdateSelection();
+ pFrame->FireRefreshView();
+
+diff --git a/clientgui/ViewStatistics.cpp b/clientgui/ViewStatistics.cpp
+index 6706d84..83564ce 100644
+--- a/clientgui/ViewStatistics.cpp
++++ b/clientgui/ViewStatistics.cpp
+@@ -2074,12 +2074,10 @@ void CViewStatistics::OnStatisticsUserTotal( wxCommandEvent& WXUNUSED(event) ) {
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ m_PaintStatistics->m_SelectedStatistic = show_user_total;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+ m_PaintStatistics->m_full_repaint = true;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2095,12 +2093,10 @@ void CViewStatistics::OnStatisticsUserAverage( wxCommandEvent& WXUNUSED(event) )
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ m_PaintStatistics->m_SelectedStatistic = show_user_average;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+ m_PaintStatistics->m_full_repaint = true;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2116,12 +2112,10 @@ void CViewStatistics::OnStatisticsHostTotal( wxCommandEvent& WXUNUSED(event) ) {
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ m_PaintStatistics->m_SelectedStatistic = show_host_total;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+ m_PaintStatistics->m_full_repaint = true;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2138,12 +2132,10 @@ void CViewStatistics::OnStatisticsHostAverage( wxCommandEvent& WXUNUSED(event) )
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ m_PaintStatistics->m_SelectedStatistic = show_host_average;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+ m_PaintStatistics->m_full_repaint = true;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2159,12 +2151,10 @@ void CViewStatistics::OnStatisticsModeViewAllSeparate( wxCommandEvent& WXUNUSED(
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ m_PaintStatistics->m_ModeViewStatistic = mode_all_separate;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+ m_PaintStatistics->m_full_repaint = true;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2180,12 +2170,10 @@ void CViewStatistics::OnStatisticsModeViewOneProject( wxCommandEvent& WXUNUSED(e
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ m_PaintStatistics->m_ModeViewStatistic = mode_one_project;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+ m_PaintStatistics->m_full_repaint = true;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2201,12 +2189,10 @@ void CViewStatistics::OnStatisticsModeViewAllTogether( wxCommandEvent& WXUNUSED(
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ m_PaintStatistics->m_ModeViewStatistic = mode_all_together;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+ m_PaintStatistics->m_full_repaint = true;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2222,12 +2208,10 @@ void CViewStatistics::OnStatisticsModeViewSum( wxCommandEvent& WXUNUSED(event) )
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ m_PaintStatistics->m_ModeViewStatistic = mode_sum;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+ m_PaintStatistics->m_full_repaint = true;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2243,7 +2227,6 @@ void CViewStatistics::OnStatisticsNextProject( wxCommandEvent& WXUNUSED(event) )
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ if (m_PaintStatistics->m_ModeViewStatistic == mode_one_project) m_PaintStatistics->m_NextProjectStatistic++;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+@@ -2251,7 +2234,6 @@ void CViewStatistics::OnStatisticsNextProject( wxCommandEvent& WXUNUSED(event) )
+ if (m_PaintStatistics->m_ModeViewStatistic == mode_all_separate) m_PaintStatistics->m_Legend_Shift_Mode2++;
+ if (m_PaintStatistics->m_ModeViewStatistic == mode_all_together) m_PaintStatistics->m_Legend_Shift_Mode2++;
+ if (m_PaintStatistics->m_ModeViewStatistic == mode_sum) m_PaintStatistics->m_Legend_Shift_Mode2++;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+@@ -2267,7 +2249,6 @@ void CViewStatistics::OnStatisticsPrevProject( wxCommandEvent& WXUNUSED(event) )
+ wxASSERT(pFrame);
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+
+- pFrame->UpdateStatusText(_("Updating charts..."));
+ if (m_PaintStatistics->m_ModeViewStatistic == mode_one_project) m_PaintStatistics->m_NextProjectStatistic--;
+ m_PaintStatistics->m_Zoom_Auto = true;
+ m_PaintStatistics->m_GraphMarker1 = false;
+@@ -2275,7 +2256,6 @@ void CViewStatistics::OnStatisticsPrevProject( wxCommandEvent& WXUNUSED(event) )
+ if (m_PaintStatistics->m_ModeViewStatistic == mode_all_separate) m_PaintStatistics->m_Legend_Shift_Mode2--;
+ if (m_PaintStatistics->m_ModeViewStatistic == mode_all_together) m_PaintStatistics->m_Legend_Shift_Mode2--;
+ if (m_PaintStatistics->m_ModeViewStatistic == mode_sum) m_PaintStatistics->m_Legend_Shift_Mode2--;
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->FireRefreshView();
+diff --git a/clientgui/ViewTransfers.cpp b/clientgui/ViewTransfers.cpp
+index cc2c4da..fc54121 100644
+--- a/clientgui/ViewTransfers.cpp
++++ b/clientgui/ViewTransfers.cpp
+@@ -381,7 +381,6 @@ void CViewTransfers::OnTransfersRetryNow( wxCommandEvent& WXUNUSED(event) ) {
+ return;
+ }
+
+- pFrame->UpdateStatusText(_("Retrying transfer now..."));
+ row = -1;
+ while (1) {
+ // Step through all selected items
+@@ -390,7 +389,6 @@ void CViewTransfers::OnTransfersRetryNow( wxCommandEvent& WXUNUSED(event) ) {
+
+ pDoc->TransferRetryNow(m_iSortedIndexes[row]);
+ }
+- pFrame->UpdateStatusText(wxT(""));
+
+ UpdateSelection();
+ pFrame->ResetReminderTimers();
+@@ -419,8 +417,6 @@ void CViewTransfers::OnTransfersAbort( wxCommandEvent& WXUNUSED(event) ) {
+ if (!pDoc->IsUserAuthorized())
+ return;
+
+- pFrame->UpdateStatusText(_("Aborting transfer..."));
+-
+ row = -1;
+ while (1) {
+ // Step through all selected items
+@@ -448,8 +444,6 @@ void CViewTransfers::OnTransfersAbort( wxCommandEvent& WXUNUSED(event) ) {
+ }
+ }
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ UpdateSelection();
+ pFrame->FireRefreshView();
+
+diff --git a/clientgui/ViewWork.cpp b/clientgui/ViewWork.cpp
+index cdc7147..a48548f 100644
+--- a/clientgui/ViewWork.cpp
++++ b/clientgui/ViewWork.cpp
+@@ -451,17 +451,13 @@ void CViewWork::OnWorkSuspend( wxCommandEvent& WXUNUSED(event) ) {
+ RESULT* result = pDoc->result(m_iSortedIndexes[row]);
+ if (result) {
+ if (result->suspended_via_gui) {
+- pFrame->UpdateStatusText(_("Resuming task..."));
+ pDoc->WorkResume(result->project_url, result->name);
+ } else {
+- pFrame->UpdateStatusText(_("Suspending task..."));
+ pDoc->WorkSuspend(result->project_url, result->name);
+ }
+ }
+ }
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ UpdateSelection();
+ pFrame->FireRefreshView();
+
+@@ -483,8 +479,6 @@ void CViewWork::OnWorkShowGraphics( wxCommandEvent& WXUNUSED(event) ) {
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+ wxASSERT(m_pListPane);
+
+- pFrame->UpdateStatusText(_("Showing graphics for task..."));
+-
+ row = -1;
+ while (1) {
+ // Step through all selected items
+@@ -497,8 +491,6 @@ void CViewWork::OnWorkShowGraphics( wxCommandEvent& WXUNUSED(event) ) {
+ }
+ }
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ UpdateSelection();
+ pFrame->FireRefreshView();
+
+@@ -520,8 +512,6 @@ void CViewWork::OnWorkShowVMConsole( wxCommandEvent& WXUNUSED(event) ) {
+ wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame));
+ wxASSERT(m_pListPane);
+
+- pFrame->UpdateStatusText(_("Showing VM console for task..."));
+-
+ row = -1;
+ while (1) {
+ // Step through all selected items
+@@ -534,8 +524,6 @@ void CViewWork::OnWorkShowVMConsole( wxCommandEvent& WXUNUSED(event) ) {
+ }
+ }
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ UpdateSelection();
+ pFrame->FireRefreshView();
+
+@@ -593,8 +581,6 @@ void CViewWork::OnWorkAbort( wxCommandEvent& WXUNUSED(event) ) {
+ return;
+ }
+
+- pFrame->UpdateStatusText(_("Aborting task..."));
+-
+ row = -1;
+ while (1) {
+ // Step through all selected items
+@@ -607,8 +593,6 @@ void CViewWork::OnWorkAbort( wxCommandEvent& WXUNUSED(event) ) {
+ }
+ }
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ UpdateSelection();
+ pFrame->FireRefreshView();
+
+@@ -693,15 +677,11 @@ void CViewWork::OnProjectWebsiteClicked( wxEvent& event ) {
+ wxASSERT(m_pTaskPane);
+ wxASSERT(m_pListPane);
+
+- pFrame->UpdateStatusText(_("Launching browser..."));
+-
+ int website_task_index = event.GetId() - ID_TASK_PROJECT_WEB_PROJDEF_MIN;
+ wxLaunchDefaultBrowser(
+ m_TaskGroups[1]->m_Tasks[website_task_index]->m_strWebSiteLink
+ );
+
+- pFrame->UpdateStatusText(wxT(""));
+-
+ UpdateSelection();
+ pFrame->FireRefreshView();
+
diff --git a/boinc-use-wxstring.patch b/boinc-use-wxstring.patch
new file mode 100644
index 0000000..44e4447
--- /dev/null
+++ b/boinc-use-wxstring.patch
@@ -0,0 +1,141 @@
+diff --git a/clientgui/BOINCBaseView.cpp b/clientgui/BOINCBaseView.cpp
+index 0c64159..4337afc 100644
+--- a/clientgui/BOINCBaseView.cpp
++++ b/clientgui/BOINCBaseView.cpp
+@@ -913,11 +913,11 @@ void CBOINCBaseView::AppendColumn(int){
+ }
+
+
+-void CBOINCBaseView::append_to_status(wxString& existing, const wxChar* additional) {
++void CBOINCBaseView::append_to_status(wxString& existing, const wxString& additional) {
+ if (existing.size() == 0) {
+ existing = additional;
+ } else {
+- existing = existing + wxT(", ") + additional;
++ existing += wxT(", ") + additional;
+ }
+ }
+
+diff --git a/clientgui/BOINCBaseView.h b/clientgui/BOINCBaseView.h
+index 811fecb..c7b4fb9 100644
+--- a/clientgui/BOINCBaseView.h
++++ b/clientgui/BOINCBaseView.h
+@@ -193,7 +193,7 @@ protected:
+ bool _EnsureLastItemVisible();
+ virtual bool EnsureLastItemVisible();
+
+- static void append_to_status(wxString& existing, const wxChar* additional);
++ static void append_to_status(wxString& existing, const wxString& additional);
+ static wxString HtmlEntityEncode(wxString strRaw);
+ static wxString HtmlEntityDecode(wxString strRaw);
+
+diff --git a/clientgui/BOINCGUIApp.cpp b/clientgui/BOINCGUIApp.cpp
+index 5674029..91d387a 100644
+--- a/clientgui/BOINCGUIApp.cpp
++++ b/clientgui/BOINCGUIApp.cpp
+@@ -626,27 +626,23 @@ void CBOINCGUIApp::SaveState() {
+ ///
+ void CBOINCGUIApp::OnInitCmdLine(wxCmdLineParser &parser) {
+ wxApp::OnInitCmdLine(parser);
+- static const wxCmdLineEntryDesc cmdLineDesc[] = {
+- { wxCMD_LINE_SWITCH, "a", "autostart", _("BOINC Manager was started by the operating system automatically")},
++ parser.AddSwitch("a", "autostart", _("BOINC Manager was started by the operating system automatically"));
+ #if defined(__WXMSW__) || defined(__WXMAC__)
+- { wxCMD_LINE_SWITCH, "s", "systray", _("Startup BOINC so only the system tray icon is visible")},
++ parser.AddSwitch("s", "systray", _("Startup BOINC so only the system tray icon is visible"));
+ #else
+- { wxCMD_LINE_OPTION, "e", "clientdir", _("Directory containing the BOINC Client executable")},
+- { wxCMD_LINE_OPTION, "d", "datadir", _("BOINC data directory")},
++ parser.AddOption("e", "clientdir", _("Directory containing the BOINC Client executable"));
++ parser.AddOption("d", "datadir", _("BOINC data directory"));
+ #endif
+- { wxCMD_LINE_OPTION, "n", "namehost", _("Host name or IP address")},
+- { wxCMD_LINE_OPTION, "g", "gui_rpc_port", _("GUI RPC port number")},
+- { wxCMD_LINE_OPTION, "p", "password", _("Password")},
+- { wxCMD_LINE_OPTION, "b", "boincargs", _("Startup BOINC with these optional arguments")},
+- { wxCMD_LINE_SWITCH, "i","insecure", _("disable BOINC security users and permissions")},
+- { wxCMD_LINE_SWITCH, "c", "checkskins", _("set skin debugging mode to enable skin manager error messages")},
+- { wxCMD_LINE_SWITCH, "m", "multiple", _("multiple instances of BOINC Manager allowed")},
++ parser.AddOption("n", "namehost", _("Host name or IP address"));
++ parser.AddOption("g", "gui_rpc_port", _("GUI RPC port number"));
++ parser.AddOption("p", "password", _("Password"));
++ parser.AddOption("b", "boincargs", _("Startup BOINC with these optional arguments"));
++ parser.AddSwitch("i", "insecure", _("disable BOINC security users and permissions"));
++ parser.AddSwitch("c", "checkskins", _("set skin debugging mode to enable skin manager error messages"));
++ parser.AddSwitch("m", "multiple", _("multiple instances of BOINC Manager allowed"));
+ #if (defined(__WXMAC__) && defined(_DEBUG))
+- { wxCMD_LINE_OPTION, "NSDocumentRevisionsDebugMode", NULL, _("Not used: workaround for bug in XCode 4.2")},
++ parser.AddLongOption("NSDocumentRevisionsDebugMode", _("Not used: workaround for bug in XCode 4.2"));
+ #endif
+- { wxCMD_LINE_NONE} //DON'T forget this line!!
+- };
+- parser.SetDesc(cmdLineDesc);
+ }
+
+
+diff --git a/clientgui/MainDocument.cpp b/clientgui/MainDocument.cpp
+index fa7b953..1b0c165 100644
+--- a/clientgui/MainDocument.cpp
++++ b/clientgui/MainDocument.cpp
+@@ -273,7 +273,7 @@ bool CNetworkConnection::IsComputerNameLocal(const wxString& strMachine) {
+
+
+ int CNetworkConnection::SetComputer(
+- const wxChar* szComputer, const int iPort, const wxChar* szPassword,
++ const wxString& szComputer, const int iPort, const wxString& szPassword,
+ const bool bUseDefaultPassword
+ ) {
+ m_strNewComputerName.Empty();
+@@ -641,7 +641,7 @@ int CMainDocument::ResetState() {
+ }
+
+
+-int CMainDocument::Connect(const wxChar* szComputer, int iPort, const wxChar* szComputerPassword, const bool bDisconnect, const bool bUseDefaultPassword) {
++int CMainDocument::Connect(const wxString& szComputer, int iPort, const wxString& szComputerPassword, const bool bDisconnect, const bool bUseDefaultPassword) {
+ if (IsComputerNameLocal(szComputer)) {
+ // Restart client if not already running
+ m_pClientManager->AutoRestart();
+@@ -687,7 +687,7 @@ int CMainDocument::GetConnectingComputerName(wxString& strMachine) {
+ }
+
+
+-bool CMainDocument::IsComputerNameLocal(const wxString strMachine) {
++bool CMainDocument::IsComputerNameLocal(const wxString& strMachine) {
+ return m_pNetworkConnection->IsComputerNameLocal(strMachine);
+ }
+
+diff --git a/clientgui/MainDocument.h b/clientgui/MainDocument.h
+index 3b88571..90c10b5 100644
+--- a/clientgui/MainDocument.h
++++ b/clientgui/MainDocument.h
+@@ -75,8 +75,7 @@ public:
+ bool IsComputerNameLocal(const wxString& strMachine);
+ int GetLocalPassword(wxString& strPassword);
+ int SetComputer(
+- const wxChar* szComputer, const int iPort, const wxChar* szPassword,
+- const bool bUseDefaultPassword
++ const wxString& szComputer, const int iPort, const wxString& szPassword, const bool bUseDefaultPassword
+ );
+ void SetStateError();
+ void SetStateErrorAuthentication();
+@@ -134,9 +133,9 @@ public:
+ int ResetState();
+
+ int Connect(
+- const wxChar* szComputer,
++ const wxString& szComputer,
+ const int iPort,
+- const wxChar* szComputerPassword = wxEmptyString,
++ const wxString& szComputerPassword = wxEmptyString,
+ const bool bDisconnect = FALSE,
+ const bool bUseDefaultPassword = FALSE
+ );
+@@ -152,7 +151,7 @@ public:
+ int GetConnectedComputerName(wxString& strMachine);
+ int GetConnectedComputerVersion(wxString& strVersion);
+ int GetConnectingComputerName(wxString& strMachine);
+- bool IsComputerNameLocal(const wxString strMachine);
++ bool IsComputerNameLocal(const wxString& strMachine);
+ bool IsConnected();
+ bool IsReconnecting();
+
diff --git a/generate-tarball.sh b/generate-tarball.sh
deleted file mode 100644
index a256b1c..0000000
--- a/generate-tarball.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-VERSION=$1
-
-svn co http://boinc.berkeley.edu/svn/tags/boinc_core_release_$VERSION boinc_core_release_$VERSION
-if [ -z $1 ]; then
- echo "No path specified: use \"trim [PATH_TO_SOURCE_TOP_DIR]\"";
- exit 1;
- fi
-
- # remove all binaries and other unnecessary things
-
- echo "Trimming directories..."
-
- DIRS="win_build html openssl client/os2 client/win clientgui/mac clientlib clienttray curl/include curl/mswin curl/patches lib/mac mac_build mac_installer zip/zip/macos zip/zip/win32 zip/unzip/macos zip/unzip/win32 zlib RSAEuro stripchart coprocs"
-
- for DIR in $DIRS; do
- /bin/rm -rf $1/$DIR;
- echo $1/$DIR;
- done
-
- echo "Trimming wxWidgets translations..."
-
- # remove wxWidgets translations
- find $1/locale -name wxstd.mo -delete
-
- echo "Done."
-
-tar -cvjf boinc_core_release-$VERSION.tar.bz2 boinc_core_release_$VERSION --exclude=.svn