From ef78291730d22393d5b1d4b938ff14bd76f67940 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Sat, 21 Apr 2018 12:22:33 +0200 Subject: [PATCH] Update some old copyrights --- bacula/src/win32/Makefile.full | 12 ++++-- bacula/src/win32/README.mingw | 26 ++++++------ bacula/src/win32/compat/winsock.h | 2 + bacula/src/win32/filed/plugins/Makefile | 4 ++ bacula/src/win32/filed/plugins/api.c | 31 +++++--------- bacula/src/win32/filed/plugins/dbi_node.c | 41 ++++++++----------- bacula/src/win32/filed/plugins/exch_node.h | 18 ++++++++ bacula/src/win32/filed/plugins/file_node.c | 41 ++++++++----------- bacula/src/win32/filed/plugins/node.c | 31 +++++--------- bacula/src/win32/filed/plugins/root_node.c | 31 +++++--------- bacula/src/win32/filed/plugins/service_node.c | 41 ++++++++----------- .../win32/filed/plugins/storage_group_node.c | 31 +++++--------- bacula/src/win32/filed/plugins/store_node.c | 41 ++++++++----------- 13 files changed, 153 insertions(+), 197 deletions(-) diff --git a/bacula/src/win32/Makefile.full b/bacula/src/win32/Makefile.full index 3e9a3e37ba..b28828e7ad 100644 --- a/bacula/src/win32/Makefile.full +++ b/bacula/src/win32/Makefile.full @@ -8,11 +8,11 @@ WIN64_DIRS=lib filed filed/plugins console scripts ifeq ($(WIN64),yes) DIRS=$(WIN64_DIRS) INSTALLER=win64_installer - SPECIAL=bsmtp + SPECIAL=bat64 bsmtp else DIRS=$(WIN32_DIRS) INSTALLER=win32_installer - SPECIAL=bat + SPECIAL=bat32 endif .PHONY: $(DIRS) clean all Makefile.inc win32_installer full_win32_installer \ @@ -23,8 +23,12 @@ all: Makefile.inc $(DIRS) $(SPECIAL) $(INSTALLER) clean: $(DIRS) win32_installer win64_installer $(ECHO_CMD)-rm -rf release32 release64 -bat: - (cd ../qt-console; ./make-win32) +bat32: + ( cd ../qt-console; ./make-win32 "32" ) + +bat64: + ( cd ../qt-console; ./make-win32 "64" ) + full_win32_installer: @if test -f Makefile.inc; then \ diff --git a/bacula/src/win32/README.mingw b/bacula/src/win32/README.mingw index a62c516cbf..ffbbf50cc8 100644 --- a/bacula/src/win32/README.mingw +++ b/bacula/src/win32/README.mingw @@ -70,7 +70,7 @@ is the version number. The directory must be renamed to docs (ie remove the leading bacula- and the -version portion of the name). An alternative to setting up the old documents that are needed by the Win32 -installer, you may comment out the following lines in +installer, you may comment out the following lines in src/win32/win32_installer/Makefile: #DOC_FILES := \ @@ -79,7 +79,7 @@ src/win32/win32_installer/Makefile: # manual/bacula/*.png \ # manual/bacula/*.css -Note, a number of packages must be installed to build the the depkgs files. +Note, a number of packages must be installed to build the the depkgs files. Most are rather standard such as gcc, g++, make, ... However a few that you may not have are: @@ -115,7 +115,7 @@ Make sure that libgcc and libstdc++ mingw files are copied to depkgs-mingw32/bin /usr/lib/gcc/i686-w64-mingw32/*-posix/libgcc_s_sjlj-1.dll /usr/lib/gcc/i686-w64-mingw32/*-posix/libstdc++-6.dll /usr/i686-w64-mingw32/lib/libwinpthread-1.dll - + /usr/lib/gcc/x86_64-w64-mingw32/*-posix/libgcc_s_seh-1.dll /usr/lib/gcc/x86_64-w64-mingw32/*-posix/libstdc++-6.dll /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll @@ -123,13 +123,13 @@ Make sure that libgcc and libstdc++ mingw files are copied to depkgs-mingw32/bin Note, that during the build process you will see a moderate amount of output and some warnings. If something more serious happens and the build fails, it is probably because you don't have one -of the build dependencies (hopefully all mentioned above) loaded on your +of the build dependencies (hopefully all mentioned above) loaded on your system. To find out what is going wrong, do the following: cd .../depkgs-mingw32/src/ - + where is where the package is unpacked and built. Normally -it is relatively obvious when looking at the src directory. +it is relatively obvious when looking at the src directory. In that directory, you should find a make.log, which has the full details of the compiles, links, and installs done for that package. @@ -141,7 +141,7 @@ QT website the http://download.qt-project.org/archive/qt/4.8/4.8.4/ -Then, copy Qt*dll files to depkgs-mingw32/bin and headers to +Then, copy Qt*dll files to depkgs-mingw32/bin and headers to depkgs-mingw32/include === @@ -159,7 +159,7 @@ If that link doesn't work then go to http://www.microsoft.com and search for "download volume shadow copy service sdk" -we are currently using version 7.2 released 8/3/2005 (a bit old, but it +we are currently using version 7.2 released 8/3/2005 (a bit old, but it works). Normally the files will be installed in: @@ -167,9 +167,9 @@ Normally the files will be installed in: c:\Program Files\Microsoft\VSSSDK72 You only need to copy everything under the c:\Program Files\Microsoft\VSSSDK72\inc -directory into .../depkgs-mingw32/vss/inc. and .../depkgs-mingw-w64/vss/inc +directory into .../depkgs-mingw32/vss/inc. and .../depkgs-mingw-w64/vss/inc In doing so, please ensure that -the case in maintained on the directory and filenames -- some contain uppercase +the case in maintained on the directory and filenames -- some contain uppercase characters !!! Some definitions are already defined in other headers, it produces warnings @@ -251,7 +251,7 @@ extern DLL_IMP_EXP dlist * last_jobs; Exporting functions is now more or less automated. If you find that -a function name has been added, changed, or an argument modified, +a function name has been added, changed, or an argument modified, simply do the following: cd .../bacula/src/win32/lib @@ -259,7 +259,7 @@ simply do the following: ./make_def >bacula64.def or >bacula64.def This should rebuild the bacula.def file, but it uses relative paths -and assumes you have the directory structure noted above. If you +and assumes you have the directory structure noted above. If you are using something different, you can set the NM variable at the top of the make_def file to use an absolute path to the correct directory. @@ -273,7 +273,7 @@ C++ mangled name of the new function. Note, strings often will not show the desired symbol. In that case, use: - + nm .../bacula/src/win32/lib/.o Replace with the base part of the name of the source code file diff --git a/bacula/src/win32/compat/winsock.h b/bacula/src/win32/compat/winsock.h index 8cb0067fbe..0274d58527 100644 --- a/bacula/src/win32/compat/winsock.h +++ b/bacula/src/win32/compat/winsock.h @@ -1,4 +1,6 @@ +/* #include #ifdef HAVE_IPV6 #include #endif +*/ diff --git a/bacula/src/win32/filed/plugins/Makefile b/bacula/src/win32/filed/plugins/Makefile index f68a0df582..d871e29866 100644 --- a/bacula/src/win32/filed/plugins/Makefile +++ b/bacula/src/win32/filed/plugins/Makefile @@ -29,6 +29,10 @@ DEFINES = \ #vpath %.c $(BUILDDIR)/compat $(MAINDIR)/src/findlib $(MAINDIR)/src/lib #vpath %.cpp $(BUILDDIR)/compat $(MAINDIR)/src/findlib $(MAINDIR)/src/lib +# Look files in src/lib and plugins/fd mainly for SAP and Oracle +vpath %.c $(MAINDIR)/src/lib $(MAINDIR)/src/plugins/fd +vpath %.h $(MAINDIR)/src/lib $(MAINDIR)/src/plugins/fd + ###################################################################### # Files files in src/win32/filed/plugins diff --git a/bacula/src/win32/filed/plugins/api.c b/bacula/src/win32/filed/plugins/api.c index 1e65e5a520..8cb8c0de49 100644 --- a/bacula/src/win32/filed/plugins/api.c +++ b/bacula/src/win32/filed/plugins/api.c @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution + Bacula(R) - The Network Backup Solution - Copyright (C) 2008-2010 Free Software Foundation Europe e.V. + Copyright (C) 2000-2018 Kern Sibbald - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version three of the GNU Affero General Public - License as published by the Free Software Foundation, which is - listed in the file LICENSE. + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. - You should have received a copy of the GNU Affero General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. + This notice must be preserved when any source code is + conveyed and/or propagated. - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Written by James Harper, October 2008 diff --git a/bacula/src/win32/filed/plugins/dbi_node.c b/bacula/src/win32/filed/plugins/dbi_node.c index c02477fb57..a5eb4234de 100644 --- a/bacula/src/win32/filed/plugins/dbi_node.c +++ b/bacula/src/win32/filed/plugins/dbi_node.c @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution - - Copyright (C) 2008-2010 Free Software Foundation Europe e.V. - - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version three of the GNU Affero General Public - License as published by the Free Software Foundation, which is - listed in the file LICENSE. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) - The Network Backup Solution + + Copyright (C) 2000-2018 Kern Sibbald + + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. + + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. + + This notice must be preserved when any source code is + conveyed and/or propagated. + + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Written by James Harper, October 2008 diff --git a/bacula/src/win32/filed/plugins/exch_node.h b/bacula/src/win32/filed/plugins/exch_node.h index 75b96d11d3..9943d63bb6 100644 --- a/bacula/src/win32/filed/plugins/exch_node.h +++ b/bacula/src/win32/filed/plugins/exch_node.h @@ -1,3 +1,21 @@ +/* + Bacula(R) - The Network Backup Solution + + Copyright (C) 2000-2018 Kern Sibbald + + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. + + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. + + This notice must be preserved when any source code is + conveyed and/or propagated. + + Bacula(R) is a registered trademark of Kern Sibbald. +*/ /* * Written by James Harper, July 2010 */ diff --git a/bacula/src/win32/filed/plugins/file_node.c b/bacula/src/win32/filed/plugins/file_node.c index 18ff399a75..dfa3b0a2cb 100644 --- a/bacula/src/win32/filed/plugins/file_node.c +++ b/bacula/src/win32/filed/plugins/file_node.c @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution - - Copyright (C) 2008-2010 Free Software Foundation Europe e.V. - - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version three of the GNU Affero General Public - License as published by the Free Software Foundation, which is - listed in the file LICENSE. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) - The Network Backup Solution + + Copyright (C) 2000-2018 Kern Sibbald + + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. + + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. + + This notice must be preserved when any source code is + conveyed and/or propagated. + + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Written by James Harper, October 2008 diff --git a/bacula/src/win32/filed/plugins/node.c b/bacula/src/win32/filed/plugins/node.c index f26e3174d9..64500238e9 100644 --- a/bacula/src/win32/filed/plugins/node.c +++ b/bacula/src/win32/filed/plugins/node.c @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution + Bacula(R) - The Network Backup Solution - Copyright (C) 2008-2010 Free Software Foundation Europe e.V. + Copyright (C) 2000-2018 Kern Sibbald - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version three of the GNU Affero General Public - License as published by the Free Software Foundation, which is - listed in the file LICENSE. + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. - You should have received a copy of the GNU Affero General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. + This notice must be preserved when any source code is + conveyed and/or propagated. - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Written by James Harper, October 2008 diff --git a/bacula/src/win32/filed/plugins/root_node.c b/bacula/src/win32/filed/plugins/root_node.c index dfddb7469f..989bb4e2d0 100644 --- a/bacula/src/win32/filed/plugins/root_node.c +++ b/bacula/src/win32/filed/plugins/root_node.c @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution + Bacula(R) - The Network Backup Solution - Copyright (C) 2008-2010 Free Software Foundation Europe e.V. + Copyright (C) 2000-2018 Kern Sibbald - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version three of the GNU Affero General Public - License as published by the Free Software Foundation, which is - listed in the file LICENSE. + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. - You should have received a copy of the GNU Affero General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. + This notice must be preserved when any source code is + conveyed and/or propagated. - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Written by James Harper, October 2008 diff --git a/bacula/src/win32/filed/plugins/service_node.c b/bacula/src/win32/filed/plugins/service_node.c index 095320036b..0f95fbb02b 100644 --- a/bacula/src/win32/filed/plugins/service_node.c +++ b/bacula/src/win32/filed/plugins/service_node.c @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution - - Copyright (C) 2008-2010 Free Software Foundation Europe e.V. - - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version three of the GNU Affero General Public - License as published by the Free Software Foundation, which is - listed in the file LICENSE. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) - The Network Backup Solution + + Copyright (C) 2000-2018 Kern Sibbald + + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. + + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. + + This notice must be preserved when any source code is + conveyed and/or propagated. + + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Written by James Harper, October 2008 diff --git a/bacula/src/win32/filed/plugins/storage_group_node.c b/bacula/src/win32/filed/plugins/storage_group_node.c index 4e6bf2ed1e..1e149b0d5a 100644 --- a/bacula/src/win32/filed/plugins/storage_group_node.c +++ b/bacula/src/win32/filed/plugins/storage_group_node.c @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution + Bacula(R) - The Network Backup Solution - Copyright (C) 2008-2010 Free Software Foundation Europe e.V. + Copyright (C) 2000-2018 Kern Sibbald - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version three of the GNU Affero General Public - License as published by the Free Software Foundation, which is - listed in the file LICENSE. + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. - You should have received a copy of the GNU Affero General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. + This notice must be preserved when any source code is + conveyed and/or propagated. - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Written by James Harper, October 2008 diff --git a/bacula/src/win32/filed/plugins/store_node.c b/bacula/src/win32/filed/plugins/store_node.c index eea94317d9..5d54352257 100644 --- a/bacula/src/win32/filed/plugins/store_node.c +++ b/bacula/src/win32/filed/plugins/store_node.c @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution - - Copyright (C) 2008-2010 Free Software Foundation Europe e.V. - - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version three of the GNU Affero General Public - License as published by the Free Software Foundation, which is - listed in the file LICENSE. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) - The Network Backup Solution + + Copyright (C) 2000-2018 Kern Sibbald + + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. + + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. + + This notice must be preserved when any source code is + conveyed and/or propagated. + + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Written by James Harper, October 2008 -- 2.39.5