summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinhard Tartler <siretart@tauware.de>2018-02-20 21:49:13 -0500
committerReinhard Tartler <siretart@tauware.de>2018-02-20 21:49:13 -0500
commitf28f88e5e72ba1499409047a9d6985eb312c0232 (patch)
treec9c267f18264b3dfe715a363935bb6ac20904492
parente19a5db232e1ef90e9a02159d2fbd9707ffe4373 (diff)
parent6d7e9562e8485591a4888f1fc2d3c6c657dc7a01 (diff)
Merge tag 'BoxBackup-0.12.master.180102.6d7e956' into upstream
-rw-r--r--.gitattributes11
-rw-r--r--.gitignore111
-rw-r--r--.travis.yml48
-rw-r--r--BUGS.txt1
-rw-r--r--COPYING.txt2
-rw-r--r--LICENSE-DUAL.txt2
-rw-r--r--LICENSE-GPL.txt2
-rw-r--r--LICENSE.txt4
-rw-r--r--README.md22
-rw-r--r--appveyor.yml109
-rw-r--r--bin/bbackupctl/bbackupctl.cpp154
-rw-r--r--bin/bbackupd/bbackupd.cpp10
-rw-r--r--bin/bbackupquery/Makefile.extra6
-rw-r--r--bin/bbackupquery/bbackupquery.cpp116
-rw-r--r--bin/bbstoreaccounts/bbstoreaccounts.cpp509
-rwxr-xr-xbin/bbstored/bbstored-certs.in2
-rwxr-xr-xbootstrap1
-rw-r--r--configure.ac23
-rw-r--r--distribution/boxbackup/DISTRIBUTION-MANIFEST.txt2
-rw-r--r--distribution/boxbackup/VERSION.txt2
-rw-r--r--docs/api-notes/win32_build_on_cygwin_using_mingw.txt40
-rw-r--r--docs/images/box-alpha.pngbin0 -> 5728 bytes
-rw-r--r--docs/images/box-alpha.xcfbin0 -> 33665 bytes
-rw-r--r--infrastructure/BoxPlatform.pm.in80
-rw-r--r--infrastructure/buildenv-testmain-template.cpp337
-rw-r--r--infrastructure/cmake/.gitignore6
-rw-r--r--infrastructure/cmake/CMakeLists.txt744
-rw-r--r--infrastructure/cmake/FindReadline.cmake84
-rwxr-xr-xinfrastructure/cmake/build/bin_bbackupd.vcxproj.user8
-rwxr-xr-xinfrastructure/cmake/build/bin_bbstored.vcxproj.user8
-rwxr-xr-xinfrastructure/cmake/build/test_backupstore.vcxproj.user9
-rwxr-xr-xinfrastructure/cmake/build/test_backupstorefix.vcxproj.user7
-rwxr-xr-xinfrastructure/cmake/build/test_bbackupd.vcxproj.user8
-rwxr-xr-xinfrastructure/cmake/build/test_common.vcxproj.user7
-rwxr-xr-xinfrastructure/cmake/build/test_httpserver.vcxproj.user7
-rwxr-xr-xinfrastructure/cmake/build/test_raidfile.vcxproj.user7
-rwxr-xr-xinfrastructure/cmake/getversion.pl13
-rwxr-xr-xinfrastructure/cmake/msvc/bin_bbackupd.vcxproj.user8
-rwxr-xr-xinfrastructure/cmake/msvc/bin_bbstored.vcxproj.user8
-rwxr-xr-xinfrastructure/cmake/msvc/test_backupstore.vcxproj.user9
-rwxr-xr-xinfrastructure/cmake/msvc/test_backupstorefix.vcxproj.user7
-rwxr-xr-xinfrastructure/cmake/msvc/test_bbackupd.vcxproj.user8
-rwxr-xr-xinfrastructure/cmake/msvc/test_common.vcxproj.user7
-rwxr-xr-xinfrastructure/cmake/msvc/test_httpserver.vcxproj.user7
-rwxr-xr-xinfrastructure/cmake/msvc/test_raidfile.vcxproj.user7
-rw-r--r--infrastructure/cmake/windows/CMakeLists.txt137
-rwxr-xr-xinfrastructure/config.guess (renamed from config.guess)1096
-rwxr-xr-xinfrastructure/config.sub (renamed from config.sub)483
-rwxr-xr-xinfrastructure/install-sh527
-rw-r--r--infrastructure/m4/ax_check_compile_flag.m472
-rw-r--r--infrastructure/m4/boxbackup_tests.m4101
-rwxr-xr-xinfrastructure/makebuildenv.pl.in1063
-rwxr-xr-xinfrastructure/makeparcels.pl.in405
-rwxr-xr-xinfrastructure/mingw/configure.sh43
-rw-r--r--infrastructure/msvc/2003/bbackupctl.vcproj159
-rw-r--r--infrastructure/msvc/2003/bbackupd.vcproj219
-rw-r--r--infrastructure/msvc/2003/boxbackup.sln57
-rw-r--r--infrastructure/msvc/2003/boxquery.vcproj174
-rw-r--r--infrastructure/msvc/2003/common.vcproj672
-rw-r--r--infrastructure/msvc/2003/win32test.vcproj148
-rw-r--r--infrastructure/msvc/2005/bbackupctl.vcproj222
-rw-r--r--infrastructure/msvc/2005/bbackupd.vcproj299
-rw-r--r--infrastructure/msvc/2005/boxbackup.sln55
-rw-r--r--infrastructure/msvc/2005/boxbackup.suobin58880 -> 0 bytes
-rw-r--r--infrastructure/msvc/2005/boxquery.vcproj246
-rw-r--r--infrastructure/msvc/2005/common.vcproj896
-rw-r--r--infrastructure/msvc/2005/win32test.vcproj218
-rw-r--r--infrastructure/msvc/2010/bbackupctl.vcxproj109
-rw-r--r--infrastructure/msvc/2010/bbackupd.vcxproj139
-rw-r--r--infrastructure/msvc/2010/bbstoreaccounts.vcxproj84
-rw-r--r--infrastructure/msvc/2010/bbstored.vcxproj93
-rw-r--r--infrastructure/msvc/2010/boxbackup.sln89
-rw-r--r--infrastructure/msvc/2010/boxquery.vcxproj123
-rw-r--r--infrastructure/msvc/2010/common.vcxproj251
-rw-r--r--infrastructure/msvc/2010/libbackupclient.vcxproj94
-rw-r--r--infrastructure/msvc/2010/libbackupstore.vcxproj151
-rw-r--r--infrastructure/msvc/2010/qdbm.vcxproj81
-rw-r--r--infrastructure/msvc/2010/win32test.vcxproj108
-rw-r--r--infrastructure/msvc/fake-config.sub.pl18
-rw-r--r--infrastructure/msvc/getversion.pl34
-rwxr-xr-xinfrastructure/travis-build.sh53
-rw-r--r--lib/backupclient/BackupClientRestore.cpp18
-rw-r--r--lib/backupclient/BackupClientRestore.h10
-rw-r--r--lib/backupclient/BackupDaemonConfigVerify.cpp52
-rw-r--r--lib/backupclient/ClientException.txt (renamed from bin/bbackupd/ClientException.txt)0
-rw-r--r--lib/backupclient/Makefile.extra (renamed from bin/bbackupd/Makefile.extra)0
-rw-r--r--lib/backupstore/BackgroundTask.h39
-rw-r--r--lib/backupstore/BackupAccountControl.cpp267
-rw-r--r--lib/backupstore/BackupAccountControl.h91
-rw-r--r--lib/backupstore/BackupClientFileAttributes.cpp100
-rw-r--r--lib/backupstore/BackupCommands.cpp419
-rw-r--r--lib/backupstore/BackupConstants.h3
-rw-r--r--lib/backupstore/BackupProtocol.h71
-rw-r--r--lib/backupstore/BackupProtocol.txt (renamed from lib/backupstore/backupprotocol.txt)35
-rw-r--r--lib/backupstore/BackupStoreAccountDatabase.cpp3
-rw-r--r--lib/backupstore/BackupStoreAccounts.cpp410
-rw-r--r--lib/backupstore/BackupStoreAccounts.h30
-rw-r--r--lib/backupstore/BackupStoreCheck.cpp383
-rw-r--r--lib/backupstore/BackupStoreCheck.h9
-rw-r--r--lib/backupstore/BackupStoreCheck2.cpp175
-rw-r--r--lib/backupstore/BackupStoreContext.cpp721
-rw-r--r--lib/backupstore/BackupStoreContext.h58
-rw-r--r--lib/backupstore/BackupStoreDirectory.cpp179
-rw-r--r--lib/backupstore/BackupStoreDirectory.h298
-rw-r--r--lib/backupstore/BackupStoreException.txt4
-rw-r--r--lib/backupstore/BackupStoreFile.cpp630
-rw-r--r--lib/backupstore/BackupStoreFile.h87
-rw-r--r--lib/backupstore/BackupStoreFileCmbIdx.cpp6
-rw-r--r--lib/backupstore/BackupStoreFileDiff.cpp51
-rw-r--r--lib/backupstore/BackupStoreFileEncodeStream.cpp190
-rw-r--r--lib/backupstore/BackupStoreFileEncodeStream.h21
-rw-r--r--lib/backupstore/BackupStoreFilenameClear.h2
-rw-r--r--lib/backupstore/BackupStoreInfo.cpp268
-rw-r--r--lib/backupstore/BackupStoreInfo.h53
-rw-r--r--lib/backupstore/BackupStoreRefCountDatabase.cpp199
-rw-r--r--lib/backupstore/BackupStoreRefCountDatabase.h44
-rw-r--r--lib/backupstore/HousekeepStoreAccount.cpp620
-rw-r--r--lib/backupstore/HousekeepStoreAccount.h30
-rw-r--r--lib/backupstore/Makefile.extra4
-rw-r--r--lib/backupstore/StoreTestUtils.cpp300
-rw-r--r--lib/backupstore/StoreTestUtils.h118
-rw-r--r--lib/bbackupd/BackupClientContext.cpp (renamed from bin/bbackupd/BackupClientContext.cpp)141
-rw-r--r--lib/bbackupd/BackupClientContext.h (renamed from bin/bbackupd/BackupClientContext.h)29
-rw-r--r--lib/bbackupd/BackupClientDeleteList.cpp (renamed from bin/bbackupd/BackupClientDeleteList.cpp)2
-rw-r--r--lib/bbackupd/BackupClientDeleteList.h (renamed from bin/bbackupd/BackupClientDeleteList.h)0
-rw-r--r--lib/bbackupd/BackupClientDirectoryRecord.cpp (renamed from bin/bbackupd/BackupClientDirectoryRecord.cpp)1178
-rw-r--r--lib/bbackupd/BackupClientDirectoryRecord.h (renamed from bin/bbackupd/BackupClientDirectoryRecord.h)47
-rw-r--r--lib/bbackupd/BackupClientInodeToIDMap.cpp (renamed from bin/bbackupd/BackupClientInodeToIDMap.cpp)121
-rw-r--r--lib/bbackupd/BackupClientInodeToIDMap.h (renamed from bin/bbackupd/BackupClientInodeToIDMap.h)6
-rw-r--r--lib/bbackupd/BackupDaemon.cpp (renamed from bin/bbackupd/BackupDaemon.cpp)977
-rw-r--r--lib/bbackupd/BackupDaemon.h (renamed from bin/bbackupd/BackupDaemon.h)313
-rw-r--r--lib/bbackupd/BackupDaemonInterface.h (renamed from bin/bbackupd/BackupDaemonInterface.h)11
-rw-r--r--lib/bbackupd/Win32BackupService.cpp (renamed from bin/bbackupd/Win32BackupService.cpp)0
-rw-r--r--lib/bbackupd/Win32BackupService.h (renamed from bin/bbackupd/Win32BackupService.h)0
-rw-r--r--lib/bbackupd/Win32ServiceFunctions.cpp (renamed from bin/bbackupd/Win32ServiceFunctions.cpp)0
-rw-r--r--lib/bbackupd/Win32ServiceFunctions.h (renamed from bin/bbackupd/Win32ServiceFunctions.h)0
-rw-r--r--lib/bbackupquery/BackupQueries.cpp (renamed from bin/bbackupquery/BackupQueries.cpp)172
-rw-r--r--lib/bbackupquery/BackupQueries.h (renamed from bin/bbackupquery/BackupQueries.h)15
-rw-r--r--lib/bbackupquery/BoxBackupCompareParams.h (renamed from bin/bbackupquery/BoxBackupCompareParams.h)0
-rw-r--r--lib/bbackupquery/CommandCompletion.cpp (renamed from bin/bbackupquery/CommandCompletion.cpp)12
-rw-r--r--lib/bbackupquery/Documentation.txt (renamed from bin/bbackupquery/documentation.txt)14
-rw-r--r--lib/bbackupquery/Makefile.extra6
-rwxr-xr-xlib/bbackupquery/makedocumentation.pl.in (renamed from bin/bbackupquery/makedocumentation.pl.in)2
-rw-r--r--lib/bbstored/BBStoreDHousekeeping.cpp (renamed from bin/bbstored/BBStoreDHousekeeping.cpp)0
-rw-r--r--lib/bbstored/BackupStoreDaemon.cpp (renamed from bin/bbstored/BackupStoreDaemon.cpp)27
-rw-r--r--lib/bbstored/BackupStoreDaemon.h (renamed from bin/bbstored/BackupStoreDaemon.h)6
-rw-r--r--lib/common/Archive.h92
-rw-r--r--lib/common/BannerText.h2
-rw-r--r--lib/common/Box.h20
-rw-r--r--lib/common/BoxConfig-MSVC.h6
-rw-r--r--lib/common/BoxPlatform.h82
-rw-r--r--lib/common/BoxTime.cpp52
-rw-r--r--lib/common/BoxTime.h4
-rw-r--r--lib/common/BufferedStream.cpp6
-rw-r--r--lib/common/BufferedStream.h7
-rw-r--r--lib/common/BufferedWriteStream.cpp2
-rw-r--r--lib/common/BufferedWriteStream.h3
-rw-r--r--lib/common/CollectInBufferStream.cpp2
-rw-r--r--lib/common/CollectInBufferStream.h23
-rw-r--r--lib/common/CommonException.txt2
-rw-r--r--lib/common/Configuration.cpp16
-rw-r--r--lib/common/Configuration.h9
-rw-r--r--lib/common/DebugMemLeakFinder.cpp98
-rw-r--r--lib/common/EventWatchFilesystemObject.cpp112
-rw-r--r--lib/common/EventWatchFilesystemObject.h48
-rw-r--r--lib/common/ExcludeList.cpp15
-rw-r--r--lib/common/FileModificationTime.cpp14
-rw-r--r--lib/common/FileStream.cpp31
-rw-r--r--lib/common/FileStream.h10
-rw-r--r--lib/common/Guards.h29
-rw-r--r--lib/common/IOStream.cpp33
-rw-r--r--lib/common/IOStream.h18
-rw-r--r--lib/common/IOStreamGetLine.h14
-rw-r--r--lib/common/InvisibleTempFileStream.cpp5
-rw-r--r--lib/common/InvisibleTempFileStream.h2
-rw-r--r--lib/common/Logging.cpp294
-rw-r--r--lib/common/Logging.h388
-rw-r--r--lib/common/MainHelper.h19
-rw-r--r--lib/common/MemBlockStream.cpp22
-rw-r--r--lib/common/MemBlockStream.h9
-rw-r--r--lib/common/MemLeakFindOn.h1
-rw-r--r--lib/common/MemLeakFinder.h5
-rw-r--r--lib/common/NamedLock.cpp223
-rw-r--r--lib/common/NamedLock.h11
-rw-r--r--lib/common/PartialReadStream.cpp2
-rw-r--r--lib/common/PartialReadStream.h3
-rw-r--r--lib/common/RateLimitingStream.h5
-rw-r--r--lib/common/ReadGatherStream.cpp2
-rw-r--r--lib/common/ReadGatherStream.h3
-rw-r--r--lib/common/ReadLoggingStream.cpp2
-rw-r--r--lib/common/ReadLoggingStream.h5
-rw-r--r--lib/common/SelfFlushingStream.h11
-rw-r--r--lib/common/StreamableMemBlock.cpp12
-rw-r--r--lib/common/Test.cpp351
-rw-r--r--lib/common/Test.h101
-rw-r--r--lib/common/Timer.cpp99
-rw-r--r--lib/common/Timer.h2
-rw-r--r--lib/common/Utils.cpp190
-rw-r--r--lib/common/Utils.h10
-rw-r--r--lib/common/ZeroStream.cpp2
-rw-r--r--lib/common/ZeroStream.h3
-rwxr-xr-xlib/common/makeexception.pl.in77
-rw-r--r--lib/compress/CompressStream.cpp14
-rw-r--r--lib/compress/CompressStream.h8
-rw-r--r--lib/crypto/CipherBlowfish.cpp2
-rw-r--r--lib/crypto/CipherContext.cpp157
-rw-r--r--lib/crypto/CipherContext.h24
-rw-r--r--lib/crypto/CipherException.txt1
-rw-r--r--lib/crypto/Random.cpp2
-rw-r--r--lib/httpserver/HTTPException.txt29
-rw-r--r--lib/httpserver/HTTPRequest.cpp135
-rw-r--r--lib/httpserver/HTTPRequest.h11
-rw-r--r--lib/httpserver/HTTPResponse.cpp49
-rw-r--r--lib/httpserver/HTTPResponse.h10
-rw-r--r--lib/httpserver/HTTPServer.cpp31
-rw-r--r--lib/httpserver/HTTPServer.h5
-rw-r--r--lib/httpserver/S3Client.cpp83
-rw-r--r--lib/httpserver/S3Client.h10
-rw-r--r--lib/httpserver/S3Simulator.cpp37
-rw-r--r--lib/httpserver/S3Simulator.h9
-rw-r--r--lib/httpserver/cdecode.cpp2
-rw-r--r--lib/intercept/intercept.cpp15
-rw-r--r--lib/intercept/intercept.h21
-rw-r--r--lib/raidfile/RaidFileRead.cpp73
-rw-r--r--lib/raidfile/RaidFileRead.h16
-rw-r--r--lib/raidfile/RaidFileUtil.cpp64
-rw-r--r--lib/raidfile/RaidFileWrite.cpp10
-rw-r--r--lib/raidfile/RaidFileWrite.h6
-rw-r--r--lib/server/ConnectionException.txt1
-rw-r--r--lib/server/Daemon.cpp159
-rw-r--r--lib/server/Daemon.h13
-rw-r--r--lib/server/Message.h3
-rw-r--r--lib/server/Protocol.cpp91
-rw-r--r--lib/server/Protocol.h16
-rw-r--r--lib/server/ProtocolUncertainStream.cpp5
-rw-r--r--lib/server/ProtocolUncertainStream.h3
-rw-r--r--lib/server/ProtocolWire.h4
-rw-r--r--lib/server/SSLLib.cpp5
-rw-r--r--lib/server/ServerControl.cpp78
-rw-r--r--lib/server/ServerControl.h4
-rw-r--r--lib/server/ServerException.h46
-rw-r--r--lib/server/ServerStream.h27
-rw-r--r--lib/server/ServerTLS.h9
-rw-r--r--lib/server/Socket.cpp7
-rw-r--r--lib/server/SocketListen.h65
-rw-r--r--lib/server/SocketStream.cpp152
-rw-r--r--lib/server/SocketStream.h54
-rw-r--r--lib/server/SocketStreamTLS.cpp101
-rw-r--r--lib/server/SocketStreamTLS.h3
-rw-r--r--lib/server/TLSContext.cpp16
-rw-r--r--lib/server/TcpNice.cpp6
-rw-r--r--lib/server/TcpNice.h6
-rw-r--r--lib/server/WinNamedPipeListener.h18
-rw-r--r--lib/server/WinNamedPipeStream.cpp555
-rw-r--r--lib/server/WinNamedPipeStream.h47
-rwxr-xr-xlib/server/makeprotocol.pl.in497
-rw-r--r--lib/win32/box_getopt.h14
-rwxr-xr-xlib/win32/bsd_getopt.h (renamed from lib/win32/getopt.h)203
-rw-r--r--lib/win32/emu.cpp287
-rw-r--r--lib/win32/emu.h97
-rwxr-xr-xlib/win32/getopt_long.cpp11
-rwxr-xr-xlib/win32/messages.h114
-rw-r--r--modules.txt57
-rw-r--r--parcels.txt11
-rw-r--r--qdbm/Makefile.in2
-rwxr-xr-xqdbm/configure3913
-rw-r--r--qdbm/configure.in19
-rwxr-xr-xruntest.pl.in219
-rw-r--r--test/backupdiff/testbackupdiff.cpp1
-rw-r--r--test/backupstore/Makefile.extra1
-rw-r--r--test/backupstore/testbackupstore.cpp2470
-rw-r--r--test/backupstore/testfiles/query.conf1
-rw-r--r--test/backupstorefix/testbackupstorefix.cpp424
-rwxr-xr-xtest/backupstorefix/testfiles/testbackupstorefix.pl.in58
-rw-r--r--test/backupstorepatch/testbackupstorepatch.cpp66
-rw-r--r--test/basicserver/Makefile.extra6
-rw-r--r--test/basicserver/TestCommands.cpp25
-rw-r--r--test/basicserver/TestProtocol.txt (renamed from test/basicserver/testprotocol.txt)0
-rw-r--r--test/basicserver/testbasicserver.cpp92
-rw-r--r--test/bbackupd/Makefile.extra16
-rw-r--r--test/bbackupd/testbbackupd.cpp3526
-rw-r--r--test/bbackupd/testfiles/bbackupd-snapshot.conf.in1
-rw-r--r--test/bbackupd/testfiles/bbackupd.conf.in1
-rwxr-xr-xtest/bbackupd/testfiles/extcheck1.pl.in5
-rwxr-xr-xtest/bbackupd/testfiles/extcheck2.pl.in5
-rw-r--r--test/common/testcommon.cpp306
-rw-r--r--test/compress/testcompress.cpp5
-rw-r--r--test/crypto/testcrypto.cpp3
-rw-r--r--test/httpserver/testfiles/httpserver.conf5
-rwxr-xr-xtest/httpserver/testfiles/testrequests.pl13
-rw-r--r--test/httpserver/testhttpserver.cpp137
-rw-r--r--test/raidfile/testraidfile.cpp17
-rw-r--r--test/s3store/testextra4
-rw-r--r--test/s3store/testfiles/bbackupd.conf61
-rw-r--r--test/s3store/testfiles/bbackupd.keysbin0 -> 1024 bytes
-rw-r--r--test/s3store/testfiles/clientTrustedCAs.pem11
-rw-r--r--test/s3store/testfiles/s3simulator.conf10
-rw-r--r--test/s3store/testfiles/serverCerts.pem11
-rw-r--r--test/s3store/testfiles/serverPrivKey.pem15
-rw-r--r--test/s3store/testfiles/serverReq.pem10
-rw-r--r--test/s3store/testfiles/store/subdir/dirs/create-me.txt0
-rw-r--r--test/s3store/tests3store.cpp128
-rw-r--r--win32.bat39
303 files changed, 18659 insertions, 19544 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..11b61ab9
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,11 @@
+# https://help.github.com/articles/dealing-with-line-endings/
+# Set the default behavior, in case people don't have core.autocrlf set.
+* text=auto
+
+# Declare files that will always have CRLF line endings on checkout.
+*.sln text eol=crlf
+*.vcxproj.user text eol=crlf
+
+# Denote all files that are truly binary and should not be modified.
+*.png binary
+*.jpg binary
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..ad9bfba2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,111 @@
+# built from .in files by autoconf/CMake
+bin/bbackupd/bbackupd-config
+bin/bbstored/bbstored-certs
+bin/bbstored/bbstored-config
+contrib/debian/bbackupd
+contrib/debian/bbstored
+contrib/mac_osx/org.boxbackup.bbackupd.plist
+contrib/mac_osx/org.boxbackup.bbstored.plist
+contrib/redhat/bbackupd
+contrib/redhat/bbstored
+contrib/suse/bbackupd
+contrib/suse/bbstored
+contrib/solaris/bbackupd-manifest.xml
+contrib/solaris/bbackupd-smf-method
+contrib/solaris/bbstored-manifest.xml
+contrib/solaris/bbstored-smf-method
+contrib/windows/installer/boxbackup.mpi
+infrastructure/BoxPlatform.pm
+infrastructure/cmake/build
+infrastructure/makebuildenv.pl
+infrastructure/makedistribution.pl
+infrastructure/makeparcels.pl
+lib/bbackupquery/makedocumentation.pl
+lib/common/BoxConfig.h
+lib/common/BoxConfig.h.in
+lib/common/BoxConfig.cmake.h
+lib/common/BoxPortsAndFiles.h
+lib/common/BoxVersion.h
+lib/common/makeexception.pl
+lib/raidfile/raidfile-config
+lib/server/makeprotocol.pl
+runtest.pl
+test/backupstorefix/testfiles/testbackupstorefix.pl
+test/bbackupd/testfiles/bbackupd.conf
+test/bbackupd/testfiles/bbackupd-exclude.conf
+test/bbackupd/testfiles/bbackupd-snapshot.conf
+test/bbackupd/testfiles/bbackupd-symlink.conf
+test/bbackupd/testfiles/bbackupd-temploc.conf
+test/bbackupd/testfiles/extcheck1.pl
+test/bbackupd/testfiles/extcheck2.pl
+test/bbackupd/testfiles/notifyscript.pl
+test/bbackupd/testfiles/syncallowscript.pl
+
+# from svn:ignore
+aclocal.m4
+autom4te.cache
+config.log
+config.log.features
+config.status
+config.env
+configure
+configure.lineno
+debug
+release
+parcels
+ExceptionCodes.txt
+local
+Makefile
+.hg
+*.log
+test/*/*.memleaks
+
+# built by makebuildenv.pl
+test/*/_main.cpp
+test/*/t
+test/*/t-gdb
+bin/*/autogen_*.cpp
+bin/*/autogen_*.h
+lib/*/autogen_*.cpp
+lib/*/autogen_*.h
+test/*/autogen_*.cpp
+test/*/autogen_*.h
+
+# qdbm
+qdbm/*.o
+qdbm/libqdbm.a
+qdbm/qdbm.pc
+qdbm/qdbm.spec
+qdbm/LTmakefile
+qdbm/cbcodec
+qdbm/cbtest
+qdbm/crmgr
+qdbm/crtest
+qdbm/crtsv
+qdbm/dpmgr
+qdbm/dptest
+qdbm/dptsv
+qdbm/hvmgr
+qdbm/hvtest
+qdbm/libqdbm.so
+qdbm/libqdbm.so.14
+qdbm/libqdbm.so.14.13.0
+qdbm/odidx
+qdbm/odmgr
+qdbm/odtest
+qdbm/qmttest
+qdbm/rlmgr
+qdbm/rltest
+qdbm/vlmgr
+qdbm/vltest
+qdbm/vltsv
+
+# development
+*.orig
+*.patch
+.*.swo
+.*.swp
+
+# generated documentation
+docs/htmlguide
+docs/man
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..57bd36f3
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,48 @@
+language: cpp
+
+compiler:
+ - gcc
+ - clang
+
+cache:
+ - apt
+ - ccache
+
+sudo: false
+
+addons:
+ apt:
+ # We need cmake > 2.8.7
+ # https://github.com/travis-ci/travis-ci/issues/4631#issuecomment-191153634
+ sources:
+ - george-edison55-precise-backports # cmake 3.2.3 / doxygen 1.8.3
+ packages:
+ - cmake
+ - cmake-data
+ - libboost-dev
+ - libdb-dev
+ - libreadline-dev
+ - libssl-dev
+ - libwww-perl
+ - time
+ - xsltproc
+ - zlib1g-dev
+
+env:
+ - TEST_TARGET=debug
+ - TEST_TARGET=release
+ - BUILD=cmake TEST_TARGET=debug
+ - BUILD=cmake TEST_TARGET=release
+
+os:
+ - linux
+ - osx
+
+matrix:
+ exclude:
+ # No point testing both GCC and Clang on Mac OS X, as they're the same thing.
+ - os: osx
+ compiler: gcc
+
+script:
+ - env EXTRA_MAKE_ARGS=-j2 ./infrastructure/travis-build.sh
diff --git a/BUGS.txt b/BUGS.txt
index e0569113..5425d81a 100644
--- a/BUGS.txt
+++ b/BUGS.txt
@@ -13,3 +13,4 @@ Bugs
* more automated tests for win32
* change off_t to box_off_t in preparation for win32 large file support
* support large files on win32 by using native *i64 functions instead of posix
+* when storage is implemented, ensure that no write operations can happen to an account that's opened read-only (BackupStoreCheck without fix)
diff --git a/COPYING.txt b/COPYING.txt
index 54d27b62..8adb524c 100644
--- a/COPYING.txt
+++ b/COPYING.txt
@@ -1,6 +1,6 @@
Box Backup, http://www.boxbackup.org/
-Copyright (c) 2003-2010, Ben Summers and contributors.
+Copyright (c) 2003-2015, Ben Summers and contributors.
All rights reserved.
The license of the code was changed on 23-Jan-2010 in order to meet the
diff --git a/LICENSE-DUAL.txt b/LICENSE-DUAL.txt
index 6aa31da2..3e555cfc 100644
--- a/LICENSE-DUAL.txt
+++ b/LICENSE-DUAL.txt
@@ -1,6 +1,6 @@
Box Backup, http://www.boxbackup.org/
-Copyright (c) 2003-2010, Ben Summers and contributors.
+Copyright (c) 2003-2015, Ben Summers and contributors.
All rights reserved.
Note that this project uses mixed licensing. Any file with this license
diff --git a/LICENSE-GPL.txt b/LICENSE-GPL.txt
index 3e84b646..77d7e79b 100644
--- a/LICENSE-GPL.txt
+++ b/LICENSE-GPL.txt
@@ -1,6 +1,6 @@
Box Backup, http://www.boxbackup.org/
-Copyright (c) 2003-2010, Ben Summers and contributors.
+Copyright (c) 2003-2015, Ben Summers and contributors.
All rights reserved.
Note that this project uses mixed licensing. Any file with this license
diff --git a/LICENSE.txt b/LICENSE.txt
index 70b513ac..dd4e26e1 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,6 +1,6 @@
Box Backup, http://www.boxbackup.org/
-Copyright (c) 2003-2010, Ben Summers and contributors.
+Copyright (c) 2003-2015, Ben Summers and contributors.
All rights reserved.
The license of the code was changed on 23-Jan-2010 in order to meet the
@@ -76,4 +76,4 @@ distribution
The dual license text may be found in the file
LICENSE-DUAL.txt, or online at:
-[https://www.boxbackup.org/svn/box/trunk/LICENSE-DUAL.txt] \ No newline at end of file
+[https://www.boxbackup.org/svn/box/trunk/LICENSE-DUAL.txt]
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..6d3b5261
--- /dev/null
+++ b/README.md
@@ -0,0 +1,22 @@
+# Box Backup
+
+[![Travis Build Status](https://travis-ci.org/boxbackup/boxbackup.svg?branch=master)](https://travis-ci.org/boxbackup/boxbackup)
+[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/ussek6c8mvgxqj2k/branch/master?svg=true)](https://ci.appveyor.com/project/qris/boxbackup/branch/master)
+
+Box Backup is an open source, completely automatic, secure, encrypted on-line backup system.
+
+It has the following key features:
+
+* All backed up data is stored on the server in files on a filesystem - no tape, archive or other special devices are required.
+* The server is trusted only to make files available when they are required - all data is encrypted and can be decoded only by the original client. This makes it ideal for backing up over an untrusted network (such as the Internet), or where the server is in an uncontrolled environment.
+* A backup daemon runs on systems to be backed up, and copies encrypted data to the server when it notices changes - so backups are continuous and up-to-date (although traditional snapshot backups are possible too).
+* Only changes within files are sent to the server, just like rsync, minimising the bandwidth used between clients and server. This makes it particularly suitable for backing up between distant locations, or over the Internet.
+* It behaves like tape - old file versions and deleted files are available.
+* Old versions of files on the server are stored as changes from the current version, minimising the storage space required on the server. Files are the server are also compressed to minimise their size.
+* Choice of backup behaviour - it can be optimised for document or server backup.
+* It is designed to be easy and cheap to run a server. It has a portable implementation, and optional RAID implemented in userland for reliability without complex server setup or expensive hardware.
+
+Please see the [website](https://www.boxbackup.org) for more information, including installation instructions.
+
+Box Backup is distributed under a [mixed BSD/GPL license](https://github.com/boxbackup/boxbackup/blob/master/LICENSE.txt).
+
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 00000000..d75eff77
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,109 @@
+version: 0.12.{branch}.appveyor_{build}
+
+clone_depth: 1
+
+# Do not build on tags (GitHub only)
+skip_tags: true
+
+os: Windows Server 2012
+
+platform:
+ - Win32 # CMake sucks
+ - x64
+
+configuration:
+ - Debug
+ - Release
+
+environment:
+ VisualStudioVersion: 11.0
+ Generator_Base: Visual Studio 11 2012
+ OPENSSL_VERSION: 1.1.0f
+ PCRE_VERSION: 8.38
+ CMAKE_UNIBUILD_DIR: '%APPVEYOR_BUILD_FOLDER%\..\cmake'
+ BOXBACKUP_VERSION_BASE: 0.12
+
+init:
+# Uncomment the following two lines to enable RDP access to the virtual machine for debugging.
+# - reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
+# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
+ - ps: $env:date_string = Get-Date -Format "yyMMdd"
+ - ps: $env:sane_platform = $($env:PLATFORM.replace("Win32", "x86"))
+ # http://help.appveyor.com/discussions/problems/2874-how-can-i-add-commit-id-to-build-version
+ - ps: $env:boxbackup_version_full="$env:BOXBACKUP_VERSION_BASE.$env:APPVEYOR_REPO_BRANCH.$env:date_string.$($env:APPVEYOR_REPO_COMMIT.substring(0,7))"
+ - ps: Update-AppveyorBuild -Version "$env:boxbackup_version_full"
+ - ps: $env:compiled_version="$($env:boxbackup_version_full)_Win_$($env:sane_platform)_$($env:CONFIGURATION)"
+ # The only way to switch between 32-bit and 64-bit compilers appears to be to append " Win64"
+ # to the generator name if you want a 64-bit build (x64 platform):
+ - ps: $env:generator_name="$($env:Generator_Base)$(if ($env:PLATFORM.equals('x64')) {' Win64'})"
+
+# scripts that run after cloning repository (before the build step, not after!)
+install:
+ # test_bbackupd needs 7zip (or cmake -E tar) to extract tar archives on Windows:
+ - cinst -y --limit-output 7zip.commandline nsis.portable
+ - dir "c:\Program Files"
+ - dir "c:\Program Files (x86)"
+ # We don't need strawberryperl on AppVeyor because there is already a Perl in c:\Perl.
+ # If you are doing this on a fresh box for development, you would probably want to
+ # install Chocolatey and then run:
+ # cinst -y cmake.portable strawberryperl git vim visualstudio2012wdx
+ # We install cmake.portable instead of cmake, to get it on the path again
+ # <http://disq.us/p/xdknrt>.
+
+ - '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86'
+ - if not exist %CMAKE_UNIBUILD_DIR% md %CMAKE_UNIBUILD_DIR%
+ - cd %CMAKE_UNIBUILD_DIR%
+ # We need to specify the generator here, in case the user has more than one installed.
+ # CMake always seems to default to the latest version of Visual Studio, not the one on
+ # the current PATH.
+ - echo cmake -G "%generator_name%"
+ -DBOXBACKUP_VERSION=%compiled_version%
+ -DSUB_CMAKE_EXTRA_ARGS="-- /verbosity:minimal"
+ %APPVEYOR_BUILD_FOLDER%\infrastructure\cmake\windows
+ - cmake -G "%generator_name%"
+ -DBOXBACKUP_VERSION=%compiled_version%
+ -DSUB_CMAKE_EXTRA_ARGS="-- /verbosity:minimal"
+ %APPVEYOR_BUILD_FOLDER%\infrastructure\cmake\windows
+
+ # Leave the current directory in the correct place to find the solution file using its relative path above.
+
+# Remove Xamarin to remove 500 lines of junk from build logs
+# http://help.appveyor.com/discussions/problems/4569-the-target-_convertpdbfiles-listed-in-a-beforetargets-attribute-at-c-does-not-exist-in-the-project-and-will-be-ignored
+before_build:
+ - del "C:\Program Files (x86)\MSBuild\4.0\Microsoft.Common.Targets\ImportAfter\Xamarin.Common.targets"
+
+build:
+ parallel: true
+ project: ..\cmake\BoxBackup_Windows.sln
+ verbosity: minimal
+
+test_script:
+ - cd %CMAKE_UNIBUILD_DIR%\Build\boxbackup
+ # - dir
+ # - dir bin_bbackupd.dir
+ # - dir %PLATFORM%
+ # - dir %PLATFORM%\%CONFIGURATION%
+ - ctest -C %CONFIGURATION% -V --interactive-debug-mode 0
+
+ # After running tests successfully, build the artifacts that we want to upload:
+ - cmake --build . --config %CONFIGURATION% --target package
+
+ # AppVeyor refuses to package files outside of the project directory, so we need to push them:
+ - dir
+ - appveyor PushArtifact -path BoxBackup-%compiled_version%.zip -DeploymentName BoxBackup-%compiled_version%
+ - appveyor PushArtifact -path BoxBackup-%compiled_version%.exe -DeploymentName BoxBackup-%compiled_version%
+
+deploy:
+ - provider: GitHub
+ release: BoxBackup-$(boxbackup_version_full)
+ artifact: BoxBackup-$(compiled_version)
+ description: "Windows client binaries auto-built by AppVeyor"
+ draft: false
+ prerelease: true
+ auth_token:
+ secure: WZi3MJGA5zIIAAij0if4auYeltJlyWUOePTYlCGvrNrgEVjYRkqILHzvVKDnLn43
+ on:
+ branch:
+ - master
+ - windows_binary_packages
+
diff --git a/bin/bbackupctl/bbackupctl.cpp b/bin/bbackupctl/bbackupctl.cpp
index 39f15baf..0e0c1e9c 100644
--- a/bin/bbackupctl/bbackupctl.cpp
+++ b/bin/bbackupctl/bbackupctl.cpp
@@ -11,14 +11,15 @@
#include <cstdio>
#include <cstdlib>
+#include <iostream>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#include <cstdlib>
-
+#include "box_getopt.h"
#include "MainHelper.h"
+#include "BackupDaemon.h"
#include "BoxPortsAndFiles.h"
#include "BackupDaemonConfigVerify.h"
#include "Socket.h"
@@ -37,12 +38,19 @@ enum Command
WaitForSyncStart,
WaitForSyncEnd,
SyncAndWaitForEnd,
+ NoCommand,
};
-void PrintUsageAndExit()
+void PrintUsageAndExit(int ret)
{
- printf("Usage: bbackupctl [-q] [-c config_file] <command>\n"
+ std::cout <<
+ "Usage: bbackupctl [options] <command>\n"
+ "\n"
+ "Options:\n" <<
+ Logging::OptionParser::GetUsageString() <<
+ "\n"
"Commands are:\n"
+ " status -- report daemon status without changing anything\n"
" sync -- start a synchronisation (backup) run now\n"
" force-sync -- force the start of a synchronisation run, "
"even if SyncAllowScript says no\n"
@@ -51,8 +59,8 @@ void PrintUsageAndExit()
" wait-for-sync -- wait until the next sync starts, then exit\n"
" wait-for-end -- wait until the next sync finishes, then exit\n"
" sync-and-wait -- start sync, wait until it finishes, then exit\n"
- );
- exit(1);
+ ;
+ exit(ret);
}
int main(int argc, const char *argv[])
@@ -69,28 +77,27 @@ int main(int argc, const char *argv[])
// Filename for configuration file?
std::string configFilename = BOX_GET_DEFAULT_BBACKUPD_CONFIG_FILE;
- // Quiet?
- bool quiet = false;
-
// See if there's another entry on the command line
int c;
- while((c = getopt(argc, (char * const *)argv, "qc:l:")) != -1)
+ std::string options("c:");
+ options += Logging::OptionParser::GetOptionString();
+ Logging::OptionParser LogLevel;
+
+ while((c = getopt(argc, (char * const *)argv, options.c_str())) != -1)
{
switch(c)
{
- case 'q':
- // Quiet mode
- quiet = true;
- break;
-
case 'c':
// store argument
configFilename = optarg;
break;
- case '?':
default:
- PrintUsageAndExit();
+ int ret = LogLevel.ProcessOption(c);
+ if(ret != 0)
+ {
+ PrintUsageAndExit(ret);
+ }
}
}
// Adjust arguments
@@ -100,11 +107,13 @@ int main(int argc, const char *argv[])
// Check there's a command
if(argc != 1)
{
- PrintUsageAndExit();
+ PrintUsageAndExit(2);
}
+ Logging::FilterConsole(LogLevel.GetCurrentLevel());
+
// Read in the configuration file
- if(!quiet) BOX_NOTICE("Using configuration file " << configFilename);
+ BOX_INFO("Using configuration file " << configFilename);
std::string errs;
std::auto_ptr<Configuration> config(
@@ -164,7 +173,7 @@ int main(int argc, const char *argv[])
// Wait for the configuration summary
std::string configSummary;
- if(!getLine.GetLine(configSummary))
+ if(!getLine.GetLine(configSummary, false, PROTOCOL_DEFAULT_TIMEOUT))
{
BOX_ERROR("Failed to receive configuration summary "
"from daemon");
@@ -188,19 +197,16 @@ int main(int argc, const char *argv[])
return 1;
}
// Print summary?
- if(!quiet)
- {
- BOX_INFO("Daemon configuration summary:\n"
- " AutomaticBackup = " <<
- (autoBackup?"true":"false") << "\n"
- " UpdateStoreInterval = " << updateStoreInterval <<
- " seconds\n"
- " MinimumFileAge = " << minimumFileAge << " seconds\n"
- " MaxUploadWait = " << maxUploadWait << " seconds");
- }
+ BOX_TRACE("Daemon configuration summary:\n"
+ " AutomaticBackup = " <<
+ (autoBackup?"true":"false") << "\n"
+ " UpdateStoreInterval = " << updateStoreInterval <<
+ " seconds\n"
+ " MinimumFileAge = " << minimumFileAge << " seconds\n"
+ " MaxUploadWait = " << maxUploadWait << " seconds");
std::string stateLine;
- if(!getLine.GetLine(stateLine) || getLine.IsEOF())
+ if(!getLine.GetLine(stateLine, false, PROTOCOL_DEFAULT_TIMEOUT) || getLine.IsEOF())
{
BOX_ERROR("Failed to receive state line from daemon");
return 1;
@@ -214,23 +220,32 @@ int main(int argc, const char *argv[])
return 1;
}
+ BOX_TRACE("Current state: " <<
+ BackupDaemon::GetStateName(currentState));
+
Command command = Default;
std::string commandName(argv[0]);
- if (commandName == "wait-for-sync")
+ if(commandName == "wait-for-sync")
{
command = WaitForSyncStart;
}
- else if (commandName == "wait-for-end")
+ else if(commandName == "wait-for-end")
{
command = WaitForSyncEnd;
}
- else if (commandName == "sync-and-wait")
+ else if(commandName == "sync-and-wait")
{
command = SyncAndWaitForEnd;
}
+ else if(commandName == "status")
+ {
+ BOX_NOTICE("state " <<
+ BackupDaemon::GetStateName(currentState));
+ command = NoCommand;
+ }
- switch (command)
+ switch(command)
{
case WaitForSyncStart:
case WaitForSyncEnd:
@@ -244,7 +259,6 @@ int main(int argc, const char *argv[])
"sync will never start!");
return 1;
}
-
}
break;
@@ -253,10 +267,10 @@ int main(int argc, const char *argv[])
// send a sync command
commandName = "force-sync";
std::string cmd = commandName + "\n";
- connection.Write(cmd.c_str(), cmd.size());
+ connection.Write(cmd, PROTOCOL_DEFAULT_TIMEOUT);
connection.WriteAllBuffered();
- if (currentState != 0)
+ if(currentState != 0)
{
BOX_INFO("Waiting for current sync/error state "
"to finish...");
@@ -266,11 +280,19 @@ int main(int argc, const char *argv[])
default:
{
- // Normal case, just send the command given
- // plus a quit command.
- std::string cmd = commandName;
- cmd += "\nquit\n";
- connection.Write(cmd.c_str(), cmd.size());
+ // Normal case, just send the command given, plus a
+ // quit command.
+ std::string cmd = commandName + "\n";
+ connection.Write(cmd, PROTOCOL_DEFAULT_TIMEOUT);
+ }
+ // fall through
+
+ case NoCommand:
+ {
+ // Normal case, just send the command given plus a
+ // quit command.
+ std::string cmd = "quit\n";
+ connection.Write(cmd, PROTOCOL_DEFAULT_TIMEOUT);
}
}
@@ -279,18 +301,33 @@ int main(int argc, const char *argv[])
bool syncIsRunning = false;
bool finished = false;
- while(!finished && !getLine.IsEOF() && getLine.GetLine(line))
+ while(command != NoCommand && !finished && !getLine.IsEOF() &&
+ getLine.GetLine(line, false, PROTOCOL_DEFAULT_TIMEOUT))
{
- switch (command)
+ BOX_TRACE("Received line: " << line);
+
+ if(line.substr(0, 6) == "state ")
+ {
+ std::string state_str = line.substr(6);
+ int state_num;
+ if(sscanf(state_str.c_str(), "%d", &state_num) == 1)
+ {
+ BOX_INFO("Daemon state changed to: " <<
+ BackupDaemon::GetStateName(state_num));
+ }
+ else
+ {
+ BOX_WARNING("Failed to parse line: " << line);
+ }
+ }
+
+ switch(command)
{
case WaitForSyncStart:
{
// Need to wait for the state change...
if(line == "start-sync")
{
- // Send a quit command to finish nicely
- connection.Write("quit\n", 5);
-
// And we're done
finished = true;
}
@@ -302,23 +339,20 @@ int main(int argc, const char *argv[])
{
if(line == "start-sync")
{
- if (!quiet) BOX_INFO("Sync started...");
+ BOX_TRACE("Sync started...");
syncIsRunning = true;
}
else if(line == "finish-sync")
{
if (syncIsRunning)
{
- if (!quiet) BOX_INFO("Sync finished.");
- // Send a quit command to finish nicely
- connection.Write("quit\n", 5);
-
// And we're done
+ BOX_TRACE("Sync finished.");
finished = true;
}
else
{
- if (!quiet) BOX_INFO("Previous sync finished.");
+ BOX_TRACE("Previous sync finished.");
}
// daemon must still be busy
}
@@ -330,12 +364,9 @@ int main(int argc, const char *argv[])
// Is this an OK or error line?
if(line == "ok")
{
- if(!quiet)
- {
- BOX_INFO("Control command "
- "sent: " <<
- commandName);
- }
+ BOX_TRACE("Control command "
+ "sent: " <<
+ commandName);
finished = true;
}
else if(line == "error")
@@ -350,6 +381,9 @@ int main(int argc, const char *argv[])
}
}
+ // Send a quit command to finish nicely
+ connection.Write("quit\n", 5, PROTOCOL_DEFAULT_TIMEOUT);
+
MAINHELPER_END
#if defined WIN32 && ! defined BOX_RELEASE_BUILD
diff --git a/bin/bbackupd/bbackupd.cpp b/bin/bbackupd/bbackupd.cpp
index bb64f745..5977615f 100644
--- a/bin/bbackupd/bbackupd.cpp
+++ b/bin/bbackupd/bbackupd.cpp
@@ -45,10 +45,12 @@ int main(int argc, const char *argv[])
#else // !WIN32
- BackupDaemon daemon;
- ExitCode = daemon.Main(BOX_GET_DEFAULT_BBACKUPD_CONFIG_FILE,
- argc, argv);
-
+ {
+ BackupDaemon daemon;
+ ExitCode = daemon.Main(BOX_GET_DEFAULT_BBACKUPD_CONFIG_FILE,
+ argc, argv);
+ }
+
#endif // WIN32
MAINHELPER_END
diff --git a/bin/bbackupquery/Makefile.extra b/bin/bbackupquery/Makefile.extra
deleted file mode 100644
index e1049b6d..00000000
--- a/bin/bbackupquery/Makefile.extra
+++ /dev/null
@@ -1,6 +0,0 @@
-
-# AUTOGEN SEEDING
-autogen_Documentation.cpp: makedocumentation.pl documentation.txt
- $(_PERL) makedocumentation.pl
-
-
diff --git a/bin/bbackupquery/bbackupquery.cpp b/bin/bbackupquery/bbackupquery.cpp
index 5493f49c..e10c48fe 100644
--- a/bin/bbackupquery/bbackupquery.cpp
+++ b/bin/bbackupquery/bbackupquery.cpp
@@ -66,11 +66,6 @@ void PrintUsageAndExit()
"Usage: bbackupquery [options] [command]...\n"
"\n"
"Options:\n"
- " -q Run more quietly, reduce verbosity level by one, can repeat\n"
- " -Q Run at minimum verbosity, log nothing\n"
- " -v Run more verbosely, increase verbosity level by one, can repeat\n"
- " -V Run at maximum verbosity, log everything\n"
- " -W <level> Set verbosity to error/warning/notice/info/trace/everything\n"
" -w Read/write mode, allow changes to store\n"
#ifdef WIN32
" -u Enable Unicode console, requires font change to Lucida Console\n"
@@ -80,11 +75,13 @@ void PrintUsageAndExit()
#endif
" -c <file> Use the specified configuration file. If -c is omitted, the last\n"
" argument is the configuration file, or else the default \n"
- " [" << BOX_GET_DEFAULT_BBACKUPD_CONFIG_FILE <<
- "]\n"
+ " [" << BOX_GET_DEFAULT_BBACKUPD_CONFIG_FILE << "]\n"
" -o <file> Write logging output to specified file as well as console\n"
" -O <level> Set file verbosity to error/warning/notice/info/trace/everything\n"
" -l <file> Write protocol debugging logs to specified file\n"
+ <<
+ Logging::OptionParser::GetUsageString()
+ <<
"\n"
"Parameters: as many commands as you like. If commands are multiple words,\n"
"remember to enclose the command in quotes. Remember to use the quit command\n"
@@ -154,6 +151,7 @@ char * completion_generator(const char *text, int state)
if(state < 0 || state >= (int) completions.size())
{
rl_attempted_completion_over = 1;
+ sapCmd.reset();
return NULL;
}
@@ -219,12 +217,6 @@ int main(int argc, const char *argv[])
Logging::SetProgramName("bbackupquery");
- #ifdef BOX_RELEASE_BUILD
- int masterLevel = Log::NOTICE; // need an int to do math with
- #else
- int masterLevel = Log::INFO; // need an int to do math with
- #endif
-
#ifdef WIN32
#define WIN32_OPTIONS "u"
bool unicodeConsole = false;
@@ -239,60 +231,19 @@ int main(int argc, const char *argv[])
#define READLINE_OPTIONS
#endif
- const char* validOpts = "qvVwc:l:o:O:W:" WIN32_OPTIONS READLINE_OPTIONS;
+ std::string options("wc:l:o:O:" WIN32_OPTIONS READLINE_OPTIONS);
+ options += Logging::OptionParser::GetOptionString();
+ Logging::OptionParser LogLevel;
std::string fileLogFile;
Log::Level fileLogLevel = Log::INVALID;
// See if there's another entry on the command line
int c;
- while((c = getopt(argc, (char * const *)argv, validOpts)) != -1)
+ while((c = getopt(argc, (char * const *)argv, options.c_str())) != -1)
{
switch(c)
{
- case 'q':
- {
- if(masterLevel == Log::NOTHING)
- {
- BOX_FATAL("Too many '-q': "
- "Cannot reduce logging "
- "level any more");
- return 2;
- }
- masterLevel--;
- }
- break;
-
- case 'v':
- {
- if(masterLevel == Log::EVERYTHING)
- {
- BOX_FATAL("Too many '-v': "
- "Cannot increase logging "
- "level any more");
- return 2;
- }
- masterLevel++;
- }
- break;
-
- case 'V':
- {
- masterLevel = Log::EVERYTHING;
- }
- break;
-
- case 'W':
- {
- masterLevel = Logging::GetNamedLevel(optarg);
- if (masterLevel == Log::INVALID)
- {
- BOX_FATAL("Invalid logging level");
- return 2;
- }
- }
- break;
-
case 'w':
// Read/write mode
readWrite = true;
@@ -341,36 +292,28 @@ int main(int argc, const char *argv[])
break;
#endif
- case '?':
default:
- PrintUsageAndExit();
+ int ret = LogLevel.ProcessOption(c);
+ if (ret != 0)
+ {
+ PrintUsageAndExit();
+ }
}
}
// Adjust arguments
argc -= optind;
argv += optind;
- Logging::SetGlobalLevel((Log::Level)masterLevel);
+ Logging::GetConsole().Filter(LogLevel.GetCurrentLevel());
std::auto_ptr<FileLogger> fileLogger;
if (fileLogLevel != Log::INVALID)
{
- fileLogger.reset(new FileLogger(fileLogFile, fileLogLevel));
- }
-
- bool quiet = false;
- if (masterLevel < Log::NOTICE)
- {
- // Quiet mode
- quiet = true;
+ fileLogger.reset(new FileLogger(fileLogFile, fileLogLevel,
+ true)); // open in append mode
}
- // Print banner?
- if(!quiet)
- {
- const char *banner = BANNER_TEXT("Backup Query Tool");
- BOX_NOTICE(banner);
- }
+ BOX_NOTICE(BANNER_TEXT("Backup Query Tool"));
#ifdef WIN32
if (unicodeConsole)
@@ -398,7 +341,7 @@ int main(int argc, const char *argv[])
#endif // WIN32
// Read in the configuration file
- if(!quiet) BOX_INFO("Using configuration file " << configFilename);
+ BOX_INFO("Using configuration file " << configFilename);
std::string errs;
std::auto_ptr<Configuration> config(
@@ -427,16 +370,17 @@ int main(int argc, const char *argv[])
BackupClientCryptoKeys_Setup(conf.GetKeyValue("KeysFile").c_str());
// 2. Connect to server
- if(!quiet) BOX_INFO("Connecting to store...");
- SocketStreamTLS socket;
- socket.Open(tlsContext, Socket::TypeINET,
+ BOX_INFO("Connecting to store...");
+ SocketStreamTLS *socket = new SocketStreamTLS;
+ std::auto_ptr<SocketStream> apSocket(socket);
+ socket->Open(tlsContext, Socket::TypeINET,
conf.GetKeyValue("StoreHostname").c_str(),
conf.GetKeyValueInt("StorePort"));
// 3. Make a protocol, and handshake
- if(!quiet) BOX_INFO("Handshake with store...");
+ BOX_INFO("Handshake with store...");
std::auto_ptr<BackupProtocolClient>
- apConnection(new BackupProtocolClient(socket));
+ apConnection(new BackupProtocolClient(apSocket));
BackupProtocolClient& connection(*(apConnection.get()));
connection.Handshake();
@@ -447,7 +391,7 @@ int main(int argc, const char *argv[])
}
// 4. Log in to server
- if(!quiet) BOX_INFO("Login to store...");
+ BOX_INFO("Login to store...");
// Check the version of the server
{
std::auto_ptr<BackupProtocolVersion> serverVersion(connection.QueryVersion(BACKUP_STORE_SERVER_VERSION));
@@ -461,7 +405,8 @@ int main(int argc, const char *argv[])
(readWrite)?0:(BackupProtocolLogin::Flags_ReadOnly));
// 5. Tell user.
- if(!quiet) printf("Login complete.\n\nType \"help\" for a list of commands.\n\n");
+ BOX_INFO("Login complete.");
+ BOX_INFO("Type \"help\" for a list of commands.");
// Set up a context for our work
BackupQueries context(connection, conf, readWrite);
@@ -525,6 +470,7 @@ int main(int argc, const char *argv[])
if(cmd_ptr == NULL)
{
// Ctrl-D pressed -- terminate now
+ puts("");
break;
}
@@ -569,9 +515,9 @@ int main(int argc, const char *argv[])
}
// Done... stop nicely
- if(!quiet) BOX_INFO("Logging off...");
+ BOX_INFO("Logging off...");
connection.QueryFinished();
- if(!quiet) BOX_INFO("Session finished.");
+ BOX_INFO("Session finished.");
// Return code
returnCode = context.GetReturnCode();
diff --git a/bin/bbstoreaccounts/bbstoreaccounts.cpp b/bin/bbstoreaccounts/bbstoreaccounts.cpp
index 6a5c2e33..6a173680 100644
--- a/bin/bbstoreaccounts/bbstoreaccounts.cpp
+++ b/bin/bbstoreaccounts/bbstoreaccounts.cpp
@@ -18,12 +18,7 @@
#include <sys/types.h>
-#include <algorithm>
-#include <cstring>
-#include <iostream>
-#include <ostream>
-#include <vector>
-
+#include "box_getopt.h"
#include "BackupStoreAccounts.h"
#include "BackupStoreAccountDatabase.h"
#include "BackupStoreCheck.h"
@@ -32,7 +27,6 @@
#include "BoxPortsAndFiles.h"
#include "HousekeepStoreAccount.h"
#include "MainHelper.h"
-#include "NamedLock.h"
#include "RaidFileController.h"
#include "StoreStructure.h"
#include "UnixUser.h"
@@ -42,476 +36,6 @@
#include <cstring>
-// max size of soft limit as percent of hard limit
-#define MAX_SOFT_LIMIT_SIZE 97
-
-bool sMachineReadableOutput = false;
-
-void CheckSoftHardLimits(int64_t SoftLimit, int64_t HardLimit)
-{
- if(SoftLimit > HardLimit)
- {
- BOX_FATAL("Soft limit must be less than the hard limit.");
- exit(1);
- }
- if(SoftLimit > ((HardLimit * MAX_SOFT_LIMIT_SIZE) / 100))
- {
- BOX_WARNING("We recommend setting the soft limit below " <<
- MAX_SOFT_LIMIT_SIZE << "% of the hard limit, or " <<
- HumanReadableSize((HardLimit * MAX_SOFT_LIMIT_SIZE)
- / 100) << " in this case.");
- }
-}
-
-int BlockSizeOfDiscSet(int discSetNum)
-{
- // Get controller, check disc set number
- RaidFileController &controller(RaidFileController::GetController());
- if(discSetNum < 0 || discSetNum >= controller.GetNumDiscSets())
- {
- BOX_FATAL("Disc set " << discSetNum << " does not exist.");
- exit(1);
- }
-
- // Return block size
- return controller.GetDiscSet(discSetNum).GetBlockSize();
-}
-
-std::string BlockSizeToString(int64_t Blocks, int64_t MaxBlocks, int discSetNum)
-{
- return FormatUsageBar(Blocks, Blocks * BlockSizeOfDiscSet(discSetNum),
- MaxBlocks * BlockSizeOfDiscSet(discSetNum),
- sMachineReadableOutput);
-}
-
-int64_t SizeStringToBlocks(const char *string, int discSetNum)
-{
- // Find block size
- int blockSize = BlockSizeOfDiscSet(discSetNum);
-
- // Get number
- char *endptr = (char*)string;
- int64_t number = strtol(string, &endptr, 0);
- if(endptr == string || number == LONG_MIN || number == LONG_MAX)
- {
- BOX_FATAL("'" << string << "' is not a valid number.");
- exit(1);
- }
-
- // Check units
- switch(*endptr)
- {
- case 'M':
- case 'm':
- // Units: Mb
- return (number * 1024*1024) / blockSize;
- break;
-
- case 'G':
- case 'g':
- // Units: Gb
- return (number * 1024*1024*1024) / blockSize;
- break;
-
- case 'B':
- case 'b':
- // Units: Blocks
- // Easy! Just return the number specified.
- return number;
- break;
-
- default:
- BOX_FATAL(string << " has an invalid units specifier "
- "(use B for blocks, M for MB, G for GB, eg 2GB)");
- exit(1);
- break;
- }
-}
-
-bool OpenAccount(Configuration &rConfig, int32_t ID, std::string &rRootDirOut,
- int &rDiscSetOut, std::auto_ptr<UnixUser> apUser, NamedLock* pLock);
-
-int SetLimit(Configuration &rConfig, int32_t ID, const char *SoftLimitStr,
- const char *HardLimitStr)
-{
- std::string rootDir;
- int discSetNum;
- std::auto_ptr<UnixUser> user; // used to reset uid when we return
- NamedLock writeLock;
-
- if(!OpenAccount(rConfig, ID, rootDir, discSetNum, user, &writeLock))
- {
- BOX_ERROR("Failed to open account " << BOX_FORMAT_ACCOUNT(ID)
- << " to change limits.");
- return 1;
- }
-
- // Load the info
- std::auto_ptr<BackupStoreInfo> info(BackupStoreInfo::Load(ID, rootDir,
- discSetNum, false /* Read/Write */));
-
- // Change the limits
- int64_t softlimit = SizeStringToBlocks(SoftLimitStr, discSetNum);
- int64_t hardlimit = SizeStringToBlocks(HardLimitStr, discSetNum);
- CheckSoftHardLimits(softlimit, hardlimit);
- info->ChangeLimits(softlimit, hardlimit);
-
- // Save
- info->Save();
-
- BOX_NOTICE("Limits on account " << BOX_FORMAT_ACCOUNT(ID) <<
- " changed to " << softlimit << " soft, " <<
- hardlimit << " hard.");
-
- return 0;
-}
-
-int SetAccountName(Configuration &rConfig, int32_t ID,
- const std::string& rNewAccountName)
-{
- std::string rootDir;
- int discSetNum;
- std::auto_ptr<UnixUser> user; // used to reset uid when we return
- NamedLock writeLock;
-
- if(!OpenAccount(rConfig, ID, rootDir, discSetNum, user, &writeLock))
- {
- BOX_ERROR("Failed to open account " << BOX_FORMAT_ACCOUNT(ID)
- << " to change name.");
- return 1;
- }
-
- // Load the info
- std::auto_ptr<BackupStoreInfo> info(BackupStoreInfo::Load(ID,
- rootDir, discSetNum, false /* Read/Write */));
-
- info->SetAccountName(rNewAccountName);
-
- // Save
- info->Save();
-
- BOX_NOTICE("Account " << BOX_FORMAT_ACCOUNT(ID) <<
- " name changed to " << rNewAccountName);
-
- return 0;
-}
-
-int AccountInfo(Configuration &rConfig, int32_t ID)
-{
- std::string rootDir;
- int discSetNum;
- std::auto_ptr<UnixUser> user; // used to reset uid when we return
-
- if(!OpenAccount(rConfig, ID, rootDir, discSetNum, user,
- NULL /* no write lock needed for this read-only operation */))
- {
- BOX_ERROR("Failed to open account " << BOX_FORMAT_ACCOUNT(ID)
- << " to display info.");
- return 1;
- }
-
- // Load it in
- std::auto_ptr<BackupStoreInfo> info(BackupStoreInfo::Load(ID,
- rootDir, discSetNum, true /* ReadOnly */));
-
- // Then print out lots of info
- std::cout << FormatUsageLineStart("Account ID", sMachineReadableOutput) <<
- BOX_FORMAT_ACCOUNT(ID) << std::endl;
- std::cout << FormatUsageLineStart("Account Name", sMachineReadableOutput) <<
- info->GetAccountName() << std::endl;
- std::cout << FormatUsageLineStart("Last object ID", sMachineReadableOutput) <<
- BOX_FORMAT_OBJECTID(info->GetLastObjectIDUsed()) << std::endl;
- std::cout << FormatUsageLineStart("Used", sMachineReadableOutput) <<
- BlockSizeToString(info->GetBlocksUsed(),
- info->GetBlocksHardLimit(), discSetNum) << std::endl;
- std::cout << FormatUsageLineStart("Current files",
- sMachineReadableOutput) <<
- BlockSizeToString(info->GetBlocksInCurrentFiles(),
- info->GetBlocksHardLimit(), discSetNum) << std::endl;
- std::cout << FormatUsageLineStart("Old files", sMachineReadableOutput) <<
- BlockSizeToString(info->GetBlocksInOldFiles(),
- info->GetBlocksHardLimit(), discSetNum) << std::endl;
- std::cout << FormatUsageLineStart("Deleted files", sMachineReadableOutput) <<
- BlockSizeToString(info->GetBlocksInDeletedFiles(),
- info->GetBlocksHardLimit(), discSetNum) << std::endl;
- std::cout << FormatUsageLineStart("Directories", sMachineReadableOutput) <<
- BlockSizeToString(info->GetBlocksInDirectories(),
- info->GetBlocksHardLimit(), discSetNum) << std::endl;
- std::cout << FormatUsageLineStart("Soft limit", sMachineReadableOutput) <<
- BlockSizeToString(info->GetBlocksSoftLimit(),
- info->GetBlocksHardLimit(), discSetNum) << std::endl;
- std::cout << FormatUsageLineStart("Hard limit", sMachineReadableOutput) <<
- BlockSizeToString(info->GetBlocksHardLimit(),
- info->GetBlocksHardLimit(), discSetNum) << std::endl;
- std::cout << FormatUsageLineStart("Client store marker", sMachineReadableOutput) <<
- info->GetLastObjectIDUsed() << std::endl;
- std::cout << FormatUsageLineStart("Live Files", sMachineReadableOutput) <<
- info->GetNumFiles() << std::endl;
- std::cout << FormatUsageLineStart("Old Files", sMachineReadableOutput) <<
- info->GetNumOldFiles() << std::endl;
- std::cout << FormatUsageLineStart("Deleted Files", sMachineReadableOutput) <<
- info->GetNumDeletedFiles() << std::endl;
- std::cout << FormatUsageLineStart("Directories", sMachineReadableOutput) <<
- info->GetNumDirectories() << std::endl;
- std::cout << FormatUsageLineStart("Enabled", sMachineReadableOutput) <<
- (info->IsAccountEnabled() ? "yes" : "no") << std::endl;
-
- return 0;
-}
-
-int SetAccountEnabled(Configuration &rConfig, int32_t ID, bool enabled)
-{
- std::string rootDir;
- int discSetNum;
- std::auto_ptr<UnixUser> user; // used to reset uid when we return
- NamedLock writeLock;
-
- if(!OpenAccount(rConfig, ID, rootDir, discSetNum, user, &writeLock))
- {
- BOX_ERROR("Failed to open account " << BOX_FORMAT_ACCOUNT(ID)
- << " to change enabled flag.");
- return 1;
- }
-
- // Load it in
- std::auto_ptr<BackupStoreInfo> info(BackupStoreInfo::Load(ID,
- rootDir, discSetNum, false /* ReadOnly */));
- info->SetAccountEnabled(enabled);
- info->Save();
- return 0;
-}
-
-int DeleteAccount(Configuration &rConfig, int32_t ID, bool AskForConfirmation)
-{
- std::string rootDir;
- int discSetNum;
- std::auto_ptr<UnixUser> user; // used to reset uid when we return
- NamedLock writeLock;
-
- // Obtain a write lock, as the daemon user
- if(!OpenAccount(rConfig, ID, rootDir, discSetNum, user, &writeLock))
- {
- BOX_ERROR("Failed to open account " << BOX_FORMAT_ACCOUNT(ID)
- << " for deletion.");
- return 1;
- }
-
- // Check user really wants to do this
- if(AskForConfirmation)
- {
- BOX_WARNING("Really delete account " <<
- BOX_FORMAT_ACCOUNT(ID) << "? (type 'yes' to confirm)");
- char response[256];
- if(::fgets(response, sizeof(response), stdin) == 0 || ::strcmp(response, "yes\n") != 0)
- {
- BOX_NOTICE("Deletion cancelled.");
- return 0;
- }
- }
-
- // Back to original user, but write lock is maintained
- user.reset();
-
- std::auto_ptr<BackupStoreAccountDatabase> db(BackupStoreAccountDatabase::Read(rConfig.GetKeyValue("AccountDatabase").c_str()));
-
- // Delete from account database
- db->DeleteEntry(ID);
-
- // Write back to disc
- db->Write();
-
- // Remove the store files...
-
- // First, become the user specified in the config file
- std::string username;
- {
- const Configuration &rserverConfig(rConfig.GetSubConfiguration("Server"));
- if(rserverConfig.KeyExists("User"))
- {
- username = rserverConfig.GetKeyValue("User");
- }
- }
-
- // Become the right user
- if(!username.empty())
- {
- // Username specified, change...
- user.reset(new UnixUser(username));
- user->ChangeProcessUser(true /* temporary */);
- // Change will be undone when user goes out of scope
- }
-
- // Secondly, work out which directories need wiping
- std::vector<std::string> toDelete;
- RaidFileController &rcontroller(RaidFileController::GetController());
- RaidFileDiscSet discSet(rcontroller.GetDiscSet(discSetNum));
- for(RaidFileDiscSet::const_iterator i(discSet.begin()); i != discSet.end(); ++i)
- {
- if(std::find(toDelete.begin(), toDelete.end(), *i) == toDelete.end())
- {
- toDelete.push_back((*i) + DIRECTORY_SEPARATOR + rootDir);
- }
- }
-
-#ifdef WIN32
- // Cannot remove files while holding a lock on them
- writeLock.ReleaseLock();
-#endif
-
- int retcode = 0;
-
- // Thirdly, delete the directories...
- for(std::vector<std::string>::const_iterator d(toDelete.begin()); d != toDelete.end(); ++d)
- {
- BOX_NOTICE("Deleting store directory " << (*d) << "...");
- // Just use the rm command to delete the files
- std::string cmd("rm -rf ");
- cmd += *d;
- // Run command
- if(::system(cmd.c_str()) != 0)
- {
- BOX_ERROR("Failed to delete files in " << (*d) <<
- ", delete them manually.");
- retcode = 1;
- }
- }
-
- // Success!
- return retcode;
-}
-
-bool OpenAccount(Configuration &rConfig, int32_t ID, std::string &rRootDirOut,
- int &rDiscSetOut, std::auto_ptr<UnixUser> apUser, NamedLock* pLock)
-{
- // Load in the account database
- std::auto_ptr<BackupStoreAccountDatabase> db(BackupStoreAccountDatabase::Read(rConfig.GetKeyValue("AccountDatabase").c_str()));
-
- // Exists?
- if(!db->EntryExists(ID))
- {
- BOX_ERROR("Account " << BOX_FORMAT_ACCOUNT(ID) <<
- " does not exist.");
- return false;
- }
-
- // Get info from the database
- BackupStoreAccounts acc(*db);
- acc.GetAccountRoot(ID, rRootDirOut, rDiscSetOut);
-
- // Get the user under which the daemon runs
- std::string username;
- {
- const Configuration &rserverConfig(rConfig.GetSubConfiguration("Server"));
- if(rserverConfig.KeyExists("User"))
- {
- username = rserverConfig.GetKeyValue("User");
- }
- }
-
- // Become the right user
- if(!username.empty())
- {
- // Username specified, change...
- apUser.reset(new UnixUser(username));
- apUser->ChangeProcessUser(true /* temporary */);
- // Change will be undone when apUser goes out of scope
- // in the caller.
- }
-
- if(pLock)
- {
- acc.LockAccount(ID, *pLock);
- }
-
- return true;
-}
-
-int CheckAccount(Configuration &rConfig, int32_t ID, bool FixErrors, bool Quiet)
-{
- std::string rootDir;
- int discSetNum;
- std::auto_ptr<UnixUser> user; // used to reset uid when we return
- NamedLock writeLock;
-
- if(!OpenAccount(rConfig, ID, rootDir, discSetNum, user, &writeLock))
- {
- BOX_ERROR("Failed to open account " << BOX_FORMAT_ACCOUNT(ID)
- << " for checking.");
- return 1;
- }
-
- // Check it
- BackupStoreCheck check(rootDir, discSetNum, ID, FixErrors, Quiet);
- check.Check();
-
- return check.ErrorsFound()?1:0;
-}
-
-int CreateAccount(Configuration &rConfig, int32_t ID, int32_t DiscNumber,
- int32_t SoftLimit, int32_t HardLimit)
-{
- // Load in the account database
- std::auto_ptr<BackupStoreAccountDatabase> db(BackupStoreAccountDatabase::Read(rConfig.GetKeyValue("AccountDatabase").c_str()));
-
- // Already exists?
- if(db->EntryExists(ID))
- {
- BOX_ERROR("Account " << BOX_FORMAT_ACCOUNT(ID) <<
- " already exists.");
- return 1;
- }
-
- // Get the user under which the daemon runs
- std::string username;
- {
- const Configuration &rserverConfig(rConfig.GetSubConfiguration("Server"));
- if(rserverConfig.KeyExists("User"))
- {
- username = rserverConfig.GetKeyValue("User");
- }
- }
-
- // Create it.
- BackupStoreAccounts acc(*db);
- acc.Create(ID, DiscNumber, SoftLimit, HardLimit, username);
-
- BOX_NOTICE("Account " << BOX_FORMAT_ACCOUNT(ID) << " created.");
-
- return 0;
-}
-
-int HousekeepAccountNow(Configuration &rConfig, int32_t ID)
-{
- std::string rootDir;
- int discSetNum;
- std::auto_ptr<UnixUser> user; // used to reset uid when we return
-
- if(!OpenAccount(rConfig, ID, rootDir, discSetNum, user,
- NULL /* housekeeping locks the account itself */))
- {
- BOX_ERROR("Failed to open account " << BOX_FORMAT_ACCOUNT(ID)
- << " for housekeeping.");
- return 1;
- }
-
- HousekeepStoreAccount housekeeping(ID, rootDir, discSetNum, NULL);
- bool success = housekeeping.DoHousekeeping();
-
- if(!success)
- {
- BOX_ERROR("Failed to lock account " << BOX_FORMAT_ACCOUNT(ID)
- << " for housekeeping: perhaps a client is "
- "still connected?");
- return 1;
- }
- else
- {
- BOX_TRACE("Finished housekeeping on account " <<
- BOX_FORMAT_ACCOUNT(ID));
- return 0;
- }
-}
-
void PrintUsageAndExit()
{
printf(
@@ -562,8 +86,9 @@ int main(int argc, const char *argv[])
Logging::SetProgramName("bbstoreaccounts");
// Filename for configuration file?
- std::string configFilename = BOX_GET_DEFAULT_BBACKUPD_CONFIG_FILE;
+ std::string configFilename = BOX_GET_DEFAULT_BBSTORED_CONFIG_FILE;
int logLevel = Log::EVERYTHING;
+ bool machineReadableOutput = false;
// See if there's another entry on the command line
int c;
@@ -587,7 +112,7 @@ int main(int argc, const char *argv[])
case 'm':
// enable machine readable output
- sMachineReadableOutput = true;
+ machineReadableOutput = true;
break;
case '?':
@@ -614,7 +139,7 @@ int main(int argc, const char *argv[])
BOX_ERROR("Invalid configuration file " << configFilename <<
":" << errs);
}
-
+
// Initialise the raid file controller
RaidFileController &rcontroller(RaidFileController::GetController());
rcontroller.Initialise(config->GetKeyValue("RaidFileConf").c_str());
@@ -633,6 +158,7 @@ int main(int argc, const char *argv[])
}
std::string command = argv[0];
+ BackupStoreAccountsControl control(*config, machineReadableOutput);
// Now do the command.
if(command == "create")
@@ -650,17 +176,18 @@ int main(int argc, const char *argv[])
}
// Decode limits
- softlimit = SizeStringToBlocks(argv[3], discnum);
- hardlimit = SizeStringToBlocks(argv[4], discnum);
- CheckSoftHardLimits(softlimit, hardlimit);
+ int blocksize = control.BlockSizeOfDiscSet(discnum);
+ softlimit = control.SizeStringToBlocks(argv[3], blocksize);
+ hardlimit = control.SizeStringToBlocks(argv[4], blocksize);
+ control.CheckSoftHardLimits(softlimit, hardlimit);
// Create the account...
- return CreateAccount(*config, id, discnum, softlimit, hardlimit);
+ return control.CreateAccount(id, discnum, softlimit, hardlimit);
}
else if(command == "info")
{
// Print information on this account
- return AccountInfo(*config, id);
+ return control.PrintAccountInfo(id);
}
else if(command == "enabled")
{
@@ -685,7 +212,7 @@ int main(int argc, const char *argv[])
PrintUsageAndExit();
}
- return SetAccountEnabled(*config, id, enabled);
+ return control.SetAccountEnabled(id, enabled);
}
else if(command == "setlimit")
{
@@ -696,7 +223,7 @@ int main(int argc, const char *argv[])
return 1;
}
- return SetLimit(*config, id, argv[2], argv[3]);
+ return control.SetLimit(id, argv[2], argv[3]);
}
else if(command == "name")
{
@@ -707,7 +234,7 @@ int main(int argc, const char *argv[])
return 1;
}
- return SetAccountName(*config, id, argv[2]);
+ return control.SetAccountName(id, argv[2]);
}
else if(command == "delete")
{
@@ -717,7 +244,7 @@ int main(int argc, const char *argv[])
{
askForConfirmation = false;
}
- return DeleteAccount(*config, id, askForConfirmation);
+ return control.DeleteAccount(id, askForConfirmation);
}
else if(command == "check")
{
@@ -743,11 +270,11 @@ int main(int argc, const char *argv[])
}
// Check the account
- return CheckAccount(*config, id, fixErrors, quiet);
+ return control.CheckAccount(id, fixErrors, quiet);
}
else if(command == "housekeep")
{
- return HousekeepAccountNow(*config, id);
+ return control.HousekeepAccountNow(id);
}
else
{
diff --git a/bin/bbstored/bbstored-certs.in b/bin/bbstored/bbstored-certs.in
index 85560748..00085662 100755
--- a/bin/bbstored/bbstored-certs.in
+++ b/bin/bbstored/bbstored-certs.in
@@ -288,7 +288,7 @@ sub get_csr_common_name
my $subject;
while(<CSRTEXT>)
{
- $subject = $1 if m/Subject:.+?CN=([-\.\w]+)/
+ $subject = $1 if m/Subject:.+?CN\s?=\s?([-\.\w]+)/;
}
close CSRTEXT;
diff --git a/bootstrap b/bootstrap
index 14fc19e3..b669c409 100755
--- a/bootstrap
+++ b/bootstrap
@@ -3,3 +3,4 @@
aclocal -I infrastructure/m4
autoheader
autoconf
+(cd qdbm; autoconf)
diff --git a/configure.ac b/configure.ac
index c5a05fe4..f9f481d5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,9 @@
AC_PREREQ(2.59)
AC_INIT([Box Backup], 0.11, [boxbackup@boxbackup.org],[boxbackup])
AC_CONFIG_SRCDIR([lib/common/Box.h])
+AC_CONFIG_AUX_DIR([infrastructure])
AC_CONFIG_HEADERS([lib/common/BoxConfig.h])
+AC_CONFIG_SUBDIRS([qdbm])
touch install-sh
AC_CANONICAL_SYSTEM
@@ -93,7 +95,6 @@ AC_CONFIG_FILES([infrastructure/BoxPlatform.pm
test/bbackupd/testfiles/bbackupd-temploc.conf
])
AX_CONFIG_SCRIPTS([bin/bbackupd/bbackupd-config
- bin/bbackupquery/makedocumentation.pl
bin/bbstored/bbstored-certs
bin/bbstored/bbstored-config
contrib/debian/bbackupd
@@ -106,8 +107,8 @@ AX_CONFIG_SCRIPTS([bin/bbackupd/bbackupd-config
contrib/solaris/bbstored-smf-method
contrib/windows/installer/boxbackup.mpi
infrastructure/makebuildenv.pl
- infrastructure/makeparcels.pl
infrastructure/makedistribution.pl
+ lib/bbackupquery/makedocumentation.pl
lib/common/makeexception.pl
lib/raidfile/raidfile-config
lib/server/makeprotocol.pl
@@ -122,27 +123,11 @@ AC_OUTPUT
# Configure the Box build system
echo
-if ! $PERL ./infrastructure/makebuildenv.pl \
-|| ! $PERL ./infrastructure/makeparcels.pl; then
+if ! $PERL ./infrastructure/makebuildenv.pl; then
echo "Making infrastructure failed!"
exit 1
fi
-cat parcels.txt | sed -e 's/#.*//' | while read cmd subdir configure_args; do
- if test "$cmd" = "subdir"; then
- echo
- export CC CXX CFLAGS CXXFLAGS LDFLAGS LIBS
- args="$configure_args --target=$target_alias"
- echo "Configuring $subdir with: $args"
-
- cd $subdir
- if ! ./configure $args; then
- echo "Configuring $subdir with $args failed!" >&2
- exit 1
- fi
- fi
-done || exit $?
-
# Write summary of important info
tee config.log.features <<EOC
A summary of the build configuration is below. Box Backup will function
diff --git a/distribution/boxbackup/DISTRIBUTION-MANIFEST.txt b/distribution/boxbackup/DISTRIBUTION-MANIFEST.txt
index 70a3a7bc..31e16d34 100644
--- a/distribution/boxbackup/DISTRIBUTION-MANIFEST.txt
+++ b/distribution/boxbackup/DISTRIBUTION-MANIFEST.txt
@@ -37,8 +37,6 @@ docs/api-notes/raidfile
docs/api-notes/raidfile/lib_raidfile.txt
LICENSE GPL
-docs/api-notes/backup
-
docs/images
docs/htmlguide
docs/htmlguide/adminguide
diff --git a/distribution/boxbackup/VERSION.txt b/distribution/boxbackup/VERSION.txt
index 0188cacd..89770ba5 100644
--- a/distribution/boxbackup/VERSION.txt
+++ b/distribution/boxbackup/VERSION.txt
@@ -1,2 +1,2 @@
-0.12
+0.13
boxbackup
diff --git a/docs/api-notes/win32_build_on_cygwin_using_mingw.txt b/docs/api-notes/win32_build_on_cygwin_using_mingw.txt
index 34dbac0b..5b413cd3 100644
--- a/docs/api-notes/win32_build_on_cygwin_using_mingw.txt
+++ b/docs/api-notes/win32_build_on_cygwin_using_mingw.txt
@@ -11,14 +11,14 @@ Start by installing Cygwin on your Windows machine from [http://www.cygwin.org/c
Make sure to select the following packages during installation:
* Archive/unzip
- * Devel/automake
* Devel/autoconf
- * Devel/gcc-mingw
- * Devel/gcc-mingw-g++
+ * Devel/automake
* Devel/make
+ * Devel/mingw64-x86_64-gcc
+ * Devel/mingw64-x86_64-gcc-g++
+ * Devel/mingw64-x86_64-zlib
* Libs/libxml2
* Libs/libxslt (for xsltproc)
- * Mingw/mingw-zlib-devel
* Perl/Perl
If you already have Cygwin installed, please re-run the installer and
@@ -45,16 +45,16 @@ your user's home directory in /etc/passwd to match.
== OpenSSL ==
-Download OpenSSL from [http://www.openssl.org/source/openssl-1.0.0e.tar.gz]
+Download OpenSSL from [http://www.openssl.org/source/openssl-1.0.1f.tar.gz]
Open a Cygwin shell, go to the base directory, and unpack OpenSSL:
- tar xzvf openssl-1.0.0e.tar.gz
+ tar xzvf openssl-1.0.1f.tar.gz
Configure OpenSSL for MinGW compilation, and build and install it:
- cd openssl-1.0.0e
- ./Configure --prefix=/usr/i686-pc-mingw32/ mingw
+ cd openssl-1.0.1f
+ ./Configure --prefix=/usr/x86_64-w64-mingw32 mingw64 --cross-compile-prefix=x86_64-w64-mingw32-
make
make install_sw
@@ -63,17 +63,15 @@ Configure OpenSSL for MinGW compilation, and build and install it:
This step is only required to support regular expressions in including/excluding files from backups. However, this is a very useful feature.
Download PCRE from
-[http://prdownloads.sourceforge.net/pcre/pcre-8.12.tar.bz2?download].
+[http://prdownloads.sourceforge.net/pcre/pcre-8.34.tar.bz2?download].
Open a Cygwin shell, go to the base directory, and unpack, build and
install PCRE:
- tar xjvf pcre-8.12.tar.bz2
- cd pcre-8.12
- export CFLAGS="-mno-cygwin"
- export CXXFLAGS="-mno-cygwin"
- ./configure --prefix=/usr/i686-pc-mingw32 --disable-shared
- make
+ tar xjvf pcre-8.34.tar.bz2
+ cd pcre-8.34
+ ./configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared --host=x86_64-w64-mingw32
+ make
make install
Note: we must disable shared libraries on Windows because otherwise
@@ -97,7 +95,7 @@ unpack it, compile and install it:
tar xzvf PDCurses-3.4.tar.gz
cd PDCurses-3.4/win32
make -f gccwin32.mak CC="gcc -mno-cygwin" LINK="gcc -mno-cygwin"
- cp pdcurses.a /usr/i686-pc-mingw32/lib/libpdcurses.a
+ cp pdcurses.a /usr/x86_64-w64-mingw32/lib/libpdcurses.a
Download Readline version 6.2 from
[ftp://ftp.cwru.edu/pub/bash/readline-6.2.tar.gz], and unpack
@@ -105,12 +103,10 @@ and install it thus:
tar xzvf readline-6.2.tar.gz
cd readline-6.2
- ./configure --prefix=/usr/i686-pc-mingw32 \
- CFLAGS="-mno-cygwin" \
- CPPFLAGS="-mno-cygwin" \
- LDFLAGS="-mno-cygwin" \
- LIBS="-lpdcurses" \
- --with-curses --disable-shared
+ ./configure --prefix=/usr/x86_64-w64-mingw32 \
+ --host=x86_64-w64-mingw32 \
+ LIBS="-lpdcurses" --with-curses --disable-shared \
+ CFLAGS="-DSIGHUP=0 -DSIGQUIT=0 -DS_ISUID=0 -DS_ISGID=0 -DS_IXGRP=0 -DS_IXOTH=0 -DS_IWOTH=0"
make
make install
diff --git a/docs/images/box-alpha.png b/docs/images/box-alpha.png
new file mode 100644
index 00000000..10137b7d
--- /dev/null
+++ b/docs/images/box-alpha.png
Binary files differ
diff --git a/docs/images/box-alpha.xcf b/docs/images/box-alpha.xcf
new file mode 100644
index 00000000..8155a679
--- /dev/null
+++ b/docs/images/box-alpha.xcf
Binary files differ
diff --git a/infrastructure/BoxPlatform.pm.in b/infrastructure/BoxPlatform.pm.in
index b2b2ce43..325e56c3 100644
--- a/infrastructure/BoxPlatform.pm.in
+++ b/infrastructure/BoxPlatform.pm.in
@@ -1,24 +1,34 @@
package BoxPlatform;
use Exporter;
@ISA = qw/Exporter/;
-@EXPORT = qw/$build_os $target_os $make_command $bsd_make $platform_define $platform_cpu $gcc_v3 $product_version $product_name $install_into_dir $sub_make_options $platform_compile_line_extra $platform_link_line_extra $platform_lib_files $platform_exe_ext $target_windows/;
+@EXPORT = qw/$build_os $build_os_ver $ac_target $ac_target_cpu $ac_target_vendor $ac_target_os $make_command $bsd_make $platform_define $platform_cpu $gcc_v3 $product_version $product_name $install_into_dir $sub_make_options $platform_compile_line_extra $platform_link_line_extra $platform_lib_files $platform_exe_ext $target_windows $target_msvc/;
BEGIN
{
# which OS are we building under?
- $target_os = '@target_os@';
+ $ac_target = '@target@';
+ $ac_target_cpu = '@target_cpu@';
+ $ac_target_vendor = '@target_vendor@';
+ $ac_target_os = '@target_os@';
$target_windows = 0;
- $target_windows = 1 if $target_os =~ m'^mingw32'
- or $target_os eq "winnt";
if ($^O eq "MSWin32" and not -x "/usr/bin/uname")
{
+ $target_windows = 1;
+ $target_msvc = 1;
$build_os = "winnt";
+ eval "use Win32";
+ $build_os_ver = Win32::GetOSName();
}
else
{
+ $target_windows = 1 if $ac_target_os =~ m'^mingw32'
+ or $ac_target_os eq "winnt";
+ $target_msvc = 0;
$build_os = `uname`;
+ $build_os_ver = `uname -r`;
chomp $build_os;
+ chomp $build_os_ver;
}
# Cygwin Builds usually something like CYGWIN_NT-5.0, CYGWIN_NT-5.1
@@ -30,11 +40,23 @@ BEGIN
$xcode_ver = `xcodebuild -version | awk '/^Xcode/ {print \$2}'`
}
- $make_command = ($build_os eq 'Darwin' && $xcode_ver < 4) ? 'bsdmake' : ($build_os eq 'SunOS') ? 'gmake' : 'make';
-
- $bsd_make = ($build_os ne 'Linux' && $build_os ne 'CYGWIN' &&
- $build_os ne "MINGW32" && $build_os ne "SunOS"
- && $build_os ne 'GNU/kFreeBSD' && $xcode_ver < 4);
+ if ($build_os eq 'Darwin' and $xcode_ver < 4)
+ {
+ $make_command = 'bsdmake';
+ $bsd_make = 1;
+ }
+ elsif ($build_os eq 'SunOS')
+ {
+ $make_command = 'gmake';
+ $bsd_make = 0;
+ }
+ else
+ {
+ $make_command = 'make';
+ $bsd_make = ($build_os ne 'Linux' && $build_os ne 'CYGWIN' &&
+ $build_os ne "MINGW32" && $build_os ne 'GNU/kFreeBSD' &&
+ $build_os ne 'Darwin');
+ }
# blank extra flags by default
$platform_compile_line_extra = '';
@@ -56,33 +78,10 @@ BEGIN
if($product_version =~ /USE_SVN_VERSION/)
{
- # for developers, use SVN version
- my $svnversion = `svnversion .`;
- chomp $svnversion;
- $svnversion =~ tr/0-9A-Za-z/_/c;
- open INFO,'svn info . |';
- my $svnurl;
- while(<INFO>)
- {
- if(m/^URL: (.+?)[\n\r]+/)
- {
- $svnurl = $1
- }
- }
- close INFO;
-
- my $svndir;
- if ($svnurl =~ m!/box/(.+)$!)
- {
- $svndir = $1;
- }
- elsif ($svnurl =~ m'/(boxi/.+)/boxi/boxbackup')
- {
- $svndir = $1;
- }
-
- $svndir =~ tr/0-9A-Za-z/_/c;
- $product_version =~ s/USE_SVN_VERSION/$svndir.'_'.$svnversion/e;
+ # for developers, use Git version (SVN is no more):
+ my $gitversion = `git rev-parse HEAD`;
+ chomp $gitversion;
+ $product_version =~ s/USE_SVN_VERSION/git_$gitversion/;
}
# where to put the files
@@ -108,7 +107,7 @@ BEGIN
print STDERR "$cpus processors detected, will set make to perform concurrent jobs\n";
$sub_make_options = ' -j '.($cpus + 1);
}
-
+
# if it's Darwin,
if($build_os eq 'Darwin')
{
@@ -120,6 +119,11 @@ BEGIN
$platform_link_line_extra = '-L/sw/lib ';
}
}
+
+ if ($target_windows)
+ {
+ $platform_exe_ext = '.exe';
+ }
}
sub make_flag
@@ -133,7 +137,7 @@ sub make_flag
sub parcel_root
{
- my $tos = $_[1] || $target_os;
+ my $tos = $_[1] || $ac_target;
return $product_name.'-'.$product_version.'-'.$_[0].'-'.$tos;
}
diff --git a/infrastructure/buildenv-testmain-template.cpp b/infrastructure/buildenv-testmain-template.cpp
index e5b1360d..d946c25d 100644
--- a/infrastructure/buildenv-testmain-template.cpp
+++ b/infrastructure/buildenv-testmain-template.cpp
@@ -23,10 +23,9 @@
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
-#include <unistd.h>
-#ifdef HAVE_GETOPT_H
- #include <getopt.h>
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
@@ -41,8 +40,12 @@
#endif
#include <exception>
+#include <iostream>
+#include <list>
#include <string>
+#include "box_getopt.h"
+#include "depot.h"
#include "Logging.h"
#include "Test.h"
#include "Timer.h"
@@ -57,10 +60,6 @@ int test(int argc, const char *argv[]);
#define MODE_TEXT "debug"
#endif
-int failures = 0;
-int first_fail_line;
-std::string first_fail_file;
-
#ifdef WIN32
#define QUIET_PROCESS "-Q"
#else
@@ -72,13 +71,13 @@ std::string bbackupd_args = QUIET_PROCESS,
bbackupquery_args,
test_args;
-int filedes_open_at_beginning = -1;
+bool filedes_initialised = false;
#ifdef WIN32
// any way to check for open file descriptors on Win32?
-inline bool check_filedes(bool x) { return 0; }
-inline bool checkfilesleftopen() { return false; }
+inline bool check_filedes(bool x) { return true; }
+inline bool checkfilesleftopen() { return true; }
#else // !WIN32
@@ -88,7 +87,9 @@ typedef enum
{
OPEN,
CLOSED,
- SYSLOG
+ SYSLOG,
+ STILLOPEN,
+ LEAKED,
}
filedes_t;
@@ -98,23 +99,60 @@ bool check_filedes(bool report)
{
bool allOk = true;
- // See how many file descriptors there are with values < 256
+ // See how many file descriptors there are with values < 256.
+ // In order to avoid disturbing things, we scan the file descriptors
+ // first, marking the ones that were OPEN at startup (report == FALSE)
+ // as STILLOPEN and the ones that were not as LEAKED. Then we run
+ // through again and print the results.
for(int d = 0; d < FILEDES_MAX; ++d)
{
if(::fcntl(d, F_GETFD) != -1)
{
// File descriptor obviously exists, but is it /dev/log?
-
- struct stat st;
- bool stat_success = false;
- bool is_syslog_socket = false;
-
- if(fstat(d, &st) == 0)
+ // Mark it as OPEN for now, and we'll find out later.
+ if(report)
{
- stat_success = true;
+ if(filedes_open[d] == OPEN)
+ {
+ filedes_open[d] = STILLOPEN;
+ }
+ else
+ {
+ filedes_open[d] = LEAKED;
+ }
+ }
+ else
+ {
+ filedes_open[d] = OPEN;
}
+ }
+ else
+ {
+ filedes_open[d] = CLOSED;
+ }
+ }
+
+ if(!report)
+ {
+ filedes_initialised = true;
+ return true;
+ }
+
+ // Now loop again, reporting differences.
+ for(int d = 0; d < FILEDES_MAX; ++d)
+ {
+ if(filedes_open[d] != LEAKED)
+ {
+ continue;
+ }
+
+ bool stat_success = false;
+ struct stat st;
+ if(fstat(d, &st) == 0)
+ {
+ stat_success = true;
- if(stat_success && (st.st_mode & S_IFSOCK))
+ if(st.st_mode & S_IFSOCK)
{
char buffer[256];
socklen_t addrlen = sizeof(buffer);
@@ -122,7 +160,7 @@ bool check_filedes(bool report)
#ifdef HAVE_GETPEERNAME
if(getpeername(d, (sockaddr*)buffer, &addrlen) != 0)
{
- BOX_WARNING("Failed to getpeername(" <<
+ BOX_LOG_SYS_WARNING("Failed to getpeername(" <<
d << "), cannot identify /dev/log");
}
else
@@ -132,90 +170,61 @@ bool check_filedes(bool report)
if(sa->sun_family == PF_UNIX &&
!strcmp(sa->sun_path, "/dev/log"))
{
- is_syslog_socket = true;
+ // it's a syslog socket, ignore it
+ filedes_open[d] = SYSLOG;
}
}
#endif // HAVE_GETPEERNAME
}
+ }
- if(report && filedes_open[d] != OPEN)
- {
- if(filedes_open[d] == SYSLOG)
- {
- // Different libcs have different ideas
- // about when to open and close this
- // socket, and it's not a leak, so
- // ignore it.
- }
- else if(stat_success)
- {
- int m = st.st_mode;
- #define flag(x) ((m & x) ? #x " " : "")
- BOX_FATAL("File descriptor " << d <<
- " left open (type == " <<
- flag(S_IFIFO) <<
- flag(S_IFCHR) <<
- flag(S_IFDIR) <<
- flag(S_IFBLK) <<
- flag(S_IFREG) <<
- flag(S_IFLNK) <<
- flag(S_IFSOCK) <<
- " or " << m << ")");
- allOk = false;
- }
- else
- {
- BOX_FATAL("File descriptor " << d <<
- " left open (and stat failed)");
- allOk = false;
- }
- }
- else if (!report)
- {
- filedes_open[d] = is_syslog_socket ? SYSLOG : OPEN;
- }
+ if(filedes_open[d] == SYSLOG)
+ {
+ // Different libcs have different ideas
+ // about when to open and close this
+ // socket, and it's not a leak, so
+ // ignore it.
}
- else
+ else if(stat_success)
{
- if (report && filedes_open[d] != CLOSED)
- {
- if (filedes_open[d] == SYSLOG)
- {
- // Different libcs have different ideas
- // about when to open and close this
- // socket, and it's not a leak, so
- // ignore it.
- }
- else if(filedes_open[d] == OPEN)
- {
- BOX_FATAL("File descriptor " << d <<
- " was open, now closed");
- allOk = false;
- }
- }
- else
- {
- filedes_open[d] = CLOSED;
- }
+ int m = st.st_mode;
+ #define flag(x) ((m & x) ? #x " " : "")
+ BOX_FATAL("File descriptor " << d <<
+ " left open (type == " <<
+ flag(S_IFIFO) <<
+ flag(S_IFCHR) <<
+ flag(S_IFDIR) <<
+ flag(S_IFBLK) <<
+ flag(S_IFREG) <<
+ flag(S_IFLNK) <<
+ flag(S_IFSOCK) <<
+ " or " << m << ")");
+ allOk = false;
+ }
+ else
+ {
+ BOX_FATAL("File descriptor " << d <<
+ " left open (and stat failed)");
+ allOk = false;
}
}
if (!report && allOk)
{
- filedes_open_at_beginning = 0;
+ filedes_initialised = true;
}
- return !allOk;
+ return allOk;
}
bool checkfilesleftopen()
{
- if(filedes_open_at_beginning == -1)
+ if(!filedes_initialised)
{
// Not used correctly, pretend that there were things
// left open so this gets investigated
BOX_FATAL("File descriptor test was not initialised");
- return true;
+ return false;
}
// Count the file descriptors open
@@ -224,6 +233,23 @@ bool checkfilesleftopen()
#endif
+int Usage(const std::string& ProgramName)
+{
+ std::cout <<
+ "(built with QDBM " << dpversion << ")\n"
+ "\n"
+ "Usage: " << ProgramName << " [options]\n"
+ "\n"
+ "Options:\n"
+ " -c/--bbackupd-args <args> Arguments to pass to bbackupd/BackupDaemon\n"
+ " -s/--bbstored-args <args> Arguments to pass to bbstored/BackupStoreDaemon\n"
+ " -d/--test-daemon-args <args> Arguments to pass to TestDaemon\n"
+ " -e/--execute-only <test> Execute only specific named test, can repeat\n"
+ " -h/--help Show this command-line help\n"
+ << Logging::OptionParser::GetUsageString();
+ return 0;
+}
+
int main(int argc, char * const * argv)
{
// Start memory leak testing
@@ -231,27 +257,25 @@ int main(int argc, char * const * argv)
Logging::SetProgramName(BOX_MODULE);
-#ifdef HAVE_GETOPT_H
- #ifdef BOX_RELEASE_BUILD
- int logLevel = Log::NOTICE; // need an int to do math with
- #else
- int logLevel = Log::INFO; // need an int to do math with
- #endif
-
struct option longopts[] =
{
{ "bbackupd-args", required_argument, NULL, 'c' },
{ "bbstored-args", required_argument, NULL, 's' },
{ "test-daemon-args", required_argument, NULL, 'd' },
+ { "execute-only", required_argument, NULL, 'e' },
+ { "help", no_argument, NULL, 'h' },
{ NULL, 0, NULL, 0 }
};
-
- int ch;
-
- while ((ch = getopt_long(argc, argv, "c:d:qs:t:vPTUVW:", longopts, NULL))
+
+ int c;
+ std::string options("c:d:e:hs:");
+ options += Logging::OptionParser::GetOptionString();
+ Logging::OptionParser LogLevel;
+
+ while ((c = getopt_long(argc, argv, options.c_str(), longopts, NULL))
!= -1)
{
- switch(ch)
+ switch(c)
{
case 'c':
{
@@ -273,106 +297,43 @@ int main(int argc, char * const * argv)
}
break;
- case 's':
- {
- bbstored_args += " ";
- bbstored_args += optarg;
- }
- break;
-
- #ifndef WIN32
- case 'P':
+ case 'e':
{
- Console::SetShowPID(true);
+ run_only_named_tests.push_back(optarg);
}
break;
- #endif
- case 'q':
+ case 'h':
{
- if(logLevel == Log::NOTHING)
- {
- BOX_FATAL("Too many '-q': "
- "Cannot reduce logging "
- "level any more");
- return 2;
- }
- logLevel--;
+ return Usage(argv[0]);
}
break;
- case 'v':
- {
- if(logLevel == Log::EVERYTHING)
- {
- BOX_FATAL("Too many '-v': "
- "Cannot increase logging "
- "level any more");
- return 2;
- }
- logLevel++;
- }
- break;
-
- case 'V':
+ case 's':
{
- logLevel = Log::EVERYTHING;
+ bbstored_args += " ";
+ bbstored_args += optarg;
}
break;
- case 'W':
+ default:
{
- logLevel = Logging::GetNamedLevel(optarg);
- if (logLevel == Log::INVALID)
+ int ret = LogLevel.ProcessOption(c);
+ if(ret != 0)
{
- BOX_FATAL("Invalid logging level: " << optarg);
- return 2;
+ fprintf(stderr, "Unknown option code "
+ "'%c'\n", c);
+ exit(2);
}
}
- break;
-
- case 't':
- {
- Logging::SetProgramName(optarg);
- Console::SetShowTag(true);
- }
- break;
-
- case 'T':
- {
- Console::SetShowTime(true);
- }
- break;
-
- case 'U':
- {
- Console::SetShowTime(true);
- Console::SetShowTimeMicros(true);
- }
- break;
-
- case '?':
- {
- fprintf(stderr, "Unknown option: '%c'\n",
- optopt);
- exit(2);
- }
-
- default:
- {
- fprintf(stderr, "Unknown option code '%c'\n",
- ch);
- exit(2);
- }
}
}
- Logging::SetGlobalLevel((Log::Level)logLevel);
- Logging::FilterConsole((Log::Level)logLevel);
+ Logging::FilterSyslog(Log::NOTHING);
+ Logging::FilterConsole(LogLevel.GetCurrentLevel());
argc -= optind - 1;
argv += optind - 1;
-#endif // HAVE_GETOPT_H
// If there is more than one argument, then the test is doing something advanced, so leave it alone
bool fulltestmode = (argc == 1);
@@ -383,6 +344,14 @@ int main(int argc, char * const * argv)
BOX_NOTICE("Running test TEST_NAME in " MODE_TEXT " mode...");
// Count open file descriptors for a very crude "files left open" test
+ Logging::GetSyslog().Shutdown();
+
+ // On NetBSD, gethostbyname() appears to open a kqueue socket
+ // and it's not clear how to close it again. So let's just do
+ // it once, before counting fds for the first time, so that it's
+ // already open and doesn't count as a leak.
+ ::gethostbyname("nonexistent");
+
check_filedes(false);
#ifdef WIN32
@@ -402,7 +371,7 @@ int main(int argc, char * const * argv)
Timers::Init();
int returncode = test(argc, (const char **)argv);
- Timers::Cleanup();
+ Timers::Cleanup(false);
fflush(stdout);
fflush(stderr);
@@ -411,7 +380,7 @@ int main(int argc, char * const * argv)
#ifdef BOX_MEMORY_LEAK_TESTING
if(memleakfinder_numleaks() != 0)
{
- failures++;
+ num_failures++;
printf("FAILURE: Memory leaks detected in test code\n");
printf("==== MEMORY LEAKS =================================\n");
memleakfinder_reportleaks();
@@ -421,20 +390,22 @@ int main(int argc, char * const * argv)
if(fulltestmode)
{
- bool filesleftopen = checkfilesleftopen();
+ Logging::GetSyslog().Shutdown();
+
+ bool filesleftopen = !checkfilesleftopen();
fflush(stdout);
fflush(stderr);
if(filesleftopen)
{
- failures++;
+ num_failures++;
printf("IMPLICIT TEST FAILED: Something left files open\n");
}
- if(failures > 0)
+ if(num_failures > 0)
{
printf("FAILED: %d tests failed (first at "
- "%s:%d)\n", failures,
+ "%s:%d)\n", num_failures,
first_fail_file.c_str(),
first_fail_line);
}
@@ -446,12 +417,6 @@ int main(int argc, char * const * argv)
return returncode;
}
- catch(BoxException &e)
- {
- printf("FAILED: Exception caught: %s: %s\n", e.what(),
- e.GetMessage().c_str());
- return 1;
- }
catch(std::exception &e)
{
printf("FAILED: Exception caught: %s\n", e.what());
@@ -464,7 +429,7 @@ int main(int argc, char * const * argv)
}
if(fulltestmode)
{
- if(checkfilesleftopen())
+ if(!checkfilesleftopen())
{
printf("WARNING: Files were left open\n");
}
diff --git a/infrastructure/cmake/.gitignore b/infrastructure/cmake/.gitignore
new file mode 100644
index 00000000..b27d6b9f
--- /dev/null
+++ b/infrastructure/cmake/.gitignore
@@ -0,0 +1,6 @@
+*.vcxproj
+*.vcxproj.filters
+BoxBackup.sln
+CMakeCache.txt
+CMakeFiles
+cmake_install.cmake
diff --git a/infrastructure/cmake/CMakeLists.txt b/infrastructure/cmake/CMakeLists.txt
new file mode 100644
index 00000000..65f59eb8
--- /dev/null
+++ b/infrastructure/cmake/CMakeLists.txt
@@ -0,0 +1,744 @@
+cmake_minimum_required(VERSION 2.6)
+
+find_program(CCACHE_PROGRAM ccache)
+if(CCACHE_PROGRAM)
+ # Support Unix Makefiles and Ninja
+ set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
+endif()
+
+project(BoxBackup)
+enable_testing()
+
+set(base_dir ${CMAKE_SOURCE_DIR}/../..)
+
+set(files_to_configure
+ bin/bbackupd/bbackupd-config
+ bin/bbstored/bbstored-certs
+ bin/bbstored/bbstored-config
+ contrib/mac_osx/org.boxbackup.bbackupd.plist
+ contrib/mac_osx/org.boxbackup.bbstored.plist
+ contrib/solaris/bbackupd-manifest.xml
+ contrib/solaris/bbstored-manifest.xml
+ contrib/debian/bbackupd
+ contrib/debian/bbstored
+ contrib/redhat/bbackupd
+ contrib/redhat/bbstored
+ contrib/suse/bbackupd
+ contrib/suse/bbstored
+ contrib/solaris/bbackupd-smf-method
+ contrib/solaris/bbstored-smf-method
+ contrib/windows/installer/boxbackup.mpi
+ infrastructure/BoxPlatform.pm
+ infrastructure/makebuildenv.pl
+ infrastructure/makedistribution.pl
+ lib/bbackupquery/makedocumentation.pl
+ lib/common/BoxPortsAndFiles.h
+ lib/common/makeexception.pl
+ lib/raidfile/raidfile-config
+ lib/server/makeprotocol.pl
+ runtest.pl
+ test/backupstorefix/testfiles/testbackupstorefix.pl
+ test/bbackupd/testfiles/bbackupd.conf
+ test/bbackupd/testfiles/bbackupd-exclude.conf
+ test/bbackupd/testfiles/bbackupd-snapshot.conf
+ test/bbackupd/testfiles/bbackupd-symlink.conf
+ test/bbackupd/testfiles/bbackupd-temploc.conf
+ test/bbackupd/testfiles/extcheck1.pl
+ test/bbackupd/testfiles/extcheck2.pl
+ test/bbackupd/testfiles/notifyscript.pl
+ test/bbackupd/testfiles/syncallowscript.pl
+)
+
+# We need to substitute TARGET_PERL in test/bbackupd/testfiles/bbackupd.conf, so define it
+# as a variable before running configure_file().
+include(FindPerl)
+set(TARGET_PERL ${PERL_EXECUTABLE})
+
+function(replace_file_if_different dest_file source_file)
+ execute_process(
+ COMMAND "${CMAKE_COMMAND}" -E
+ copy_if_different "${source_file}" "${dest_file}")
+ execute_process(
+ COMMAND "${CMAKE_COMMAND}" -E
+ remove "${source_file}")
+endfunction()
+
+function(move_file_if_exists source_file dest_file)
+ if(EXISTS "${source_file}")
+ execute_process(
+ COMMAND "${CMAKE_COMMAND}" -E
+ rename "${source_file}" "${dest_file}")
+ endif()
+endfunction()
+
+foreach(file_to_configure ${files_to_configure})
+ configure_file("${base_dir}/${file_to_configure}.in" "${base_dir}/${file_to_configure}.out" @ONLY)
+ replace_file_if_different(
+ "${base_dir}/${file_to_configure}"
+ "${base_dir}/${file_to_configure}.out")
+endforeach()
+
+# If BOXBACKUP_VERSION is defined when running CMake (as the AppVeyor config does), use it
+# as-is, since it contains the full version number, branch, and platform (Win32/Win64):
+if(BOXBACKUP_VERSION)
+ set(boxbackup_version ${BOXBACKUP_VERSION})
+ # Remove CPACK_SYSTEM_NAME from the default CPACK_PACKAGE_NAME, because it's already
+ # included in the CPACK_PACKAGE_VERSION:
+ set(CPACK_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${boxbackup_version})
+else()
+ # Work out the current Box version (requires Perl) and update lib/common/BoxVersion.h,
+ # but only if it has changed, to avoid unnecessary complete rebuilds due to timestamps.
+ execute_process(
+ COMMAND ${PERL_EXECUTABLE} ${base_dir}/infrastructure/cmake/getversion.pl
+ WORKING_DIRECTORY ${base_dir}/infrastructure
+ RESULT_VARIABLE status
+ OUTPUT_VARIABLE boxbackup_version
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_VARIABLE command_output)
+ if(NOT status EQUAL 0)
+ message(FATAL_ERROR "Failed to execute: "
+ "${PERL_EXECUTABLE} ${base_dir}/infrastructure/cmake/getversion.pl: "
+ "status ${status}: ${command_output}")
+ endif()
+endif()
+
+file(WRITE "${base_dir}/lib/common/BoxVersion.h.new"
+ "#define BOX_VERSION \"${boxbackup_version}\"\n")
+replace_file_if_different(
+ "${base_dir}/lib/common/BoxVersion.h"
+ "${base_dir}/lib/common/BoxVersion.h.new")
+
+add_definitions(-DBOX_CMAKE -DNEED_BOX_VERSION_H)
+
+if(WIN32)
+ add_definitions(-DWIN32)
+endif()
+
+# Parsing Makefile.extra files in CMake script is a pain, so the relevant rules for
+# code-generating Perl scripts are hard-coded here.
+
+set(exception_files
+ lib/backupclient/ClientException.txt
+ lib/backupstore/BackupStoreException.txt
+ lib/common/CommonException.txt
+ lib/common/ConversionException.txt
+ lib/compress/CompressException.txt
+ lib/crypto/CipherException.txt
+ lib/httpserver/HTTPException.txt
+ lib/raidfile/RaidFileException.txt
+ lib/server/ServerException.txt
+ lib/server/ConnectionException.txt
+)
+
+foreach(exception_file ${exception_files})
+ string(REGEX MATCH "(.*)/(.*).txt" valid_exception_file ${exception_file})
+ if(NOT valid_exception_file)
+ message(FATAL_ERROR "invalid exception file: '${exception_file}'")
+ endif()
+
+ set(output_file "${base_dir}/${CMAKE_MATCH_1}/autogen_${CMAKE_MATCH_2}.cpp")
+ add_custom_command(OUTPUT "${output_file}"
+ MAIN_DEPENDENCY "${base_dir}/${exception_file}"
+ COMMAND ${PERL_EXECUTABLE} "${base_dir}/lib/common/makeexception.pl" "${CMAKE_MATCH_2}.txt"
+ WORKING_DIRECTORY "${base_dir}/${CMAKE_MATCH_1}")
+
+ string(REPLACE "/" "_" module_name ${CMAKE_MATCH_1})
+ set(${module_name}_extra_files ${${module_name}_extra_files} ${output_file})
+endforeach()
+
+set(protocol_files
+ lib/backupstore/BackupProtocol.txt
+ test/basicserver/TestProtocol.txt
+)
+
+foreach(protocol_file ${protocol_files})
+ string(REGEX MATCH "(.*)/(.*).txt" valid_protocol_file ${protocol_file})
+ if(NOT valid_protocol_file)
+ message(FATAL_ERROR "invalid protocol file: '${protocol_file}'")
+ endif()
+
+ set(output_file "${base_dir}/${CMAKE_MATCH_1}/autogen_${CMAKE_MATCH_2}.cpp")
+ add_custom_command(OUTPUT "${output_file}"
+ MAIN_DEPENDENCY "${base_dir}/${protocol_file}"
+ COMMAND ${PERL_EXECUTABLE} "${base_dir}/lib/server/makeprotocol.pl" "${CMAKE_MATCH_2}.txt"
+ WORKING_DIRECTORY "${base_dir}/${CMAKE_MATCH_1}")
+
+ string(REPLACE "/" "_" module_name ${CMAKE_MATCH_1})
+ set(${module_name}_extra_files ${${module_name}_extra_files} ${output_file})
+endforeach()
+
+set(documentation_files
+ lib/bbackupquery/Documentation.txt
+)
+
+foreach(documentation_file ${documentation_files})
+ string(REGEX MATCH "(.*)/(.*).txt" valid_documentation_file ${documentation_file})
+ if(NOT valid_documentation_file)
+ message(FATAL_ERROR "invalid documentation file: '${documentation_file}'")
+ endif()
+
+ set(output_file "${base_dir}/${CMAKE_MATCH_1}/autogen_${CMAKE_MATCH_2}.cpp")
+ add_custom_command(OUTPUT "${output_file}"
+ MAIN_DEPENDENCY "${base_dir}/${documentation_file}"
+ COMMAND ${PERL_EXECUTABLE} "${base_dir}/lib/bbackupquery/makedocumentation.pl"
+ WORKING_DIRECTORY "${base_dir}/${CMAKE_MATCH_1}")
+
+ string(REPLACE "/" "_" module_name ${CMAKE_MATCH_1})
+ set(${module_name}_extra_files ${${module_name}_extra_files} ${output_file})
+endforeach()
+
+set(testmain_template_cpp
+ "${base_dir}/infrastructure/buildenv-testmain-template.cpp"
+)
+set(release_or_debug_dir
+ "${base_dir}/$<$<CONFIG:Debug>:debug>$<$<CONFIG:Release>:release>$<$<CONFIG:RelWithDebInfo>:release>"
+)
+
+file(STRINGS ${base_dir}/modules.txt module_deps REGEX "^[^#]")
+foreach(module_dep ${module_deps})
+
+ string(REGEX MATCH "([^ ]+)[ ]*(.*)" valid_module_line ${module_dep})
+ if(valid_module_line)
+ if(DEBUG)
+ message(STATUS "found module: ${CMAKE_MATCH_1} -> ${CMAKE_MATCH_2}")
+ endif()
+
+ set(module_dir ${CMAKE_MATCH_1})
+ set(module_path ${base_dir}/${module_dir})
+ string(REPLACE "/" "_" module_name ${CMAKE_MATCH_1})
+ string(REPLACE "/" "_" dependencies "${CMAKE_MATCH_2}")
+
+ # We are replacing QDBM's normal build system, and we only want to include
+ # the modules that we actually need, to avoid warnings about duplicate
+ # definitions, and potential conflicts with Box Backup code in future, so
+ # we specify the C files to compile in explicitly.
+ if(module_name STREQUAL "qdbm")
+ file(GLOB module_files ${module_path}/depot.c ${module_path}/myconf.c)
+ else()
+ file(GLOB module_files ${module_path}/*.cpp ${module_path}/*.h)
+ endif()
+
+ set(module_files ${module_files} ${${module_name}_extra_files})
+
+ string(REGEX REPLACE "^ " "" dependencies "${dependencies}")
+ string(REGEX REPLACE " $" "" dependencies "${dependencies}")
+
+ if(module_name MATCHES "^bin_")
+ string(REGEX MATCH "^bin_(.*)" valid_exe ${module_name})
+ set(bin_name ${CMAKE_MATCH_1})
+ if(DEBUG)
+ message(STATUS "add executable '${module_name}': '${module_files}'")
+ endif()
+
+ add_executable(${module_name} ${module_files})
+ # Rename the output executable from bin_bbackupd(.exe) to bbackupd(.exe):
+ set_target_properties(${module_name} PROPERTIES
+ OUTPUT_NAME "${bin_name}")
+
+ # Use a custom post-build command instead of install(...) to install
+ # binaries ready for running tests, because we don't want "make install" to
+ # do this too, and absolute-path installations break the CPack generators.
+ add_custom_command(TARGET ${module_name} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy
+ "$<TARGET_FILE:${module_name}>"
+ "${release_or_debug_dir}/${module_dir}/${bin_name}${CMAKE_EXECUTABLE_SUFFIX}"
+ VERBATIM)
+
+ # For "make install" and CPack generators:
+ install(TARGETS ${module_name} RUNTIME
+ CONFIGURATIONS Debug;Release
+ DESTINATION "."
+ COMPONENT Applications)
+ elseif(module_name MATCHES "^test_")
+ string(REGEX MATCH "^test_(.*)" valid_test ${module_name})
+ set(test_name ${CMAKE_MATCH_1})
+ set(bin_name ${module_name})
+
+ if(DEBUG)
+ message(STATUS "add test '${module_name}': '${module_files}'")
+ endif()
+
+ set(module_files ${module_files} "${testmain_template_cpp}")
+ add_executable(${module_name} ${module_files})
+
+ # Use a custom post-build command instead of install(...) to install
+ # binaries ready for running tests, because we don't want "make install" to
+ # do this too, and absolute-path installations break the CPack generators.
+ add_custom_command(TARGET ${module_name} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy
+ "$<TARGET_FILE:${module_name}>"
+ "${release_or_debug_dir}/${module_dir}/${bin_name}${CMAKE_EXECUTABLE_SUFFIX}"
+ VERBATIM)
+
+ if(${APPVEYOR_MODE})
+ set(appveyor_runtest_pl_switch -a)
+ else()
+ set(appveyor_runtest_pl_switch)
+ endif()
+
+ if(WIN32)
+ set(test_command_internal "$<TARGET_FILE_NAME:${module_name}>")
+ else()
+ set(test_command_internal "./$<TARGET_FILE_NAME:${module_name}>")
+ endif()
+
+ target_compile_definitions(${module_name} PRIVATE
+ -DTEST_EXECUTABLE="${test_command_internal}")
+ add_test(NAME ${test_name}
+ COMMAND ${PERL_EXECUTABLE} ${base_dir}/runtest.pl
+ ${appveyor_runtest_pl_switch} -c ${test_name}
+ $<$<CONFIG:Debug>:DEBUG>$<$<CONFIG:Release>:RELEASE>$<$<CONFIG:RelWithDebInfo>:RELEASE>
+ "$<TARGET_FILE:${module_name}>" "${test_command_internal}"
+ WORKING_DIRECTORY ${base_dir})
+
+ if(${APPVEYOR_MODE})
+ execute_process(COMMAND appveyor AddTest -Name ${test_name}
+ -Framework Custom -FileName "")
+ endif()
+
+ # It helps with debugging if the test depends on another step which
+ # prepares the target directory, and is always out of date.
+ add_custom_target(${module_name}-prepare
+ COMMAND ${PERL_EXECUTABLE} ${base_dir}/runtest.pl
+ -n -c ${test_name}
+ $<$<CONFIG:Debug>:DEBUG>$<$<CONFIG:Release>:RELEASE>$<$<CONFIG:RelWithDebInfo>:RELEASE>
+ "$<TARGET_FILE:${module_name}>" "${test_command_internal}"
+ WORKING_DIRECTORY ${base_dir})
+ elseif(module_name MATCHES "^(lib_.*|qdbm)$")
+ if(DEBUG)
+ message(STATUS "add library '${module_name}': '${module_files}'")
+ endif()
+ add_library(${module_name} STATIC ${module_files})
+ else()
+ message(FATAL_ERROR "Unsupported module type: " ${module_name})
+ endif()
+
+ target_compile_definitions(${module_name} PRIVATE -DBOX_MODULE="${module_name}")
+
+ if(dependencies)
+ string(REGEX REPLACE "[ ]+" ";" dependency_list "${dependencies}")
+
+ foreach(dependency ${dependency_list})
+ if(DEBUG)
+ message(STATUS "add dependency to '${module_name}': '${dependency}'")
+ endif()
+ add_dependencies(${module_name} ${dependency})
+ if(dependency MATCHES "^(lib_.*|qdbm)$")
+ # message(STATUS "add link library to '${module_name}': '${dependency}'")
+ target_link_libraries(${module_name} PUBLIC ${dependency})
+ endif()
+
+ # We can't make a binary depend on another binary, so we need to
+ # add the dependency's directory directly to our include path.
+ if(dependency MATCHES "^bin_")
+ get_property(dep_include_dirs
+ TARGET ${dependency}
+ PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
+ target_include_directories(${module_name}
+ PUBLIC ${dep_include_dirs})
+ endif()
+ endforeach()
+ endif()
+
+ target_include_directories(${module_name} PUBLIC ${module_path})
+ endif()
+endforeach()
+
+if(WIN32)
+ install(FILES ${base_dir}/bin/bbackupd/win32/NotifySysAdmin.vbs
+ DESTINATION "." COMPONENT Extras)
+ install(FILES ${base_dir}/bin/bbackupd/win32/bbackupd.conf
+ DESTINATION "." COMPONENT Extras)
+else()
+ install(FILES ${base_dir}/bin/bbackupd/bbackupd-config
+ DESTINATION "." COMPONENT Extras)
+endif()
+
+# We can't do anything conditional on CMAKE_BUILD_TYPE because that's not valid for multi-configuration
+# generators such as MSVC. We need to use a generator expression instead.
+target_compile_definitions(lib_common PUBLIC $<$<CONFIG:Release>:BOX_RELEASE_BUILD>)
+
+# Detect platform features and write BoxConfig.h.in. Reuse code from
+# infrastructure/m4/boxbackup_tests.m4 where possible
+
+include(CheckCXXCompilerFlag)
+include(CheckCXXSourceCompiles)
+include(CheckFunctionExists)
+include(CheckIncludeFiles)
+include(CheckLibraryExists)
+include(CheckSymbolExists)
+
+set(boxconfig_h_file "${CMAKE_BINARY_DIR}/BoxConfig.h.in")
+file(REMOVE "${boxconfig_h_file}")
+file(WRITE "${boxconfig_h_file}" "// Auto-generated by CMake. Do not edit.\n")
+
+if(WIN32)
+ target_link_libraries(lib_common PUBLIC ws2_32 gdi32)
+endif()
+
+# On Windows we want to statically link zlib to make debugging and distribution easier,
+# but FindZLIB.cmake doesn't offer that as an option, so we have to go through some
+# contortions to "find" the correct library. ZLIB_ROOT is required in this case.
+if(WIN32)
+ if(NOT DEFINED ZLIB_ROOT)
+ message(FATAL_ERROR "You must set ZLIB_ROOT to point to include/zlib.h and lib/zlibstatic[d].lib on Windows")
+ endif()
+
+ message(STATUS "Searching for Zlib in: ${ZLIB_ROOT}")
+ find_path(ZLIB_INCLUDE_DIR zlib.h PATHS ${ZLIB_ROOT}/include NO_DEFAULT_PATH)
+ include_directories(${ZLIB_INCLUDE_DIR})
+ message(STATUS "Found Zlib headers: ${ZLIB_INCLUDE_DIR}")
+
+ # We must link against zlibstaticD if this is a debug build, otherwise
+ # we have a C runtime mismatch (/MD versus /MDd) and the application
+ # crashes at runtime.
+ find_library(ZLIB_LIBRARY_STATIC_DEBUG NAMES zlibstaticd
+ PATHS ${ZLIB_ROOT}/lib NO_DEFAULT_PATH)
+ find_library(ZLIB_LIBRARY_STATIC_RELEASE NAMES zlibstatic
+ PATHS ${ZLIB_ROOT}/lib NO_DEFAULT_PATH)
+
+ target_link_libraries(lib_compress PUBLIC
+ debug ${ZLIB_LIBRARY_STATIC_DEBUG}
+ optimized ${ZLIB_LIBRARY_STATIC_RELEASE})
+else()
+ find_package(ZLIB REQUIRED)
+ include_directories(${ZLIB_INCLUDE_DIRS})
+ target_link_libraries(lib_compress PUBLIC ${ZLIB_LIBRARIES})
+endif()
+
+# Link to OpenSSL
+# Workaround for incorrect library suffixes searched by FindOpenSSL:
+# https://gitlab.kitware.com/cmake/cmake/issues/17604
+if(WIN32 AND MSVC)
+ find_package(OpenSSL)
+ set(OPENSSL_SSL_LIBRARY ${SSL_EAY_RELEASE})
+ set(OPENSSL_CRYPTO_LIBRARY ${LIB_EAY_RELEASE})
+ set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} crypt32)
+ find_package_handle_standard_args(OpenSSL
+ REQUIRED_VARS
+ OPENSSL_SSL_LIBRARY
+ OPENSSL_CRYPTO_LIBRARY
+ OPENSSL_INCLUDE_DIR
+ VERSION_VAR
+ OPENSSL_VERSION
+ FAIL_MESSAGE
+ "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
+ )
+else()
+ find_package(OpenSSL REQUIRED)
+endif()
+include_directories(${OPENSSL_INCLUDE_DIR})
+target_link_libraries(lib_crypto PUBLIC ${OPENSSL_LIBRARIES})
+
+# Link to PCRE
+if (WIN32)
+ if(NOT DEFINED PCRE_ROOT)
+ message(FATAL_ERROR "You must set PCRE_ROOT to point to include/pcreposix.h and lib/pcreposix[d].lib on Windows")
+ endif()
+
+ target_compile_definitions(lib_common PUBLIC -DPCRE_STATIC)
+ find_library(pcreposix_lib_path pcreposix ${PCRE_ROOT}/lib)
+ find_library(pcreposixd_lib_path pcreposixd ${PCRE_ROOT}/lib)
+ find_library(pcre_lib_path pcre ${PCRE_ROOT}/lib)
+ find_library(pcred_lib_path pcred ${PCRE_ROOT}/lib)
+ target_link_libraries(lib_common PUBLIC debug "${pcreposixd_lib_path}" optimized "${pcreposix_lib_path}")
+ target_link_libraries(lib_common PUBLIC debug "${pcred_lib_path}" optimized "${pcre_lib_path}")
+ include_directories(${PCRE_ROOT}/include)
+else()
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(PCRE REQUIRED libpcreposix)
+ include_directories(${PCRE_INCLUDE_DIRS})
+ target_link_libraries(lib_common PUBLIC ${PCRE_LIBRARIES})
+
+ if(DEBUG)
+ message(STATUS "Linking PCRE libraries from ${PCRE_LIBRARY_DIRS}: ${PCRE_LIBRARIES}")
+ endif()
+endif()
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
+find_package(Readline)
+if(READLINE_FOUND)
+ include_directories(${Readline_INCLUDE_DIR})
+ target_link_libraries(lib_common PUBLIC ${Readline_LIBRARY})
+endif()
+
+set(boxconfig_cmake_h_dir "${base_dir}/lib/common")
+# Get the values of all directories added to the INCLUDE_DIRECTORIES property
+# by include_directory() statements, and save it in CMAKE_REQUIRED_INCLUDES
+# which check_include_files() uses to set the include file search path:
+get_property(CMAKE_REQUIRED_INCLUDES DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
+list(APPEND CMAKE_REQUIRED_INCLUDES "${boxconfig_cmake_h_dir}")
+# message(STATUS "CMAKE_REQUIRED_INCLUDES=${CMAKE_REQUIRED_INCLUDES}")
+
+# Save the original BoxConfig.cmake.h so that we can move it back later,
+# and not need to recompile everything.
+move_file_if_exists(
+ "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h"
+ "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h.bak")
+
+foreach(m4_filename boxbackup_tests.m4 ax_check_mount_point.m4 ax_func_syscall.m4)
+ file(STRINGS "${base_dir}/infrastructure/m4/${m4_filename}" m4_functions REGEX "^ *AC[_A-Z]+\\(.*\\)$")
+ foreach(m4_function ${m4_functions})
+ if(DEBUG)
+ message(STATUS "Processing m4_function: ${m4_function}")
+ endif()
+
+ string(REGEX MATCH .* ac_check_headers ${m4_function})
+ if(m4_function MATCHES "^ *AC_CHECK_HEADERS?\\(\\[([a-z./ ]+)\\](.*)\\)$")
+ if(DEBUG)
+ message(STATUS "Processing ac_check_headers: ${CMAKE_MATCH_1}")
+ endif()
+
+ # http://stackoverflow.com/questions/5272781/what-is-common-way-to-split-string-into-list-with-cmake
+ string(REPLACE " " ";" header_files ${CMAKE_MATCH_1})
+
+ foreach(header_file ${header_files})
+ list(APPEND detect_header_files ${header_file})
+ endforeach()
+ elseif(m4_function MATCHES "^ *AC_CHECK_FUNCS\\(\\[([a-z./_ ]+)\\](.*)\\)$")
+ if(DEBUG)
+ message(STATUS "Processing ac_check_funcs: ${CMAKE_MATCH_1}")
+ endif()
+
+ # http://stackoverflow.com/questions/5272781/what-is-common-way-to-split-string-into-list-with-cmake
+ string(REPLACE " " ";" function_names ${CMAKE_MATCH_1})
+
+ foreach(function_name ${function_names})
+ list(APPEND detect_functions ${function_name})
+ endforeach()
+ elseif(m4_function MATCHES "^ *AC_CHECK_DECLS\\(\\[([A-Za-z._/ ]+)\\](,,, ..#include <([^>]+)>..)?\\)$")
+ if(DEBUG)
+ message(STATUS "Processing ac_check_decls: ${CMAKE_MATCH_1} in ${CMAKE_MATCH_3}")
+ endif()
+
+ # http://stackoverflow.com/questions/5272781/what-is-common-way-to-split-string-into-list-with-cmake
+ string(REPLACE " " ";" decl_names "${CMAKE_MATCH_1}")
+ string(REPLACE " " ";" header_files "${CMAKE_MATCH_3}")
+
+ foreach(decl_name ${decl_names})
+ string(TOUPPER ${decl_name} platform_var_name)
+ string(REGEX REPLACE "[/.]" "_" platform_var_name ${platform_var_name})
+ check_symbol_exists("${decl_name}" "${header_files}" HAVE_DECL_${platform_var_name})
+ file(APPEND "${boxconfig_h_file}" "#cmakedefine01 HAVE_DECL_${platform_var_name}\n")
+ endforeach()
+ elseif(m4_function MATCHES "^ *AC_SEARCH_LIBS\\(\\[([A-Za-z._/ ]+)\\], \\[([A-Za-z._]+)\\]\\)$")
+ if(DEBUG)
+ message(STATUS "Processing ac_search_libs: ${CMAKE_MATCH_1} in ${CMAKE_MATCH_2}")
+ endif()
+
+ set(function_name ${CMAKE_MATCH_1})
+ # http://stackoverflow.com/questions/5272781/what-is-common-way-to-split-string-into-list-with-cmake
+ string(REPLACE " " ";" library_names "${CMAKE_MATCH_2}")
+
+ foreach(library_name ${library_names})
+ string(TOUPPER ${library_name} platform_var_name)
+ check_library_exists(${library_name} ${function_name} "" HAVE_LIB_${platform_var_name})
+ if(HAVE_LIB_${platform_var_name})
+ target_link_libraries(lib_common PUBLIC ${library_name})
+ endif()
+ endforeach()
+ elseif(m4_function MATCHES "^ *AC_CHECK_MEMBERS\\(\\[([A-Za-z._/ ]+)\\.([[A-Za-z_]+)\\](,,, ..(#include <([^>]+)>)..)?\\)$")
+ if(DEBUG)
+ message(STATUS "Processing ac_check_members: ${CMAKE_MATCH_1}.${CMAKE_MATCH_2} in ${CMAKE_MATCH_5}")
+ endif()
+
+ set(struct_name "${CMAKE_MATCH_1}")
+ set(member_name "${CMAKE_MATCH_2}")
+ set(include_file "${CMAKE_MATCH_5}")
+
+ string(TOUPPER "${struct_name}_${member_name}" platform_var_name)
+ string(REGEX REPLACE "[/. ]" "_" platform_var_name ${platform_var_name})
+
+ CHECK_CXX_SOURCE_COMPILES([=[
+ #include "BoxConfig.cmake.h"
+ #include <${include_file}>
+ int main()
+ {
+ ${struct_name} foo;
+ return sizeof(foo.${member_name}) > 0 ? 0 : 1;
+ }
+ ]=] "HAVE_${platform_var_name}")
+ file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_${platform_var_name}\n")
+ endif()
+ endforeach()
+
+ # Build an intermediate version of BoxConfig.cmake.h for use in the following tests.
+ configure_file("${boxconfig_h_file}" "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h")
+endforeach()
+
+list(APPEND detect_header_files mntent.h sys/mnttab.h sys/mount.h sys/param.h)
+
+foreach(header_file ${detect_header_files})
+ list(APPEND detect_header_files ${header_file})
+ string(TOUPPER ${header_file} platform_var_name)
+ string(REGEX REPLACE "[/.]" "_" platform_var_name ${platform_var_name})
+ check_include_files(${header_file} HAVE_${platform_var_name})
+ file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_${platform_var_name}\n")
+endforeach()
+
+if(NOT HAVE_PCREPOSIX_H)
+ message(FATAL_ERROR "pcreposix.h not found at PCRE_ROOT/include: ${PCRE_ROOT}/include")
+endif()
+
+# PCRE is required, so unconditionally define this:
+set(HAVE_REGEX_SUPPORT 1)
+file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_REGEX_SUPPORT\n")
+
+foreach(function_name ${detect_functions})
+ string(TOUPPER ${function_name} platform_var_name)
+ string(REGEX REPLACE "[/.]" "_" platform_var_name ${platform_var_name})
+ check_function_exists(${function_name} HAVE_${platform_var_name})
+ file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_${platform_var_name}\n")
+endforeach()
+
+check_symbol_exists(dirfd "dirent.h" HAVE_DECL_DIRFD)
+file(APPEND "${boxconfig_h_file}" "#cmakedefine01 HAVE_DECL_DIRFD\n")
+
+# Emulate ax_check_mount_point.m4
+# These checks are run by multi-line M4 commands which are harder to parse/fake using
+# regexps above, so we hard-code them here:
+CHECK_CXX_SOURCE_COMPILES([=[
+ #include "BoxConfig.cmake.h"
+ #ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ #endif
+ #include <sys/mount.h>
+ int main()
+ {
+ struct statfs foo;
+ return sizeof(foo.f_mntonname) > 0 ? 0 : 1;
+ }
+ ]=] "HAVE_STRUCT_STATFS_F_MNTONNAME")
+file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_STRUCT_STATFS_F_MNTONNAME\n")
+CHECK_CXX_SOURCE_COMPILES([=[
+ #include "BoxConfig.cmake.h"
+ #ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ #endif
+ #include <sys/mount.h>
+ int main()
+ {
+ struct statvfs foo;
+ return sizeof(foo.f_mntonname) > 0 ? 0 : 1;
+ }
+ ]=] "HAVE_STRUCT_STATVFS_F_MNTONNAME")
+file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_STRUCT_STATVFS_F_MNTONNAME\n")
+if(HAVE_STRUCT_STATFS_F_MNTONNAME OR
+ HAVE_STRUCT_STATVFS_F_MNTONNAME OR
+ HAVE_STRUCT_MNTENT_MNT_DIR OR
+ HAVE_STRUCT_MNTTAB_MNT_MOUNTP)
+
+ set(HAVE_MOUNTS 1)
+ file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_MOUNTS\n")
+endif()
+
+# Emulate ax_random_device.m4
+if(EXISTS /dev/urandom)
+ set(RANDOM_DEVICE /dev/urandom)
+elseif(EXISTS /dev/arandom)
+ set(RANDOM_DEVICE /dev/arandom)
+elseif(EXISTS /dev/random)
+ set(RANDOM_DEVICE /dev/random)
+endif()
+if(RANDOM_DEVICE)
+ set(HAVE_RANDOM_DEVICE TRUE)
+endif()
+file(APPEND "${boxconfig_h_file}" "#cmakedefine RANDOM_DEVICE \"${RANDOM_DEVICE}\"\n")
+file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_RANDOM_DEVICE\n")
+
+# Build an intermediate version of BoxConfig.cmake.h for use in the following tests:
+configure_file("${boxconfig_h_file}" "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h")
+
+foreach(struct_member_name "struct ucred.uid" "struct ucred.cr_uid")
+ string(REGEX MATCH "(.*)\\.(.*)" dummy_var ${struct_member_name})
+ set(struct_name "${CMAKE_MATCH_1}")
+ set(member_name "${CMAKE_MATCH_2}")
+
+ string(TOUPPER "${struct_name}_${member_name}" platform_var_name)
+ string(REGEX REPLACE "[/. ]" "_" platform_var_name ${platform_var_name})
+
+ CHECK_CXX_SOURCE_COMPILES([=[
+ #include "BoxConfig.cmake.h"
+
+ #ifdef HAVE_UCRED_H
+ # include <ucred.h>
+ #endif
+
+ #ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ #endif
+
+ #ifdef HAVE_SYS_UCRED_H
+ # include <sys/ucred.h>
+ #endif
+
+ #ifdef HAVE_SYS_SOCKET_H
+ # include <sys/socket.h>
+ #endif
+
+ int main()
+ {
+ ${struct_name} foo;
+ return sizeof(foo.${member_name}) > 0 ? 0 : 1;
+ }
+ ]=] "HAVE_${platform_var_name}")
+ file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_${platform_var_name}\n")
+endforeach()
+set(CMAKE_REQUIRED_INCLUDES "")
+
+# Build the final version of BoxConfig.cmake.h, as a temporary file.
+configure_file("${boxconfig_h_file}" "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h.new")
+
+# Move the original back into place, and then replace it with the
+# temporary one if different (which will force a rebuild of everything).
+move_file_if_exists(
+ "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h.bak"
+ "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h")
+replace_file_if_different(
+ "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h"
+ "${boxconfig_cmake_h_dir}/BoxConfig.cmake.h.new")
+
+# Tell QDBM not to build itself as a DLL, because we want to link statically to it.
+target_compile_definitions(qdbm PUBLIC -DQDBM_STATIC)
+
+# Silence some less-useful warnings
+if(MSVC)
+ add_definitions(/wd4291 /wd4710 /wd4820 /wd4996)
+ set_property(TARGET qdbm PROPERTY CMAKE_STATIC_LINKER_FLAGS /IGNORE:LNK4006)
+endif(MSVC)
+
+# Define the location of the Perl executable, needed by testbackupstorefix
+file(TO_NATIVE_PATH "${PERL_EXECUTABLE}" perl_executable_native)
+string(REPLACE "\\" "\\\\" perl_path_escaped ${perl_executable_native})
+target_compile_definitions(test_backupstorefix PRIVATE -DPERL_EXECUTABLE="${perl_path_escaped}")
+
+# Configure test timeouts:
+# I've set the timeout to 4 times as long as it took to run on a particular run on Appveyor:
+# https://ci.appveyor.com/project/qris/boxbackup/build/job/xm10itascygtu93j
+set_tests_properties(common PROPERTIES TIMEOUT 20)
+set_tests_properties(crypto PROPERTIES TIMEOUT 10)
+set_tests_properties(compress PROPERTIES TIMEOUT 80)
+set_tests_properties(raidfile PROPERTIES TIMEOUT 32)
+set_tests_properties(basicserver PROPERTIES TIMEOUT 80)
+set_tests_properties(backupstore PROPERTIES TIMEOUT 1320)
+set_tests_properties(backupstorefix PROPERTIES TIMEOUT 180)
+set_tests_properties(backupstorepatch PROPERTIES TIMEOUT 320)
+set_tests_properties(backupdiff PROPERTIES TIMEOUT 32)
+set_tests_properties(bbackupd PROPERTIES TIMEOUT 1200)
+set_tests_properties(s3store PROPERTIES TIMEOUT 20)
+set_tests_properties(httpserver PROPERTIES TIMEOUT 40)
+
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Box Backup is an open source, completely automatic, on-line backup system")
+set(CPACK_PACKAGE_VENDOR "www.BoxBackup.org")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${base_dir}/README.md")
+set(CPACK_RESOURCE_FILE_LICENSE "${base_dir}/LICENSE.txt")
+set(CPACK_PACKAGE_VERSION ${boxbackup_version})
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "Box Backup")
+set(CPACK_COMPONENTS_ALL Applications Extras)
+set(CPACK_GENERATOR "ZIP;NSIS")
+set(CPACK_NSIS_DISPLAY_NAME "Box Backup")
+set(CPACK_NSIS_HELP_LINK "http://www.boxbackup.org/")
+set(CPACK_NSIS_URL_INFO_ABOUT "http://www.boxbackup.org/")
+set(CPACK_NSIS_CONTACT "boxbackup@boxbackup.org")
+set(CPACK_NSIS_MODIFY_PATH ON)
+include(CPack)
diff --git a/infrastructure/cmake/FindReadline.cmake b/infrastructure/cmake/FindReadline.cmake
new file mode 100644
index 00000000..3ba4d21d
--- /dev/null
+++ b/infrastructure/cmake/FindReadline.cmake
@@ -0,0 +1,84 @@
+# https://github.com/bro/cmake/blob/master/FindReadline.cmake
+#
+# Copyright (c) 1995-2015, The Regents of the University of California
+# through the Lawrence Berkeley National Laboratory and the
+# International Computer Science Institute. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# (1) Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# (2) Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# (3) Neither the name of the University of California, Lawrence Berkeley
+# National Laboratory, U.S. Dept. of Energy, International Computer
+# Science Institute, nor the names of contributors may be used to endorse
+# or promote products derived from this software without specific prior
+# written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# Note that some files in the distribution may carry their own copyright
+# notices.
+
+# - Try to find readline include dirs and libraries
+#
+# Usage of this module as follows:
+#
+# find_package(Readline)
+#
+# Variables used by this module, they can change the default behaviour and need
+# to be set before calling find_package:
+#
+# Readline_ROOT_DIR Set this variable to the root installation of
+# readline if the module has problems finding the
+# proper installation path.
+#
+# Variables defined by this module:
+#
+# READLINE_FOUND System has readline, include and lib dirs found
+# Readline_INCLUDE_DIR The readline include directories.
+# Readline_LIBRARY The readline library.
+
+find_path(Readline_ROOT_DIR
+ NAMES include/readline/readline.h
+)
+
+find_path(Readline_INCLUDE_DIR
+ NAMES readline/readline.h
+ HINTS ${Readline_ROOT_DIR}/include
+)
+
+find_library(Readline_LIBRARY
+ NAMES readline
+ HINTS ${Readline_ROOT_DIR}/lib
+)
+
+if(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
+ set(READLINE_FOUND TRUE)
+else(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
+ FIND_LIBRARY(Readline_LIBRARY NAMES readline)
+ include(FindPackageHandleStandardArgs)
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG Readline_INCLUDE_DIR Readline_LIBRARY )
+ MARK_AS_ADVANCED(Readline_INCLUDE_DIR Readline_LIBRARY)
+endif(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
+
+mark_as_advanced(
+ Readline_ROOT_DIR
+ Readline_INCLUDE_DIR
+ Readline_LIBRARY
+)
diff --git a/infrastructure/cmake/build/bin_bbackupd.vcxproj.user b/infrastructure/cmake/build/bin_bbackupd.vcxproj.user
new file mode 100755
index 00000000..fa1f3d34
--- /dev/null
+++ b/infrastructure/cmake/build/bin_bbackupd.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerCommandArguments>testfiles\bbackupd.conf</LocalDebuggerCommandArguments>
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\bbackupd</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/build/bin_bbstored.vcxproj.user b/infrastructure/cmake/build/bin_bbstored.vcxproj.user
new file mode 100755
index 00000000..339cddee
--- /dev/null
+++ b/infrastructure/cmake/build/bin_bbstored.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerCommandArguments>testfiles/bbstored.conf</LocalDebuggerCommandArguments>
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\backupstorefix</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/build/test_backupstore.vcxproj.user b/infrastructure/cmake/build/test_backupstore.vcxproj.user
new file mode 100755
index 00000000..7d7b3158
--- /dev/null
+++ b/infrastructure/cmake/build/test_backupstore.vcxproj.user
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\backupstore</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ <LocalDebuggerCommandArguments>
+ </LocalDebuggerCommandArguments>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/build/test_backupstorefix.vcxproj.user b/infrastructure/cmake/build/test_backupstorefix.vcxproj.user
new file mode 100755
index 00000000..170fb496
--- /dev/null
+++ b/infrastructure/cmake/build/test_backupstorefix.vcxproj.user
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\backupstorefix</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/build/test_bbackupd.vcxproj.user b/infrastructure/cmake/build/test_bbackupd.vcxproj.user
new file mode 100755
index 00000000..ebf8c6a3
--- /dev/null
+++ b/infrastructure/cmake/build/test_bbackupd.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerCommandArguments>-e test_basics</LocalDebuggerCommandArguments>
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\bbackupd</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/build/test_common.vcxproj.user b/infrastructure/cmake/build/test_common.vcxproj.user
new file mode 100755
index 00000000..e5854a80
--- /dev/null
+++ b/infrastructure/cmake/build/test_common.vcxproj.user
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\common</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/build/test_httpserver.vcxproj.user b/infrastructure/cmake/build/test_httpserver.vcxproj.user
new file mode 100755
index 00000000..ac1512a8
--- /dev/null
+++ b/infrastructure/cmake/build/test_httpserver.vcxproj.user
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\httpserver</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/build/test_raidfile.vcxproj.user b/infrastructure/cmake/build/test_raidfile.vcxproj.user
new file mode 100755
index 00000000..620aa4bb
--- /dev/null
+++ b/infrastructure/cmake/build/test_raidfile.vcxproj.user
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\raidfile</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/getversion.pl b/infrastructure/cmake/getversion.pl
new file mode 100755
index 00000000..d7ca0333
--- /dev/null
+++ b/infrastructure/cmake/getversion.pl
@@ -0,0 +1,13 @@
+#!perl
+
+use File::Basename;
+$basedir = dirname($0)."/../..";
+
+-d $basedir or die "Base directory $basedir does not exist!";
+chdir $basedir or die "Failed to change to base directory: $basedir: $!";
+
+require "$basedir/infrastructure/BoxPlatform.pm.in";
+
+print "$BoxPlatform::product_version\n";
+
+exit 0;
diff --git a/infrastructure/cmake/msvc/bin_bbackupd.vcxproj.user b/infrastructure/cmake/msvc/bin_bbackupd.vcxproj.user
new file mode 100755
index 00000000..fa1f3d34
--- /dev/null
+++ b/infrastructure/cmake/msvc/bin_bbackupd.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerCommandArguments>testfiles\bbackupd.conf</LocalDebuggerCommandArguments>
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\bbackupd</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/msvc/bin_bbstored.vcxproj.user b/infrastructure/cmake/msvc/bin_bbstored.vcxproj.user
new file mode 100755
index 00000000..339cddee
--- /dev/null
+++ b/infrastructure/cmake/msvc/bin_bbstored.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerCommandArguments>testfiles/bbstored.conf</LocalDebuggerCommandArguments>
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\backupstorefix</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/msvc/test_backupstore.vcxproj.user b/infrastructure/cmake/msvc/test_backupstore.vcxproj.user
new file mode 100755
index 00000000..7d7b3158
--- /dev/null
+++ b/infrastructure/cmake/msvc/test_backupstore.vcxproj.user
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\backupstore</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ <LocalDebuggerCommandArguments>
+ </LocalDebuggerCommandArguments>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/msvc/test_backupstorefix.vcxproj.user b/infrastructure/cmake/msvc/test_backupstorefix.vcxproj.user
new file mode 100755
index 00000000..170fb496
--- /dev/null
+++ b/infrastructure/cmake/msvc/test_backupstorefix.vcxproj.user
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\backupstorefix</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/msvc/test_bbackupd.vcxproj.user b/infrastructure/cmake/msvc/test_bbackupd.vcxproj.user
new file mode 100755
index 00000000..ebf8c6a3
--- /dev/null
+++ b/infrastructure/cmake/msvc/test_bbackupd.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerCommandArguments>-e test_basics</LocalDebuggerCommandArguments>
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\bbackupd</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/msvc/test_common.vcxproj.user b/infrastructure/cmake/msvc/test_common.vcxproj.user
new file mode 100755
index 00000000..e5854a80
--- /dev/null
+++ b/infrastructure/cmake/msvc/test_common.vcxproj.user
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\common</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/msvc/test_httpserver.vcxproj.user b/infrastructure/cmake/msvc/test_httpserver.vcxproj.user
new file mode 100755
index 00000000..ac1512a8
--- /dev/null
+++ b/infrastructure/cmake/msvc/test_httpserver.vcxproj.user
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\httpserver</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/msvc/test_raidfile.vcxproj.user b/infrastructure/cmake/msvc/test_raidfile.vcxproj.user
new file mode 100755
index 00000000..620aa4bb
--- /dev/null
+++ b/infrastructure/cmake/msvc/test_raidfile.vcxproj.user
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\raidfile</LocalDebuggerWorkingDirectory>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/infrastructure/cmake/windows/CMakeLists.txt b/infrastructure/cmake/windows/CMakeLists.txt
new file mode 100644
index 00000000..49a1ea4d
--- /dev/null
+++ b/infrastructure/cmake/windows/CMakeLists.txt
@@ -0,0 +1,137 @@
+cmake_minimum_required(VERSION 2.6)
+
+project(BoxBackup_Windows)
+
+set(boxbackup_dir ${CMAKE_SOURCE_DIR}/../../..)
+set_property(DIRECTORY PROPERTY EP_BASE .)
+set(install_dir ${CMAKE_BINARY_DIR}/install)
+
+# Automate the process of downloading, building and "installing" dependencies on Windows,
+# as used by AppVeyor.
+
+# Version of zlib to download, build, and compile Box Backup against:
+set(ZLIB_VERSION 1.2.11)
+# Hash of zlib-${ZLIB_VERSION}.tar.gz, to be verified after download:
+set(ZLIB_HASH SHA256=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1)
+
+# Version of OpenSSL to download, build, and compile Box Backup against:
+set(OPENSSL_VERSION 1.1.0g)
+# Hash of openssl-${OPENSSL_VERSION}.tar.gz, to be verified after download:
+set(OPENSSL_HASH SHA256=de4d501267da39310905cb6dc8c6121f7a2cad45a7707f76df828fe1b85073af)
+
+# Version of PCRE to download, build, and compile Box Backup against:
+set(PCRE_VERSION 8.39)
+# Hash of pcre-${PCRE_VERSION}.tar.gz, to be verified after download:
+set(PCRE_HASH SHA256=ccdf7e788769838f8285b3ee672ed573358202305ee361cfec7a4a4fb005bbc7)
+
+# Version of Boost to download, unpack, and compile Box Backup against:
+set(BOOST_VERSION 1.62.0)
+# Hash of the Boost download file, to be verified after download:
+set(BOOST_HASH SHA1=5fd97433c3f859d8cbab1eaed4156d3068ae3648)
+
+include(ExternalProject)
+
+ExternalProject_Add(zlib
+ URL "http://zlib.net/zlib-${ZLIB_VERSION}.tar.gz"
+ URL_HASH ${ZLIB_HASH}
+ DOWNLOAD_NO_PROGRESS 1
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${install_dir} ${SUB_CMAKE_EXTRA_ARGS}
+ # We need to build both versions, debug and release, because cmake requires both to be
+ # present to generate its multi-configuration project files for Visual Studio/MSBuild.
+ INSTALL_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target install --config Debug
+ COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target install --config Release
+ STEP_TARGETS configure install
+)
+
+if(WIN32)
+ ExternalProject_Add(openssl
+ DEPENDS zlib
+ URL "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz"
+ URL_HASH ${OPENSSL_HASH}
+ DOWNLOAD_NO_PROGRESS 1
+ CONFIGURE_COMMAND perl Configure debug-VC-WIN32 no-asm no-shared
+ --prefix=${install_dir}
+ --openssldir=etc
+ # Run tests before install, but don't make the main target depend on them, so that
+ # we don't have to run them whenever we build manually on Windows.
+ TEST_BEFORE_INSTALL 1
+ TEST_EXCLUDE_FROM_MAIN 1
+ # You would expect us to use nt.mak to compile a static library here, but mk1mf.pl uses the /MT[d]
+ # CRT in that case, which is incompatible with our dynamic runtime, /MD[d]. It seems that the libs
+ # built by ntdll.mak, which are compiled with /MD[d], are full libraries and not import libs,
+ # so we can link statically against them and still get a dynamic runtime.
+ BUILD_IN_SOURCE 1
+ BUILD_COMMAND nmake /s
+ TEST_COMMAND nmake /s test
+ INSTALL_COMMAND nmake /s install
+ )
+elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ ExternalProject_Add(openssl
+ DEPENDS zlib
+ URL "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz"
+ URL_HASH ${OPENSSL_HASH}
+ DOWNLOAD_NO_PROGRESS 1
+ CONFIGURE_COMMAND perl Configure darwin64-x86_64-cc --prefix=${install_dir}
+ BUILD_IN_SOURCE 1
+ )
+else()
+ ExternalProject_Add(openssl
+ DEPENDS zlib
+ URL "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz"
+ URL_HASH ${OPENSSL_HASH}
+ DOWNLOAD_NO_PROGRESS 1
+ CONFIGURE_COMMAND ./config --prefix=${install_dir}
+ BUILD_IN_SOURCE 1
+ )
+
+endif()
+
+ExternalProject_Add(pcre
+ # Temporarily use SVN repo until the PCRE_STATIC issue in 8.40 is fixed:
+ # https://vcs.pcre.org/pcre?view=revision&revision=1677
+ SVN_REPOSITORY svn://vcs.exim.org/pcre/code/trunk
+ SVN_REVISION -r 1677
+ DOWNLOAD_NO_PROGRESS 1
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${install_dir} ${SUB_CMAKE_EXTRA_ARGS}
+ -DPCRE_SUPPORT_LIBREADLINE=OFF
+ -DPCRE_SUPPORT_LIBBZ2=OFF
+ # We need to build both versions, debug and release, because cmake requires both to be
+ # present to generate its multi-configuration project files for Visual Studio/MSBuild.
+ INSTALL_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target install --config Debug
+ COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target install --config Release
+)
+
+string(REPLACE "." "_" BOOST_VERSION_UNDERSCORES ${BOOST_VERSION})
+ExternalProject_Add(boost
+ URL "http://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSION}/boost_${BOOST_VERSION_UNDERSCORES}.tar.bz2"
+ URL_HASH ${BOOST_HASH}
+ # DOWNLOAD_NO_PROGRESS 1
+ # Disable automatic updating (untarring) as it's slow and not necessary
+ UPDATE_DISCONNECTED 1
+ CONFIGURE_COMMAND ${CMAKE_COMMAND} -E echo "No configure step needed"
+ BUILD_COMMAND ${CMAKE_COMMAND} -E echo "No build step needed"
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "No install step needed"
+)
+
+if(BOXBACKUP_VERSION)
+ list(APPEND boxbackup_cmake_args "-DBOXBACKUP_VERSION=${BOXBACKUP_VERSION}")
+endif()
+string(REPLACE ";" " " boxbackup_cmake_args "${boxbackup_cmake_args}")
+
+ExternalProject_Add(boxbackup
+ DEPENDS zlib openssl pcre boost
+ SOURCE_DIR ${boxbackup_dir}/infrastructure/cmake
+ CMAKE_ARGS
+ -DZLIB_ROOT=${install_dir}
+ -DOPENSSL_ROOT_DIR=${install_dir}
+ -DPCRE_ROOT=${install_dir}
+ -DBOOST_ROOT=${CMAKE_BINARY_DIR}/Source/boost
+ -DBOX_SUPPORT_READLINE=OFF
+ -DCMAKE_INSTALL_PREFIX=${install_dir}
+ -DAPPVEYOR_MODE=1
+ -DDEBUG=${DEBUG}
+ ${boxbackup_cmake_args}
+ ${SUB_CMAKE_EXTRA_ARGS}
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "No install step needed"
+ STEP_TARGETS configure build
+)
diff --git a/config.guess b/infrastructure/config.guess
index 0773d0f6..b79252d6 100755
--- a/config.guess
+++ b/infrastructure/config.guess
@@ -1,13 +1,12 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1992-2013 Free Software Foundation, Inc.
-timestamp='2004-03-03'
+timestamp='2013-06-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -16,24 +15,22 @@ timestamp='2004-03-03'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner.
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -53,8 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -66,11 +62,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -104,7 +100,7 @@ set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
@@ -123,7 +119,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
+esac ; set_cc_for_build= ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
@@ -136,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ ;;
+esac
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -158,6 +175,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
@@ -166,7 +184,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
+ | grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
@@ -176,7 +194,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
fi
;;
*)
- os=netbsd
+ os=netbsd
;;
esac
# The OS release
@@ -196,71 +214,34 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
- exit 0 ;;
- amd64:OpenBSD:*:*)
- echo x86_64-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- cats:OpenBSD:*:*)
- echo arm-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pegasos:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mipseb-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
*:ekkoBSD:*:*)
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
macppc:MirBSD:*:*)
- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit 0 ;;
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
*:MirBSD:*:*)
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -306,40 +287,46 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha*:OpenVMS:*:*)
- echo alpha-hp-vms
- exit 0 ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
# of the specific Alpha model?
echo alpha-pc-interix
- exit 0 ;;
+ exit ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
- exit 0 ;;
+ exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
- exit 0;;
+ exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
+ exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
+ exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
- exit 0 ;;
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
- exit 0 ;;
+ echo powerpc-ibm-os400
+ exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
+ exit ;;
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
+ exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
@@ -347,32 +334,51 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
else
echo pyramid-pyramid-bsd
fi
- exit 0 ;;
+ exit ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
- exit 0 ;;
+ exit ;;
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
- exit 0 ;;
- DRS?6000:UNIX_SV:4.2*:7*)
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7 && exit 0 ;;
+ sparc) echo sparc-icl-nx7; exit ;;
esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
@@ -381,10 +387,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
+ exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
@@ -396,10 +402,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
- exit 0 ;;
+ exit ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
@@ -409,41 +415,41 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
- exit 0 ;;
+ exit ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -467,35 +473,36 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c \
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && exit 0
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
- exit 0 ;;
+ exit ;;
Motorola:*:4.3:PL8-*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
- exit 0 ;;
+ exit ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
- exit 0 ;;
+ exit ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
- exit 0 ;;
+ exit ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -508,29 +515,29 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
- exit 0 ;;
+ exit ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
- exit 0 ;;
+ exit ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
- exit 0 ;;
+ exit ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
+ exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
- exit 0 ;;
+ exit ;;
ia64:AIX:*:*)
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
@@ -538,7 +545,7 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
@@ -553,15 +560,19 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
- exit 0 ;;
- *:AIX:*:[45])
+ exit ;;
+ *:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
@@ -574,28 +585,28 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
- exit 0 ;;
+ exit ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
- exit 0 ;;
+ exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
+ exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
- exit 0 ;;
+ exit ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
- exit 0 ;;
+ exit ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
- exit 0 ;;
+ exit ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
- exit 0 ;;
+ exit ;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
@@ -604,52 +615,52 @@ EOF
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -657,9 +668,19 @@ EOF
esac
if [ ${HP_ARCH} = "hppa2.0w" ]
then
- # avoid double evaluation of $set_cc_for_build
- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
then
HP_ARCH="hppa2.0w"
else
@@ -667,11 +688,11 @@ EOF
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
ia64:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -699,337 +720,345 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
- exit 0 ;;
+ exit ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
- exit 0 ;;
+ exit ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
- exit 0 ;;
+ exit ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
- exit 0 ;;
+ exit ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
- exit 0 ;;
+ exit ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
- exit 0 ;;
+ exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
- exit 0 ;;
+ exit ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
- exit 0 ;;
+ exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
*:UNICOS/mp:*:*)
- echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:FreeBSD:*:*)
- # Determine whether the default compiler uses glibc.
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #if __GLIBC__ >= 2
- LIBC=gnu
- #else
- LIBC=
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- # GNU/KFreeBSD systems have a "k" prefix to indicate we are using
- # FreeBSD's kernel, but not the complete OS.
- case ${LIBC} in gnu) kernel_only='k' ;; esac
- echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
- exit 0 ;;
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
- i*:MINGW*:*)
+ exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
+ *:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
+ exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
- x86:Interix*:[34]*)
- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
- exit 0 ;;
+ exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
- exit 0 ;;
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
# UNAME_MACHINE based on the output of uname instead of i386?
echo i586-pc-interix
- exit 0 ;;
+ exit ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
- exit 0 ;;
+ exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit 0 ;;
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
- exit 0 ;;
+ exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ fi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit 0 ;;
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ exit ;;
+ crisv32:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ exit ;;
+ frv:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ i*86:Linux:*:*)
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- mips:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
- #undef mips
- #undef mipsel
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
+ CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
+ CPU=${UNAME_MACHINE}
#else
CPU=
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
- ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit 0 ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit 0 ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
+ or1k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ or32:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-${LIBC}
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-${LIBC}
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
esac
- exit 0 ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-${LIBC}
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
+ exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit 0 ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit 0 ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #ifdef __INTEL_COMPILER
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
- ;;
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
echo i386-sequent-sysv4
- exit 0 ;;
+ exit ;;
i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
+ # Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
+ exit ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
echo ${UNAME_MACHINE}-pc-os2-emx
- exit 0 ;;
+ exit ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
+ exit ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
- i*86:syllable:*:*)
+ exit ;;
+ i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
- exit 0 ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
i*86:*DOS:*:*)
echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
@@ -1037,15 +1066,16 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
- exit 0 ;;
- i*86:*:5:[78]*)
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit 0 ;;
+ exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
@@ -1063,73 +1093,86 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
- exit 0 ;;
+ exit ;;
pc:*:*:*)
# Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit 0 ;;
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
- exit 0 ;;
+ exit ;;
paragon:*:*:*)
echo i860-intel-osf1
- exit 0 ;;
+ exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
- exit 0 ;;
+ exit ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
- exit 0 ;;
+ exit ;;
mc68k:UNIX:SYSTEM5:3.51m)
echo m68k-convergent-sysv
- exit 0 ;;
+ exit ;;
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
- exit 0 ;;
+ exit ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
@@ -1137,68 +1180,99 @@ EOF
else
echo ns32k-sni-sysv
fi
- exit 0 ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
- exit 0 ;;
+ exit ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
- exit 0 ;;
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
- exit 0 ;;
+ exit ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
- exit 0 ;;
+ exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
- exit 0 ;;
+ exit ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
- exit 0 ;;
+ exit ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
- exit 0 ;;
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Darwin:*:*)
- case `uname -p` in
- *86) UNAME_PROCESSOR=i686 ;;
- powerpc) UNAME_PROCESSOR=powerpc ;;
- esac
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
@@ -1206,22 +1280,28 @@ EOF
UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
- exit 0 ;;
+ exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
- exit 0 ;;
+ exit ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
- exit 0 ;;
+ exit ;;
DS/*:UNIX_System_V:*:*)
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
@@ -1232,36 +1312,55 @@ EOF
UNAME_MACHINE="$cputype"
fi
echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
+ exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
- exit 0 ;;
+ exit ;;
*:TENEX:*:*)
echo pdp10-unknown-tenex
- exit 0 ;;
+ exit ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
echo pdp10-dec-tops20
- exit 0 ;;
+ exit ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
echo pdp10-xkl-tops20
- exit 0 ;;
+ exit ;;
*:TOPS-20:*:*)
echo pdp10-unknown-tops20
- exit 0 ;;
+ exit ;;
*:ITS:*:*)
echo pdp10-unknown-its
- exit 0 ;;
+ exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit 0 ;;
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
@@ -1279,16 +1378,16 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
+ printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
@@ -1377,11 +1476,12 @@ main ()
}
EOF
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
@@ -1390,22 +1490,22 @@ then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
c34*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
c38*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
c4*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
esac
fi
@@ -1416,7 +1516,9 @@ This script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- ftp://ftp.gnu.org/pub/gnu/config/
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
diff --git a/config.sub b/infrastructure/config.sub
index 264f820a..8b612ab8 100755
--- a/config.sub
+++ b/infrastructure/config.sub
@@ -1,42 +1,40 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1992-2013 Free Software Foundation, Inc.
-timestamp='2004-02-23'
+timestamp='2013-04-24'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
-# 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.
+# 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 General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
@@ -70,8 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -83,11 +80,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -99,7 +96,7 @@ while test $# -gt 0 ; do
*local*)
# First pass through any local machine types.
echo $1
- exit 0;;
+ exit ;;
* )
break ;;
@@ -118,11 +115,18 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
- kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@@ -145,10 +149,13 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
+ -bluegene*)
+ os=-cnk
+ ;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
@@ -163,13 +170,17 @@ case $os in
os=-chorusos
basic_machine=$1
;;
- -chorusrdb)
- os=-chorusrdb
+ -chorusrdb)
+ os=-chorusrdb
basic_machine=$1
- ;;
+ ;;
-hiux*)
os=-hiuxwe2
;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
-sco5)
os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -186,6 +197,10 @@ case $os in
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -203,6 +218,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
@@ -227,57 +248,106 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
+ | bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
+ | epiphany \
+ | fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
- | m32r | m68000 | m68k | m88k | mcore \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
- | mips64vr | mips64vrel \
+ | mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | moxie \
+ | mt \
| msp430 \
+ | nds32 | nds32le | nds32be \
+ | nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
- | openrisc | or32 \
+ | open8 \
+ | or1k | or32 \
| pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
- | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | rl78 | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
- | x86 | xscale | xstormy16 | xtensa \
- | z8k)
+ | x86 | xc16x | xstormy16 | xtensa \
+ | z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
@@ -293,59 +363,82 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* \
- | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | cydra-* \
+ | avr-* | avr32-* \
+ | be32-* | be64-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
- | m32r-* \
+ | le32-* | le64-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
+ | mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
| msp430-* \
- | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
| tron-* \
- | v850-* | v850e-* | vax-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
- | xtensa-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | xstormy16-* | xtensa*-* \
| ymp-* \
- | z8k-*)
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
@@ -363,7 +456,7 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
- abacus)
+ abacus)
basic_machine=abacus-unknown
;;
adobe68k)
@@ -409,6 +502,10 @@ case $basic_machine in
basic_machine=m68k-apollo
os=-bsd
;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -417,10 +514,35 @@ case $basic_machine in
basic_machine=ns32k-sequent
os=-dynix
;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
convex-c1)
basic_machine=c1-convex
os=-bsd
@@ -445,13 +567,20 @@ case $basic_machine in
basic_machine=j90-cray
os=-unicos
;;
- cr16c)
- basic_machine=cr16c-unknown
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16 | cr16-*)
+ basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
basic_machine=m68k-crds
;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
cris | cris-* | etrax*)
basic_machine=cris-axis
;;
@@ -481,6 +610,14 @@ case $basic_machine in
basic_machine=m88k-motorola
os=-sysv3
;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
@@ -592,7 +729,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@@ -631,6 +767,14 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
m88k-omron*)
basic_machine=m88k-omron
;;
@@ -642,10 +786,21 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
+ microblaze*)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
miniframe)
basic_machine=m68000-convergent
;;
@@ -659,10 +814,6 @@ case $basic_machine in
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
- mmix*)
- basic_machine=mmix-knuth
- os=-mmixware
- ;;
monitor)
basic_machine=m68k-rom68k
os=-coff
@@ -675,10 +826,21 @@ case $basic_machine in
basic_machine=i386-pc
os=-msdos
;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@@ -743,9 +905,11 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
- nv1)
- basic_machine=nv1-cray
- os=-unicosmp
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
;;
nsr-tandem)
basic_machine=nsr-tandem
@@ -754,9 +918,8 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
- or32 | or32-*)
+ openrisc | openrisc-*)
basic_machine=or32-unknown
- os=-coff
;;
os400)
basic_machine=powerpc-ibm
@@ -778,6 +941,14 @@ case $basic_machine in
basic_machine=i860-intel
os=-osf
;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
pbd)
basic_machine=sparc-tti
;;
@@ -787,6 +958,12 @@ case $basic_machine in
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
@@ -816,9 +993,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
- ppc) basic_machine=powerpc-unknown
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@@ -843,6 +1021,14 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
rom68k)
basic_machine=m68k-rom68k
os=-coff
@@ -869,6 +1055,10 @@ case $basic_machine in
sb1el)
basic_machine=mipsisa64sb1el-unknown
;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
sei)
basic_machine=mips-sei
os=-seiux
@@ -880,6 +1070,9 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
sh64)
basic_machine=sh64-unknown
;;
@@ -901,6 +1094,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
sun2)
basic_machine=m68000-sun
;;
@@ -957,17 +1153,9 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
+ tile*)
+ basic_machine=$basic_machine-unknown
+ os=-linux-gnu
;;
tx39)
basic_machine=mipstx39-unknown
@@ -1029,9 +1217,16 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
xps | xps100)
basic_machine=xps100-honeywell
;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
ymp)
basic_machine=ymp-cray
os=-unicos
@@ -1040,6 +1235,10 @@ case $basic_machine in
basic_machine=z8k-unknown
os=-sim
;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
none)
basic_machine=none-none
os=-none
@@ -1059,6 +1258,9 @@ case $basic_machine in
romp)
basic_machine=romp-ibm
;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
rs6000)
basic_machine=rs6000-ibm
;;
@@ -1075,13 +1277,10 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv9 | sparcv9b)
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sparc-sun
;;
cydra)
@@ -1125,9 +1324,12 @@ esac
if [ x"$os" != x"" ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # First match some system type aliases
+ # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
@@ -1148,26 +1350,31 @@ case $os in
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
+ | -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1185,7 +1392,7 @@ case $os in
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
@@ -1206,7 +1413,7 @@ case $os in
-opened*)
os=-openedition
;;
- -os400*)
+ -os400*)
os=-os400
;;
-wince*)
@@ -1255,7 +1462,7 @@ case $os in
-sinix*)
os=-sysv4
;;
- -tpf*)
+ -tpf*)
os=-tpf
;;
-triton*)
@@ -1291,8 +1498,13 @@ case $os in
-aros*)
os=-aros
;;
- -kaos*)
- os=-kaos
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -nacl*)
;;
-none)
;;
@@ -1316,6 +1528,12 @@ else
# system, and we'll never get to this point.
case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
*-acorn)
os=-riscix1.2
;;
@@ -1325,9 +1543,21 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
+ ;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
@@ -1346,19 +1576,22 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
;;
m68*-cisco)
os=-aout
;;
+ mep-*)
+ os=-elf
+ ;;
mips*-cisco)
os=-elf
;;
mips*-*)
os=-elf
;;
+ or1k-*)
+ os=-elf
+ ;;
or32-*)
os=-coff
;;
@@ -1371,9 +1604,15 @@ case $basic_machine in
*-be)
os=-beos
;;
+ *-haiku)
+ os=-haiku
+ ;;
*-ibm)
os=-aix
;;
+ *-knuth)
+ os=-mmixware
+ ;;
*-wec)
os=-proelf
;;
@@ -1476,7 +1715,7 @@ case $basic_machine in
-sunos*)
vendor=sun
;;
- -aix*)
+ -cnk*|-aix*)
vendor=ibm
;;
-beos*)
@@ -1539,7 +1778,7 @@ case $basic_machine in
esac
echo $basic_machine$os
-exit 0
+exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/infrastructure/install-sh b/infrastructure/install-sh
new file mode 100755
index 00000000..377bb868
--- /dev/null
+++ b/infrastructure/install-sh
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-11-20.07; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call 'install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names problematic for 'test' and other utilities.
+ case $src in
+ -* | [=\(\)!]) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+ dst=$dst_arg
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/infrastructure/m4/ax_check_compile_flag.m4 b/infrastructure/m4/ax_check_compile_flag.m4
new file mode 100644
index 00000000..c3a8d695
--- /dev/null
+++ b/infrastructure/m4/ax_check_compile_flag.m4
@@ -0,0 +1,72 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
+#
+# DESCRIPTION
+#
+# Check whether the given FLAG works with the current language's compiler
+# or gives an error. (Warnings, however, are ignored)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# If EXTRA-FLAGS is defined, it is added to the current language's default
+# flags (e.g. CFLAGS) when the check is done. The check is thus made with
+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
+# force the compiler to issue an error when a bad flag is given.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# 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 General Public License along
+# with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 2
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ [AS_VAR_SET(CACHEVAR,[yes])],
+ [AS_VAR_SET(CACHEVAR,[no])])
+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
+ [m4_default([$2], :)],
+ [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
diff --git a/infrastructure/m4/boxbackup_tests.m4 b/infrastructure/m4/boxbackup_tests.m4
index 9e6bc2f2..59467e66 100644
--- a/infrastructure/m4/boxbackup_tests.m4
+++ b/infrastructure/m4/boxbackup_tests.m4
@@ -10,10 +10,30 @@ solaris*)
;;
esac
-if test "x$GXX" = "xyes"; then
- # Use -Wall if we have gcc. This gives better warnings
- AC_SUBST([CXXFLAGS_STRICT], ['-Wall -Wundef'])
+# Enable some compiler flags if the compiler supports them. This gives better warnings
+# and detects some problems early.
+AX_CHECK_COMPILE_FLAG(-Wall, [cxxflags_strict="$cxxflags_strict -Wall"])
+# -Wundef would be a good idea, but Boost is full of undefined variable use, so we need
+# to disable it for now so that we can concentrate on real errors:
+dnl AX_CHECK_COMPILE_FLAG(-Wundef, [cxxflags_strict="$cxxflags_strict -Wundef"])
+AX_CHECK_COMPILE_FLAG(-Werror=return-type,
+ [cxxflags_strict="$cxxflags_strict -Werror=return-type"])
+AX_CHECK_COMPILE_FLAG(-Werror=delete-non-virtual-dtor,
+ [cxxflags_strict="$cxxflags_strict -Werror=delete-non-virtual-dtor"])
+AX_CHECK_COMPILE_FLAG(-Werror=undefined-bool-conversion,
+ [cxxflags_strict="$cxxflags_strict -Werror=undefined-bool-conversion"])
+# We should really enable -Werror=sometimes-uninitialized, but QDBM violates it:
+dnl AX_CHECK_COMPILE_FLAG(-Werror=sometimes-uninitialized,
+dnl [cxxflags_strict="$cxxflags_strict -Werror=sometimes-uninitialized"])
+# This error is detected by MSVC, but not usually by GCC/Clang:
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58114
+AX_CHECK_COMPILE_FLAG(-Werror=delete-incomplete,
+ [cxxflags_strict="$cxxflags_strict -Werror=delete-incomplete"])
+AX_CHECK_COMPILE_FLAG(-Wno-deprecated-declarations,
+ [cxxflags_strict="$cxxflags_strict -Wno-deprecated-declarations"])
+AC_SUBST([CXXFLAGS_STRICT], [$cxxflags_strict])
+if test "x$GXX" = "xyes"; then
# Don't check for gcc -rdynamic on Solaris as it's broken, but returns 0.
# On Cygwin it does nothing except cause gcc to emit a warning message.
case $build_os in
@@ -25,6 +45,7 @@ if test "x$GXX" = "xyes"; then
# [http://readlist.com/lists/gcc.gnu.org/gcc/6/31502.html]
# This is needed to get symbols in backtraces.
# Note that this apparently fails on HP-UX and Solaris
+ save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -rdynamic"
AC_MSG_CHECKING([whether gcc accepts -rdynamic])
AC_TRY_LINK([], [return 0;],
@@ -33,6 +54,7 @@ if test "x$GXX" = "xyes"; then
if test x"$have_rdynamic" = x"yes" ; then
AC_SUBST([LDADD_RDYNAMIC], ['-rdynamic'])
fi
+ LDFLAGS=$save_LDFLAGS
;;
esac
fi
@@ -98,7 +120,7 @@ AX_PATH_BDB([1.x or 4.1], [
])
# need to find libdl before trying to link openssl, apparently
-AC_SEARCH_LIBS([dlsym], ["dl"])
+AC_SEARCH_LIBS([dlsym], [dl])
AC_CHECK_FUNCS([dlsym dladdr])
## Check for Open SSL, use old versions only if explicitly requested
@@ -123,21 +145,18 @@ Upgrade or read the documentation for alternatives]])
### Checks for header files.
-case $target_os in
-mingw32*) ;;
-winnt*) ;;
-*)
- AC_HEADER_DIRENT
- ;;
-esac
-
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([dlfcn.h fcntl.h getopt.h process.h pwd.h signal.h])
-AC_CHECK_HEADERS([syslog.h time.h cxxabi.h])
+AC_CHECK_HEADERS([cxxabi.h dirent.h dlfcn.h fcntl.h getopt.h netdb.h process.h pwd.h signal.h])
+AC_CHECK_HEADERS([syslog.h time.h unistd.h])
AC_CHECK_HEADERS([netinet/in.h netinet/tcp.h])
-AC_CHECK_HEADERS([sys/file.h sys/param.h sys/socket.h sys/time.h sys/types.h])
-AC_CHECK_HEADERS([sys/uio.h sys/un.h sys/wait.h sys/xattr.h])
+AC_CHECK_HEADERS([sys/file.h sys/param.h sys/poll.h sys/socket.h sys/stat.h sys/time.h])
+AC_CHECK_HEADERS([sys/types.h sys/uio.h sys/un.h sys/wait.h sys/xattr.h])
+AC_CHECK_HEADERS([sys/ucred.h],,, [
+ #ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ #endif
+ ])
AC_CHECK_HEADERS([bsd/unistd.h])
AC_CHECK_HEADERS([sys/socket.h], [have_sys_socket_h=yes])
AC_CHECK_HEADERS([winsock2.h], [have_winsock2_h=yes])
@@ -185,10 +204,11 @@ AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
-AC_CHECK_MEMBERS([struct stat.st_flags])
-AC_CHECK_MEMBERS([struct stat.st_mtimespec])
-AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec])
-AC_CHECK_MEMBERS([struct stat.st_atimensec])
+AC_CHECK_MEMBERS([struct stat.st_flags],,, [[#include <sys/stat.h>]])
+AC_CHECK_MEMBERS([struct stat.st_atim],,, [[#include <sys/stat.h>]])
+AC_CHECK_MEMBERS([struct stat.st_atimespec],,, [[#include <sys/stat.h>]])
+AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec],,, [[#include <sys/stat.h>]])
+AC_CHECK_MEMBERS([struct stat.st_atimensec],,, [[#include <sys/stat.h>]])
AC_CHECK_MEMBERS([struct sockaddr_in.sin_len],,, [[
#include <sys/types.h>
#include <netinet/in.h>
@@ -197,11 +217,14 @@ AC_CHECK_MEMBERS([DIR.d_fd],,, [[#include <dirent.h>]])
AC_CHECK_MEMBERS([DIR.dd_fd],,, [[#include <dirent.h>]])
AC_CHECK_MEMBERS([struct tcp_info.tcpi_rtt],,, [[#include <netinet/tcp.h>]])
+AC_CHECK_DECLS([O_BINARY],,, [[#include <fcntl.h>]])
+
+AC_CHECK_DECLS([ENOTSUP],,, [[#include <sys/errno.h>]])
AC_CHECK_DECLS([INFTIM],,, [[#include <poll.h>]])
AC_CHECK_DECLS([SO_PEERCRED],,, [[#include <sys/socket.h>]])
-AC_CHECK_DECLS([O_BINARY],,,)
AC_CHECK_DECLS([SOL_TCP],,, [[#include <netinet/tcp.h>]])
AC_CHECK_DECLS([TCP_INFO],,, [[#include <netinet/tcp.h>]])
+AC_CHECK_DECLS([SYS_open, SYS_openat],,, [[#include <sys/syscall.h>]])
if test -n "$have_sys_socket_h"; then
AC_CHECK_DECLS([SO_SNDBUF],,, [[#include <sys/socket.h>]])
@@ -216,6 +239,24 @@ fi
# Solaris provides getpeerucred() instead of getpeereid() or SO_PEERCRED
AC_CHECK_HEADERS([ucred.h])
AC_CHECK_FUNCS([getpeerucred])
+AC_CHECK_MEMBERS([struct ucred.uid, struct ucred.cr_uid],,,
+ [[
+ #ifdef HAVE_UCRED_H
+ # include <ucred.h>
+ #endif
+
+ #ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ #endif
+
+ #ifdef HAVE_SYS_UCRED_H
+ # include <sys/ucred.h>
+ #endif
+
+ #ifdef HAVE_SYS_SOCKET_H
+ # include <sys/socket.h>
+ #endif
+ ]])
AC_CHECK_DECLS([optreset],,, [[#include <getopt.h>]])
AC_CHECK_DECLS([dirfd],,,
@@ -254,11 +295,15 @@ AC_FUNC_CLOSEDIR_VOID
AC_FUNC_ERROR_AT_LINE
AC_TYPE_SIGNAL
AC_FUNC_STAT
-AC_CHECK_FUNCS([getpeereid getpeername lchown setproctitle getpid gettimeofday waitpid ftruncate])
-AC_SEARCH_LIBS([setproctitle], ["bsd"])
+AC_CHECK_FUNCS([ftruncate getpeereid getpeername getpid gettimeofday lchown])
+AC_CHECK_FUNCS([setproctitle utimensat])
+AC_SEARCH_LIBS([setproctitle], [bsd])
# NetBSD implements kqueue too differently for us to get it fixed by 0.10
-# TODO: Remove this when NetBSD kqueue implementation is working
+# TODO: Remove this when NetBSD kqueue implementation is working. The main
+# thing to fix is that ServerStream needs to put a pointer into WaitForEvent,
+# which wants to store it in struct kevent.udata, but on NetBSD that's an
+# intptr_t instead of a void *, and it doesn't like accepting pointers.
netbsd_hack=`echo $target_os | sed 's/netbsd.*/netbsd/'`
if test "$netbsd_hack" != "netbsd"; then
AC_CHECK_FUNCS([kqueue])
@@ -312,4 +357,10 @@ fi
;;
esac
-
+AC_CHECK_PROGS(default_debugger, [lldb gdb])
+AC_ARG_WITH([debugger],
+ [AS_HELP_STRING([--with-debugger=<gdb|lldb|...>],
+ [use this debugger in t-gdb scripts to debug tests @<:@default=lldb if present, otherwise gdb@:>@])],
+ [],
+ [with_debugger=$default_debugger])
+AC_SUBST([with_debugger])
diff --git a/infrastructure/makebuildenv.pl.in b/infrastructure/makebuildenv.pl.in
index 005f2d25..d5ac9f2f 100755
--- a/infrastructure/makebuildenv.pl.in
+++ b/infrastructure/makebuildenv.pl.in
@@ -14,21 +14,21 @@ $|=1;
print "Box build environment setup.\n";
-my @implicit_deps = ('lib/common');
+# Modules that everything else depends on, without being explicitly specified.
+# Deprecated because we can't specify dependencies between them in the usual way,
+# and it's totally unnecessary anyway:
+my @implicit_deps;
# work out platform variables
use lib 'infrastructure';
use BoxPlatform;
-print "Building on '$build_os'.\n\n";
+print "Building on '$build_os $build_os_ver' using ".
+ ($bsd_make ? "BSD" : "GNU")." $make_command.\n\n";
# keep copy of command line args
my $makebuildenv_args = join(' ',@ARGV);
-# do command line arguments
-my $compile_line_extra = $platform_compile_line_extra;
-my $link_line_extra = $platform_link_line_extra;
-
# make sure local files directory exists
unless(-d 'local')
{
@@ -39,9 +39,6 @@ unless(-d 'local')
# flags about the environment
my %env_flags;
-$module_dependency{"lib/common"} = ["lib/win32"];
-push @implicit_deps, "lib/win32";
-
# print "Flag: $_\n" for(keys %env_flags);
# seed autogen code
@@ -211,7 +208,7 @@ for(@modules_files)
if(m/\AOMIT:(.+)/)
{
- if($1 eq $build_os or $1 eq $target_os)
+ if($1 eq $build_os or $1 eq $ac_target_os)
{
$modules_omitted = 1;
$modules_omitting = 1;
@@ -376,17 +373,159 @@ for my $mod (@modules, @implicit_deps)
closedir DIR;
}
-# Then write a makefile for each module
+my $default_cflags = '@CFLAGS@';
+my $default_cxxflags = '@CXXFLAGS@';
+$default_cflags =~ s/ -O2//g;
+$default_cxxflags =~ s/ -O2//g;
+my $debug_base_dir = 'debug';
+my $release_base_dir = 'release';
+my $debugger = '@with_debugger@';
+
+my $release_flags = "-O2";
+if ($target_windows)
+{
+ $release_flags = "-O0 -g";
+}
+
+# Then write a master Makefile, and a mini-Makefile for each module
print "done\n\nGenerating Makefiles...\n";
-my %module_resources_win32;
+my $makefile_ifdef_prefix = $bsd_make ? "." : "";
+my $autoconf_cppflags = '@CPPFLAGS@';
+my $autoconf_cxxflags = '@CXXFLAGS_STRICT@';
+my $autoconf_ldflags = '@LDFLAGS@';
+
+open MASTER_MAKEFILE, ">Makefile" or die "Makefile: $!";
+print MASTER_MAKEFILE <<__E;
+#
+# AUTOMATICALLY GENERATED FILE
+# do not edit!
+#
+#
+
+# "parcels" is defined near the end of this Makefile.
+default: parcels
+
+CC = @CC@
+CXX = @CXX@
+AR = @AR@
+RANLIB = @RANLIB@
+PERL = @PERL@
+WINDRES = @WINDRES@
+
+# Work around a mistake in QDBM (using <angled> includes for a file not in the
+# system path) by adding it to the include path with -I.
+DEFAULT_CFLAGS = $autoconf_cppflags $default_cflags $autoconf_cxxflags \\
+ $extra_platform_defines $platform_compile_line_extra \\
+ -DBOX_VERSION="\\"$product_version\\"" -Iqdbm
+DEFAULT_CXXFLAGS = $autoconf_cppflags $default_cxxflags $autoconf_cxxflags \\
+ $extra_platform_defines $platform_compile_line_extra \\
+ -DBOX_VERSION="\\"$product_version\\""
+LDFLAGS += $autoconf_ldflags \@LDADD_RDYNAMIC@ $platform_link_line_extra
+
+RELEASE_CFLAGS = \$(DEFAULT_CFLAGS) -DBOX_RELEASE_BUILD $release_flags
+RELEASE_CXXFLAGS = \$(DEFAULT_CXXFLAGS) -DBOX_RELEASE_BUILD $release_flags
+RELEASE_OUTBASE = $release_base_dir
+# http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode_using.html#debug_mode.using.mode
+DEBUG_CFLAGS = \$(DEFAULT_CFLAGS) -g -O0 -D_GLIBCXX_DEBUG
+DEBUG_CXXFLAGS = \$(DEFAULT_CXXFLAGS) -g -O0 -D_GLIBCXX_DEBUG
+DEBUG_OUTBASE = $debug_base_dir
+
+__E
+
+if ($bsd_make)
+{
+ print MASTER_MAKEFILE <<__E;
+.ifdef V
+HIDE =
+_CC = \$(CC)
+_CXX = \$(CXX)
+_LINK = \$(CXX)
+_WINDRES = \$(WINDRES)
+_AR = \$(AR)
+_RANLIB = \$(RANLIB)
+_PERL = \$(PERL)
+.else
+HIDE = @
+_CC = @ echo " [CC] " \$(*F) && \$(CC)
+_CXX = @ echo " [CXX] " \$(*F) && \$(CXX)
+_LINK = @ echo " [LINK] " \$(*F) && \$(CXX)
+_WINDRES = @ echo " [WINDRES]" \$(*F) && \$(WINDRES)
+_AR = @ echo " [AR] " \$(*F) && \$(AR)
+_RANLIB = @ echo " [RANLIB] " \$(*F) && \$(RANLIB)
+_PERL = @ echo " [PERL] " \$(*F) && \$(PERL) >/dev/null
+.endif
+
+__E
+}
+else
+{
+ print MASTER_MAKEFILE <<__E;
+HIDE = \$(if \$(V),,@)
+_CC = \$(if \$(V),\$(CC), @ echo " [CC] \$<" && \$(CC))
+_CXX = \$(if \$(V),\$(CXX), @ echo " [CXX] \$<" && \$(CXX))
+_LINK = \$(if \$(V),\$(CXX), @ echo " [LINK] \$@" && \$(CXX))
+_WINDRES = \$(if \$(V),\$(WINDRES), @ echo " [WINDRES] \$<" && \$(WINDRES))
+_AR = \$(if \$(V),\$(AR), @ echo " [AR] \$@" && \$(AR))
+_RANLIB = \$(if \$(V),\$(RANLIB), @ echo " [RANLIB] \$@" && \$(RANLIB))
+_PERL = \$(if \$(V),\$(PERL), @ echo " [PERL] \$@" && \$(PERL) >/dev/null)
+__E
+}
+
+my %module_resources_win32;
+my @debug_build_targets;
+my @release_build_targets;
+my @all_clean_targets;
+my @all_realclean_targets;
+my %mod_type_name;
+my %mod_end_targets;
+my %library_targets;
+
+# First, loop over all modules and quickly categorise them and generate the target filenames.
+# We need this to write correct dependency info into the makefile when modules are listed
+# out of order in modules.txt, which isn't strictly necessary but may look tidier.
for my $mod (@implicit_deps, @modules)
{
print $mod,"\n";
my ($type,$name) = split /\//,$mod;
-
+ if (not $name)
+ {
+ # External modules such as qdbm have no "type" in the directory path.
+ $name = $mod;
+ $type = 'lib';
+ }
+
+ # is target a library?
+ my $target_is_library = ($type ne 'bin' && $type ne 'test');
+
+ # make target name
+ my $end_target_file = $name;
+
+ if ($target_is_library)
+ {
+ $end_target_file .= '.a';
+ }
+ else
+ {
+ $end_target_file .= $platform_exe_ext;
+ }
+
+ $end_target_file = '_test'.$platform_exe_ext if $type eq 'test';
+
+ $mod_type_name{$mod} = [$type, $name];
+ $mod_end_targets{$mod} = $end_target_file;
+ $library_targets{$mod} = $target_is_library;
+}
+
+# Now loop over them again, generating makefile instructions etc.
+for my $mod (@implicit_deps, @modules)
+{
+ my ($type,$name) = @{$mod_type_name{$mod}};
+ my $end_target_file = $mod_end_targets{$mod};
+ my $target_is_library = $library_targets{$mod};
+
# add additional files for tests
if($type eq 'test')
{
@@ -464,7 +603,7 @@ __E
close FL;
}
- print TESTFILE "$runcmd\n";
+ print TESTFILE "$runcmd\nexit_status=\$?\n";
if (-d "$module/testfiles")
{
@@ -473,14 +612,24 @@ kill_daemons
__E
}
+ print TESTFILE "exit \$exit_status\n";
close TESTFILE;
}
- writetestfile("$mod/_t", "GLIBCXX_FORCE_NEW=1 ".
- './test' . $platform_exe_ext . ' "$@"', $mod);
- writetestfile("$mod/_t-gdb", "GLIBCXX_FORCE_NEW=1 ".
- 'gdb ./test' . $platform_exe_ext . ' "$@"', $mod);
-
+ writetestfile("$mod/t", "GLIBCXX_FORCE_NEW=1 ".
+ './_test' . $platform_exe_ext . ' "$@"', $mod);
+
+ if($debugger)
+ {
+ writetestfile("$mod/t-gdb", "GLIBCXX_FORCE_NEW=1 ".
+ $debugger . ' ./_test' . $platform_exe_ext . ' "$@"', $mod);
+ }
+ else
+ {
+ writetestfile("$mod/t-gdb",
+ "echo 'No debugger was detected by configure script'\n".
+ "exit 2");
+ }
}
my @all_deps_for_module;
@@ -514,123 +663,70 @@ __E
}
}
}
-
-
- # make include path
- my $include_paths = join(' ',map {'-I../../'.$_} @all_deps_for_module);
-
- # is target a library?
- my $target_is_library = ($type ne 'bin' && $type ne 'test');
- # make target name
- my $end_target = $name;
+ # get the list of library things to add -- in order of dependency
+ # so things link properly
+ my @lib_files;
+ my @dep_targets;
+ my @include_search_dirs;
- if ($target_is_library)
- {
- $end_target .= '.a';
- }
- else
+ foreach my $dep (reverse @all_deps_for_module)
{
- $end_target .= $platform_exe_ext;
+ my $dep_target = $mod_end_targets{$dep};
+ die "No output file found for $dep" unless $dep_target;
+ $dep_target = "$dep/$dep_target";
+ push @dep_targets, $dep_target;
+
+ if ($dep =~ m|^lib\/(.+)$|)
+ {
+ push @lib_files, $dep_target;
+ push @include_search_dirs, $dep;
+ }
+ elsif ($dep =~ m|^([^/]+)$|)
+ {
+ push @lib_files, $dep_target;
+ push @include_search_dirs, $dep;
+ }
}
- $end_target = 'test'.$platform_exe_ext if $type eq 'test';
+ # make include path
+ my $cpp_include_paths = join(' ',map {"-I$_"} @include_search_dirs);
+ print MASTER_MAKEFILE "${type}_${name}_includes = $cpp_include_paths\n";
# adjust for outdir
- $end_target = '$(OUTDIR)/' . $end_target;
+ my $debug_end_target = "\$(DEBUG_OUTBASE)/$mod/$end_target_file";
+ my $release_end_target = "\$(RELEASE_OUTBASE)/$mod/$end_target_file";
+ push @debug_build_targets, $debug_end_target;
+ push @release_build_targets, $release_end_target;
# start the makefile
- my $mk_name_extra = ($bsd_make)?'':'X';
- open MAKE,">$mod/Makefile".$mk_name_extra or die "Can't open Makefile for $mod\n";
- my $debug_link_extra = ($target_is_library)?'':'../../debug/lib/debug/debug.a';
-
- my $default_cxxflags = '@CXXFLAGS@';
- $default_cxxflags =~ s/ -O2//g;
-
- my $release_flags = "-O2";
- if ($target_windows)
- {
- $release_flags = "-O0 -g";
- }
-
- print MAKE <<__E;
+ open MINI_MODULE_MAKEFILE,">$mod/Makefile" or die "Can't open Makefile for $mod\n";
+ print MINI_MODULE_MAKEFILE <<__E;
#
# AUTOMATICALLY GENERATED FILE
# do not edit!
#
-#
-CXX = @CXX@
-AR = @AR@
-RANLIB = @RANLIB@
-PERL = @PERL@
-WINDRES = @WINDRES@
-
-DEFAULT_CXXFLAGS = @CPPFLAGS@ $default_cxxflags @CXXFLAGS_STRICT@ \\
- $include_paths $extra_platform_defines \\
- -DBOX_VERSION="\\"$product_version\\""
-LDFLAGS += @LDFLAGS@ @LDADD_RDYNAMIC@
-
-.ifdef RELEASE
-CXXFLAGS += -DBOX_RELEASE_BUILD $release_flags \$(DEFAULT_CXXFLAGS)
-OUTBASE = ../../release
-OUTDIR = ../../release/$mod
-DEPENDMAKEFLAGS = -D RELEASE
-VARIENT = RELEASE
-.else
-CXXFLAGS += -g \$(DEFAULT_CXXFLAGS)
-OUTBASE = ../../debug
-OUTDIR = ../../debug/$mod
-DEPENDMAKEFLAGS =
-VARIENT = DEBUG
-.endif
+${makefile_ifdef_prefix}ifdef RELEASE
+TARGET = $release_base_dir/$mod/$end_target_file
+${makefile_ifdef_prefix}else
+TARGET = $debug_base_dir/$mod/$end_target_file
+${makefile_ifdef_prefix}endif
-__E
+.PHONY: default
+default:
+ \$(MAKE) -C ../.. \$(TARGET)
- if ($bsd_make)
- {
- print MAKE <<__E;
-.ifdef V
-HIDE =
-_CXX = \$(CXX)
-_LINK = \$(CXX)
-_WINDRES = \$(WINDRES)
-_AR = \$(AR)
-_RANLIB = \$(RANLIB)
-_PERL = \$(PERL)
-.else
-HIDE = @
-_CXX = @ echo " [CXX] " \$(*F) && \$(CXX)
-_LINK = @ echo " [LINK] " \$(*F) && \$(CXX)
-_WINDRES = @ echo " [WINDRES]" \$(*F) && \$(WINDRES)
-_AR = @ echo " [AR] " \$(*F) && \$(AR)
-_RANLIB = @ echo " [RANLIB] " \$(*F) && \$(RANLIB)
-_PERL = @ echo " [PERL] " \$(*F) && \$(PERL) >/dev/null
-.endif
-
-__E
- }
- else
- {
- print MAKE <<__E;
-HIDE = \$(if \$(V),,@)
-_CXX = \$(if \$(V),\$(CXX), @ echo " [CXX] \$<" && \$(CXX))
-_LINK = \$(if \$(V),\$(CXX), @ echo " [LINK] \$@" && \$(CXX))
-_WINDRES = \$(if \$(V),\$(WINDRES), @ echo " [WINDRES] \$<" && \$(WINDRES))
-_AR = \$(if \$(V),\$(AR), @ echo " [AR] \$@" && \$(AR))
-_RANLIB = \$(if \$(V),\$(RANLIB), @ echo " [RANLIB] \$@" && \$(RANLIB))
-_PERL = \$(if \$(V),\$(PERL), @ echo " [PERL] \$@" && \$(PERL) >/dev/null)
+.PHONY: clean
+clean:
+ \$(MAKE) -C ../.. clean_${type}_${name}
+.PHONY: realclean
+realclean:
+ \$(MAKE) -C ../.. realclean_${type}_${name}
__E
- }
+ close MINI_MODULE_MAKEFILE;
- # if there is a Makefile.pre, include it now
- if(-e "$mod/Makefile.pre")
- {
- print MAKE ".include <Makefile.pre>\n\n";
- }
-
- # read directory
- opendir DIR,$mod;
+ opendir DIR, $mod;
my @items = readdir DIR;
closedir DIR;
@@ -643,10 +739,10 @@ __E
{
# Read items
my $d = "$mod/$di";
- opendir DIR,$d;
+ opendir DIR, $d;
my @i = readdir DIR;
closedir DIR;
- for(@i)
+ for (@i)
{
next if m/\A\./;
push @autogen_items,"$di/$_"
@@ -675,294 +771,587 @@ __E
}
}
- # ready for the rest of the details...
- my $make;
-
- # then... do the cpp files...
- my @obj_base;
- for my $file (@items)
+ # write the recipes for debug and release builds of each file
+ foreach my $var_prefix ('DEBUG', 'RELEASE')
{
- my $is_cpp = $file =~ m/\A(.+)\.cpp\Z/i;
- my $is_rc = $file =~ m/\A(.+)\.rc\Z/i;
- my $base = $1;
+ my $make;
- if ($target_windows)
- {
- next if not $is_cpp and not $is_rc;
- }
- else
+ # then... do the cpp files...
+ my @obj_base;
+ for my $file (@items)
{
- next if not $is_cpp;
- }
+ my $is_c = $file =~ m/\A(.+)\.c\Z/i;
+ my $is_cpp = $file =~ m/\A(.+)\.cpp\Z/i;
+ my $is_rc = $file =~ m/\A(.+)\.rc\Z/i;
+ my $base = $1;
- next if $file =~ /\A\._/; # Temp Mac OS Resource hack
+ # Don't try to compile .rc files except on Windows:
+ next if not $is_c and not $is_cpp and not ($is_rc and $target_windows);
+ next if $file =~ /\A\._/; # Temp Mac OS Resource hack
- # store for later
- push @obj_base,$base;
-
- # get the file...
- open FL,"$mod/$file";
- my $f;
- read FL,$f,-s "$mod/$file";
- close FL;
+ # store for later
+ push @obj_base, $base;
- my %dep;
+ # get the file...
+ open FL, "$mod/$file";
+ my $f;
+ read FL, $f, -s "$mod/$file";
+ close FL;
+
+ my %dep;
- while($f =~ m/\#include\s+"([^"]+?)"/g)
- {
- insert_dep($1, \%dep) if exists $hfiles{$1};
+ while($f =~ m/\#include\s+"([^"]+?)"/g)
+ {
+ insert_dep($1, \%dep) if exists $hfiles{$1};
+ }
+
+ # output filename
+ my $out_name = "\$(${var_prefix}_OUTBASE)/$mod/$base.o";
+
+ # write the line for this cpp file
+ my @dep_paths = map
+ {
+ ($hfiles{$_} eq $mod)
+ ? "$mod/$_"
+ : $hfiles{$_}."/$_"
+ }
+ keys %dep;
+
+ $make .= "$out_name: $mod/$file @dep_paths\n";
+
+ if ($is_c)
+ {
+ $make .= "\t\$(_CC) \$(${var_prefix}_CFLAGS) ".
+ "\$(${type}_${name}_includes) -DBOX_MODULE=\"\\\"$mod\\\"\" " .
+ "-c $mod/$file -o $out_name\n\n";
+ }
+ if ($is_cpp)
+ {
+ $make .= "\t\$(_CXX) \$(${var_prefix}_CXXFLAGS) ".
+ "\$(${type}_${name}_includes) -DBOX_MODULE=\"\\\"$mod\\\"\" " .
+ "-c $mod/$file -o $out_name\n\n";
+ }
+ elsif ($is_rc)
+ {
+ $make .= "\t\$(_WINDRES) $file $out_name\n\n";
+ my $res_list = $module_resources_win32{$mod};
+ $res_list ||= [];
+ push @$res_list, $base.'.o';
+ $module_resources_win32{$mod} = $res_list;
+ }
}
+
+ # need to see if the extra makefile fragments require extra object files
+ # or include any more makefiles
+ my @objs = @obj_base;
+ my @makefile_includes;
- # output filename
- my $out_name = '$(OUTDIR)/'.$base.'.o';
+ additional_objects_from_make_fragment("$mod/Makefile.extra", \@objs, \@makefile_includes);
+ additional_objects_from_make_fragment("$mod/Makefile.extra.$build_os", \@objs, \@makefile_includes);
+
+ my $prefixed_end_target = "\$(${var_prefix}_OUTBASE)/$mod/$end_target_file";
+ my $o_file_list = join(' ',map {"\$(${var_prefix}_OUTBASE)/$mod/$_.o"} sort @objs);
+ my @prefixed_lib_files = map {"\$(${var_prefix}_OUTBASE)/$_"} @lib_files;
+ my @prefixed_dep_targets = map {"\$(${var_prefix}_OUTBASE)/$_"} @dep_targets;
+
+ print MASTER_MAKEFILE "$prefixed_end_target: $o_file_list";
+ print MASTER_MAKEFILE " @prefixed_dep_targets" unless $target_is_library;
+ print MASTER_MAKEFILE "\n";
- # write the line for this cpp file
- my @dep_paths = map
- {
- ($hfiles{$_} eq $mod)
- ? $_
- : '../../'.$hfiles{$_}."/$_"
+ if ($target_windows)
+ {
+ foreach my $dep (@all_deps_for_module)
+ {
+ my $res_list = $module_resources_win32{$dep};
+ next unless $res_list;
+ $o_file_list .= ' '.join(' ',
+ map {"\$(${var_prefix}_OUTBASE)/$dep/$_"} @$res_list);
+ }
}
- keys %dep;
- $make .= $out_name.': '.join(' ',$file,@dep_paths)."\n";
-
- if ($is_cpp)
+ # stuff to make the final target...
+ if($target_is_library)
{
- $make .= "\t\$(_CXX) \$(CXXFLAGS) $compile_line_extra ".
- "-DBOX_MODULE=\"\\\"$mod\\\"\" " .
- "-c $file -o $out_name\n\n";
+ # make a library archive...
+ print MASTER_MAKEFILE "\t\$(HIDE) (rm -f $prefixed_end_target)\n";
+ print MASTER_MAKEFILE "\t\$(_AR) cq $prefixed_end_target $o_file_list\n";
+ print MASTER_MAKEFILE "\t\$(_RANLIB) $prefixed_end_target\n";
}
- elsif ($is_rc)
+ else
{
- $make .= "\t\$(_WINDRES) $file $out_name\n\n";
- my $res_list = $module_resources_win32{$mod};
- $res_list ||= [];
- push @$res_list, $base.'.o';
- $module_resources_win32{$mod} = $res_list;
+ # work out library options
+ # need to be... least used first, in absolute order they appear in the modules.txt file
+ my @libops;
+
+ sub libops_fill
+ {
+ my ($module, $libops_ref) = @_;
+
+ my $library_link_opts = $module_library_link_opts{$module};
+ if ($library_link_opts)
+ {
+ push @$libops_ref, @$library_link_opts;
+ }
+
+ my $deps = $module_dependency{$module};
+ foreach my $dep (@$deps)
+ {
+ libops_fill($dep, $libops_ref);
+ }
+ }
+
+ libops_fill($mod,\@libops);
+
+ my $lo = '';
+ my %ldone;
+ for(@libops)
+ {
+ next if exists $ldone{$_};
+ $lo .= ' '.$_;
+ $ldone{$_} = 1;
+ }
+
+ # link line...
+ print MASTER_MAKEFILE "\t\$(_LINK) \$(LDFLAGS) " .
+ "-o $prefixed_end_target $o_file_list " .
+ "@prefixed_lib_files $lo $platform_lib_files\n";
}
- }
-
- my $has_deps = ($#{$module_dependency{$mod}} >= 0);
-# ----- # always has dependencies with debug library
- $has_deps = 1;
- $has_deps = 0 if $target_is_library;
- # Dependency stuff
- my $deps_makeinfo;
- if($has_deps)
- {
- if($bsd_make)
+ # tests need to copy the test file over
+ if($type eq 'test')
{
- $deps_makeinfo = <<'__E';
-.BEGIN::
-.ifndef NODEPS
-. if $(.TARGETS) == ""
+ print MASTER_MAKEFILE <<__E;
+ \$(HIDE) cp $mod/t \$(${var_prefix}_OUTBASE)/$mod/t
+ \$(HIDE) chmod u+x \$(${var_prefix}_OUTBASE)/$mod/t
+ \$(HIDE) cp $mod/t-gdb \$(${var_prefix}_OUTBASE)/$mod/t-gdb
+ \$(HIDE) chmod u+x \$(${var_prefix}_OUTBASE)/$mod/t-gdb
__E
}
- else
+
+ print MASTER_MAKEFILE $make,"\n";
+
+ for(@makefile_includes)
{
- # gnu make
- $deps_makeinfo = <<'__E';
-.PHONY: dep_modules
-dep_modules:
-ifndef NODEPS
-ifeq ($(strip $(.TARGETS)),)
-__E
+ print MASTER_MAKEFILE "\n.include <$_>\n";
}
+}
+
+ print MASTER_MAKEFILE <<__E;
+clean_${type}_${name}:
+ rm -rf \$(DEBUG_OUTBASE)/$mod/*
+ rm -rf \$(RELEASE_OUTBASE)/$mod/*
+
+realclean_${type}_${name}: clean_${type}_${name}
+ rm -f $mod/t $mod/t-gdb $mod/Makefile
+ find $mod -name 'autogen_*' -type f -exec rm -f {} \\;
+__E
+ push @all_clean_targets, "clean_${type}_${name}";
+ push @all_realclean_targets, "realclean_${type}_${name}";
+
+ my $includes = "";
+
+ if(-e "$mod/Makefile.extra")
+ {
+ $includes .= ".include <$mod/Makefile.extra>\n\n";
+ }
+ if(-e "$mod/Makefile.extra.$build_os")
+ {
+ $includes .= ".include <$mod/Makefile.extra.$build_os>\n\n";
+ }
+
+ if(!$bsd_make)
+ {
+ # need to post process this into a GNU makefile
+ $includes =~ s/\A\.\s*(ifdef|else|endif|ifndef)/$1/;
+ $includes =~ s/\A\.\s*include\s+<(.+?)>/include $1/;
+ $includes =~ s/-D\s+(\w+)/$1=1/g;
+ }
+
+ print MASTER_MAKEFILE $includes;
+}
+
+my @parcels;
+my %parcel_contents;
+
+sub starts_with ($$)
+{
+ my ($string,$expected) = @_;
+ return substr($string, 0, length $expected) eq $expected;
+}
+
+sub os_matches ($)
+{
+ my ($prefix_string) = @_;
+ my @prefixes = split m'\,', $prefix_string;
+ foreach my $prefix (@prefixes)
+ {
+ return 1 if starts_with($build_os, $prefix);
+ return 1 if starts_with($ac_target_os, $prefix);
+ return 1 if starts_with("$ac_target_cpu-$ac_target_os",
+ $prefix);
+ return 1 if starts_with($ac_target, $prefix);
+ }
+ return 0;
+}
+
+my $copy_command = "cp -p";
+
+open PARCELS,"parcels.txt" or die "Can't open parcels file";
+{
+ my $cur_parcel = '';
+ while(<PARCELS>)
+ {
+ chomp; s/#.+\Z//; s/\s+\Z//; s/\s+/ /g;
+ next unless m/\S/;
- # run make for things we require
- for my $dep (@all_deps_for_module)
+ # omit bits on some platforms?
+ next if m/\AEND-OMIT/;
+ if(m/\AOMIT:(.+)/)
{
- my $dep_target = "";
- if ($dep =~ m|^lib/(.*)|)
+ if (os_matches($1))
{
- $dep_target = "\$(OUTBASE)/$dep/$1.a";
+ while(<PARCELS>)
+ {
+ last if m/\AEND-OMIT/;
+ }
}
- elsif ($dep =~ m|^.*/(.*)|)
+ next;
+ }
+
+ if (m'\AONLY:(.+)')
+ {
+ if (not os_matches($1))
{
- $dep_target = "\$(OUTBASE)/$dep/$1$platform_exe_ext";
+ while (<PARCELS>)
+ {
+ last if m'\AEND-ONLY';
+ }
}
- else
+ next;
+ }
+ next if (m'\AEND-ONLY');
+
+ if (m'\AEXCEPT:(.+)')
+ {
+ if (os_matches($1))
{
- $dep_target = "lib$dep.a";
+ while (<PARCELS>)
+ {
+ last if m'\AEND-EXCEPT';
+ }
}
-
- $deps_makeinfo .= <<EOF;
- \$(HIDE) ( \\
- cd ../../$dep; \\
- \$(MAKE) $sub_make_options -q \$(DEPENDMAKEFLAGS) -D NODEPS $dep_target \\
- || \$(MAKE) $sub_make_options \$(DEPENDMAKEFLAGS) -D NODEPS $dep_target \\
- )
-EOF
+ next;
}
-
- $deps_makeinfo .= ".\tendif\n.endif\n\n";
- }
- print MAKE $deps_makeinfo if $bsd_make;
-
- # get the list of library things to add -- in order of dependency
- # so things link properly
- my @lib_files;
- foreach my $dep (reverse @all_deps_for_module)
- {
- if ($dep =~ m|^lib\/(.+)$|)
+ next if (m'\AEND-EXCEPT');
+
+ # new parcel, or a new parcel definition?
+ if(m/\A\s+(.+)\Z/)
{
- push @lib_files, "\$(OUTBASE)/$dep/$1.a";
+ push @{$parcel_contents{$cur_parcel}},$1
}
- elsif ($dep =~ m|^([^/]+)$|)
+ else
{
- push @lib_files, "../../$dep/lib$1.a";
+ $cur_parcel = $_;
+ push @parcels,$_;
}
}
+}
+close PARCELS;
- # need to see if the extra makefile fragments require extra object files
- # or include any more makefiles
- my @objs = @obj_base;
- my @makefile_includes;
-
- additional_objects_from_make_fragment("$mod/Makefile.extra", \@objs, \@makefile_includes);
- additional_objects_from_make_fragment("$mod/Makefile.extra.$build_os", \@objs, \@makefile_includes);
+# create parcels directory
+mkdir "parcels",0755;
+mkdir "parcels/scripts",0755;
+
+print MASTER_MAKEFILE "parcels:\t",join(' ',map {"build-".$_} @parcels),"\n\n";
+
+my $runtest_script = $target_windows ? './infrastructure/mingw/runtest.sh'
+ : './runtest.pl';
+
+print MASTER_MAKEFILE <<__END_OF_FRAGMENT;
+.PHONY: test
+test: debug_tests release_tests
- my $o_file_list = join(' ',map {'$(OUTDIR)/'.$_.'.o'} sort @objs);
+.PHONY: debug_tests
+debug_tests:
+ $runtest_script ALL debug
- if ($has_deps and not $bsd_make)
+.PHONY: release_tests
+release_tests:
+ $runtest_script ALL release
+
+.PHONY: docs
+docs:
+ cd docs; \$(MAKE)
+
+__END_OF_FRAGMENT
+
+my $release_flag = BoxPlatform::make_flag('RELEASE');
+my @parcel_targets;
+
+for my $parcel (@parcels)
+{
+ my $version = BoxPlatform::parcel_root($parcel);
+ my $make_target = BoxPlatform::parcel_target($parcel);
+ my $dir = BoxPlatform::parcel_dir($parcel);
+ my @parcel_deps;
+
+ # Need to use BSD install on Solaris
+ my $install_bin = $build_os eq 'SunOS' ? '/usr/ucb/install' : 'install';
+
+ unless ($target_windows)
{
- print MAKE ".PHONY: all\n" .
- "all: dep_modules $end_target\n\n";
+ open SCRIPT,">parcels/scripts/install-$parcel" or die
+ "Can't open installer script for $parcel for writing";
+ print SCRIPT "#!/bin/sh\n\n";
}
- print MAKE $end_target,': ',$o_file_list;
- print MAKE " @lib_files" unless $target_is_library;
- print MAKE "\n";
-
- if ($target_windows)
+ for(@{$parcel_contents{$parcel}})
{
- foreach my $dep (@all_deps_for_module)
+ my @args = split /\s+/;
+
+ my ($type,$name,$dest) = @args;
+ my $optional = 0;
+ my $install = 1;
+
+ if ($type eq 'optional')
{
- my $res_list = $module_resources_win32{$dep};
- next unless $res_list;
- $o_file_list .= ' '.join(' ',
- map {'$(OUTBASE)/'.$dep."/$_"} @$res_list);
+ $optional = 1;
+ shift @args;
+ ($type,$name,$dest) = @args;
}
- }
- # stuff to make the final target...
- if($target_is_library)
- {
- # make a library archive...
- print MAKE "\t\$(HIDE) (echo -n > $end_target; rm $end_target)\n";
- print MAKE "\t\$(_AR) cq $end_target $o_file_list\n";
- print MAKE "\t\$(_RANLIB) $end_target\n";
- }
- else
- {
- # work out library options
- # need to be... least used first, in absolute order they appear in the modules.txt file
- my @libops;
-
- sub libops_fill
+ if ($type eq 'noinstall')
{
- my ($module, $libops_ref) = @_;
-
- my $library_link_opts = $module_library_link_opts{$module};
- if ($library_link_opts)
+ $install = 0;
+ shift @args;
+ ($type,$name,$dest) = @args;
+ }
+
+ if($type eq 'bin')
+ {
+ my $exeext = $platform_exe_ext;
+ print MASTER_MAKEFILE <<EOF;
+$dir/$name$exeext: release/bin/$name/$name$exeext
+ mkdir -p $dir
+ $copy_command release/bin/$name/$name$exeext $dir
+
+EOF
+ push @parcel_deps, "$dir/$name$exeext";
+ }
+ elsif ($type eq 'script')
+ {
+ # Replace any variables ($ac_target etc.) with their
+ # values.
+ $name =~ s|(\$[^/ ]+)|$1|eeg;
+ my $fullpath = $name;
+ my $filename = $name;
+ # remove path from script name
+ $filename =~ s{.*/}{};
+
+ print MASTER_MAKEFILE <<EOF;
+$dir/$filename: $fullpath
+ mkdir -p $dir
+EOF
+
+ if ($optional)
{
- push @$libops_ref, @$library_link_opts;
+ print MASTER_MAKEFILE "\ttest -r $fullpath " .
+ "&& $copy_command $fullpath $dir || true\n";
}
-
- my $deps = $module_dependency{$module};
- foreach my $dep (@$deps)
+ else
{
- libops_fill($dep, $libops_ref);
+ print MASTER_MAKEFILE "\t$copy_command $fullpath $dir\n";
}
+
+ print MASTER_MAKEFILE "\n";
+
+ push @parcel_deps, "$dir/$filename";
}
-
- libops_fill($mod,\@libops);
-
- my $lo = '';
- my %ldone;
- for(@libops)
+ elsif($type eq 'man')
{
- next if exists $ldone{$_};
- $lo .= ' '.$_;
- $ldone{$_} = 1;
+ print MASTER_MAKEFILE <<EOF;
+$dir/${name}.gz: docs/man/${name}.gz
+ mkdir -p $dir
+ $copy_command docs/man/${name}.gz $dir
+
+EOF
+ # Releases have the docs pre-made, but users
+ # may want to rebuild them for some reason.
+ my $docbook_source = "docs/docbook/${name}";
+ $docbook_source =~ s/\.[58]$/.xml/;
+ print MASTER_MAKEFILE <<EOF;
+docs/man/${name}.gz: $docbook_source docs/docbook/bb-man.xsl
+ cd docs; \$(MAKE) man/${name}.gz
+
+EOF
+ push @parcel_deps, "$dir/${name}.gz";
}
-
- # link line...
- print MAKE "\t\$(_LINK) \$(LDFLAGS) $link_line_extra " .
- "-o $end_target $o_file_list " .
- "@lib_files $lo $platform_lib_files\n";
- }
+ elsif($type eq 'html')
+ {
+ print MASTER_MAKEFILE <<EOF;
+$dir/docs/${name}.html: docs/htmlguide/man-html/${name}.html
+ mkdir -p $dir/docs
+ $copy_command docs/htmlguide/man-html/${name}.html $dir/docs
- # tests need to copy the test file over
- if($type eq 'test')
- {
- print MAKE "\tcp _t \$(OUTDIR)/t\n\tchmod u+x \$(OUTDIR)/t\n";
- print MAKE "\tcp _t-gdb \$(OUTDIR)/t-gdb\n\tchmod u+x \$(OUTDIR)/t-gdb\n";
+EOF
+ # Releases have the docs pre-made, but users
+ # may want to rebuild them for some reason.
+ my $docbook_source = "docs/docbook/${name}.xml";
+ print MASTER_MAKEFILE <<EOF;
+docs/htmlguide/man-html/${name}.html: $docbook_source docs/docbook/bb-nochunk-book.xsl
+ cd docs; \$(MAKE) htmlguide/man-html/${name}.html
+
+EOF
+ push @parcel_deps, "$dir/docs/${name}.html";
+ }
+ elsif ($type eq 'subdir')
+ {
+ push @parcel_deps, "build_${type}_${name}";
+ }
}
- # dependency line?
- print MAKE "\n";
+ print MASTER_MAKEFILE <<EOF;
+build-$parcel: $make_target
- # module dependencies for GNU make?
- print MAKE $deps_makeinfo if !$bsd_make;
-
- # print the rest of the file
- print MAKE $make,"\n";
-
- # and a clean target
- print MAKE <<EOF;
-clean:
- -rm -rf \$(OUTDIR)/*
-. ifndef SUBCLEAN
+$make_target: @parcel_deps
+ test -d $dir || mkdir $dir
EOF
- for my $dep (@all_deps_for_module)
- {
- print MAKE "\t\$(HIDE) (cd ../../$dep; \$(MAKE) \$(DEPENDMAKEFLAGS) -D SUBCLEAN clean)\n";
- }
- print MAKE ".\tendif\n";
+
+ push @parcel_targets, "build-$parcel";
- # include any extra stuff
- print MAKE "\n\n";
- if(-e "$mod/Makefile.extra")
- {
- print MAKE ".include <Makefile.extra>\n\n";
- }
- if(-e "$mod/Makefile.extra.$build_os")
+ for(@{$parcel_contents{$parcel}})
{
- print MAKE ".include <Makefile.extra.$build_os>\n\n";
+ my @args = split /\s+/;
+
+ my ($type,$name,$dest) = @args;
+
+ my $optional = 0;
+ my $install = 1;
+
+ if ($type eq 'optional')
+ {
+ $optional = 1;
+ shift @args;
+ ($type,$name,$dest) = @args;
+ }
+
+ if ($type eq 'noinstall')
+ {
+ $install = 0;
+ shift @args;
+ ($type,$name,$dest) = @args;
+ }
+
+ if ($type eq 'script')
+ {
+ # remove path from script name
+ $name =~ s{.*/}{};
+ }
+
+ if ($type eq 'html')
+ {
+ $dest = "share/doc/@PACKAGE_TARNAME@";
+ $name = "docs/$name.html";
+ }
+
+ if ($type eq 'man')
+ {
+ $name =~ /([0-9])$/;
+ $dest = "man/man$1";
+ $name =~ s/$/\.gz/;
+ }
+
+ if ($install and not $target_windows and not $type eq "subdir")
+ {
+ my $local_install_dir = $install_into_dir;
+ if (defined $dest)
+ {
+ if ($dest =~ m,^/,)
+ {
+ # Don't add $prefix if $dest is a literal path
+ $local_install_dir = $dest;
+ }
+ else
+ {
+ $local_install_dir = "@prefix@/$dest";
+ }
+ }
+ print SCRIPT "mkdir -p " .
+ "\${DESTDIR}$local_install_dir/\n";
+ print SCRIPT "$install_bin $name " .
+ "\${DESTDIR}$local_install_dir\n";
+ }
}
- for(@makefile_includes)
- {
- print MAKE ".include <$_>\n\n";
+
+ unless ($target_windows)
+ {
+ close SCRIPT;
+ chmod 0755,"parcels/scripts/install-$parcel";
}
- # and finally a target for rebuilding the build system
- print MAKE "\nbuildsystem:\n\t(cd ../..; perl ./infrastructure/makebuildenv.pl $makebuildenv_args)\n\n";
-
- close MAKE;
+ my $root = BoxPlatform::parcel_root($parcel);
- if(!$bsd_make)
+ unless ($target_windows)
{
- # need to post process this into a GNU makefile
- open MAKE,">$mod/Makefile";
- open MAKEB,"$mod/MakefileX";
+ print MASTER_MAKEFILE "\tcp parcels/scripts/install-$parcel $dir\n";
+ }
- while(<MAKEB>)
- {
- s/\A\.\s*(ifdef|else|endif|ifndef)/$1/;
- s/\A\.\s*include\s+<(.+?)>/include $1/;
- s/-D\s+(\w+)/$1=1/g;
- print MAKE;
- }
+ print MASTER_MAKEFILE "\t(cd parcels; tar cf - $root | gzip -9 - > $root.tgz )\n";
+
+ print MASTER_MAKEFILE "\n";
- close MAKEB;
- close MAKE;
- unlink "$mod/MakefileX";
+ unless ($target_windows)
+ {
+ print MASTER_MAKEFILE "install-$parcel:\n";
+ print MASTER_MAKEFILE "\t(cd $dir; ./install-$parcel)\n\n";
}
}
+print MASTER_MAKEFILE <<EOF;
+
+debug_build: @debug_build_targets
+release_build: @release_build_targets
+parcels: @parcel_targets
+
+# well-known targets that users might expect to be able to build:
+install:
+ cat local/install.msg
+
+clean: @all_clean_targets
+ cd docs; \$(MAKE) clean
+
+realclean: clean @all_realclean_targets
+ find release debug -type f -exec rm -f {} \\;
+
+# and finally a target for rebuilding the build system:
+buildsystem:
+ perl ./infrastructure/makebuildenv.pl $makebuildenv_args
+EOF
+
+for my $parcel (@parcels)
+{
+ # need to use -f to avoid error if they don't exist (already cleaned)
+ print MASTER_MAKEFILE "\trm -rf ", BoxPlatform::parcel_dir($parcel), "\n";
+ print MASTER_MAKEFILE "\trm -f ", BoxPlatform::parcel_target($parcel), "\n";
+}
+
+open INSTALLMSG,">local/install.msg" or die "Can't open install message file for writing";
+print INSTALLMSG <<__E;
+
+Parcels need to be installed separately, and as root. Type one of the following:
+
+__E
+
+for(@parcels)
+{
+ print INSTALLMSG " $make_command install-".$_."\n";
+}
+print INSTALLMSG "\n";
+
+close INSTALLMSG;
+
+close MASTER_MAKEFILE;
+
print "\nType 'cd <module_dir>; $make_command' to build a module\n\n";
if($modules_omitted)
diff --git a/infrastructure/makeparcels.pl.in b/infrastructure/makeparcels.pl.in
deleted file mode 100755
index 5afdf730..00000000
--- a/infrastructure/makeparcels.pl.in
+++ /dev/null
@@ -1,405 +0,0 @@
-#!@PERL@
-
-use strict;
-use lib 'infrastructure';
-use BoxPlatform;
-
-my @parcels;
-my %parcel_contents;
-
-sub starts_with ($$)
-{
- my ($string,$expected) = @_;
- return substr($string, 0, length $expected) eq $expected;
-}
-
-sub os_matches ($)
-{
- my ($prefix_string) = @_;
- my @prefixes = split m'\,', $prefix_string;
- foreach my $prefix (@prefixes)
- {
- return 1 if starts_with($build_os, $prefix);
- return 1 if starts_with($target_os, $prefix);
- }
- return 0;
-}
-
-my $copy_command = "cp -p";
-
-if ($build_os eq 'CYGWIN')
-{
- $copy_command = "cp -pu"; # faster
-}
-
-open PARCELS,"parcels.txt" or die "Can't open parcels file";
-{
- my $cur_parcel = '';
- while(<PARCELS>)
- {
- chomp; s/#.+\Z//; s/\s+\Z//; s/\s+/ /g;
- next unless m/\S/;
-
- # omit bits on some platforms?
- next if m/\AEND-OMIT/;
- if(m/\AOMIT:(.+)/)
- {
- if (os_matches($1))
- {
- while(<PARCELS>)
- {
- last if m/\AEND-OMIT/;
- }
- }
- next;
- }
-
- if (m'\AONLY:(.+)')
- {
- if (not os_matches($1))
- {
- while (<PARCELS>)
- {
- last if m'\AEND-ONLY';
- }
- }
- next;
- }
- next if (m'\AEND-ONLY');
-
- if (m'\AEXCEPT:(.+)')
- {
- if (os_matches($1))
- {
- while (<PARCELS>)
- {
- last if m'\AEND-EXCEPT';
- }
- }
- next;
- }
- next if (m'\AEND-EXCEPT');
-
- # new parcel, or a new parcel definition?
- if(m/\A\s+(.+)\Z/)
- {
- push @{$parcel_contents{$cur_parcel}},$1
- }
- else
- {
- $cur_parcel = $_;
- push @parcels,$_;
- }
- }
-}
-close PARCELS;
-
-# create parcels directory
-mkdir "parcels",0755;
-mkdir "parcels/scripts",0755;
-
-# write master makefile
-
-open MAKE,">Makefile" or die "Can't open master Makefile for writing";
-
-print MAKE <<__E;
-#
-# AUTOMATICALLY GENERATED FILE
-# do not edit!
-#
-#
-
-MAKE = $make_command
-
-__E
-
-print MAKE "all:\t",join(' ',map {"build-".$_} @parcels),"\n\n";
-
-print MAKE <<__END_OF_FRAGMENT;
-test: release/common/test
-
-release/common/test:
- ./runtest.pl ALL release
-
-.PHONY: docs
-docs:
- cd docs; \$(MAKE)
-
-__END_OF_FRAGMENT
-
-my $release_flag = BoxPlatform::make_flag('RELEASE');
-my @clean_deps;
-
-for my $parcel (@parcels)
-{
- my $version = BoxPlatform::parcel_root($parcel);
- my $target = BoxPlatform::parcel_target($parcel);
- my $dir = BoxPlatform::parcel_dir($parcel);
- my @parcel_deps;
-
- # Need to use BSD install on Solaris
- my $install_bin = $build_os eq 'SunOS' ? '/usr/ucb/install' : 'install';
-
- unless ($target_windows)
- {
- open SCRIPT,">parcels/scripts/install-$parcel" or die
- "Can't open installer script for $parcel for writing";
- print SCRIPT "#!/bin/sh\n\n";
- }
-
- for(@{$parcel_contents{$parcel}})
- {
- my @args = split /\s+/;
-
- my ($type,$name,$dest) = @args;
- my $optional = 0;
- my $install = 1;
-
- if ($type eq 'optional')
- {
- $optional = 1;
- shift @args;
- ($type,$name,$dest) = @args;
- }
-
- if ($type eq 'noinstall')
- {
- $install = 0;
- shift @args;
- ($type,$name,$dest) = @args;
- }
-
- if($type eq 'bin')
- {
- my $exeext = $platform_exe_ext;
- print MAKE <<EOF;
-$dir/$name$exeext: release/bin/$name/$name$exeext
- mkdir -p $dir
- $copy_command release/bin/$name/$name$exeext $dir
-
-.PHONY: release/bin/$name/$name$exeext
-release/bin/$name/$name$exeext:
- (cd bin/$name; \$(MAKE) $release_flag)
-
-EOF
- push @parcel_deps, "$dir/$name$exeext";
- }
- elsif ($type eq 'script')
- {
- my $fullpath = $name;
- my $filename = $name;
- # remove path from script name
- $filename =~ s{.*/}{};
-
- print MAKE <<EOF;
-$dir/$filename: $fullpath
- mkdir -p $dir
-EOF
-
- if ($optional)
- {
- print MAKE "\ttest -r $fullpath " .
- "&& $copy_command $fullpath $dir || true\n";
- }
- else
- {
- print MAKE "\t$copy_command $fullpath $dir\n";
- }
-
- print MAKE "\n";
-
- push @parcel_deps, "$dir/$filename";
- }
- elsif($type eq 'man')
- {
- print MAKE <<EOF;
-$dir/${name}.gz: docs/man/${name}.gz
- mkdir -p $dir
- $copy_command docs/man/${name}.gz $dir
-
-EOF
- # Releases have the docs pre-made, but users
- # may want to rebuild them for some reason.
- my $docbook_source = "docs/docbook/${name}";
- $docbook_source =~ s/\.[58]$/.xml/;
- print MAKE <<EOF;
-docs/man/${name}.gz: $docbook_source docs/docbook/bb-man.xsl
- cd docs; \$(MAKE) man/${name}.gz
-
-EOF
- push @parcel_deps, "$dir/${name}.gz";
- }
- elsif($type eq 'html')
- {
- print MAKE <<EOF;
-$dir/docs/${name}.html: docs/htmlguide/man-html/${name}.html
- mkdir -p $dir/docs
- $copy_command docs/htmlguide/man-html/${name}.html $dir/docs
-
-EOF
- # Releases have the docs pre-made, but users
- # may want to rebuild them for some reason.
- my $docbook_source = "docs/docbook/${name}.xml";
- print MAKE <<EOF;
-docs/htmlguide/man-html/${name}.html: $docbook_source docs/docbook/bb-nochunk-book.xsl
- cd docs; \$(MAKE) htmlguide/man-html/${name}.html
-
-EOF
- push @parcel_deps, "$dir/docs/${name}.html";
- }
- elsif ($type eq 'subdir')
- {
- shift @args;
- my $subdir = shift @args;
- print MAKE <<EOF;
-.PHONY: $name-build $name-clean
-
-$name-build:
- cd $subdir; \$(MAKE) @args
-
-$name-clean:
- cd $name; \$(MAKE) clean
-EOF
- push @parcel_deps, "$name-build";
- push @clean_deps, "$name-clean";
- }
- }
-
- print MAKE <<EOF;
-build-$parcel: $target
-
-$target: @parcel_deps
- test -d $dir || mkdir $dir
-EOF
-
- for(@{$parcel_contents{$parcel}})
- {
- my @args = split /\s+/;
-
- my ($type,$name,$dest) = @args;
-
- my $optional = 0;
- my $install = 1;
-
- if ($type eq 'optional')
- {
- $optional = 1;
- shift @args;
- ($type,$name,$dest) = @args;
- }
-
- if ($type eq 'noinstall')
- {
- $install = 0;
- shift @args;
- ($type,$name,$dest) = @args;
- }
-
- if ($type eq 'script')
- {
- # remove path from script name
- $name =~ s{.*/}{};
- }
-
- if ($type eq 'html')
- {
- $dest = "share/doc/@PACKAGE_TARNAME@";
- $name = "docs/$name.html";
- }
-
- if ($type eq 'man')
- {
- $name =~ /([0-9])$/;
- $dest = "man/man$1";
- $name =~ s/$/\.gz/;
- }
-
- if ($install and not $target_windows and not $type eq "subdir")
- {
- my $local_install_dir = $install_into_dir;
- if (defined $dest)
- {
- if ($dest =~ m,^/,)
- {
- # Don't add $prefix if $dest is a literal path
- $local_install_dir = $dest;
- }
- else
- {
- $local_install_dir = "@prefix@/$dest";
- }
- }
- print SCRIPT "mkdir -p " .
- "\${DESTDIR}$local_install_dir/\n";
- print SCRIPT "$install_bin $name " .
- "\${DESTDIR}$local_install_dir\n";
- }
- }
-
- unless ($target_windows)
- {
- close SCRIPT;
- chmod 0755,"parcels/scripts/install-$parcel";
- }
-
- my $root = BoxPlatform::parcel_root($parcel);
-
- unless ($target_windows)
- {
- print MAKE "\tcp parcels/scripts/install-$parcel $dir\n";
- }
-
- print MAKE "\t(cd parcels; tar cf - $root | gzip -9 - > $root.tgz )\n";
-
- print MAKE "\n";
-
- unless ($target_windows)
- {
- print MAKE "install-$parcel:\n";
- print MAKE "\t(cd $dir; ./install-$parcel)\n\n";
- }
-}
-
-print MAKE <<EOF;
-install:
- cat local/install.msg
-
-clean: @clean_deps
- cd docs; \$(MAKE) clean
-EOF
-
-if ($build_os eq 'CYGWIN')
-{
- print MAKE "\tfind release debug -type f | xargs -r rm\n";
- print MAKE "\tfind . -name 'autogen_*' -type f | xargs -r rm\n";
-}
-else
-{
- print MAKE "\tfind release debug -type f -exec rm -f {} \\;\n";
- print MAKE "\tfind . -name 'autogen_*' -type f -exec rm -f {} \\;\n";
-}
-
-for my $parcel (@parcels)
-{
- # need to use -f to avoid error if they don't exist (already cleaned)
- print MAKE "\trm -rf ", BoxPlatform::parcel_dir($parcel), "\n";
- print MAKE "\trm -f ", BoxPlatform::parcel_target($parcel), "\n";
-}
-
-close MAKE;
-
-open INSTALLMSG,">local/install.msg" or die "Can't open install message file for writing";
-print INSTALLMSG <<__E;
-
-Parcels need to be installed separately, and as root. Type one of the following:
-
-__E
-
-for(@parcels)
-{
- print INSTALLMSG " $make_command install-".$_."\n";
-}
-print INSTALLMSG "\n";
-
-close INSTALLMSG;
-
diff --git a/infrastructure/mingw/configure.sh b/infrastructure/mingw/configure.sh
deleted file mode 100755
index 46a61637..00000000
--- a/infrastructure/mingw/configure.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-DEP_PATH=/usr/i686-pc-mingw32
-
-if [ ! -r "$DEP_PATH/lib/libssl.a" ]; then
- echo "Error: install OpenSSL as instructed by" \
- "docs/backup/win32_build_on_cygwin_using_mingw.txt" >&2
- exit 2
-fi
-
-if [ ! -r "$DEP_PATH/lib/libpcreposix.a" \
- -o ! -r "$DEP_PATH/lib/libpcre.a" \
- -o ! -r "$DEP_PATH/include/pcreposix.h" ]; then
- echo "Error: install PCRE as instructed by" \
- "docs/backup/win32_build_on_cygwin_using_mingw.txt" >&2
- exit 2
-fi
-
-LIBZ_PATH="${DEP_PATH}/sys-root/mingw/lib"
-
-if [ ! -r "$LIBZ_PATH/libz.dll.a" ]; then
- echo "Error: upgrade your Cygwin mingw-zlib-devel package" >&2
- exit 2
-fi
-
-if [ ! -x "configure" ]; then
- if ! ./bootstrap; then
- echo "Error: bootstrap failed, aborting." >&2
- exit 1
- fi
-fi
-
-if ! ./configure "$@" --target=i686-pc-mingw32 \
- CFLAGS="-mno-cygwin -mthreads" \
- CPPFLAGS="-mno-cygwin" \
- CXXFLAGS="-mno-cygwin -mthreads" \
- LDFLAGS="-Wl,-Bstatic -mno-cygwin -mthreads -L${DEP_PATH}/lib -L${LIBZ_PATH}"
-then
- echo "Error: configure failed, aborting." >&2
- exit 1
-fi
-
-exit 0
diff --git a/infrastructure/msvc/2003/bbackupctl.vcproj b/infrastructure/msvc/2003/bbackupctl.vcproj
deleted file mode 100644
index 02f7482e..00000000
--- a/infrastructure/msvc/2003/bbackupctl.vcproj
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="bbackupctl"
- ProjectGUID="{9FD51412-E945-4457-A17A-CA3C505CF431}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\..\db-4.2.52.NC\build_win32&quot;;&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;BOX_RELEASE_BUILD "
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib $(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib $(ProjectDir)..\..\..\Debug\common.lib"
- OutputFile="$(OutDir)/bbackupctl.exe"
- LinkIncremental="2"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/bbackupctl.pdb"
- SubSystem="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="TRUE"
- OptimizeForProcessor="1"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib $(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib $(ProjectDir)..\..\..\Release\common.lib"
- OutputFile="$(OutDir)/bbackupctl.exe"
- LinkIncremental="1"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <Filter
- Name="bin"
- Filter="">
- <Filter
- Name="bbackupctl"
- Filter="">
- <File
- RelativePath="..\..\..\bin\bbackupctl\bbackupctl.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\win32\WinNamedPipeStream.cpp">
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath="..\..\..\lib\win32\WinNamedPipeStream.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- <File
- RelativePath="..\..\..\lib\win32\messages.rc">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2003/bbackupd.vcproj b/infrastructure/msvc/2003/bbackupd.vcproj
deleted file mode 100644
index f34db0cc..00000000
--- a/infrastructure/msvc/2003/bbackupd.vcproj
+++ /dev/null
@@ -1,219 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="bbackupd"
- ProjectGUID="{22D325FB-9131-4BD6-B390-968F0491D687}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(SolutionDir)..\..\..\..\db-4.2.52.NC\build_win32&quot;;&quot;$(SolutionDir)..\..\..\..\boost_1_31_0&quot;;&quot;$(SolutionDir)..\..\..\..\openssl\include&quot;;&quot;$(SolutionDir)..\..\..\..\zlib\include&quot;;&quot;$(SolutionDir)..\..\..\lib\backupclient&quot;;&quot;$(SolutionDir)..\..\..\lib\server&quot;;&quot;$(SolutionDir)..\..\..\lib\crypto&quot;;&quot;$(SolutionDir)..\..\..\lib\compress&quot;;&quot;$(SolutionDir)..\..\..\lib\win32&quot;;&quot;$(SolutionDir)..\..\..\lib\common\&quot;"
- PreprocessorDefinitions="BOOST_REGEX_NO_LIB;WIN32;_DEBUG;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;BOX_RELEASE_BUILD "
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib $(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib $(ProjectDir)..\..\..\Debug\common.lib"
- OutputFile="$(OutDir)/bbackupd.exe"
- LinkIncremental="2"
- IgnoreAllDefaultLibraries="FALSE"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/bbackupd.pdb"
- SubSystem="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="TRUE"
- OptimizeForProcessor="1"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;;&quot;$(SolutionDir)..\..\..\..\boost_1_31_0&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;BOOST_REGEX_NO_LIB"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib $(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib $(ProjectDir)..\..\..\Release\common.lib"
- OutputFile="$(OutDir)/bbackupd.exe"
- LinkIncremental="1"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <Filter
- Name="bin"
- Filter="">
- <Filter
- Name="bbackupd"
- Filter="">
- <File
- RelativePath="..\..\..\bin\bbackupd\autogen_ClientException.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientContext.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientDeleteList.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientDirectoryRecord.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientInodeToIDMap.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupDaemon.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\bbackupd.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\Win32BackupService.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\Win32ServiceFunctions.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\win32\WinNamedPipeStream.cpp">
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <Filter
- Name="bin"
- Filter="">
- <Filter
- Name="bbackupd"
- Filter="">
- <File
- RelativePath="..\..\..\bin\bbackupd\autogen_ClientException.h">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientContext.h">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientDeleteList.h">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientDirectoryRecord.h">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientInodeToIDMap.h">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupDaemon.h">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\Win32BackupService.h">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\Win32ServiceFunctions.h">
- </File>
- <File
- RelativePath="..\..\..\lib\win32\WinNamedPipeStream.h">
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- <File
- RelativePath="..\..\..\lib\win32\messages.rc">
- </File>
- </Filter>
- <File
- RelativePath="..\..\..\ReadMe.txt">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2003/boxbackup.sln b/infrastructure/msvc/2003/boxbackup.sln
deleted file mode 100644
index d9a28041..00000000
--- a/infrastructure/msvc/2003/boxbackup.sln
+++ /dev/null
@@ -1,57 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boxquery", "boxquery.vcproj", "{FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}"
- ProjectSection(ProjectDependencies) = postProject
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6} = {A089CEE6-EBF0-4232-A0C0-74850A8127A6}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common.vcproj", "{A089CEE6-EBF0-4232-A0C0-74850A8127A6}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbackupd", "bbackupd.vcproj", "{22D325FB-9131-4BD6-B390-968F0491D687}"
- ProjectSection(ProjectDependencies) = postProject
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6} = {A089CEE6-EBF0-4232-A0C0-74850A8127A6}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "win32test", "win32test.vcproj", "{28C29E72-76A2-4D0C-B35B-12D446733D2E}"
- ProjectSection(ProjectDependencies) = postProject
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6} = {A089CEE6-EBF0-4232-A0C0-74850A8127A6}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbackupctl", "bbackupctl.vcproj", "{9FD51412-E945-4457-A17A-CA3C505CF431}"
- ProjectSection(ProjectDependencies) = postProject
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6} = {A089CEE6-EBF0-4232-A0C0-74850A8127A6}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Debug.ActiveCfg = Debug|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Debug.Build.0 = Debug|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Release.ActiveCfg = Release|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Release.Build.0 = Release|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Debug.ActiveCfg = Debug|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Debug.Build.0 = Debug|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Release.ActiveCfg = Release|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Release.Build.0 = Release|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Debug.ActiveCfg = Debug|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Debug.Build.0 = Debug|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Release.ActiveCfg = Release|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Release.Build.0 = Release|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Debug.ActiveCfg = Debug|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Debug.Build.0 = Debug|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Release.ActiveCfg = Release|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Release.Build.0 = Release|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Debug.ActiveCfg = Debug|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Debug.Build.0 = Debug|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Release.ActiveCfg = Release|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Release.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
diff --git a/infrastructure/msvc/2003/boxquery.vcproj b/infrastructure/msvc/2003/boxquery.vcproj
deleted file mode 100644
index 6ac09024..00000000
--- a/infrastructure/msvc/2003/boxquery.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="boxquery"
- ProjectGUID="{FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}"
- RootNamespace="boxquery"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;;&quot;$(SolutionDir)..\..\..\..\boost_1_31_0&quot;"
- PreprocessorDefinitions="BOOST_REGEX_NO_LIB;WIN32;_DEBUG;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;BOX_RELEASE_BUILD "
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib $(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib $(ProjectDir)..\..\..\Debug\common.lib"
- OutputFile="$(OutDir)/bbackupquery.exe"
- LinkIncremental="2"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/boxquery.pdb"
- SubSystem="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="TRUE"
- OptimizeForProcessor="1"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;;&quot;$(SolutionDir)..\..\..\..\boost_1_31_0&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;BOOST_REGEX_NO_LIB"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\Release\common.lib $(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib $(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib"
- OutputFile="$(OutDir)/bbackupquery.exe"
- LinkIncremental="1"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="FALSE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <Filter
- Name="bin"
- Filter="">
- <Filter
- Name="backupquery"
- Filter="">
- <File
- RelativePath="..\..\..\bin\bbackupquery\autogen_Documentation.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupquery\BackupQueries.cpp">
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupquery\bbackupquery.cpp">
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <Filter
- Name="bin"
- Filter="">
- <Filter
- Name="backupquery"
- Filter="">
- <File
- RelativePath="..\..\..\bin\bbackupquery\BackupQueries.h">
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- <File
- RelativePath="..\..\..\lib\win32\messages.rc">
- </File>
- </Filter>
- <File
- RelativePath="..\..\..\ReadMe.txt">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2003/common.vcproj b/infrastructure/msvc/2003/common.vcproj
deleted file mode 100644
index fb18b76a..00000000
--- a/infrastructure/msvc/2003/common.vcproj
+++ /dev/null
@@ -1,672 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="common"
- ProjectGUID="{A089CEE6-EBF0-4232-A0C0-74850A8127A6}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="4"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;;&quot;$(SolutionDir)..\..\..\..\boost_1_31_0\&quot;"
- PreprocessorDefinitions="BOOST_REGEX_NO_LIB;WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;BOX_RELEASE_BUILD "
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/common.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="4"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="TRUE"
- OptimizeForProcessor="1"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;;&quot;$(SolutionDir)..\..\..\..\boost_1_31_0\&quot;"
- PreprocessorDefinitions="BOOST_REGEX_NO_LIB;WIN32;BOX_RELEASE_BUILD;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/common.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <Filter
- Name="lib"
- Filter="">
- <Filter
- Name="compress"
- Filter="">
- <File
- RelativePath="..\..\..\lib\compress\autogen_CompressException.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\compress\CompressStream.cpp">
- </File>
- </Filter>
- <Filter
- Name="common"
- Filter="">
- <File
- RelativePath="..\..\..\lib\common\autogen_CommonException.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\autogen_ConversionException.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxException.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTime.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTimeToText.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\CollectInBufferStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Configuration.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\ConversionString.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\DebugAssertFailed.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\DebugMemLeakFinder.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\DebugPrintf.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\EventWatchFilesystemObject.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\ExcludeList.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\FdGetLine.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\FileStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\IOStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\IOStreamGetLine.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Logging.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemBlockStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\PartialReadStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\PathUtils.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\ReadGatherStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\ReadLoggingStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\StreamableMemBlock.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\UnixUser.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Utils.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\common\WaitForEvent.cpp">
- </File>
- </Filter>
- <Filter
- Name="backupclient"
- Filter="">
- <File
- RelativePath="..\..\..\lib\backupclient\autogen_BackupProtocolClient.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\autogen_BackupStoreException.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientCryptoKeys.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientFileAttributes.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientMakeExcludeList.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientRestore.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupDaemonConfigVerify.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreDirectory.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFile.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCmbDiff.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCmbIdx.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCombine.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCryptVar.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileDiff.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileEncodeStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFilename.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFilenameClear.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileRevDiff.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreObjectDump.cpp">
- </File>
- </Filter>
- <Filter
- Name="crypto"
- Filter="">
- <File
- RelativePath="..\..\..\lib\crypto\autogen_CipherException.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherAES.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherBlowfish.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherContext.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherDescription.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\MD5Digest.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\Random.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\RollingChecksum.cpp">
- </File>
- </Filter>
- <Filter
- Name="win32"
- Filter="">
- <File
- RelativePath="..\..\..\lib\win32\emu.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\win32\getopt_long.cxx">
- </File>
- </Filter>
- <Filter
- Name="server"
- Filter="">
- <File
- RelativePath="..\..\..\lib\server\autogen_ConnectionException.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\autogen_ServerException.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\Daemon.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\LocalProcessStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\Protocol.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolObject.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolUncertainStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\Socket.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketStream.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketStreamTLS.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\SSLLib.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\TLSContext.cpp">
- </File>
- <File
- RelativePath="..\..\..\lib\server\WinNamedPipeStream.cpp">
- </File>
-
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <Filter
- Name="lib"
- Filter="">
- <Filter
- Name="compress"
- Filter="">
- <File
- RelativePath="..\..\..\lib\compress\autogen_CompressException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\compress\Compress.h">
- </File>
- <File
- RelativePath="..\..\..\lib\compress\CompressException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\compress\CompressStream.h">
- </File>
- </Filter>
- <Filter
- Name="common"
- Filter="">
- <File
- RelativePath="..\..\..\lib\common\autogen_CommonException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\autogen_ConversionException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BannerText.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BeginStructPackForWire.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Box.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxPlatform.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxPortsAndFiles.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTime.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTimeToText.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTimeToUnix.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\CollectInBufferStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\CommonException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Configuration.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Conversion.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\EndStructPackForWire.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\EventWatchFilesystemObject.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\ExcludeList.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\FdGetLine.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\FileModificationTime.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\FileStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Guards.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\IOStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\IOStreamGetLine.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\LinuxWorkaround.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\LocalProcessStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Logging.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\MainHelper.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemBlockStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemLeakFinder.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemLeakFindOff.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemLeakFindOn.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\NamedLock.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\PartialReadStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\PathUtils.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\ReadGatherStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\StreamableMemBlock.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\TemporaryDirectory.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Test.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Timer.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\UnixUser.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\Utils.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\WaitForEvent.h">
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxVersion.h">
- </File>
- </Filter>
- <Filter
- Name="backupclient"
- Filter="">
- <File
- RelativePath="..\..\..\lib\backupclient\autogen_BackupProtocolClient.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\autogen_BackupStoreException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientCryptoKeys.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientFileAttributes.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientMakeExcludeList.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientRestore.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupDaemonConfigVerify.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreConstants.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreDirectory.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFile.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCryptVar.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileEncodeStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFilename.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFilenameClear.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileWire.h">
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreObjectMagic.h">
- </File>
- </Filter>
- <Filter
- Name="crypto"
- Filter="">
- <File
- RelativePath="..\..\..\lib\crypto\autogen_CipherException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherAES.h">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherBlowfish.h">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherContext.h">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherDescription.h">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\MD5Digest.h">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\Random.h">
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\RollingChecksum.h">
- </File>
- </Filter>
- <Filter
- Name="win32"
- Filter="">
- <File
- RelativePath="..\..\..\lib\win32\emu.h">
- </File>
- <File
- RelativePath="..\..\..\lib\win32\getopt.h">
- </File>
- <File
- RelativePath="..\..\..\lib\win32\WinNamedPipeStream.h">
- </File>
- </Filter>
- <Filter
- Name="server"
- Filter="">
- <File
- RelativePath="..\..\..\lib\server\autogen_ConnectionException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\autogen_ServerException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\Daemon.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\Protocol.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolObject.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolUncertainStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolWire.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\ServerException.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\ServerStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\ServerTLS.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\Socket.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketListen.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketStream.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketStreamTLS.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\SSLLib.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\TLSContext.h">
- </File>
- <File
- RelativePath="..\..\..\lib\server\WinNamedPipeStream.h">
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2003/win32test.vcproj b/infrastructure/msvc/2003/win32test.vcproj
deleted file mode 100644
index 2ef7164e..00000000
--- a/infrastructure/msvc/2003/win32test.vcproj
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="win32test"
- ProjectGUID="{28C29E72-76A2-4D0C-B35B-12D446733D2E}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\bin\bbackupd&quot;;&quot;$(ProjectDir)..\..\..\..\db-4.2.52.NC\build_win32&quot;;&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib $(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib $(ProjectDir)..\..\..\Debug\common.lib"
- OutputFile="$(OutDir)/win32test.exe"
- LinkIncremental="2"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/win32test.pdb"
- SubSystem="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="TRUE"
- OptimizeForProcessor="1"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\bin\bbackupd&quot;;&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib $(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib $(ProjectDir)..\..\..\Release\common.lib"
- OutputFile="$(OutDir)/win32test.exe"
- LinkIncremental="1"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\..\lib\win32\emu.cpp">
- </File>
- <File
- RelativePath="..\..\..\test\win32\testlibwin32.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
- <File
- RelativePath="..\..\..\ReadMe.txt">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2005/bbackupctl.vcproj b/infrastructure/msvc/2005/bbackupctl.vcproj
deleted file mode 100644
index 216a284b..00000000
--- a/infrastructure/msvc/2005/bbackupctl.vcproj
+++ /dev/null
@@ -1,222 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="bbackupctl"
- ProjectGUID="{9FD51412-E945-4457-A17A-CA3C505CF431}"
- RootNamespace="bbackupctl"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\common&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\inc32&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib Advapi32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib $(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib $(ProjectDir)..\..\..\Debug\common.lib $(ProjectDir)..\..\..\..\pcre\bin\debug\pcreposix.lib $(ProjectDir)..\..\..\..\pcre\bin\debug\pcre.lib"
- OutputFile="$(OutDir)/bbackupctl.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/bbackupctl.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="true"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\inc32&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib $(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib $(ProjectDir)..\..\..\Release\common.lib $(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcreposix.lib $(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcre.lib"
- OutputFile="$(OutDir)/bbackupctl.exe"
- LinkIncremental="1"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <Filter
- Name="bin"
- >
- <Filter
- Name="bbackupctl"
- >
- <File
- RelativePath="..\..\..\bin\bbackupctl\bbackupctl.cpp"
- >
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- <File
- RelativePath="..\..\..\lib\win32\messages.rc"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2005/bbackupd.vcproj b/infrastructure/msvc/2005/bbackupd.vcproj
deleted file mode 100644
index ac8eb86a..00000000
--- a/infrastructure/msvc/2005/bbackupd.vcproj
+++ /dev/null
@@ -1,299 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="bbackupd"
- ProjectGUID="{22D325FB-9131-4BD6-B390-968F0491D687}"
- RootNamespace="bbackupd"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(SolutionDir)..\..\..\lib\backupclient&quot;;&quot;$(SolutionDir)..\..\..\lib\common&quot;;&quot;$(SolutionDir)..\..\..\lib\compress&quot;;&quot;$(SolutionDir)..\..\..\lib\crypto&quot;;&quot;$(SolutionDir)..\..\..\lib\server&quot;;&quot;$(SolutionDir)..\..\..\lib\win32&quot;;&quot;$(SolutionDir)..\..\..\..\openssl\inc32&quot;;&quot;$(SolutionDir)..\..\..\..\zlib\include&quot;"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib Advapi32.lib User32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib $(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib $(ProjectDir)..\..\..\Debug\common.lib $(ProjectDir)..\..\..\..\pcre\bin\debug\pcreposix.lib $(ProjectDir)..\..\..\..\pcre\bin\debug\pcre.lib"
- OutputFile="$(OutDir)/bbackupd.exe"
- LinkIncremental="2"
- IgnoreAllDefaultLibraries="false"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/bbackupd.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="true"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(SolutionDir)..\..\..\..\openssl\inc32&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib $(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib $(ProjectDir)..\..\..\Release\common.lib $(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcreposix.lib $(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcre.lib"
- OutputFile="$(OutDir)/bbackupd.exe"
- LinkIncremental="1"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <Filter
- Name="bin"
- >
- <Filter
- Name="bbackupd"
- >
- <File
- RelativePath="..\..\..\bin\bbackupd\autogen_ClientException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientContext.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientDeleteList.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientDirectoryRecord.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientInodeToIDMap.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupDaemon.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\bbackupd.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\Win32BackupService.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\Win32ServiceFunctions.cpp"
- >
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <Filter
- Name="bin"
- >
- <Filter
- Name="bbackupd"
- >
- <File
- RelativePath="..\..\..\bin\bbackupd\autogen_ClientException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientContext.h"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientDeleteList.h"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientDirectoryRecord.h"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupClientInodeToIDMap.h"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\BackupDaemon.h"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\Win32BackupService.h"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupd\Win32ServiceFunctions.h"
- >
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- <File
- RelativePath="..\..\..\lib\win32\messages.rc"
- >
- </File>
- </Filter>
- <File
- RelativePath="..\..\..\ReadMe.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2005/boxbackup.sln b/infrastructure/msvc/2005/boxbackup.sln
deleted file mode 100644
index 833066e9..00000000
--- a/infrastructure/msvc/2005/boxbackup.sln
+++ /dev/null
@@ -1,55 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boxquery", "boxquery.vcproj", "{FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}"
- ProjectSection(ProjectDependencies) = postProject
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6} = {A089CEE6-EBF0-4232-A0C0-74850A8127A6}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common.vcproj", "{A089CEE6-EBF0-4232-A0C0-74850A8127A6}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbackupd", "bbackupd.vcproj", "{22D325FB-9131-4BD6-B390-968F0491D687}"
- ProjectSection(ProjectDependencies) = postProject
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6} = {A089CEE6-EBF0-4232-A0C0-74850A8127A6}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "win32test", "win32test.vcproj", "{28C29E72-76A2-4D0C-B35B-12D446733D2E}"
- ProjectSection(ProjectDependencies) = postProject
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6} = {A089CEE6-EBF0-4232-A0C0-74850A8127A6}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbackupctl", "bbackupctl.vcproj", "{9FD51412-E945-4457-A17A-CA3C505CF431}"
- ProjectSection(ProjectDependencies) = postProject
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6} = {A089CEE6-EBF0-4232-A0C0-74850A8127A6}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Debug|Win32.ActiveCfg = Debug|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Debug|Win32.Build.0 = Debug|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Release|Win32.ActiveCfg = Release|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Release|Win32.Build.0 = Release|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Debug|Win32.ActiveCfg = Debug|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Debug|Win32.Build.0 = Debug|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Release|Win32.ActiveCfg = Release|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Release|Win32.Build.0 = Release|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Debug|Win32.ActiveCfg = Debug|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Debug|Win32.Build.0 = Debug|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Release|Win32.ActiveCfg = Release|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Release|Win32.Build.0 = Release|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Debug|Win32.ActiveCfg = Debug|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Debug|Win32.Build.0 = Debug|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Release|Win32.ActiveCfg = Release|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Release|Win32.Build.0 = Release|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Debug|Win32.ActiveCfg = Debug|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Debug|Win32.Build.0 = Debug|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Release|Win32.ActiveCfg = Release|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/infrastructure/msvc/2005/boxbackup.suo b/infrastructure/msvc/2005/boxbackup.suo
deleted file mode 100644
index 534f337c..00000000
--- a/infrastructure/msvc/2005/boxbackup.suo
+++ /dev/null
Binary files differ
diff --git a/infrastructure/msvc/2005/boxquery.vcproj b/infrastructure/msvc/2005/boxquery.vcproj
deleted file mode 100644
index 776c0ac9..00000000
--- a/infrastructure/msvc/2005/boxquery.vcproj
+++ /dev/null
@@ -1,246 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="boxquery"
- ProjectGUID="{FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}"
- RootNamespace="boxquery"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\common&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\..\pcre&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\inc32&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib Advapi32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib $(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib $(ProjectDir)..\..\..\Debug\common.lib $(ProjectDir)..\..\..\..\pcre\bin\debug\pcreposix.lib $(ProjectDir)..\..\..\..\pcre\bin\debug\pcre.lib"
- OutputFile="$(OutDir)/bbackupquery.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/boxquery.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="true"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\include&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;PCRE_STATIC"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\Release\common.lib $(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib $(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib $(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcreposix.lib $(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcre.lib"
- OutputFile="$(OutDir)/bbackupquery.exe"
- LinkIncremental="1"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="false"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <Filter
- Name="bin"
- >
- <Filter
- Name="backupquery"
- >
- <File
- RelativePath="..\..\..\bin\bbackupquery\autogen_Documentation.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupquery\BackupQueries.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\bin\bbackupquery\bbackupquery.cpp"
- >
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <Filter
- Name="bin"
- >
- <Filter
- Name="backupquery"
- >
- <File
- RelativePath="..\..\..\bin\bbackupquery\BackupQueries.h"
- >
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- <File
- RelativePath="..\..\..\lib\win32\messages.rc"
- >
- </File>
- </Filter>
- <File
- RelativePath="..\..\..\ReadMe.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2005/common.vcproj b/infrastructure/msvc/2005/common.vcproj
deleted file mode 100644
index 256bce06..00000000
--- a/infrastructure/msvc/2005/common.vcproj
+++ /dev/null
@@ -1,896 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="common"
- ProjectGUID="{A089CEE6-EBF0-4232-A0C0-74850A8127A6}"
- RootNamespace="common"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- Description="Determining Version Number"
- CommandLine="perl $(InputDir)..\getversion.pl"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\common&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\inc32&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\..\pcre&quot;;$(NOINHERIT)"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- WarnAsError="false"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/common.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="true"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\inc32&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;;&quot;$(ProjectDir)..\..\..\..\pcre\pcre-6.7\&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/common.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <Filter
- Name="lib"
- >
- <Filter
- Name="compress"
- >
- <File
- RelativePath="..\..\..\lib\compress\autogen_CompressException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\compress\CompressStream.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="common"
- >
- <File
- RelativePath="..\..\..\lib\common\autogen_CommonException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\autogen_ConversionException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTime.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTimeToText.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\CollectInBufferStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Configuration.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\ConversionString.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\DebugAssertFailed.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\DebugMemLeakFinder.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\DebugPrintf.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\EventWatchFilesystemObject.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\ExcludeList.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\FdGetLine.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\FileStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\IOStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\IOStreamGetLine.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Logging.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemBlockStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\PartialReadStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\PathUtils.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\ReadGatherStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\ReadLoggingStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\StreamableMemBlock.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Timer.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\UnixUser.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Utils.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\WaitForEvent.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="backupclient"
- >
- <File
- RelativePath="..\..\..\lib\backupclient\autogen_BackupProtocolClient.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\autogen_BackupStoreException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientCryptoKeys.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientFileAttributes.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientMakeExcludeList.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientRestore.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupDaemonConfigVerify.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreDirectory.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFile.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCmbDiff.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCmbIdx.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCombine.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCryptVar.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileDiff.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileEncodeStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFilename.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFilenameClear.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileRevDiff.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreObjectDump.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="crypto"
- >
- <File
- RelativePath="..\..\..\lib\crypto\autogen_CipherException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherAES.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherBlowfish.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherContext.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherDescription.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\MD5Digest.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\Random.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\RollingChecksum.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="win32"
- >
- <File
- RelativePath="..\..\..\lib\win32\emu.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\win32\getopt_long.cxx"
- >
- </File>
- </Filter>
- <Filter
- Name="server"
- >
- <File
- RelativePath="..\..\..\lib\server\autogen_ConnectionException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\autogen_ServerException.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\Daemon.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\LocalProcessStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\Protocol.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolObject.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolUncertainStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\Socket.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketStream.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketStreamTLS.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\SSLLib.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\TLSContext.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\WinNamedPipeStream.cpp"
- >
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <Filter
- Name="lib"
- >
- <Filter
- Name="compress"
- >
- <File
- RelativePath="..\..\..\lib\compress\autogen_CompressException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\compress\Compress.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\compress\CompressException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\compress\CompressStream.h"
- >
- </File>
- </Filter>
- <Filter
- Name="common"
- >
- <File
- RelativePath="..\..\..\lib\common\autogen_CommonException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\autogen_ConversionException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BannerText.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BeginStructPackForWire.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Box.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxConfig-MSVC.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxPlatform.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxPortsAndFiles.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTime.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTimeToText.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxTimeToUnix.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\BoxVersion.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\CollectInBufferStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\CommonException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Configuration.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Conversion.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\EndStructPackForWire.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\EventWatchFilesystemObject.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\ExcludeList.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\FdGetLine.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\FileModificationTime.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\FileStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Guards.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\IOStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\IOStreamGetLine.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\LocalProcessStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Logging.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\MainHelper.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemBlockStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemLeakFinder.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemLeakFindOff.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\MemLeakFindOn.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\NamedLock.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\PartialReadStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\PathUtils.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\ReadGatherStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\ReadLoggingStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\StreamableMemBlock.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\TemporaryDirectory.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Test.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Timer.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\UnixUser.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\Utils.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\common\WaitForEvent.h"
- >
- </File>
- </Filter>
- <Filter
- Name="backupclient"
- >
- <File
- RelativePath="..\..\..\lib\backupclient\autogen_BackupProtocolClient.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\autogen_BackupStoreException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientCryptoKeys.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientFileAttributes.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientMakeExcludeList.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupClientRestore.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupDaemonConfigVerify.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreConstants.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreDirectory.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFile.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileCryptVar.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileEncodeStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFilename.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFilenameClear.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreFileWire.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\backupclient\BackupStoreObjectMagic.h"
- >
- </File>
- </Filter>
- <Filter
- Name="crypto"
- >
- <File
- RelativePath="..\..\..\lib\crypto\autogen_CipherException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherAES.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherBlowfish.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherContext.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherDescription.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\CipherException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\MD5Digest.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\Random.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\crypto\RollingChecksum.h"
- >
- </File>
- </Filter>
- <Filter
- Name="win32"
- >
- <File
- RelativePath="..\..\..\lib\win32\emu.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\win32\getopt.h"
- >
- </File>
- </Filter>
- <Filter
- Name="server"
- >
- <File
- RelativePath="..\..\..\lib\server\autogen_ConnectionException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\autogen_ServerException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\Daemon.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\Protocol.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolObject.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolUncertainStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\ProtocolWire.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\ServerException.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\ServerStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\ServerTLS.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\Socket.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketListen.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketStream.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\SocketStreamTLS.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\SSLLib.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\TLSContext.h"
- >
- </File>
- <File
- RelativePath="..\..\..\lib\server\WinNamedPipeStream.h"
- >
- </File>
- </Filter>
- </Filter>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2005/win32test.vcproj b/infrastructure/msvc/2005/win32test.vcproj
deleted file mode 100644
index 0f97c302..00000000
--- a/infrastructure/msvc/2005/win32test.vcproj
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="win32test"
- ProjectGUID="{28C29E72-76A2-4D0C-B35B-12D446733D2E}"
- RootNamespace="win32test"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\..\..\Debug"
- IntermediateDirectory="..\..\..\Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\bin\bbackupd&quot;;&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\common&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\inc32&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib Advapi32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib $(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib $(ProjectDir)..\..\..\Debug\common.lib $(ProjectDir)..\..\..\..\pcre\bin\debug\pcreposix.lib $(ProjectDir)..\..\..\..\pcre\bin\debug\pcre.lib"
- OutputFile="$(OutDir)/win32test.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/win32test.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\..\..\Release"
- IntermediateDirectory="..\..\..\Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- EnableFiberSafeOptimizations="true"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\bin\bbackupd&quot;;&quot;$(ProjectDir)..\..\..\lib\backupclient&quot;;&quot;$(ProjectDir)..\..\..\lib\common\&quot;;&quot;$(ProjectDir)..\..\..\lib\compress&quot;;&quot;$(ProjectDir)..\..\..\lib\crypto&quot;;&quot;$(ProjectDir)..\..\..\lib\server&quot;;&quot;$(ProjectDir)..\..\..\lib\win32&quot;;&quot;$(ProjectDir)..\..\..\..\openssl\inc32&quot;;&quot;$(ProjectDir)..\..\..\..\zlib\include&quot;"
- PreprocessorDefinitions="WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib $(ProjectDir)..\..\..\..\zlib\lib\zdll.lib $(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib $(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib $(ProjectDir)..\..\..\Release\common.lib $(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcreposix.lib $(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcre.lib"
- OutputFile="$(OutDir)/win32test.exe"
- LinkIncremental="1"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath="..\..\..\lib\win32\emu.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\test\win32\testlibwin32.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- <File
- RelativePath="..\..\..\ReadMe.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/infrastructure/msvc/2010/bbackupctl.vcxproj b/infrastructure/msvc/2010/bbackupctl.vcxproj
deleted file mode 100644
index 5751b4d8..00000000
--- a/infrastructure/msvc/2010/bbackupctl.vcxproj
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{9FD51412-E945-4457-A17A-CA3C505CF431}</ProjectGuid>
- <RootNamespace>bbackupctl</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\lib\backupclient;$(ProjectDir)..\..\..\lib\common;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\lib\crypto;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\..\openssl\include;$(ProjectDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)bbackupctl.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\lib\backupclient;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\crypto;$(ProjectDir)..\..\..\..\openssl\inc32;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\..\zlib\include;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\lib\common\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>Ws2_32.lib;$(ProjectDir)..\..\..\..\zlib\lib\zdll.lib;$(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib;$(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib;$(ProjectDir)..\..\..\Release\common.lib;$(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcreposix.lib;$(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcre.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)bbackupctl.exe</OutputFile>
- <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\bin\bbackupctl\bbackupctl.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="..\..\..\lib\win32\messages.rc" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="common.vcxproj">
- <Project>{a089cee6-ebf0-4232-a0c0-74850a8127a6}</Project>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- </ProjectReference>
- <ProjectReference Include="libbackupclient.vcxproj">
- <Project>{32604097-c934-4711-b1ad-206336640e70}</Project>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/bbackupd.vcxproj b/infrastructure/msvc/2010/bbackupd.vcxproj
deleted file mode 100644
index a98bd852..00000000
--- a/infrastructure/msvc/2010/bbackupd.vcxproj
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{22D325FB-9131-4BD6-B390-968F0491D687}</ProjectGuid>
- <RootNamespace>bbackupd</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\lib\backupstore;$(SolutionDir)..\..\..\lib\backupclient;$(SolutionDir)..\..\..\lib\common;$(SolutionDir)..\..\..\lib\compress;$(SolutionDir)..\..\..\lib\crypto;$(SolutionDir)..\..\..\lib\server;$(SolutionDir)..\..\..\lib\win32;$(SolutionDir)..\..\..\qdbm;$(SolutionDir)..\..\..\..\openssl\include;$(SolutionDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>ENABLE_VSS;WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>VssApi.lib;$(OutDir)\libbackupclient.lib;$(OutDir)\libbackupstore.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)bbackupd.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\lib\backupclient;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\crypto;$(SolutionDir)..\..\..\..\openssl\inc32;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\..\zlib\include;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\lib\common\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>Ws2_32.lib;$(ProjectDir)..\..\..\..\zlib\lib\zdll.lib;$(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib;$(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib;$(ProjectDir)..\..\..\Release\common.lib;$(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcreposix.lib;$(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcre.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)bbackupd.exe</OutputFile>
- <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\bin\bbackupd\autogen_ClientException.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupd\BackupClientContext.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupd\BackupClientDeleteList.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupd\BackupClientDirectoryRecord.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupd\BackupClientInodeToIDMap.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupd\BackupDaemon.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupd\bbackupd.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupd\Win32BackupService.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupd\Win32ServiceFunctions.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\bin\bbackupd\autogen_ClientException.h" />
- <ClInclude Include="..\..\..\bin\bbackupd\BackupClientContext.h" />
- <ClInclude Include="..\..\..\bin\bbackupd\BackupClientDeleteList.h" />
- <ClInclude Include="..\..\..\bin\bbackupd\BackupClientDirectoryRecord.h" />
- <ClInclude Include="..\..\..\bin\bbackupd\BackupClientInodeToIDMap.h" />
- <ClInclude Include="..\..\..\bin\bbackupd\BackupDaemon.h" />
- <ClInclude Include="..\..\..\bin\bbackupd\Win32BackupService.h" />
- <ClInclude Include="..\..\..\bin\bbackupd\Win32ServiceFunctions.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="..\..\..\lib\win32\messages.rc" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="common.vcxproj">
- <Project>{a089cee6-ebf0-4232-a0c0-74850a8127a6}</Project>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- <Private>true</Private>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- <ProjectReference Include="qdbm.vcxproj">
- <Project>{72af22a7-b339-4fdf-b6ae-ca6522d4bb8d}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/bbstoreaccounts.vcxproj b/infrastructure/msvc/2010/bbstoreaccounts.vcxproj
deleted file mode 100644
index abaf06db..00000000
--- a/infrastructure/msvc/2010/bbstoreaccounts.vcxproj
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{C8A1509C-F91B-4140-BD51-B87FF24FB95F}</ProjectGuid>
- <RootNamespace>bbstoreaccounts</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <IntDir>$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\lib\backupclient;$(SolutionDir)..\..\..\lib\backupstore;$(SolutionDir)..\..\..\lib\raidfile;$(SolutionDir)..\..\..\lib\common;$(SolutionDir)..\..\..\lib\compress;$(SolutionDir)..\..\..\lib\crypto;$(SolutionDir)..\..\..\lib\server;$(SolutionDir)..\..\..\lib\win32;$(SolutionDir)..\..\..\qdbm;$(SolutionDir)..\..\..\..\openssl\include;$(SolutionDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\bin\bbstoreaccounts\bbstoreaccounts.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="common.vcxproj">
- <Project>{a089cee6-ebf0-4232-a0c0-74850a8127a6}</Project>
- </ProjectReference>
- <ProjectReference Include="libbackupstore.vcxproj">
- <Project>{97d89aef-2be4-4e34-8703-03ba67bf4494}</Project>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/bbstored.vcxproj b/infrastructure/msvc/2010/bbstored.vcxproj
deleted file mode 100644
index 7d09f75d..00000000
--- a/infrastructure/msvc/2010/bbstored.vcxproj
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{D8404314-73DD-4270-8205-BE677F8FDAC7}</ProjectGuid>
- <RootNamespace>bbstored</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <IntDir>$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\lib\backupclient;$(SolutionDir)..\..\..\lib\backupstore;$(SolutionDir)..\..\..\lib\raidfile;$(SolutionDir)..\..\..\lib\common;$(SolutionDir)..\..\..\lib\compress;$(SolutionDir)..\..\..\lib\crypto;$(SolutionDir)..\..\..\lib\server;$(SolutionDir)..\..\..\lib\win32;$(SolutionDir)..\..\..\qdbm;$(SolutionDir)..\..\..\..\openssl\include;$(SolutionDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ProjectReference Include="common.vcxproj">
- <Project>{a089cee6-ebf0-4232-a0c0-74850a8127a6}</Project>
- </ProjectReference>
- <ProjectReference Include="libbackupstore.vcxproj">
- <Project>{97d89aef-2be4-4e34-8703-03ba67bf4494}</Project>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\bin\bbstored\BackupStoreDaemon.cpp" />
- <ClCompile Include="..\..\..\bin\bbstored\bbstored.cpp" />
- <ClCompile Include="..\..\..\bin\bbstored\BBStoreDHousekeeping.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\bin\bbstored\BackupStoreDaemon.h" />
- </ItemGroup>
- <ItemGroup>
- <None Include="..\..\..\bin\bbstored\bbstored-certs.in" />
- <None Include="..\..\..\bin\bbstored\bbstored-config.in" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/boxbackup.sln b/infrastructure/msvc/2010/boxbackup.sln
deleted file mode 100644
index 384ff58c..00000000
--- a/infrastructure/msvc/2010/boxbackup.sln
+++ /dev/null
@@ -1,89 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbackupquery", "boxquery.vcxproj", "{FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}"
- ProjectSection(ProjectDependencies) = postProject
- {32604097-C934-4711-B1AD-206336640E70} = {32604097-C934-4711-B1AD-206336640E70}
- {97D89AEF-2BE4-4E34-8703-03BA67BF4494} = {97D89AEF-2BE4-4E34-8703-03BA67BF4494}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common.vcxproj", "{A089CEE6-EBF0-4232-A0C0-74850A8127A6}"
- ProjectSection(ProjectDependencies) = postProject
- {72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D} = {72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbackupd", "bbackupd.vcxproj", "{22D325FB-9131-4BD6-B390-968F0491D687}"
- ProjectSection(ProjectDependencies) = postProject
- {32604097-C934-4711-B1AD-206336640E70} = {32604097-C934-4711-B1AD-206336640E70}
- {72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D} = {72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D}
- {97D89AEF-2BE4-4E34-8703-03BA67BF4494} = {97D89AEF-2BE4-4E34-8703-03BA67BF4494}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "win32test", "win32test.vcxproj", "{28C29E72-76A2-4D0C-B35B-12D446733D2E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbackupctl", "bbackupctl.vcxproj", "{9FD51412-E945-4457-A17A-CA3C505CF431}"
- ProjectSection(ProjectDependencies) = postProject
- {32604097-C934-4711-B1AD-206336640E70} = {32604097-C934-4711-B1AD-206336640E70}
- {97D89AEF-2BE4-4E34-8703-03BA67BF4494} = {97D89AEF-2BE4-4E34-8703-03BA67BF4494}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qdbm", "qdbm.vcxproj", "{72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbstored", "bbstored.vcxproj", "{D8404314-73DD-4270-8205-BE677F8FDAC7}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbackupstore", "libbackupstore.vcxproj", "{97D89AEF-2BE4-4E34-8703-03BA67BF4494}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbstoreaccounts", "bbstoreaccounts.vcxproj", "{C8A1509C-F91B-4140-BD51-B87FF24FB95F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbackupclient", "libbackupclient.vcxproj", "{32604097-C934-4711-B1AD-206336640E70}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Debug|Win32.ActiveCfg = Debug|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Debug|Win32.Build.0 = Debug|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Release|Win32.ActiveCfg = Release|Win32
- {FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}.Release|Win32.Build.0 = Release|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Debug|Win32.ActiveCfg = Debug|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Debug|Win32.Build.0 = Debug|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Release|Win32.ActiveCfg = Release|Win32
- {A089CEE6-EBF0-4232-A0C0-74850A8127A6}.Release|Win32.Build.0 = Release|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Debug|Win32.ActiveCfg = Debug|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Debug|Win32.Build.0 = Debug|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Release|Win32.ActiveCfg = Release|Win32
- {22D325FB-9131-4BD6-B390-968F0491D687}.Release|Win32.Build.0 = Release|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Debug|Win32.ActiveCfg = Debug|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Debug|Win32.Build.0 = Debug|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Release|Win32.ActiveCfg = Release|Win32
- {28C29E72-76A2-4D0C-B35B-12D446733D2E}.Release|Win32.Build.0 = Release|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Debug|Win32.ActiveCfg = Debug|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Debug|Win32.Build.0 = Debug|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Release|Win32.ActiveCfg = Release|Win32
- {9FD51412-E945-4457-A17A-CA3C505CF431}.Release|Win32.Build.0 = Release|Win32
- {72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D}.Debug|Win32.ActiveCfg = Debug|Win32
- {72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D}.Debug|Win32.Build.0 = Debug|Win32
- {72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D}.Release|Win32.ActiveCfg = Release|Win32
- {72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D}.Release|Win32.Build.0 = Release|Win32
- {D8404314-73DD-4270-8205-BE677F8FDAC7}.Debug|Win32.ActiveCfg = Debug|Win32
- {D8404314-73DD-4270-8205-BE677F8FDAC7}.Debug|Win32.Build.0 = Debug|Win32
- {D8404314-73DD-4270-8205-BE677F8FDAC7}.Release|Win32.ActiveCfg = Release|Win32
- {D8404314-73DD-4270-8205-BE677F8FDAC7}.Release|Win32.Build.0 = Release|Win32
- {97D89AEF-2BE4-4E34-8703-03BA67BF4494}.Debug|Win32.ActiveCfg = Debug|Win32
- {97D89AEF-2BE4-4E34-8703-03BA67BF4494}.Debug|Win32.Build.0 = Debug|Win32
- {97D89AEF-2BE4-4E34-8703-03BA67BF4494}.Release|Win32.ActiveCfg = Release|Win32
- {97D89AEF-2BE4-4E34-8703-03BA67BF4494}.Release|Win32.Build.0 = Release|Win32
- {C8A1509C-F91B-4140-BD51-B87FF24FB95F}.Debug|Win32.ActiveCfg = Debug|Win32
- {C8A1509C-F91B-4140-BD51-B87FF24FB95F}.Debug|Win32.Build.0 = Debug|Win32
- {C8A1509C-F91B-4140-BD51-B87FF24FB95F}.Release|Win32.ActiveCfg = Release|Win32
- {C8A1509C-F91B-4140-BD51-B87FF24FB95F}.Release|Win32.Build.0 = Release|Win32
- {32604097-C934-4711-B1AD-206336640E70}.Debug|Win32.ActiveCfg = Debug|Win32
- {32604097-C934-4711-B1AD-206336640E70}.Debug|Win32.Build.0 = Debug|Win32
- {32604097-C934-4711-B1AD-206336640E70}.Release|Win32.ActiveCfg = Release|Win32
- {32604097-C934-4711-B1AD-206336640E70}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/infrastructure/msvc/2010/boxquery.vcxproj b/infrastructure/msvc/2010/boxquery.vcxproj
deleted file mode 100644
index c419c4b7..00000000
--- a/infrastructure/msvc/2010/boxquery.vcxproj
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{FE9EC666-4B3A-4370-B3D4-DEBD4A21F36E}</ProjectGuid>
- <RootNamespace>boxquery</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- <ProjectName>bbackupquery</ProjectName>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\lib\backupstore;$(ProjectDir)..\..\..\lib\backupclient;$(ProjectDir)..\..\..\lib\common;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\lib\crypto;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\..\pcre;$(ProjectDir)..\..\..\..\openssl\include;$(ProjectDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)boxquery.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\lib\backupclient;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\crypto;$(ProjectDir)..\..\..\..\openssl\include;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\..\zlib\include;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\lib\common\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;PCRE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>Ws2_32.lib;$(ProjectDir)..\..\..\..\zlib\lib\zdll.lib;$(ProjectDir)..\..\..\Release\common.lib;$(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib;$(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib;$(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcreposix.lib;$(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcre.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)bbackupquery.exe</OutputFile>
- <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
- <GenerateDebugInformation>false</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\bin\bbackupquery\autogen_Documentation.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupquery\BackupQueries.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupquery\bbackupquery.cpp" />
- <ClCompile Include="..\..\..\bin\bbackupquery\CommandCompletion.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\bin\bbackupquery\BackupQueries.h" />
- <ClInclude Include="..\..\..\bin\bbackupquery\BoxBackupCompareParams.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="..\..\..\lib\win32\messages.rc" />
- </ItemGroup>
- <ItemGroup>
- <None Include="..\..\..\ReadMe.txt" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="common.vcxproj">
- <Project>{a089cee6-ebf0-4232-a0c0-74850a8127a6}</Project>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- </ProjectReference>
- <ProjectReference Include="libbackupclient.vcxproj">
- <Project>{32604097-c934-4711-b1ad-206336640e70}</Project>
- </ProjectReference>
- <ProjectReference Include="libbackupstore.vcxproj">
- <Project>{97d89aef-2be4-4e34-8703-03ba67bf4494}</Project>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/common.vcxproj b/infrastructure/msvc/2010/common.vcxproj
deleted file mode 100644
index a644891a..00000000
--- a/infrastructure/msvc/2010/common.vcxproj
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{A089CEE6-EBF0-4232-A0C0-74850A8127A6}</ProjectGuid>
- <RootNamespace>common</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</IntDir>
- <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IncludePath)</IncludePath>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <PreBuildEvent />
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\qdbm;$(ProjectDir)..\..\..\lib\common;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\lib\crypto;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\..\openssl\include;$(ProjectDir)..\..\..\..\zlib\include;$(ProjectDir)..\..\..\..\pcre</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <TreatWarningAsError>false</TreatWarningAsError>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- </ClCompile>
- <Lib />
- <CustomBuildStep />
- <CustomBuildStep />
- <CustomBuildStep />
- <Lib>
- <AdditionalDependencies>Ws2_32.lib;$(ProjectDir)..\..\..\..\pcre\build\vc2010\debug\pcre.lib;$(ProjectDir)..\..\..\..\pcre\build\vc2010\debug\pcreposix.lib;$(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib;$(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib;$(ProjectDir)..\..\..\..\zlib\lib\zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Lib>
- <PreBuildEvent>
- <Command>perl $(ProjectDir)..\getversion.pl</Command>
- </PreBuildEvent>
- <PreBuildEvent>
- <Message>Determining Version Number</Message>
- </PreBuildEvent>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\lib\common\;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\lib\crypto;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\..\openssl\inc32;$(ProjectDir)..\..\..\..\zlib\include;$(ProjectDir)..\..\..\..\pcre\pcre-6.7\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;BOX_RELEASE_BUILD;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Lib>
- <OutputFile>$(OutDir)common.lib</OutputFile>
- </Lib>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\lib\common\BufferedStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\BufferedWriteStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\FileModificationTime.cpp" />
- <ClCompile Include="..\..\..\lib\common\GetLine.cpp" />
- <ClCompile Include="..\..\..\lib\common\InvisibleTempFileStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\NamedLock.cpp" />
- <ClCompile Include="..\..\..\lib\common\RateLimitingStream.cpp" />
- <ClCompile Include="..\..\..\lib\compress\autogen_CompressException.cpp" />
- <ClCompile Include="..\..\..\lib\compress\CompressStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\autogen_CommonException.cpp" />
- <ClCompile Include="..\..\..\lib\common\autogen_ConversionException.cpp" />
- <ClCompile Include="..\..\..\lib\common\BoxException.cpp" />
- <ClCompile Include="..\..\..\lib\common\BoxTime.cpp" />
- <ClCompile Include="..\..\..\lib\common\BoxTimeToText.cpp" />
- <ClCompile Include="..\..\..\lib\common\CollectInBufferStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\Configuration.cpp" />
- <ClCompile Include="..\..\..\lib\common\ConversionString.cpp" />
- <ClCompile Include="..\..\..\lib\common\DebugAssertFailed.cpp" />
- <ClCompile Include="..\..\..\lib\common\DebugMemLeakFinder.cpp" />
- <ClCompile Include="..\..\..\lib\common\DebugPrintf.cpp" />
- <ClCompile Include="..\..\..\lib\common\EventWatchFilesystemObject.cpp" />
- <ClCompile Include="..\..\..\lib\common\ExcludeList.cpp" />
- <ClCompile Include="..\..\..\lib\common\FdGetLine.cpp" />
- <ClCompile Include="..\..\..\lib\common\FileStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\IOStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\IOStreamGetLine.cpp" />
- <ClCompile Include="..\..\..\lib\common\Logging.cpp" />
- <ClCompile Include="..\..\..\lib\common\MemBlockStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\PartialReadStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\PathUtils.cpp" />
- <ClCompile Include="..\..\..\lib\common\ReadGatherStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\ReadLoggingStream.cpp" />
- <ClCompile Include="..\..\..\lib\common\StreamableMemBlock.cpp" />
- <ClCompile Include="..\..\..\lib\common\Timer.cpp" />
- <ClCompile Include="..\..\..\lib\common\UnixUser.cpp" />
- <ClCompile Include="..\..\..\lib\common\Utils.cpp" />
- <ClCompile Include="..\..\..\lib\common\WaitForEvent.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\autogen_CipherException.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\CipherAES.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\CipherBlowfish.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\CipherContext.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\CipherDescription.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\CryptoUtils.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\MD5Digest.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\Random.cpp" />
- <ClCompile Include="..\..\..\lib\crypto\RollingChecksum.cpp" />
- <ClCompile Include="..\..\..\lib\server\Message.cpp" />
- <ClCompile Include="..\..\..\lib\server\TcpNice.cpp" />
- <ClCompile Include="..\..\..\lib\win32\emu.cpp" />
- <ClCompile Include="..\..\..\lib\win32\getopt_long.cpp" />
- <ClCompile Include="..\..\..\lib\server\autogen_ConnectionException.cpp" />
- <ClCompile Include="..\..\..\lib\server\autogen_ServerException.cpp" />
- <ClCompile Include="..\..\..\lib\server\Daemon.cpp" />
- <ClCompile Include="..\..\..\lib\server\LocalProcessStream.cpp" />
- <ClCompile Include="..\..\..\lib\server\Protocol.cpp" />
- <ClCompile Include="..\..\..\lib\server\ProtocolUncertainStream.cpp" />
- <ClCompile Include="..\..\..\lib\server\Socket.cpp" />
- <ClCompile Include="..\..\..\lib\server\SocketStream.cpp" />
- <ClCompile Include="..\..\..\lib\server\SocketStreamTLS.cpp" />
- <ClCompile Include="..\..\..\lib\server\SSLLib.cpp" />
- <ClCompile Include="..\..\..\lib\server\TLSContext.cpp" />
- <ClCompile Include="..\..\..\lib\server\WinNamedPipeStream.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\lib\common\BufferedStream.h" />
- <ClInclude Include="..\..\..\lib\common\BufferedWriteStream.h" />
- <ClInclude Include="..\..\..\lib\common\GetLine.h" />
- <ClInclude Include="..\..\..\lib\common\InvisibleTempFileStream.h" />
- <ClInclude Include="..\..\..\lib\common\RateLimitingStream.h" />
- <ClInclude Include="..\..\..\lib\compress\autogen_CompressException.h" />
- <ClInclude Include="..\..\..\lib\compress\Compress.h" />
- <ClInclude Include="..\..\..\lib\compress\CompressException.h" />
- <ClInclude Include="..\..\..\lib\compress\CompressStream.h" />
- <ClInclude Include="..\..\..\lib\common\autogen_CommonException.h" />
- <ClInclude Include="..\..\..\lib\common\autogen_ConversionException.h" />
- <ClInclude Include="..\..\..\lib\common\BannerText.h" />
- <ClInclude Include="..\..\..\lib\common\BeginStructPackForWire.h" />
- <ClInclude Include="..\..\..\lib\common\Box.h" />
- <ClInclude Include="..\..\..\lib\common\BoxConfig-MSVC.h" />
- <ClInclude Include="..\..\..\lib\common\BoxException.h" />
- <ClInclude Include="..\..\..\lib\common\BoxPlatform.h" />
- <ClInclude Include="..\..\..\lib\common\BoxPortsAndFiles.h" />
- <ClInclude Include="..\..\..\lib\common\BoxTime.h" />
- <ClInclude Include="..\..\..\lib\common\BoxTimeToText.h" />
- <ClInclude Include="..\..\..\lib\common\BoxTimeToUnix.h" />
- <ClInclude Include="..\..\..\lib\common\BoxVersion.h" />
- <ClInclude Include="..\..\..\lib\common\CollectInBufferStream.h" />
- <ClInclude Include="..\..\..\lib\common\CommonException.h" />
- <ClInclude Include="..\..\..\lib\common\Configuration.h" />
- <ClInclude Include="..\..\..\lib\common\Conversion.h" />
- <ClInclude Include="..\..\..\lib\common\EndStructPackForWire.h" />
- <ClInclude Include="..\..\..\lib\common\EventWatchFilesystemObject.h" />
- <ClInclude Include="..\..\..\lib\common\ExcludeList.h" />
- <ClInclude Include="..\..\..\lib\common\FdGetLine.h" />
- <ClInclude Include="..\..\..\lib\common\FileModificationTime.h" />
- <ClInclude Include="..\..\..\lib\common\FileStream.h" />
- <ClInclude Include="..\..\..\lib\common\Guards.h" />
- <ClInclude Include="..\..\..\lib\common\IOStream.h" />
- <ClInclude Include="..\..\..\lib\common\IOStreamGetLine.h" />
- <ClInclude Include="..\..\..\lib\crypto\CryptoUtils.h" />
- <ClInclude Include="..\..\..\lib\server\LocalProcessStream.h" />
- <ClInclude Include="..\..\..\lib\common\Logging.h" />
- <ClInclude Include="..\..\..\lib\common\MainHelper.h" />
- <ClInclude Include="..\..\..\lib\common\MemBlockStream.h" />
- <ClInclude Include="..\..\..\lib\common\MemLeakFinder.h" />
- <ClInclude Include="..\..\..\lib\common\MemLeakFindOff.h" />
- <ClInclude Include="..\..\..\lib\common\MemLeakFindOn.h" />
- <ClInclude Include="..\..\..\lib\common\NamedLock.h" />
- <ClInclude Include="..\..\..\lib\common\PartialReadStream.h" />
- <ClInclude Include="..\..\..\lib\common\PathUtils.h" />
- <ClInclude Include="..\..\..\lib\common\ReadGatherStream.h" />
- <ClInclude Include="..\..\..\lib\common\ReadLoggingStream.h" />
- <ClInclude Include="..\..\..\lib\common\StreamableMemBlock.h" />
- <ClInclude Include="..\..\..\lib\common\TemporaryDirectory.h" />
- <ClInclude Include="..\..\..\lib\common\Test.h" />
- <ClInclude Include="..\..\..\lib\common\Timer.h" />
- <ClInclude Include="..\..\..\lib\common\UnixUser.h" />
- <ClInclude Include="..\..\..\lib\common\Utils.h" />
- <ClInclude Include="..\..\..\lib\common\WaitForEvent.h" />
- <ClInclude Include="..\..\..\lib\crypto\autogen_CipherException.h" />
- <ClInclude Include="..\..\..\lib\crypto\CipherAES.h" />
- <ClInclude Include="..\..\..\lib\crypto\CipherBlowfish.h" />
- <ClInclude Include="..\..\..\lib\crypto\CipherContext.h" />
- <ClInclude Include="..\..\..\lib\crypto\CipherDescription.h" />
- <ClInclude Include="..\..\..\lib\crypto\CipherException.h" />
- <ClInclude Include="..\..\..\lib\crypto\MD5Digest.h" />
- <ClInclude Include="..\..\..\lib\crypto\Random.h" />
- <ClInclude Include="..\..\..\lib\crypto\RollingChecksum.h" />
- <ClInclude Include="..\..\..\lib\server\Message.h" />
- <ClInclude Include="..\..\..\lib\server\TcpNice.h" />
- <ClInclude Include="..\..\..\lib\win32\emu.h" />
- <ClInclude Include="..\..\..\lib\win32\getopt.h" />
- <ClInclude Include="..\..\..\lib\server\autogen_ConnectionException.h" />
- <ClInclude Include="..\..\..\lib\server\autogen_ServerException.h" />
- <ClInclude Include="..\..\..\lib\server\Daemon.h" />
- <ClInclude Include="..\..\..\lib\server\Protocol.h" />
- <ClInclude Include="..\..\..\lib\server\ProtocolUncertainStream.h" />
- <ClInclude Include="..\..\..\lib\server\ProtocolWire.h" />
- <ClInclude Include="..\..\..\lib\server\ServerException.h" />
- <ClInclude Include="..\..\..\lib\server\ServerStream.h" />
- <ClInclude Include="..\..\..\lib\server\ServerTLS.h" />
- <ClInclude Include="..\..\..\lib\server\Socket.h" />
- <ClInclude Include="..\..\..\lib\server\SocketListen.h" />
- <ClInclude Include="..\..\..\lib\server\SocketStream.h" />
- <ClInclude Include="..\..\..\lib\server\SocketStreamTLS.h" />
- <ClInclude Include="..\..\..\lib\server\SSLLib.h" />
- <ClInclude Include="..\..\..\lib\server\TLSContext.h" />
- <ClInclude Include="..\..\..\lib\server\WinNamedPipeStream.h" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="qdbm.vcxproj">
- <Project>{72af22a7-b339-4fdf-b6ae-ca6522d4bb8d}</Project>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/libbackupclient.vcxproj b/infrastructure/msvc/2010/libbackupclient.vcxproj
deleted file mode 100644
index a38b3cf5..00000000
--- a/infrastructure/msvc/2010/libbackupclient.vcxproj
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\lib\backupclient\BackupClientCryptoKeys.cpp" />
- <ClCompile Include="..\..\..\lib\backupclient\BackupClientMakeExcludeList.cpp" />
- <ClCompile Include="..\..\..\lib\backupclient\BackupClientRestore.cpp" />
- <ClCompile Include="..\..\..\lib\backupclient\BackupDaemonConfigVerify.cpp" />
- <ClCompile Include="..\..\..\lib\backupclient\BackupStoreObjectDump.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\lib\backupclient\BackupClientCryptoKeys.h" />
- <ClInclude Include="..\..\..\lib\backupclient\BackupClientMakeExcludeList.h" />
- <ClInclude Include="..\..\..\lib\backupclient\BackupClientRestore.h" />
- <ClInclude Include="..\..\..\lib\backupclient\BackupDaemonConfigVerify.h" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="libbackupstore.vcxproj">
- <Project>{97d89aef-2be4-4e34-8703-03ba67bf4494}</Project>
- </ProjectReference>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{32604097-C934-4711-B1AD-206336640E70}</ProjectGuid>
- <RootNamespace>libbackupstore</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <TargetExt>.lib</TargetExt>
- <IntDir>$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\lib\backupclient;$(SolutionDir)..\..\..\lib\backupstore;$(SolutionDir)..\..\..\lib\raidfile;$(SolutionDir)..\..\..\lib\common;$(SolutionDir)..\..\..\lib\compress;$(SolutionDir)..\..\..\lib\crypto;$(SolutionDir)..\..\..\lib\server;$(SolutionDir)..\..\..\lib\win32;$(SolutionDir)..\..\..\qdbm;$(SolutionDir)..\..\..\..\openssl\include;$(SolutionDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>Ws2_32.lib;Advapi32.lib;User32.lib;$(ProjectDir)..\..\..\..\zlib\lib\zdll.lib;$(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib;$(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib;$(ProjectDir)..\..\..\$(Configuration)\common.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Lib />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/libbackupstore.vcxproj b/infrastructure/msvc/2010/libbackupstore.vcxproj
deleted file mode 100644
index 7f83d04a..00000000
--- a/infrastructure/msvc/2010/libbackupstore.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{97D89AEF-2BE4-4E34-8703-03BA67BF4494}</ProjectGuid>
- <RootNamespace>libbackupstore</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <TargetExt>.lib</TargetExt>
- <IntDir>$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\lib\backupclient;$(SolutionDir)..\..\..\lib\backupstore;$(SolutionDir)..\..\..\lib\raidfile;$(SolutionDir)..\..\..\lib\common;$(SolutionDir)..\..\..\lib\compress;$(SolutionDir)..\..\..\lib\crypto;$(SolutionDir)..\..\..\lib\server;$(SolutionDir)..\..\..\lib\win32;$(SolutionDir)..\..\..\qdbm;$(SolutionDir)..\..\..\..\openssl\include;$(SolutionDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>Ws2_32.lib;Advapi32.lib;User32.lib;$(ProjectDir)..\..\..\..\zlib\lib\zdll.lib;$(ProjectDir)..\..\..\..\openssl\lib\libeay32.lib;$(ProjectDir)..\..\..\..\openssl\lib\ssleay32.lib;$(ProjectDir)..\..\..\$(Configuration)\common.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Lib />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\lib\backupstore\autogen_BackupProtocol.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\autogen_BackupStoreException.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupClientFileAttributes.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupCommands.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreAccountDatabase.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreAccounts.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreCheck.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreCheck2.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreCheckData.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreConfigVerify.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreContext.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreDirectory.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFile.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFileCmbDiff.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFileCmbIdx.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFileCombine.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFileCryptVar.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFileDiff.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFileEncodeStream.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFilename.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFilenameClear.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreFileRevDiff.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreInfo.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\BackupStoreRefCountDatabase.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\HousekeepStoreAccount.cpp" />
- <ClCompile Include="..\..\..\lib\backupstore\StoreStructure.cpp" />
- <ClCompile Include="..\..\..\lib\raidfile\autogen_RaidFileException.cpp" />
- <ClCompile Include="..\..\..\lib\raidfile\RaidFileController.cpp" />
- <ClCompile Include="..\..\..\lib\raidfile\RaidFileRead.cpp" />
- <ClCompile Include="..\..\..\lib\raidfile\RaidFileUtil.cpp" />
- <ClCompile Include="..\..\..\lib\raidfile\RaidFileWrite.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\lib\backupstore\autogen_BackupProtocol.h" />
- <ClInclude Include="..\..\..\lib\backupstore\autogen_BackupStoreException.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupClientFileAttributes.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupConstants.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreAccountDatabase.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreAccounts.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreCheck.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreConfigVerify.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreConstants.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreContext.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreDirectory.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreException.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreFile.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreFileCryptVar.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreFileEncodeStream.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreFilename.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreFilenameClear.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreFileWire.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreInfo.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreObjectMagic.h" />
- <ClInclude Include="..\..\..\lib\backupstore\BackupStoreRefCountDatabase.h" />
- <ClInclude Include="..\..\..\lib\backupstore\HousekeepStoreAccount.h" />
- <ClInclude Include="..\..\..\lib\backupstore\RunStatusProvider.h" />
- <ClInclude Include="..\..\..\lib\backupstore\StoreStructure.h" />
- <ClInclude Include="..\..\..\lib\raidfile\autogen_RaidFileException.h" />
- <ClInclude Include="..\..\..\lib\raidfile\RaidFileController.h" />
- <ClInclude Include="..\..\..\lib\raidfile\RaidFileException.h" />
- <ClInclude Include="..\..\..\lib\raidfile\RaidFileRead.h" />
- <ClInclude Include="..\..\..\lib\raidfile\RaidFileUtil.h" />
- <ClInclude Include="..\..\..\lib\raidfile\RaidFileWrite.h" />
- </ItemGroup>
- <ItemGroup>
- <None Include="..\..\..\lib\backupstore\backupprotocol.txt" />
- <None Include="..\..\..\lib\backupstore\BackupStoreException.txt" />
- <None Include="..\..\..\lib\backupstore\Makefile.extra" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="common.vcxproj">
- <Project>{a089cee6-ebf0-4232-a0c0-74850a8127a6}</Project>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/qdbm.vcxproj b/infrastructure/msvc/2010/qdbm.vcxproj
deleted file mode 100644
index 77bf8205..00000000
--- a/infrastructure/msvc/2010/qdbm.vcxproj
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{72AF22A7-B339-4FDF-B6AE-CA6522D4BB8D}</ProjectGuid>
- <RootNamespace>qdbm</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <TargetExt>.lib</TargetExt>
- <OutDir>$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- <IntDir>$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <CompileAsManaged>false</CompileAsManaged>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PreprocessorDefinitions>QDBM_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- <Lib />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\qdbm\depot.h" />
- <ClInclude Include="..\..\..\qdbm\myconf.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\qdbm\depot.c" />
- <ClCompile Include="..\..\..\qdbm\myconf.c" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/2010/win32test.vcxproj b/infrastructure/msvc/2010/win32test.vcxproj
deleted file mode 100644
index 0c61adb3..00000000
--- a/infrastructure/msvc/2010/win32test.vcxproj
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{28C29E72-76A2-4D0C-B35B-12D446733D2E}</ProjectGuid>
- <RootNamespace>win32test</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\..\$(Configuration)\$(ProjectName)\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\Release\</IntDir>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\bin\bbackupd;$(ProjectDir)..\..\..\lib\backupstore;$(ProjectDir)..\..\..\lib\backupclient;$(ProjectDir)..\..\..\lib\common;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\lib\crypto;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\..\openssl\include;$(ProjectDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;QDBM_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)win32test.pdb</ProgramDatabaseFile>
- <SubSystem>Console</SubSystem>
- <TargetMachine>MachineX86</TargetMachine>
- <ShowProgress>NotSet</ShowProgress>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\bin\bbackupd;$(ProjectDir)..\..\..\lib\backupclient;$(ProjectDir)..\..\..\lib\common\;$(ProjectDir)..\..\..\lib\compress;$(ProjectDir)..\..\..\lib\crypto;$(ProjectDir)..\..\..\lib\server;$(ProjectDir)..\..\..\lib\win32;$(ProjectDir)..\..\..\..\openssl\inc32;$(ProjectDir)..\..\..\..\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;BOX_RELEASE_BUILD;_CONSOLE;PLATFORM_DISABLE_MEM_LEAK_TESTING;_CRT_SECURE_NO_DEPRECATE;PCRE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies>Ws2_32.lib;$(ProjectDir)..\..\..\..\zlib\lib\zdll.lib;$(ProjectDir)..\..\..\..\openssl\out32dll\libeay32.lib;$(ProjectDir)..\..\..\..\openssl\out32dll\ssleay32.lib;$(ProjectDir)..\..\..\Release\common.lib;$(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcreposix.lib;$(ProjectDir)..\..\..\..\pcre\bin\release\lib_pcre.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)win32test.exe</OutputFile>
- <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Console</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\lib\win32\emu.cpp" />
- <ClCompile Include="..\..\..\test\win32\testlibwin32.cpp" />
- </ItemGroup>
- <ItemGroup>
- <None Include="..\..\..\ReadMe.txt" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="common.vcxproj">
- <Project>{a089cee6-ebf0-4232-a0c0-74850a8127a6}</Project>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/infrastructure/msvc/fake-config.sub.pl b/infrastructure/msvc/fake-config.sub.pl
deleted file mode 100644
index fa9b6839..00000000
--- a/infrastructure/msvc/fake-config.sub.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-#!perl
-
-use strict;
-use warnings;
-use Cwd;
-
-require "infrastructure\\BoxPlatform.pm.in";
-my $wd = getcwd();
-my $dummy = $BoxPlatform::product_version;
-
-while(<>)
-{
- s|\@build_dir@|$wd|;
- s|\@client_parcel_dir@|$wd/Debug|;
- s|\@box_version@|$BoxPlatform::product_version|;
- m|[^@](@[^@]+@)| and die "Unknown variable: $1";
- print;
-} \ No newline at end of file
diff --git a/infrastructure/msvc/getversion.pl b/infrastructure/msvc/getversion.pl
deleted file mode 100644
index 0cf9cbcb..00000000
--- a/infrastructure/msvc/getversion.pl
+++ /dev/null
@@ -1,34 +0,0 @@
-#!perl
-
-$basedir = $0;
-$basedir =~ s/\\[^\\]*$//;
-$basedir =~ s/\\[^\\]*$//;
-$basedir =~ s/\\[^\\]*$//;
-$basedir =~ s/\\[^\\]*$//;
-$basedir =~ s/\\[^\\]*$//;
--d $basedir or die "$basedir: $!";
-chdir $basedir or die "$basedir: $!";
-
-require "$basedir\\infrastructure\\BoxPlatform.pm.in";
-
-my $verfile = "$basedir/lib/common/BoxVersion.h";
-my $newver = "#define BOX_VERSION \"$BoxPlatform::product_version\"\n";
-my $oldver = "";
-
-if (-r $verfile)
-{
- open VERSIONFILE, "< $verfile" or die "$verfile: $!";
- $oldver = <VERSIONFILE>;
- close VERSIONFILE;
-
-}
-
-if ($newver ne $oldver)
-{
- open VERSIONFILE, "> $verfile" or die "BoxVersion.h: $!";
- print VERSIONFILE $newver;
- close VERSIONFILE;
-}
-
-print $BoxPlatform::product_version;
-exit 0;
diff --git a/infrastructure/travis-build.sh b/infrastructure/travis-build.sh
new file mode 100755
index 00000000..74b58a3d
--- /dev/null
+++ b/infrastructure/travis-build.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+set -e
+set -x
+
+if [ "$TRAVIS_OS_NAME" = "osx" ]; then
+ brew update
+ # Travis appears to have Boost and OpenSSL installed already:
+ # brew install boost ccache openssl
+ ls /usr/local /usr/local/opt /usr/local/opt/openssl
+ brew install ccache
+fi
+
+ccache -s
+
+if [ "$BUILD" = 'cmake' ]; then
+ if [ -z "$TEST_TARGET" ]; then
+ echo "TEST_TARGET must be set to 'release' or 'debug' for CMake builds"
+ exit 2
+ fi
+
+ if [ "$TRAVIS_OS_NAME" = "osx" ]; then
+ EXTRA_ARGS="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DBOOST_ROOT=/usr/local/opt/boost"
+ fi
+
+ cd `dirname $0`
+ mkdir -p cmake/build
+ cd cmake/build
+ cmake --version
+ cmake -DCMAKE_BUILD_TYPE:STRING=$TEST_TARGET $EXTRA_ARGS "$@" ..
+ make
+
+ [ "$TEST" = "n" ] || ctest -C $TEST_TARGET -V
+else
+ if [ "$TRAVIS_OS_NAME" = "osx" ]; then
+ EXTRA_ARGS="--with-ssl-lib=/usr/local/opt/openssl/lib --with-ssl-headers=/usr/local/opt/openssl/include --with-boost=/usr/local/opt/boost"
+ fi
+
+ cd `dirname $0`/..
+ ./bootstrap
+ ./configure CC="ccache $CC" CXX="ccache $CXX" $EXTRA_ARGS "$@"
+ grep CXX config.status
+ make V=1 $EXTRA_MAKE_ARGS
+
+ [ "$TEST" = "n" ] || ./runtest.pl ALL $TEST_TARGET
+
+ if [ "$TEST_TARGET" = "release" ]; then
+ make
+ make parcels
+ fi
+fi
+
+ccache -s
diff --git a/lib/backupclient/BackupClientRestore.cpp b/lib/backupclient/BackupClientRestore.cpp
index db72c4bd..d3300604 100644
--- a/lib/backupclient/BackupClientRestore.cpp
+++ b/lib/backupclient/BackupClientRestore.cpp
@@ -204,13 +204,13 @@ typedef struct
// --------------------------------------------------------------------------
//
// Function
-// Name: BackupClientRestoreDir(BackupProtocolClient &,
+// Name: BackupClientRestoreDir(BackupProtocolCallable &,
// int64_t, const char *, bool)
// Purpose: Restore a directory
// Created: 23/11/03
//
// --------------------------------------------------------------------------
-static int BackupClientRestoreDir(BackupProtocolClient &rConnection,
+static int BackupClientRestoreDir(BackupProtocolCallable &rConnection,
int64_t DirectoryID, const std::string &rRemoteDirectoryName,
const std::string &rLocalDirectoryName,
RestoreParams &Params, RestoreResumeInfo &rLevel)
@@ -224,7 +224,7 @@ static int BackupClientRestoreDir(BackupProtocolClient &rConnection,
DIRECTORY_SEPARATOR_ASCHAR +
rLevel.mNextLevelLocalName);
BackupClientRestoreDir(rConnection, rLevel.mNextLevelID,
- rRemoteDirectoryName + '/' +
+ rRemoteDirectoryName + '/' +
rLevel.mNextLevelLocalName, localDirname,
Params, *rLevel.mpNextLevel);
@@ -232,7 +232,7 @@ static int BackupClientRestoreDir(BackupProtocolClient &rConnection,
rLevel.mRestoredObjects.insert(rLevel.mNextLevelID);
// Remove the level for the recursed directory
- rLevel.RemoveLevel();
+ rLevel.RemoveLevel();
}
// Create the local directory, if not already done.
@@ -299,7 +299,7 @@ static int BackupClientRestoreDir(BackupProtocolClient &rConnection,
}
std::string parentDirectoryName(rLocalDirectoryName);
- if(parentDirectoryName[parentDirectoryName.size() - 1] ==
+ if(parentDirectoryName[parentDirectoryName.size() - 1] ==
DIRECTORY_SEPARATOR_ASCHAR)
{
parentDirectoryName.resize(parentDirectoryName.size() - 1);
@@ -309,7 +309,7 @@ static int BackupClientRestoreDir(BackupProtocolClient &rConnection,
if(lastSlash == std::string::npos)
{
- // might be a forward slash separator,
+ // might be a forward slash separator,
// especially in the unit tests!
lastSlash = parentDirectoryName.rfind('/');
}
@@ -813,7 +813,7 @@ static int BackupClientRestoreDir(BackupProtocolClient &rConnection,
// --------------------------------------------------------------------------
//
// Function
-// Name: BackupClientRestore(BackupProtocolClient &, int64_t,
+// Name: BackupClientRestore(BackupProtocolCallable &, int64_t,
// const char *, bool, bool, bool, bool, bool)
// Purpose: Restore a directory on the server to a local
// directory on the disc. The local directory must not
@@ -840,7 +840,7 @@ static int BackupClientRestoreDir(BackupProtocolClient &rConnection,
// Created: 23/11/03
//
// --------------------------------------------------------------------------
-int BackupClientRestore(BackupProtocolClient &rConnection,
+int BackupClientRestore(BackupProtocolCallable &rConnection,
int64_t DirectoryID, const std::string& RemoteDirectoryName,
const std::string& LocalDirectoryName, bool PrintDots, bool RestoreDeleted,
bool UndeleteAfterRestoreDeleted, bool Resume,
@@ -889,7 +889,7 @@ int BackupClientRestore(BackupProtocolClient &rConnection,
}
// Restore the directory
- int result = BackupClientRestoreDir(rConnection, DirectoryID,
+ int result = BackupClientRestoreDir(rConnection, DirectoryID,
RemoteDirectoryName, LocalDirectoryName, params,
params.mResumeInfo);
if (result != Restore_Complete)
diff --git a/lib/backupclient/BackupClientRestore.h b/lib/backupclient/BackupClientRestore.h
index 77f09c2e..cdbedea7 100644
--- a/lib/backupclient/BackupClientRestore.h
+++ b/lib/backupclient/BackupClientRestore.h
@@ -7,10 +7,10 @@
//
// --------------------------------------------------------------------------
-#ifndef BACKUPSCLIENTRESTORE_H
-#define BACKUPSCLIENTRESTORE__H
+#ifndef BACKUPCLIENTRESTORE_H
+#define BACKUPCLIENTRESTORE_H
-class BackupProtocolClient;
+class BackupProtocolCallable;
enum
{
@@ -22,7 +22,7 @@ enum
Restore_CompleteWithErrors,
};
-int BackupClientRestore(BackupProtocolClient &rConnection,
+int BackupClientRestore(BackupProtocolCallable &rConnection,
int64_t DirectoryID,
const std::string& RemoteDirectoryName,
const std::string& LocalDirectoryName,
@@ -32,5 +32,5 @@ int BackupClientRestore(BackupProtocolClient &rConnection,
bool Resume,
bool ContinueAfterErrors);
-#endif // BACKUPSCLIENTRESTORE__H
+#endif // BACKUPCLIENTRESTORE_H
diff --git a/lib/backupclient/BackupDaemonConfigVerify.cpp b/lib/backupclient/BackupDaemonConfigVerify.cpp
index a3b95335..865ee413 100644
--- a/lib/backupclient/BackupDaemonConfigVerify.cpp
+++ b/lib/backupclient/BackupDaemonConfigVerify.cpp
@@ -11,11 +11,12 @@
#include "BackupDaemonConfigVerify.h"
#include "Daemon.h"
#include "BoxPortsAndFiles.h"
+#include "BackupConstants.h"
#include "MemLeakFindOn.h"
-static const ConfigurationVerifyKey backuplocationkeys[] =
+static const ConfigurationVerifyKey backuplocationkeys[] =
{
ConfigurationVerifyKey("ExcludeFile", ConfigTest_MultiValueAllowed),
ConfigurationVerifyKey("ExcludeFilesRegex", ConfigTest_MultiValueAllowed),
@@ -28,7 +29,7 @@ static const ConfigurationVerifyKey backuplocationkeys[] =
ConfigurationVerifyKey("Path", ConfigTest_Exists | ConfigTest_LastEntry)
};
-static const ConfigurationVerify backuplocations[] =
+static const ConfigurationVerify backuplocations[] =
{
{
"*",
@@ -39,12 +40,22 @@ static const ConfigurationVerify backuplocations[] =
}
};
-static const ConfigurationVerifyKey verifyserverkeys[] =
+static const ConfigurationVerifyKey verifyserverkeys[] =
{
DAEMON_VERIFY_SERVER_KEYS
};
-static const ConfigurationVerify verifyserver[] =
+static const ConfigurationVerifyKey verifys3keys[] =
+{
+ // These values are only required for Amazon S3-compatible stores
+ ConfigurationVerifyKey("HostName", ConfigTest_Exists),
+ ConfigurationVerifyKey("Port", ConfigTest_Exists | ConfigTest_IsInt, 80),
+ ConfigurationVerifyKey("BasePath", ConfigTest_Exists),
+ ConfigurationVerifyKey("AccessKey", ConfigTest_Exists),
+ ConfigurationVerifyKey("SecretKey", ConfigTest_Exists | ConfigTest_LastEntry)
+};
+
+static const ConfigurationVerify verifyserver[] =
{
{
"Server",
@@ -54,6 +65,13 @@ static const ConfigurationVerify verifyserver[] =
0
},
{
+ "S3Store",
+ 0,
+ verifys3keys,
+ 0,
+ 0
+ },
+ {
"BackupLocations",
backuplocations,
0,
@@ -62,12 +80,12 @@ static const ConfigurationVerify verifyserver[] =
}
};
-static const ConfigurationVerifyKey verifyrootkeys[] =
+static const ConfigurationVerifyKey verifyrootkeys[] =
{
- ConfigurationVerifyKey("AccountNumber",
- ConfigTest_Exists | ConfigTest_IsUint32),
ConfigurationVerifyKey("UpdateStoreInterval",
ConfigTest_Exists | ConfigTest_IsInt),
+ ConfigurationVerifyKey("BackupErrorDelay",
+ ConfigTest_IsInt, BACKUP_ERROR_RETRY_SECONDS),
ConfigurationVerifyKey("MinimumFileAge",
ConfigTest_Exists | ConfigTest_IsInt),
ConfigurationVerifyKey("MaxUploadWait",
@@ -89,9 +107,6 @@ static const ConfigurationVerifyKey verifyrootkeys[] =
ConfigTest_Exists | ConfigTest_IsInt),
ConfigurationVerifyKey("DiffingUploadSizeThreshold",
ConfigTest_Exists | ConfigTest_IsInt),
- ConfigurationVerifyKey("StoreHostname", ConfigTest_Exists),
- ConfigurationVerifyKey("StorePort", ConfigTest_IsInt,
- BOX_PORT_BBSTORED),
ConfigurationVerifyKey("ExtendedLogging", ConfigTest_IsBool, false),
// extended log to syslog
ConfigurationVerifyKey("ExtendedLogFile", 0),
@@ -102,6 +117,8 @@ static const ConfigurationVerifyKey verifyrootkeys[] =
// enable logging to a file
ConfigurationVerifyKey("LogFileLevel", 0),
// set the level of verbosity of file logging
+ ConfigurationVerifyKey("LogFileOverwrite", ConfigTest_IsBool, false),
+ // overwrite the log file on each backup
ConfigurationVerifyKey("CommandSocket", 0),
// not compulsory to have this
ConfigurationVerifyKey("KeepAliveTime", ConfigTest_IsInt),
@@ -120,13 +137,18 @@ static const ConfigurationVerifyKey verifyrootkeys[] =
ConfigurationVerifyKey("TcpNice", ConfigTest_IsBool, false),
// optional enable of tcp nice/background mode
- ConfigurationVerifyKey("CertificateFile", ConfigTest_Exists),
- ConfigurationVerifyKey("PrivateKeyFile", ConfigTest_Exists),
- ConfigurationVerifyKey("TrustedCAsFile", ConfigTest_Exists),
ConfigurationVerifyKey("KeysFile", ConfigTest_Exists),
- ConfigurationVerifyKey("DataDirectory",
- ConfigTest_Exists | ConfigTest_LastEntry),
+ ConfigurationVerifyKey("DataDirectory", ConfigTest_Exists),
+ // These values are only required for bbstored stores:
+ ConfigurationVerifyKey("StoreHostname", 0),
+ ConfigurationVerifyKey("StorePort", ConfigTest_IsInt,
+ BOX_PORT_BBSTORED),
+ ConfigurationVerifyKey("AccountNumber",
+ ConfigTest_IsUint32),
+ ConfigurationVerifyKey("CertificateFile", 0),
+ ConfigurationVerifyKey("PrivateKeyFile", 0),
+ ConfigurationVerifyKey("TrustedCAsFile", ConfigTest_LastEntry),
};
const ConfigurationVerify BackupDaemonConfigVerify =
diff --git a/bin/bbackupd/ClientException.txt b/lib/backupclient/ClientException.txt
index 04f88620..04f88620 100644
--- a/bin/bbackupd/ClientException.txt
+++ b/lib/backupclient/ClientException.txt
diff --git a/bin/bbackupd/Makefile.extra b/lib/backupclient/Makefile.extra
index 25ceb1e7..25ceb1e7 100644
--- a/bin/bbackupd/Makefile.extra
+++ b/lib/backupclient/Makefile.extra
diff --git a/lib/backupstore/BackgroundTask.h b/lib/backupstore/BackgroundTask.h
new file mode 100644
index 00000000..bae9162f
--- /dev/null
+++ b/lib/backupstore/BackgroundTask.h
@@ -0,0 +1,39 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: BackgroundTask.h
+// Purpose: Declares the BackgroundTask interface.
+// Created: 2014/04/07
+//
+// --------------------------------------------------------------------------
+
+#ifndef BACKGROUNDTASK__H
+#define BACKGROUNDTASK__H
+
+// --------------------------------------------------------------------------
+//
+// Class
+// Name: BackgroundTask
+// Purpose: Provides a RunBackgroundTask() method which allows
+// background tasks such as polling the command socket
+// to happen while a file is being uploaded. If it
+// returns false, the current task should be aborted.
+// Created: 2014/04/07
+//
+// --------------------------------------------------------------------------
+class BackgroundTask
+{
+ public:
+ enum State {
+ Unknown = 0,
+ Scanning_Dirs,
+ Searching_Blocks,
+ Uploading_Full,
+ Uploading_Patch,
+ };
+ virtual ~BackgroundTask() { }
+ virtual bool RunBackgroundTask(State state, uint64_t progress,
+ uint64_t maximum) = 0;
+};
+
+#endif // BACKGROUNDTASK__H
diff --git a/lib/backupstore/BackupAccountControl.cpp b/lib/backupstore/BackupAccountControl.cpp
new file mode 100644
index 00000000..331ef841
--- /dev/null
+++ b/lib/backupstore/BackupAccountControl.cpp
@@ -0,0 +1,267 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: BackupAccountControl.cpp
+// Purpose: Client-side account management for Amazon S3 stores
+// Created: 2015/06/27
+//
+// --------------------------------------------------------------------------
+
+#include "Box.h"
+
+#include <climits>
+#include <iostream>
+
+#include "autogen_CommonException.h"
+#include "autogen_BackupStoreException.h"
+#include "BackupAccountControl.h"
+#include "BackupStoreConstants.h"
+#include "BackupStoreDirectory.h"
+#include "BackupStoreInfo.h"
+#include "Configuration.h"
+#include "HTTPResponse.h"
+#include "Utils.h"
+
+#include "MemLeakFindOn.h"
+
+void BackupAccountControl::CheckSoftHardLimits(int64_t SoftLimit, int64_t HardLimit)
+{
+ if(SoftLimit > HardLimit)
+ {
+ BOX_FATAL("Soft limit must be less than the hard limit.");
+ exit(1);
+ }
+ if(SoftLimit > ((HardLimit * MAX_SOFT_LIMIT_SIZE) / 100))
+ {
+ BOX_WARNING("We recommend setting the soft limit below " <<
+ MAX_SOFT_LIMIT_SIZE << "% of the hard limit, or " <<
+ HumanReadableSize((HardLimit * MAX_SOFT_LIMIT_SIZE)
+ / 100) << " in this case.");
+ }
+}
+
+int64_t BackupAccountControl::SizeStringToBlocks(const char *string, int blockSize)
+{
+ // Get number
+ char *endptr = (char*)string;
+ int64_t number = strtol(string, &endptr, 0);
+ if(endptr == string || number == LONG_MIN || number == LONG_MAX)
+ {
+ BOX_FATAL("'" << string << "' is not a valid number.");
+ exit(1);
+ }
+
+ // Check units
+ switch(*endptr)
+ {
+ case 'M':
+ case 'm':
+ // Units: Mb
+ return (number * 1024*1024) / blockSize;
+ break;
+
+ case 'G':
+ case 'g':
+ // Units: Gb
+ return (number * 1024*1024*1024) / blockSize;
+ break;
+
+ case 'B':
+ case 'b':
+ // Units: Blocks
+ // Easy! Just return the number specified.
+ return number;
+ break;
+
+ default:
+ BOX_FATAL(string << " has an invalid units specifier "
+ "(use B for blocks, M for MB, G for GB, eg 2GB)");
+ exit(1);
+ break;
+ }
+}
+
+std::string BackupAccountControl::BlockSizeToString(int64_t Blocks, int64_t MaxBlocks, int BlockSize)
+{
+ return FormatUsageBar(Blocks, Blocks * BlockSize, MaxBlocks * BlockSize,
+ mMachineReadableOutput);
+}
+
+int BackupAccountControl::PrintAccountInfo(const BackupStoreInfo& info,
+ int BlockSize)
+{
+ // Then print out lots of info
+ std::cout << FormatUsageLineStart("Account ID", mMachineReadableOutput) <<
+ BOX_FORMAT_ACCOUNT(info.GetAccountID()) << std::endl;
+ std::cout << FormatUsageLineStart("Account Name", mMachineReadableOutput) <<
+ info.GetAccountName() << std::endl;
+ std::cout << FormatUsageLineStart("Last object ID", mMachineReadableOutput) <<
+ BOX_FORMAT_OBJECTID(info.GetLastObjectIDUsed()) << std::endl;
+ std::cout << FormatUsageLineStart("Used", mMachineReadableOutput) <<
+ BlockSizeToString(info.GetBlocksUsed(),
+ info.GetBlocksHardLimit(), BlockSize) << std::endl;
+ std::cout << FormatUsageLineStart("Current files",
+ mMachineReadableOutput) <<
+ BlockSizeToString(info.GetBlocksInCurrentFiles(),
+ info.GetBlocksHardLimit(), BlockSize) << std::endl;
+ std::cout << FormatUsageLineStart("Old files", mMachineReadableOutput) <<
+ BlockSizeToString(info.GetBlocksInOldFiles(),
+ info.GetBlocksHardLimit(), BlockSize) << std::endl;
+ std::cout << FormatUsageLineStart("Deleted files", mMachineReadableOutput) <<
+ BlockSizeToString(info.GetBlocksInDeletedFiles(),
+ info.GetBlocksHardLimit(), BlockSize) << std::endl;
+ std::cout << FormatUsageLineStart("Directories", mMachineReadableOutput) <<
+ BlockSizeToString(info.GetBlocksInDirectories(),
+ info.GetBlocksHardLimit(), BlockSize) << std::endl;
+ std::cout << FormatUsageLineStart("Soft limit", mMachineReadableOutput) <<
+ BlockSizeToString(info.GetBlocksSoftLimit(),
+ info.GetBlocksHardLimit(), BlockSize) << std::endl;
+ std::cout << FormatUsageLineStart("Hard limit", mMachineReadableOutput) <<
+ BlockSizeToString(info.GetBlocksHardLimit(),
+ info.GetBlocksHardLimit(), BlockSize) << std::endl;
+ std::cout << FormatUsageLineStart("Client store marker", mMachineReadableOutput) <<
+ info.GetClientStoreMarker() << std::endl;
+ std::cout << FormatUsageLineStart("Current Files", mMachineReadableOutput) <<
+ info.GetNumCurrentFiles() << std::endl;
+ std::cout << FormatUsageLineStart("Old Files", mMachineReadableOutput) <<
+ info.GetNumOldFiles() << std::endl;
+ std::cout << FormatUsageLineStart("Deleted Files", mMachineReadableOutput) <<
+ info.GetNumDeletedFiles() << std::endl;
+ std::cout << FormatUsageLineStart("Directories", mMachineReadableOutput) <<
+ info.GetNumDirectories() << std::endl;
+ std::cout << FormatUsageLineStart("Enabled", mMachineReadableOutput) <<
+ (info.IsAccountEnabled() ? "yes" : "no") << std::endl;
+
+ return 0;
+}
+
+S3BackupAccountControl::S3BackupAccountControl(const Configuration& config,
+ bool machineReadableOutput)
+: BackupAccountControl(config, machineReadableOutput)
+{
+ if(!mConfig.SubConfigurationExists("S3Store"))
+ {
+ THROW_EXCEPTION_MESSAGE(CommonException,
+ InvalidConfiguration,
+ "The S3Store configuration subsection is required "
+ "when S3Store mode is enabled");
+ }
+ const Configuration s3config = mConfig.GetSubConfiguration("S3Store");
+
+ mBasePath = s3config.GetKeyValue("BasePath");
+ if(mBasePath.size() == 0)
+ {
+ mBasePath = "/";
+ }
+ else
+ {
+ if(mBasePath[0] != '/' || mBasePath[mBasePath.size() - 1] != '/')
+ {
+ THROW_EXCEPTION_MESSAGE(CommonException,
+ InvalidConfiguration,
+ "If S3Store.BasePath is not empty then it must start and "
+ "end with a slash, e.g. '/subdir/', but it currently does not.");
+ }
+ }
+
+ mapS3Client.reset(new S3Client(
+ s3config.GetKeyValue("HostName"),
+ s3config.GetKeyValueInt("Port"),
+ s3config.GetKeyValue("AccessKey"),
+ s3config.GetKeyValue("SecretKey")));
+
+ mapFileSystem.reset(new S3BackupFileSystem(mConfig, mBasePath, *mapS3Client));
+}
+
+std::string S3BackupAccountControl::GetFullURL(const std::string ObjectPath) const
+{
+ const Configuration s3config = mConfig.GetSubConfiguration("S3Store");
+ return std::string("http://") + s3config.GetKeyValue("HostName") + ":" +
+ s3config.GetKeyValue("Port") + GetFullPath(ObjectPath);
+}
+
+int S3BackupAccountControl::CreateAccount(const std::string& name, int32_t SoftLimit,
+ int32_t HardLimit)
+{
+ // Try getting the info file. If we get a 200 response then it already
+ // exists, and we should bail out. If we get a 404 then it's safe to
+ // continue. Otherwise something else is wrong and we should bail out.
+ std::string info_url = GetFullURL(S3_INFO_FILE_NAME);
+
+ HTTPResponse response = GetObject(S3_INFO_FILE_NAME);
+ if(response.GetResponseCode() == HTTPResponse::Code_OK)
+ {
+ THROW_EXCEPTION_MESSAGE(BackupStoreException, AccountAlreadyExists,
+ "The BackupStoreInfo file already exists at this URL: " <<
+ info_url);
+ }
+
+ if(response.GetResponseCode() != HTTPResponse::Code_NotFound)
+ {
+ mapS3Client->CheckResponse(response, std::string("Failed to check for an "
+ "existing BackupStoreInfo file at this URL: ") + info_url);
+ }
+
+ BackupStoreInfo info(0, // fake AccountID for S3 stores
+ info_url, // FileName,
+ SoftLimit, HardLimit);
+ info.SetAccountName(name);
+
+ // And an empty directory
+ BackupStoreDirectory rootDir(BACKUPSTORE_ROOT_DIRECTORY_ID, BACKUPSTORE_ROOT_DIRECTORY_ID);
+ int64_t rootDirSize = mapFileSystem->PutDirectory(rootDir);
+
+ // Update the store info to reflect the size of the root directory
+ info.ChangeBlocksUsed(rootDirSize);
+ info.ChangeBlocksInDirectories(rootDirSize);
+ info.AdjustNumDirectories(1);
+ int64_t id = info.AllocateObjectID();
+ ASSERT(id == BACKUPSTORE_ROOT_DIRECTORY_ID);
+
+ CollectInBufferStream out;
+ info.Save(out);
+ out.SetForReading();
+
+ response = PutObject(S3_INFO_FILE_NAME, out);
+ mapS3Client->CheckResponse(response, std::string("Failed to upload the new BackupStoreInfo "
+ "file to this URL: ") + info_url);
+
+ // Now get the file again, to check that it really worked.
+ response = GetObject(S3_INFO_FILE_NAME);
+ mapS3Client->CheckResponse(response, std::string("Failed to download the new BackupStoreInfo "
+ "file that we just created: ") + info_url);
+
+ return 0;
+}
+
+std::string S3BackupFileSystem::GetDirectoryURI(int64_t ObjectID)
+{
+ std::ostringstream out;
+ out << mBasePath << "dirs/" << BOX_FORMAT_OBJECTID(ObjectID) << ".dir";
+ return out.str();
+}
+
+std::auto_ptr<HTTPResponse> S3BackupFileSystem::GetDirectory(BackupStoreDirectory& rDir)
+{
+ std::string uri = GetDirectoryURI(rDir.GetObjectID());
+ HTTPResponse response = mrClient.GetObject(uri);
+ mrClient.CheckResponse(response,
+ std::string("Failed to download directory: ") + uri);
+ return std::auto_ptr<HTTPResponse>(new HTTPResponse(response));
+}
+
+int S3BackupFileSystem::PutDirectory(BackupStoreDirectory& rDir)
+{
+ CollectInBufferStream out;
+ rDir.WriteToStream(out);
+ out.SetForReading();
+
+ std::string uri = GetDirectoryURI(rDir.GetObjectID());
+ HTTPResponse response = mrClient.PutObject(uri, out);
+ mrClient.CheckResponse(response,
+ std::string("Failed to upload directory: ") + uri);
+
+ int blocks = (out.GetSize() + S3_NOTIONAL_BLOCK_SIZE - 1) / S3_NOTIONAL_BLOCK_SIZE;
+ return blocks;
+}
+
diff --git a/lib/backupstore/BackupAccountControl.h b/lib/backupstore/BackupAccountControl.h
new file mode 100644
index 00000000..00118ec2
--- /dev/null
+++ b/lib/backupstore/BackupAccountControl.h
@@ -0,0 +1,91 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: BackupAccountControl.h
+// Purpose: Client-side account management for Amazon S3 stores
+// Created: 2015/06/27
+//
+// --------------------------------------------------------------------------
+
+#ifndef BACKUPACCOUNTCONTROL__H
+#define BACKUPACCOUNTCONTROL__H
+
+#include <string>
+
+#include "BackupStoreAccountDatabase.h"
+#include "HTTPResponse.h"
+#include "S3Client.h"
+
+class BackupStoreDirectory;
+class BackupStoreInfo;
+class Configuration;
+
+class BackupAccountControl
+{
+protected:
+ const Configuration& mConfig;
+ bool mMachineReadableOutput;
+
+public:
+ BackupAccountControl(const Configuration& config,
+ bool machineReadableOutput = false)
+ : mConfig(config),
+ mMachineReadableOutput(machineReadableOutput)
+ { }
+ void CheckSoftHardLimits(int64_t SoftLimit, int64_t HardLimit);
+ int64_t SizeStringToBlocks(const char *string, int BlockSize);
+ std::string BlockSizeToString(int64_t Blocks, int64_t MaxBlocks, int BlockSize);
+ int PrintAccountInfo(const BackupStoreInfo& info, int BlockSize);
+};
+
+class S3BackupFileSystem
+{
+private:
+ std::string mBasePath;
+ S3Client& mrClient;
+public:
+ S3BackupFileSystem(const Configuration& config, const std::string& BasePath,
+ S3Client& rClient)
+ : mBasePath(BasePath),
+ mrClient(rClient)
+ { }
+ std::string GetDirectoryURI(int64_t ObjectID);
+ std::auto_ptr<HTTPResponse> GetDirectory(BackupStoreDirectory& rDir);
+ int PutDirectory(BackupStoreDirectory& rDir);
+};
+
+class S3BackupAccountControl : public BackupAccountControl
+{
+private:
+ std::string mBasePath;
+ std::auto_ptr<S3Client> mapS3Client;
+ std::auto_ptr<S3BackupFileSystem> mapFileSystem;
+public:
+ S3BackupAccountControl(const Configuration& config,
+ bool machineReadableOutput = false);
+ std::string GetFullPath(const std::string ObjectPath) const
+ {
+ return mBasePath + ObjectPath;
+ }
+ std::string GetFullURL(const std::string ObjectPath) const;
+ int CreateAccount(const std::string& name, int32_t SoftLimit, int32_t HardLimit);
+ int GetBlockSize() { return 4096; }
+ HTTPResponse GetObject(const std::string& name)
+ {
+ return mapS3Client->GetObject(GetFullPath(name));
+ }
+ HTTPResponse PutObject(const std::string& name, IOStream& rStreamToSend,
+ const char* pContentType = NULL)
+ {
+ return mapS3Client->PutObject(GetFullPath(name), rStreamToSend,
+ pContentType);
+ }
+};
+
+// max size of soft limit as percent of hard limit
+#define MAX_SOFT_LIMIT_SIZE 97
+#define S3_INFO_FILE_NAME "boxbackup.info"
+#define S3_NOTIONAL_BLOCK_SIZE 1048576
+
+#endif // BACKUPACCOUNTCONTROL__H
+
diff --git a/lib/backupstore/BackupClientFileAttributes.cpp b/lib/backupstore/BackupClientFileAttributes.cpp
index d76432ba..37140301 100644
--- a/lib/backupstore/BackupClientFileAttributes.cpp
+++ b/lib/backupstore/BackupClientFileAttributes.cpp
@@ -55,20 +55,20 @@ BEGIN_STRUCTURE_PACKING_FOR_WIRE
typedef struct
{
int32_t AttributeType;
- u_int32_t UID;
- u_int32_t GID;
- u_int64_t ModificationTime;
- u_int64_t AttrModificationTime;
- u_int32_t UserDefinedFlags;
- u_int32_t FileGenerationNumber;
- u_int16_t Mode;
+ uint32_t UID;
+ uint32_t GID;
+ uint64_t ModificationTime;
+ uint64_t AttrModificationTime;
+ uint32_t UserDefinedFlags;
+ uint32_t FileGenerationNumber;
+ uint16_t Mode;
// Symbolic link filename may follow
// Extended attribute (xattr) information may follow, format is:
- // u_int32_t Size of extended attribute block (excluding this word)
+ // uint32_t Size of extended attribute block (excluding this word)
// For each of NumberOfAttributes (sorted by AttributeName):
- // u_int16_t AttributeNameLength
+ // uint16_t AttributeNameLength
// char AttributeName[AttributeNameLength]
- // u_int32_t AttributeValueLength
+ // uint32_t AttributeValueLength
// unsigned char AttributeValue[AttributeValueLength]
// AttributeName is 0 terminated, AttributeValue is not (and may be binary data)
} attr_StreamFormat;
@@ -117,7 +117,7 @@ namespace
BackupClientFileAttributes::BackupClientFileAttributes()
: mpClearAttributes(0)
{
- ASSERT(sizeof(u_int64_t) == sizeof(box_time_t));
+ ASSERT(sizeof(uint64_t) == sizeof(box_time_t));
}
// --------------------------------------------------------------------------
@@ -131,7 +131,7 @@ BackupClientFileAttributes::BackupClientFileAttributes()
BackupClientFileAttributes::BackupClientFileAttributes(const EMU_STRUCT_STAT &st)
: mpClearAttributes(0)
{
- ASSERT(sizeof(u_int64_t) == sizeof(box_time_t));
+ ASSERT(sizeof(uint64_t) == sizeof(box_time_t));
StreamableMemBlock *pnewAttr = new StreamableMemBlock;
FillAttributes(*pnewAttr, (const char *)NULL, st, true);
@@ -411,7 +411,7 @@ void BackupClientFileAttributes::ReadAttributes(const std::string& Filename,
// __time64_t winTime = BoxTimeToSeconds(
// pnewAttr->ModificationTime);
- u_int64_t modTime = box_ntoh64(pattr->ModificationTime);
+ uint64_t modTime = box_ntoh64(pattr->ModificationTime);
box_time_t modSecs = BoxTimeToSeconds(modTime);
__time64_t winTime = modSecs;
@@ -545,7 +545,7 @@ void BackupClientFileAttributes::FillAttributesLink(
void BackupClientFileAttributes::FillExtendedAttr(StreamableMemBlock &outputBlock,
const std::string& Filename)
{
-#ifdef HAVE_SYS_XATTR_H
+#if defined HAVE_LLISTXATTR && defined HAVE_LGETXATTR
int listBufferSize = 10000;
char* list = new char[listBufferSize];
@@ -582,30 +582,30 @@ void BackupClientFileAttributes::FillExtendedAttr(StreamableMemBlock &outputBloc
// Leave space for attr block size later
int xattrBlockSizeOffset = xattrSize;
- xattrSize += sizeof(u_int32_t);
+ xattrSize += sizeof(uint32_t);
// Loop for each attribute
for(std::vector<std::string>::const_iterator attrKeyI = attrKeys.begin(); attrKeyI!=attrKeys.end(); ++attrKeyI)
{
std::string attrKey(*attrKeyI);
- if(xattrSize+sizeof(u_int16_t)+attrKey.size()+1+sizeof(u_int32_t)>static_cast<unsigned int>(xattrBufferSize))
+ if(xattrSize+sizeof(uint16_t)+attrKey.size()+1+sizeof(uint32_t)>static_cast<unsigned int>(xattrBufferSize))
{
- xattrBufferSize = (xattrBufferSize+sizeof(u_int16_t)+attrKey.size()+1+sizeof(u_int32_t))*2;
+ xattrBufferSize = (xattrBufferSize+sizeof(uint16_t)+attrKey.size()+1+sizeof(uint32_t))*2;
outputBlock.ResizeBlock(xattrBufferSize);
buffer = static_cast<unsigned char*>(outputBlock.GetBuffer());
}
// Store length and text for attibute name
- u_int16_t keyLength = htons(attrKey.size()+1);
- std::memcpy(buffer+xattrSize, &keyLength, sizeof(u_int16_t));
- xattrSize += sizeof(u_int16_t);
+ uint16_t keyLength = htons(attrKey.size()+1);
+ std::memcpy(buffer+xattrSize, &keyLength, sizeof(uint16_t));
+ xattrSize += sizeof(uint16_t);
std::memcpy(buffer+xattrSize, attrKey.c_str(), attrKey.size()+1);
xattrSize += attrKey.size()+1;
// Leave space for value size
int valueSizeOffset = xattrSize;
- xattrSize += sizeof(u_int32_t);
+ xattrSize += sizeof(uint32_t);
// Find size of attribute (must call with buffer and length 0 on some platforms,
// as -1 is returned if the data doesn't fit.)
@@ -642,21 +642,30 @@ void BackupClientFileAttributes::FillExtendedAttr(StreamableMemBlock &outputBloc
xattrSize += valueSize;
// Fill in value size
- u_int32_t valueLength = htonl(valueSize);
- std::memcpy(buffer+valueSizeOffset, &valueLength, sizeof(u_int32_t));
+ uint32_t valueLength = htonl(valueSize);
+ std::memcpy(buffer+valueSizeOffset, &valueLength, sizeof(uint32_t));
}
// Fill in attribute block size
- u_int32_t xattrBlockLength = htonl(xattrSize-xattrBlockSizeOffset-sizeof(u_int32_t));
- std::memcpy(buffer+xattrBlockSizeOffset, &xattrBlockLength, sizeof(u_int32_t));
+ uint32_t xattrBlockLength = htonl(xattrSize-xattrBlockSizeOffset-sizeof(uint32_t));
+ std::memcpy(buffer+xattrBlockSizeOffset, &xattrBlockLength, sizeof(uint32_t));
outputBlock.ResizeBlock(xattrSize);
}
else if(listSize<0)
{
- if(errno == EOPNOTSUPP || errno == EACCES)
+ if(errno == EOPNOTSUPP || errno == EACCES
+#if HAVE_DECL_ENOTSUP
+ // NetBSD uses ENOTSUP instead
+ // https://mail-index.netbsd.org/tech-kern/2011/12/13/msg012185.html
+ || errno == ENOTSUP
+#endif
+ )
{
- // fail silently
+ // Not supported by OS, or not on this filesystem
+ BOX_TRACE(BOX_SYS_ERRNO_MESSAGE(errno,
+ BOX_FILE_MESSAGE(Filename, "Failed to "
+ "list extended attributes")));
}
else if(errno == ERANGE)
{
@@ -664,12 +673,17 @@ void BackupClientFileAttributes::FillExtendedAttr(StreamableMemBlock &outputBloc
"attributes of '" << Filename << "': "
"buffer too small, not backed up");
}
+ else if(errno == ENOENT)
+ {
+ BOX_ERROR("Failed to list extended "
+ "attributes of '" << Filename << "': "
+ "file no longer exists");
+ }
else
{
- BOX_LOG_SYS_ERROR("Failed to list extended "
- "attributes of '" << Filename << "', "
- "not backed up");
- THROW_EXCEPTION(CommonException, OSFileError);
+ THROW_SYS_FILE_ERROR("Failed to list extended "
+ "attributes for unknown reason", Filename,
+ CommonException, OSFileError);
}
}
}
@@ -679,7 +693,7 @@ void BackupClientFileAttributes::FillExtendedAttr(StreamableMemBlock &outputBloc
throw;
}
delete[] list;
-#endif
+#endif // defined HAVE_LLISTXATTR && defined HAVE_LGETXATTR
}
// --------------------------------------------------------------------------
@@ -839,7 +853,7 @@ void BackupClientFileAttributes::WriteAttributes(const std::string& Filename,
#endif
}
- if(static_cast<int>(xattrOffset+sizeof(u_int32_t))<=mpClearAttributes->GetSize())
+ if(static_cast<int>(xattrOffset+sizeof(uint32_t))<=mpClearAttributes->GetSize())
{
WriteExtendedAttr(Filename, xattrOffset);
}
@@ -978,13 +992,13 @@ void BackupClientFileAttributes::EnsureClearAvailable() const
// --------------------------------------------------------------------------
void BackupClientFileAttributes::WriteExtendedAttr(const std::string& Filename, int xattrOffset) const
{
-#ifdef HAVE_SYS_XATTR_H
+#if defined HAVE_LSETXATTR
const char* buffer = static_cast<char*>(mpClearAttributes->GetBuffer());
- u_int32_t xattrBlockLength = 0;
- std::memcpy(&xattrBlockLength, buffer+xattrOffset, sizeof(u_int32_t));
+ uint32_t xattrBlockLength = 0;
+ std::memcpy(&xattrBlockLength, buffer+xattrOffset, sizeof(uint32_t));
int xattrBlockSize = ntohl(xattrBlockLength);
- xattrOffset += sizeof(u_int32_t);
+ xattrOffset += sizeof(uint32_t);
int xattrEnd = xattrOffset+xattrBlockSize;
if(xattrEnd>mpClearAttributes->GetSize())
@@ -995,18 +1009,18 @@ void BackupClientFileAttributes::WriteExtendedAttr(const std::string& Filename,
while(xattrOffset<xattrEnd)
{
- u_int16_t keyLength = 0;
- std::memcpy(&keyLength, buffer+xattrOffset, sizeof(u_int16_t));
+ uint16_t keyLength = 0;
+ std::memcpy(&keyLength, buffer+xattrOffset, sizeof(uint16_t));
int keySize = ntohs(keyLength);
- xattrOffset += sizeof(u_int16_t);
+ xattrOffset += sizeof(uint16_t);
const char* key = buffer+xattrOffset;
xattrOffset += keySize;
- u_int32_t valueLength = 0;
- std::memcpy(&valueLength, buffer+xattrOffset, sizeof(u_int32_t));
+ uint32_t valueLength = 0;
+ std::memcpy(&valueLength, buffer+xattrOffset, sizeof(uint32_t));
int valueSize = ntohl(valueLength);
- xattrOffset += sizeof(u_int32_t);
+ xattrOffset += sizeof(uint32_t);
// FIXME: Warn on EOPNOTSUPP
if(::lsetxattr(Filename.c_str(), key, buffer+xattrOffset,
diff --git a/lib/backupstore/BackupCommands.cpp b/lib/backupstore/BackupCommands.cpp
index 318ce55a..22ef0215 100644
--- a/lib/backupstore/BackupCommands.cpp
+++ b/lib/backupstore/BackupCommands.cpp
@@ -52,11 +52,66 @@
return PROTOCOL_ERROR(Err_SessionReadOnly); \
}
+
// --------------------------------------------------------------------------
//
// Function
-// Name: BackupProtocolVersion::DoCommand(Protocol &, BackupStoreContext &)
-// Purpose: Return the current version, or an error if the requested version isn't allowed
+// Name: BackupProtocolMessage::HandleException(BoxException& e)
+// Purpose: Return an error message appropriate to the passed-in
+// exception, or rethrow it.
+// Created: 2014/09/14
+//
+// --------------------------------------------------------------------------
+std::auto_ptr<BackupProtocolMessage> BackupProtocolReplyable::HandleException(BoxException& e) const
+{
+ if(e.GetType() == RaidFileException::ExceptionType &&
+ e.GetSubType() == RaidFileException::RaidFileDoesntExist)
+ {
+ return PROTOCOL_ERROR(Err_DoesNotExist);
+ }
+ else if (e.GetType() == BackupStoreException::ExceptionType)
+ {
+ if(e.GetSubType() == BackupStoreException::AddedFileDoesNotVerify)
+ {
+ return PROTOCOL_ERROR(Err_FileDoesNotVerify);
+ }
+ else if(e.GetSubType() == BackupStoreException::AddedFileExceedsStorageLimit)
+ {
+ return PROTOCOL_ERROR(Err_StorageLimitExceeded);
+ }
+ else if(e.GetSubType() == BackupStoreException::MultiplyReferencedObject)
+ {
+ return PROTOCOL_ERROR(Err_MultiplyReferencedObject);
+ }
+ else if(e.GetSubType() == BackupStoreException::CouldNotFindEntryInDirectory)
+ {
+ return PROTOCOL_ERROR(Err_DoesNotExistInDirectory);
+ }
+ else if(e.GetSubType() == BackupStoreException::NameAlreadyExistsInDirectory)
+ {
+ return PROTOCOL_ERROR(Err_TargetNameExists);
+ }
+ else if(e.GetSubType() == BackupStoreException::ObjectDoesNotExist)
+ {
+ return PROTOCOL_ERROR(Err_DoesNotExist);
+ }
+ else if(e.GetSubType() == BackupStoreException::PatchChainInfoBadInDirectory)
+ {
+ return PROTOCOL_ERROR(Err_PatchConsistencyError);
+ }
+ }
+
+ throw;
+}
+
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupProtocolVersion::DoCommand(Protocol &,
+// BackupStoreContext &)
+// Purpose: Return the current version, or an error if the
+// requested version isn't allowed
// Created: 2003/08/20
//
// --------------------------------------------------------------------------
@@ -93,7 +148,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolLogin::DoCommand(BackupProtoc
// and that the client actually has an account on this machine
if(mClientID != rContext.GetClientID())
{
- BOX_WARNING("Failed login from client ID " <<
+ BOX_WARNING("Failed login from client ID " <<
BOX_FORMAT_ACCOUNT(mClientID) << ": "
"wrong certificate for this account");
return PROTOCOL_ERROR(Err_BadLogin);
@@ -101,7 +156,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolLogin::DoCommand(BackupProtoc
if(!rContext.GetClientHasAccount())
{
- BOX_WARNING("Failed login from client ID " <<
+ BOX_WARNING("Failed login from client ID " <<
BOX_FORMAT_ACCOUNT(mClientID) << ": "
"no such account on this server");
return PROTOCOL_ERROR(Err_BadLogin);
@@ -117,17 +172,17 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolLogin::DoCommand(BackupProtoc
BOX_FORMAT_ACCOUNT(mClientID));
return PROTOCOL_ERROR(Err_CannotLockStoreForWriting);
}
-
+
// Debug: check we got the lock
ASSERT(!rContext.SessionIsReadOnly());
}
-
+
// Load the store info
rContext.LoadStoreInfo();
if(!rContext.GetBackupStoreInfo().IsAccountEnabled())
{
- BOX_WARNING("Refused login from disabled client ID " <<
+ BOX_WARNING("Refused login from disabled client ID " <<
BOX_FORMAT_ACCOUNT(mClientID));
return PROTOCOL_ERROR(Err_DisabledAccount);
}
@@ -137,9 +192,9 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolLogin::DoCommand(BackupProtoc
// Mark the next phase
rContext.SetPhase(BackupStoreContext::Phase_Commands);
-
+
// Log login
- BOX_NOTICE("Login from Client ID " <<
+ BOX_NOTICE("Login from Client ID " <<
BOX_FORMAT_ACCOUNT(mClientID) << " "
"(name=" << rContext.GetAccountName() << "): " <<
(((mFlags & Flags_ReadOnly) != Flags_ReadOnly)
@@ -164,14 +219,15 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolLogin::DoCommand(BackupProtoc
// --------------------------------------------------------------------------
std::auto_ptr<BackupProtocolMessage> BackupProtocolFinished::DoCommand(BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext) const
{
- BOX_NOTICE("Session finished for Client ID " <<
+ // can be called in any phase
+
+ BOX_NOTICE("Session finished for Client ID " <<
BOX_FORMAT_ACCOUNT(rContext.GetClientID()) << " "
"(name=" << rContext.GetAccountName() << ")");
// Let the context know about it
rContext.ReceivedFinishCommand();
- // can be called in any phase
return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolFinished);
}
@@ -191,26 +247,15 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolListDirectory::DoCommand(Back
// Store the listing to a stream
std::auto_ptr<CollectInBufferStream> stream(new CollectInBufferStream);
- try
- {
- // Ask the context for a directory
- const BackupStoreDirectory &rdir(
- rContext.GetDirectory(mObjectID));
- rdir.WriteToStream(*stream, mFlagsMustBeSet,
- mFlagsNotToBeSet, mSendAttributes,
- false /* never send dependency info to the client */);
- }
- catch (RaidFileException &e)
- {
- if (e.GetSubType() == RaidFileException::RaidFileDoesntExist)
- {
- return PROTOCOL_ERROR(Err_DoesNotExist);
- }
- throw;
- }
+ // Ask the context for a directory
+ const BackupStoreDirectory &rdir(
+ rContext.GetDirectory(mObjectID));
+ rdir.WriteToStream(*stream, mFlagsMustBeSet,
+ mFlagsNotToBeSet, mSendAttributes,
+ false /* never send dependency info to the client */);
stream->SetForReading();
-
+
// Get the protocol to send the stream
rProtocol.SendStreamAfterCommand(static_cast< std::auto_ptr<IOStream> > (stream));
@@ -226,7 +271,9 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolListDirectory::DoCommand(Back
// Created: 2003/09/02
//
// --------------------------------------------------------------------------
-std::auto_ptr<BackupProtocolMessage> BackupProtocolStoreFile::DoCommand(BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext) const
+std::auto_ptr<BackupProtocolMessage> BackupProtocolStoreFile::DoCommand(
+ BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext,
+ IOStream& rDataStream) const
{
CHECK_PHASE(Phase_Commands)
CHECK_WRITEABLE_SESSION
@@ -237,7 +284,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolStoreFile::DoCommand(BackupPr
{
return hookResult;
}
-
+
// Check that the diff from file actually exists, if it's specified
if(mDiffFromFileID != 0)
{
@@ -247,35 +294,13 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolStoreFile::DoCommand(BackupPr
return PROTOCOL_ERROR(Err_DiffFromFileDoesNotExist);
}
}
-
- // A stream follows, which contains the file
- std::auto_ptr<IOStream> filestream(rProtocol.ReceiveStream());
-
+
// Ask the context to store it
- int64_t id = 0;
- try
- {
- id = rContext.AddFile(*filestream, mDirectoryObjectID,
- mModificationTime, mAttributesHash, mDiffFromFileID,
- mFilename,
- true /* mark files with same name as old versions */);
- }
- catch(BackupStoreException &e)
- {
- if(e.GetSubType() == BackupStoreException::AddedFileDoesNotVerify)
- {
- return PROTOCOL_ERROR(Err_FileDoesNotVerify);
- }
- else if(e.GetSubType() == BackupStoreException::AddedFileExceedsStorageLimit)
- {
- return PROTOCOL_ERROR(Err_StorageLimitExceeded);
- }
- else
- {
- throw;
- }
- }
-
+ int64_t id = rContext.AddFile(rDataStream, mDirectoryObjectID,
+ mModificationTime, mAttributesHash, mDiffFromFileID,
+ mFilename,
+ true /* mark files with same name as old versions */);
+
// Tell the caller what the file ID was
return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolSuccess(id));
}
@@ -298,7 +323,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetObject::DoCommand(BackupPr
// Check the object exists
if(!rContext.ObjectExists(mObjectID))
{
- return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolSuccess(NoObject));
+ return PROTOCOL_ERROR(Err_DoesNotExist);
}
// Open the object
@@ -315,7 +340,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetObject::DoCommand(BackupPr
//
// Function
// Name: BackupProtocolGetFile::DoCommand(Protocol &, BackupStoreContext &)
-// Purpose: Command to get an file object from the server -- may have to do a bit of
+// Purpose: Command to get an file object from the server -- may have to do a bit of
// work to get the object.
// Created: 2003/09/03
//
@@ -357,13 +382,13 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetFile::DoCommand(BackupProt
en = rdir.FindEntryByID(id);
if(en == 0)
{
- BOX_ERROR("Object " <<
+ BOX_ERROR("Object " <<
BOX_FORMAT_OBJECTID(mObjectID) <<
- " in dir " <<
+ " in dir " <<
BOX_FORMAT_OBJECTID(mInDirectory) <<
" for account " <<
BOX_FORMAT_ACCOUNT(rContext.GetClientID()) <<
- " references object " <<
+ " references object " <<
BOX_FORMAT_OBJECTID(id) <<
" which does not exist in dir");
return PROTOCOL_ERROR(Err_PatchConsistencyError);
@@ -371,89 +396,73 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetFile::DoCommand(BackupProt
id = en->GetDependsNewer();
}
while(en != 0 && id != 0);
-
+
// OK! The last entry in the chain is the full file, the others are patches back from it.
// Open the last one, which is the current from file
std::auto_ptr<IOStream> from(rContext.OpenObject(patchChain[patchChain.size() - 1]));
-
+
// Then, for each patch in the chain, do a combine
for(int p = ((int)patchChain.size()) - 2; p >= 0; --p)
{
// ID of patch
int64_t patchID = patchChain[p];
-
+
// Open it a couple of times
std::auto_ptr<IOStream> diff(rContext.OpenObject(patchID));
std::auto_ptr<IOStream> diff2(rContext.OpenObject(patchID));
-
+
// Choose a temporary filename for the result of the combination
std::ostringstream fs;
- fs << rContext.GetStoreRoot() << ".recombinetemp." << p;
- std::string tempFn =
+ fs << rContext.GetAccountRoot() << ".recombinetemp." << p;
+ std::string tempFn =
RaidFileController::DiscSetPathToFileSystemPath(
rContext.GetStoreDiscSet(), fs.str(),
p + 16);
-
+
// Open the temporary file
- std::auto_ptr<IOStream> combined;
- try
- {
- {
- // Write nastily to allow this to work with gcc 2.x
- std::auto_ptr<IOStream> t(
- new InvisibleTempFileStream(
- tempFn.c_str(),
- O_RDWR | O_CREAT |
- O_EXCL | O_BINARY |
- O_TRUNC));
- combined = t;
- }
- }
- catch(...)
- {
- // Make sure it goes
- ::unlink(tempFn.c_str());
- throw;
- }
-
+ std::auto_ptr<IOStream> combined(
+ new InvisibleTempFileStream(
+ tempFn, O_RDWR | O_CREAT | O_EXCL |
+ O_BINARY | O_TRUNC));
+
// Do the combining
BackupStoreFile::CombineFile(*diff, *diff2, *from, *combined);
-
+
// Move to the beginning of the combined file
combined->Seek(0, IOStream::SeekType_Absolute);
-
+
// Then shuffle round for the next go
if (from.get()) from->Close();
from = combined;
}
-
+
// Now, from contains a nice file to send to the client. Reorder it
{
// Write nastily to allow this to work with gcc 2.x
std::auto_ptr<IOStream> t(BackupStoreFile::ReorderFileToStreamOrder(from.get(), true /* take ownership */));
stream = t;
}
-
+
// Release from file to avoid double deletion
from.release();
}
else
{
// Simple case: file already exists on disc ready to go
-
+
// Open the object
std::auto_ptr<IOStream> object(rContext.OpenObject(mObjectID));
BufferedStream buf(*object);
-
+
// Verify it
if(!BackupStoreFile::VerifyEncodedFileFormat(buf))
{
return PROTOCOL_ERROR(Err_FileDoesNotVerify);
}
-
+
// Reset stream -- seek to beginning
object->Seek(0, IOStream::SeekType_Absolute);
-
+
// Reorder the stream/file into stream order
{
// Write nastily to allow this to work with gcc 2.x
@@ -461,15 +470,15 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetFile::DoCommand(BackupProt
stream = t;
}
- // Object will be deleted when the stream is deleted,
- // so can release the object auto_ptr here to avoid
+ // Object will be deleted when the stream is deleted,
+ // so can release the object auto_ptr here to avoid
// premature deletion
object.release();
}
// Stream the reordered stream to the peer
rProtocol.SendStreamAfterCommand(stream);
-
+
// Tell the caller what the file was
return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolSuccess(mObjectID));
}
@@ -483,18 +492,38 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetFile::DoCommand(BackupProt
// Created: 2003/09/04
//
// --------------------------------------------------------------------------
-std::auto_ptr<BackupProtocolMessage> BackupProtocolCreateDirectory::DoCommand(BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext) const
+std::auto_ptr<BackupProtocolMessage> BackupProtocolCreateDirectory::DoCommand(
+ BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext,
+ IOStream& rDataStream) const
+{
+ return BackupProtocolCreateDirectory2(mContainingDirectoryID,
+ mAttributesModTime, 0 /* ModificationTime */,
+ mDirectoryName).DoCommand(rProtocol, rContext, rDataStream);
+}
+
+
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupProtocolCreateDirectory2::DoCommand(Protocol &, BackupStoreContext &)
+// Purpose: Create directory command, with a specific
+// modification time.
+// Created: 2014/02/11
+//
+// --------------------------------------------------------------------------
+std::auto_ptr<BackupProtocolMessage> BackupProtocolCreateDirectory2::DoCommand(
+ BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext,
+ IOStream& rDataStream) const
{
CHECK_PHASE(Phase_Commands)
CHECK_WRITEABLE_SESSION
-
- // Get the stream containing the attributes
- std::auto_ptr<IOStream> attrstream(rProtocol.ReceiveStream());
- // Collect the attributes -- do this now so no matter what the outcome,
+
+ // Collect the attributes -- do this now so no matter what the outcome,
// the data has been absorbed.
StreamableMemBlock attr;
- attr.Set(*attrstream, rProtocol.GetTimeout());
-
+ attr.Set(rDataStream, rProtocol.GetTimeout());
+
// Check to see if the hard limit has been exceeded
if(rContext.HardLimitExceeded())
{
@@ -503,8 +532,10 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolCreateDirectory::DoCommand(Ba
}
bool alreadyExists = false;
- int64_t id = rContext.AddDirectory(mContainingDirectoryID, mDirectoryName, attr, mAttributesModTime, alreadyExists);
-
+ int64_t id = rContext.AddDirectory(mContainingDirectoryID,
+ mDirectoryName, attr, mAttributesModTime, mModificationTime,
+ alreadyExists);
+
if(alreadyExists)
{
return PROTOCOL_ERROR(Err_DirectoryAlreadyExists);
@@ -524,17 +555,17 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolCreateDirectory::DoCommand(Ba
// Created: 2003/09/06
//
// --------------------------------------------------------------------------
-std::auto_ptr<BackupProtocolMessage> BackupProtocolChangeDirAttributes::DoCommand(BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext) const
+std::auto_ptr<BackupProtocolMessage> BackupProtocolChangeDirAttributes::DoCommand(
+ BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext,
+ IOStream& rDataStream) const
{
CHECK_PHASE(Phase_Commands)
CHECK_WRITEABLE_SESSION
- // Get the stream containing the attributes
- std::auto_ptr<IOStream> attrstream(rProtocol.ReceiveStream());
- // Collect the attributes -- do this now so no matter what the outcome,
+ // Collect the attributes -- do this now so no matter what the outcome,
// the data has been absorbed.
StreamableMemBlock attr;
- attr.Set(*attrstream, rProtocol.GetTimeout());
+ attr.Set(rDataStream, rProtocol.GetTimeout());
// Get the context to do it's magic
rContext.ChangeDirAttributes(mObjectID, attr, mAttributesModTime);
@@ -552,17 +583,18 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolChangeDirAttributes::DoComman
// Created: 2003/09/06
//
// --------------------------------------------------------------------------
-std::auto_ptr<BackupProtocolMessage> BackupProtocolSetReplacementFileAttributes::DoCommand(BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext) const
+std::auto_ptr<BackupProtocolMessage>
+BackupProtocolSetReplacementFileAttributes::DoCommand(
+ BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext,
+ IOStream& rDataStream) const
{
CHECK_PHASE(Phase_Commands)
CHECK_WRITEABLE_SESSION
- // Get the stream containing the attributes
- std::auto_ptr<IOStream> attrstream(rProtocol.ReceiveStream());
- // Collect the attributes -- do this now so no matter what the outcome,
+ // Collect the attributes -- do this now so no matter what the outcome,
// the data has been absorbed.
StreamableMemBlock attr;
- attr.Set(*attrstream, rProtocol.GetTimeout());
+ attr.Set(rDataStream, rProtocol.GetTimeout());
// Get the context to do it's magic
int64_t objectID = 0;
@@ -577,7 +609,6 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolSetReplacementFileAttributes:
}
-
// --------------------------------------------------------------------------
//
// Function
@@ -644,19 +675,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolDeleteDirectory::DoCommand(Ba
}
// Context handles this
- try
- {
- rContext.DeleteDirectory(mObjectID);
- }
- catch (BackupStoreException &e)
- {
- if(e.GetSubType() == BackupStoreException::MultiplyReferencedObject)
- {
- return PROTOCOL_ERROR(Err_MultiplyReferencedObject);
- }
-
- throw;
- }
+ rContext.DeleteDirectory(mObjectID);
// return the object ID
return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolSuccess(mObjectID));
@@ -722,29 +741,11 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolMoveObject::DoCommand(BackupP
{
CHECK_PHASE(Phase_Commands)
CHECK_WRITEABLE_SESSION
-
+
// Let context do this, but modify error reporting on exceptions...
- try
- {
- rContext.MoveObject(mObjectID, mMoveFromDirectory, mMoveToDirectory,
- mNewFilename, (mFlags & Flags_MoveAllWithSameName) == Flags_MoveAllWithSameName,
- (mFlags & Flags_AllowMoveOverDeletedObject) == Flags_AllowMoveOverDeletedObject);
- }
- catch(BackupStoreException &e)
- {
- if(e.GetSubType() == BackupStoreException::CouldNotFindEntryInDirectory)
- {
- return PROTOCOL_ERROR(Err_DoesNotExist);
- }
- else if(e.GetSubType() == BackupStoreException::NameAlreadyExistsInDirectory)
- {
- return PROTOCOL_ERROR(Err_TargetNameExists);
- }
- else
- {
- throw;
- }
- }
+ rContext.MoveObject(mObjectID, mMoveFromDirectory, mMoveToDirectory,
+ mNewFilename, (mFlags & Flags_MoveAllWithSameName) == Flags_MoveAllWithSameName,
+ (mFlags & Flags_AllowMoveOverDeletedObject) == Flags_AllowMoveOverDeletedObject);
// Return the object ID
return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolSuccess(mObjectID));
@@ -762,21 +763,21 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolMoveObject::DoCommand(BackupP
std::auto_ptr<BackupProtocolMessage> BackupProtocolGetObjectName::DoCommand(BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext) const
{
CHECK_PHASE(Phase_Commands)
-
+
// Create a stream for the list of filenames
std::auto_ptr<CollectInBufferStream> stream(new CollectInBufferStream);
// Object and directory IDs
int64_t objectID = mObjectID;
int64_t dirID = mContainingDirectoryID;
-
+
// Data to return in the reply
int32_t numNameElements = 0;
int16_t objectFlags = 0;
int64_t modTime = 0;
uint64_t attrModHash = 0;
bool haveModTimes = false;
-
+
do
{
// Check the directory really exists
@@ -786,7 +787,28 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetObjectName::DoCommand(Back
}
// Load up the directory
- const BackupStoreDirectory &rdir(rContext.GetDirectory(dirID));
+ const BackupStoreDirectory *pDir;
+
+ try
+ {
+ pDir = &rContext.GetDirectory(dirID);
+ }
+ catch(BackupStoreException &e)
+ {
+ if(e.GetSubType() == BackupStoreException::ObjectDoesNotExist)
+ {
+ // If this can't be found, then there is a problem...
+ // tell the caller it can't be found.
+ return std::auto_ptr<BackupProtocolMessage>(
+ new BackupProtocolObjectName(
+ BackupProtocolObjectName::NumNameElements_ObjectDoesntExist,
+ 0, 0, 0));
+ }
+
+ throw;
+ }
+
+ const BackupStoreDirectory& rdir(*pDir);
// Find the element in this directory and store it's name
if(objectID != ObjectID_DirectoryOnly)
@@ -799,13 +821,13 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetObjectName::DoCommand(Back
// Abort!
return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolObjectName(BackupProtocolObjectName::NumNameElements_ObjectDoesntExist, 0, 0, 0));
}
-
+
// Store flags?
if(objectFlags == 0)
{
objectFlags = en->GetFlags();
}
-
+
// Store modification times?
if(!haveModTimes)
{
@@ -813,14 +835,14 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetObjectName::DoCommand(Back
attrModHash = en->GetAttributesHash();
haveModTimes = true;
}
-
+
// Store the name in the stream
en->GetName().WriteToStream(*stream);
-
+
// Count of name elements
++numNameElements;
}
-
+
// Setup for next time round
objectID = dirID;
dirID = rdir.GetContainerID();
@@ -831,7 +853,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetObjectName::DoCommand(Back
if(numNameElements > 0)
{
// Get the stream ready to go
- stream->SetForReading();
+ stream->SetForReading();
// Tell the protocol to send the stream
rProtocol.SendStreamAfterCommand(static_cast< std::auto_ptr<IOStream> >(stream));
}
@@ -856,10 +878,10 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetBlockIndexByID::DoCommand(
// Open the file
std::auto_ptr<IOStream> stream(rContext.OpenObject(mObjectID));
-
+
// Move the file pointer to the block index
BackupStoreFile::MoveStreamPositionToBlockIndex(*stream);
-
+
// Return the stream to the client
rProtocol.SendStreamAfterCommand(stream);
@@ -882,7 +904,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetBlockIndexByName::DoComman
// Get the directory
const BackupStoreDirectory &dir(rContext.GetDirectory(mInDirectory));
-
+
// Find the latest object ID within it which has the same name
int64_t objectID = 0;
BackupStoreDirectory::Iterator i(dir);
@@ -898,7 +920,7 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetBlockIndexByName::DoComman
}
}
}
-
+
// Found anything?
if(objectID == 0)
{
@@ -908,10 +930,10 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetBlockIndexByName::DoComman
// Open the file
std::auto_ptr<IOStream> stream(rContext.OpenObject(objectID));
-
+
// Move the file pointer to the block index
BackupStoreFile::MoveStreamPositionToBlockIndex(*stream);
-
+
// Return the stream to the client
rProtocol.SendStreamAfterCommand(stream);
@@ -934,11 +956,11 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetAccountUsage::DoCommand(Ba
// Get store info from context
const BackupStoreInfo &rinfo(rContext.GetBackupStoreInfo());
-
+
// Find block size
RaidFileController &rcontroller(RaidFileController::GetController());
RaidFileDiscSet &rdiscSet(rcontroller.GetDiscSet(rinfo.GetDiscSetNumber()));
-
+
// Return info
return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolAccountUsage(
rinfo.GetBlocksUsed(),
@@ -968,3 +990,48 @@ std::auto_ptr<BackupProtocolMessage> BackupProtocolGetIsAlive::DoCommand(BackupP
//
return std::auto_ptr<BackupProtocolMessage>(new BackupProtocolIsAlive());
}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: BackupProtocolGetAccountUsage2::DoCommand(BackupProtocolReplyable &, BackupStoreContext &)
+// Purpose: Return the amount of disc space used
+// Created: 26/12/13
+//
+// --------------------------------------------------------------------------
+std::auto_ptr<BackupProtocolMessage> BackupProtocolGetAccountUsage2::DoCommand(
+ BackupProtocolReplyable &rProtocol, BackupStoreContext &rContext) const
+{
+ CHECK_PHASE(Phase_Commands)
+
+ // Get store info from context
+ const BackupStoreInfo &info(rContext.GetBackupStoreInfo());
+
+ // Find block size
+ RaidFileController &rcontroller(RaidFileController::GetController());
+ RaidFileDiscSet &rdiscSet(rcontroller.GetDiscSet(info.GetDiscSetNumber()));
+
+ // Return info
+ BackupProtocolAccountUsage2* usage = new BackupProtocolAccountUsage2();
+ std::auto_ptr<BackupProtocolMessage> reply(usage);
+ #define COPY(name) usage->Set ## name (info.Get ## name ())
+ COPY(AccountName);
+ usage->SetAccountEnabled(info.IsAccountEnabled());
+ COPY(ClientStoreMarker);
+ usage->SetBlockSize(rdiscSet.GetBlockSize());
+ COPY(LastObjectIDUsed);
+ COPY(BlocksUsed);
+ COPY(BlocksInCurrentFiles);
+ COPY(BlocksInOldFiles);
+ COPY(BlocksInDeletedFiles);
+ COPY(BlocksInDirectories);
+ COPY(BlocksSoftLimit);
+ COPY(BlocksHardLimit);
+ COPY(NumCurrentFiles);
+ COPY(NumOldFiles);
+ COPY(NumDeletedFiles);
+ COPY(NumDirectories);
+ #undef COPY
+
+ return reply;
+}
diff --git a/lib/backupstore/BackupConstants.h b/lib/backupstore/BackupConstants.h
index 19d06a15..195dc621 100644
--- a/lib/backupstore/BackupConstants.h
+++ b/lib/backupstore/BackupConstants.h
@@ -13,6 +13,9 @@
// 15 minutes to timeout (milliseconds)
#define BACKUP_STORE_TIMEOUT (15*60*1000)
+// Time to wait for retry after a backup error
+#define BACKUP_ERROR_RETRY_SECONDS 100
+
// Should the store daemon convert files to Raid immediately?
#define BACKUP_STORE_CONVERT_TO_RAID_IMMEDIATELY true
diff --git a/lib/backupstore/BackupProtocol.h b/lib/backupstore/BackupProtocol.h
new file mode 100644
index 00000000..d9070c73
--- /dev/null
+++ b/lib/backupstore/BackupProtocol.h
@@ -0,0 +1,71 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: BackupProtocol.h
+// Purpose: A thin wrapper around autogen_BackupProtocol.h
+// Created: 2014/01/05
+//
+// --------------------------------------------------------------------------
+
+#ifndef BACKUPPROTOCOL__H
+#define BACKUPPROTOCOL__H
+
+#include <autogen_BackupProtocol.h>
+#include <BackupStoreConstants.h>
+#include <BackupStoreContext.h>
+
+// --------------------------------------------------------------------------
+//
+// Class
+// Name: BackupProtocolLocal2
+// Purpose: BackupProtocolLocal with a few more IQ points
+// Created: 2014/09/20
+//
+// --------------------------------------------------------------------------
+class BackupProtocolLocal2 : public BackupProtocolLocal
+{
+private:
+ BackupStoreContext mContext;
+ int32_t mAccountNumber;
+ bool mReadOnly;
+
+protected:
+ BackupStoreContext& GetContext() { return mContext; }
+
+public:
+ BackupProtocolLocal2(int32_t AccountNumber,
+ const std::string& ConnectionDetails,
+ const std::string& AccountRootDir, int DiscSetNumber,
+ bool ReadOnly)
+ // This is rather ugly: the BackupProtocolLocal constructor must not
+ // touch the Context, because it's not initialised yet!
+ : BackupProtocolLocal(mContext),
+ mContext(AccountNumber, (HousekeepingInterface *)NULL,
+ ConnectionDetails),
+ mAccountNumber(AccountNumber),
+ mReadOnly(ReadOnly)
+ {
+ mContext.SetClientHasAccount(AccountRootDir, DiscSetNumber);
+ QueryVersion(BACKUP_STORE_SERVER_VERSION);
+ QueryLogin(AccountNumber,
+ ReadOnly ? BackupProtocolLogin::Flags_ReadOnly : 0);
+ }
+ virtual ~BackupProtocolLocal2() { }
+
+ std::auto_ptr<BackupProtocolFinished> Query(const BackupProtocolFinished &rQuery)
+ {
+ std::auto_ptr<BackupProtocolFinished> finished =
+ BackupProtocolLocal::Query(rQuery);
+ mContext.ReleaseWriteLock();
+ return finished;
+ }
+
+ void Reopen()
+ {
+ QueryVersion(BACKUP_STORE_SERVER_VERSION);
+ QueryLogin(mAccountNumber,
+ mReadOnly ? BackupProtocolLogin::Flags_ReadOnly : 0);
+ }
+};
+
+#endif // BACKUPPROTOCOL__H
diff --git a/lib/backupstore/backupprotocol.txt b/lib/backupstore/BackupProtocol.txt
index aa987e70..5921d009 100644
--- a/lib/backupstore/backupprotocol.txt
+++ b/lib/backupstore/BackupProtocol.txt
@@ -7,6 +7,7 @@ IdentString Box-Backup:v=C
ServerContextClass BackupStoreContext BackupStoreContext.h
AddType Filename BackupStoreFilenameClear BackupStoreFilenameClear.h
+AddType String std::string
ImplementLog Server syslog
ImplementLog Client syslog
@@ -76,8 +77,7 @@ SetClientStoreMarker 6 Command(Success)
GetObject 10 Command(Success)
int64 ObjectID
- CONSTANT NoObject 0
- # reply has stream following, if ObjectID != NoObject
+ # reply has stream following (if successful)
MoveObject 11 Command(Success)
@@ -123,6 +123,14 @@ CreateDirectory 20 Command(Success) StreamWithCommand
# stream following containing attributes
+CreateDirectory2 46 Command(Success) StreamWithCommand
+ int64 ContainingDirectoryID
+ int64 AttributesModTime
+ int64 ModificationTime
+ Filename DirectoryName
+ # stream following containing attributes
+
+
ListDirectory 21 Command(Success)
int64 ObjectID
int16 FlagsMustBeSet
@@ -151,6 +159,7 @@ ChangeDirAttributes 22 Command(Success) StreamWithCommand
DeleteDirectory 23 Command(Success)
int64 ObjectID
+
UndeleteDirectory 24 Command(Success)
int64 ObjectID
# may not have exactly the desired effect if files within in have been deleted before the directory was deleted.
@@ -233,3 +242,25 @@ GetIsAlive 42 Command(IsAlive)
IsAlive 43 Reply
# no data members
+GetAccountUsage2 44 Command(AccountUsage2)
+ # no data members
+
+AccountUsage2 45 Reply
+ String AccountName
+ bool AccountEnabled
+ int64 ClientStoreMarker
+ int32 BlockSize
+ int64 LastObjectIDUsed
+ int64 BlocksUsed
+ int64 BlocksInCurrentFiles
+ int64 BlocksInOldFiles
+ int64 BlocksInDeletedFiles
+ int64 BlocksInDirectories
+ int64 BlocksSoftLimit
+ int64 BlocksHardLimit
+ int64 NumCurrentFiles
+ int64 NumOldFiles
+ int64 NumDeletedFiles
+ int64 NumDirectories
+
+# 46 is CreateDirectory2
diff --git a/lib/backupstore/BackupStoreAccountDatabase.cpp b/lib/backupstore/BackupStoreAccountDatabase.cpp
index 201491a3..c5f012fc 100644
--- a/lib/backupstore/BackupStoreAccountDatabase.cpp
+++ b/lib/backupstore/BackupStoreAccountDatabase.cpp
@@ -247,7 +247,8 @@ void BackupStoreAccountDatabase::Write()
{
// Write out the entry
char line[256]; // more than enough for a couple of integers in string form
- int s = ::sprintf(line, "%x:%d\n", i->second.GetID(), i->second.GetDiscSet());
+ int s = ::snprintf(line, sizeof(line), "%x:%d\n",
+ i->second.GetID(), i->second.GetDiscSet());
if(::write(file, line, s) != s)
{
THROW_EXCEPTION(CommonException, OSFileError)
diff --git a/lib/backupstore/BackupStoreAccounts.cpp b/lib/backupstore/BackupStoreAccounts.cpp
index 18500fc1..7955b3c4 100644
--- a/lib/backupstore/BackupStoreAccounts.cpp
+++ b/lib/backupstore/BackupStoreAccounts.cpp
@@ -9,19 +9,29 @@
#include "Box.h"
-#include <stdio.h>
+#include <algorithm>
+#include <climits>
+#include <cstdio>
+#include <cstring>
+#include <iostream>
#include "BackupStoreAccounts.h"
#include "BackupStoreAccountDatabase.h"
+#include "BackupStoreCheck.h"
+#include "BackupStoreConfigVerify.h"
#include "BackupStoreConstants.h"
#include "BackupStoreDirectory.h"
#include "BackupStoreException.h"
#include "BackupStoreInfo.h"
#include "BackupStoreRefCountDatabase.h"
#include "BoxPortsAndFiles.h"
+#include "HousekeepStoreAccount.h"
+#include "NamedLock.h"
+#include "RaidFileController.h"
#include "RaidFileWrite.h"
#include "StoreStructure.h"
#include "UnixUser.h"
+#include "Utils.h"
#include "MemLeakFindOn.h"
@@ -110,10 +120,7 @@ void BackupStoreAccounts::Create(int32_t ID, int DiscSet, int64_t SizeSoftLimit,
info->Save();
// Create the refcount database
- BackupStoreRefCountDatabase::CreateNew(Entry);
- std::auto_ptr<BackupStoreRefCountDatabase> refcount(
- BackupStoreRefCountDatabase::Load(Entry, false));
- refcount->AddReference(BACKUPSTORE_ROOT_DIRECTORY_ID);
+ BackupStoreRefCountDatabase::Create(Entry)->Commit();
}
// As the original user...
@@ -151,9 +158,9 @@ void BackupStoreAccounts::GetAccountRoot(int32_t ID, std::string &rRootDirOut, i
std::string BackupStoreAccounts::MakeAccountRootDir(int32_t ID, int DiscSet)
{
char accid[64]; // big enough!
- ::sp