diff --git a/arangod/Agency/Agent.cpp b/arangod/Agency/Agent.cpp index 94aa5d9038..72bc725388 100644 --- a/arangod/Agency/Agent.cpp +++ b/arangod/Agency/Agent.cpp @@ -34,6 +34,7 @@ #include "Basics/ConditionLocker.h" #include "Basics/ReadLocker.h" #include "Basics/WriteLocker.h" +#include "Basics/ScopeGuard.h" #include "RestServer/QueryRegistryFeature.h" #include "RestServer/SystemDatabaseFeature.h" #include "VocBase/vocbase.h" diff --git a/arangod/Aql/AstNode.h b/arangod/Aql/AstNode.h index f4ea8c3c64..91a995b945 100644 --- a/arangod/Aql/AstNode.h +++ b/arangod/Aql/AstNode.h @@ -27,6 +27,7 @@ #include "Basics/AttributeNameParser.h" #include "Basics/Common.h" #include "Basics/Exceptions.h" +#include "Basics/ScopeGuard.h" #include #include diff --git a/arangod/Aql/CalculationExecutor.h b/arangod/Aql/CalculationExecutor.h index 0997e385f2..1857946bd6 100644 --- a/arangod/Aql/CalculationExecutor.h +++ b/arangod/Aql/CalculationExecutor.h @@ -23,6 +23,8 @@ #ifndef ARANGOD_AQL_CALACULATION_EXECUTOR_H #define ARANGOD_AQL_CALACULATION_EXECUTOR_H +#include "Basics/Common.h" +#include "Basics/ScopeGuard.h" #include "Aql/ExecutionState.h" #include "Aql/ExecutorInfos.h" #include "Aql/Expression.h" diff --git a/arangod/Aql/IndexExecutor.cpp b/arangod/Aql/IndexExecutor.cpp index 80067510df..a40ae09148 100644 --- a/arangod/Aql/IndexExecutor.cpp +++ b/arangod/Aql/IndexExecutor.cpp @@ -35,6 +35,7 @@ #include "Aql/Query.h" #include "Aql/SingleRowFetcher.h" #include "Basics/Common.h" +#include "Basics/ScopeGuard.h" #include "Cluster/ServerState.h" #include "ExecutorExpressionContext.h" #include "Transaction/Methods.h" diff --git a/arangod/Aql/Parser.cpp b/arangod/Aql/Parser.cpp index df958ff2f1..52b1e0d8bf 100644 --- a/arangod/Aql/Parser.cpp +++ b/arangod/Aql/Parser.cpp @@ -21,6 +21,8 @@ /// @author Jan Steemann //////////////////////////////////////////////////////////////////////////////// +#include "Basics/Common.h" +#include "Basics/ScopeGuard.h" #include "Aql/Parser.h" #include "Aql/AstNode.h" #include "Aql/ExecutionPlan.h" diff --git a/arangod/Aql/QueryResources.cpp b/arangod/Aql/QueryResources.cpp index c687449b28..bbeee6559c 100644 --- a/arangod/Aql/QueryResources.cpp +++ b/arangod/Aql/QueryResources.cpp @@ -26,6 +26,7 @@ #include "Aql/ResourceUsage.h" #include "Basics/Exceptions.h" #include "Basics/tri-strings.h" +#include "Basics/ScopeGuard.h" using namespace arangodb; using namespace arangodb::aql; diff --git a/arangod/Aql/ShortStringStorage.cpp b/arangod/Aql/ShortStringStorage.cpp index 0abd522433..c883fbeb8d 100644 --- a/arangod/Aql/ShortStringStorage.cpp +++ b/arangod/Aql/ShortStringStorage.cpp @@ -26,6 +26,8 @@ #include "Basics/Exceptions.h" #include "Basics/tri-strings.h" +#include + using namespace arangodb::aql; /// @brief create a short string storage instance diff --git a/arangod/Auth/User.cpp b/arangod/Auth/User.cpp index d43db3c555..dd44184783 100644 --- a/arangod/Auth/User.cpp +++ b/arangod/Auth/User.cpp @@ -29,6 +29,7 @@ #include "Basics/VelocyPackHelper.h" #include "Basics/WriteLocker.h" #include "Basics/tri-strings.h" +#include "Basics/ScopeGuard.h" #include "Cluster/ServerState.h" #include "GeneralServer/GeneralServerFeature.h" #include "Logger/Logger.h" diff --git a/arangod/Cache/CachedValue.h b/arangod/Cache/CachedValue.h index 5d9997dd50..dfb8fb571c 100644 --- a/arangod/Cache/CachedValue.h +++ b/arangod/Cache/CachedValue.h @@ -28,6 +28,7 @@ #include #include +#include namespace arangodb { namespace cache { diff --git a/arangod/IResearch/AqlHelper.cpp b/arangod/IResearch/AqlHelper.cpp index 301c599d7b..46c20c7200 100644 --- a/arangod/IResearch/AqlHelper.cpp +++ b/arangod/IResearch/AqlHelper.cpp @@ -20,6 +20,7 @@ /// @author Vasiliy Nabatchikov //////////////////////////////////////////////////////////////////////////////// +#include #include "AqlHelper.h" #include "Aql/Ast.h" #include "Aql/ExecutionPlan.h" diff --git a/arangod/Indexes/IndexFactory.cpp b/arangod/Indexes/IndexFactory.cpp index 13f7a8e1eb..d917eb7ab5 100644 --- a/arangod/Indexes/IndexFactory.cpp +++ b/arangod/Indexes/IndexFactory.cpp @@ -36,6 +36,7 @@ #include #include #include +#include namespace { diff --git a/arangod/InternalRestHandler/InternalRestTraverserHandler.cpp b/arangod/InternalRestHandler/InternalRestTraverserHandler.cpp index 2fddfa8ce4..ae48a0f021 100644 --- a/arangod/InternalRestHandler/InternalRestTraverserHandler.cpp +++ b/arangod/InternalRestHandler/InternalRestTraverserHandler.cpp @@ -23,6 +23,7 @@ #include "InternalRestTraverserHandler.h" +#include "Basics/ScopeGuard.h" #include "Basics/VelocyPackHelper.h" #include "Cluster/ServerState.h" #include "Cluster/TraverserEngine.h" diff --git a/arangod/MMFiles/MMFilesDatafile.cpp b/arangod/MMFiles/MMFilesDatafile.cpp index b37acaf7b5..c59895d6f9 100644 --- a/arangod/MMFiles/MMFilesDatafile.cpp +++ b/arangod/MMFiles/MMFilesDatafile.cpp @@ -31,12 +31,20 @@ #include "Basics/hashes.h" #include "Basics/memory-map.h" #include "Basics/tri-strings.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #include "MMFiles/MMFilesDatafileHelper.h" #include "VocBase/ticks.h" #include #include +#include +#include +#include + +#ifdef TRI_HAVE_UNISTD_H +#include +#endif using namespace arangodb; using namespace arangodb::basics; diff --git a/arangod/MMFiles/MMFilesLogfileManager.h b/arangod/MMFiles/MMFilesLogfileManager.h index 1b42f2f5f3..b9de9d3fa2 100644 --- a/arangod/MMFiles/MMFilesLogfileManager.h +++ b/arangod/MMFiles/MMFilesLogfileManager.h @@ -33,6 +33,11 @@ #include "Transaction/Manager.h" #include "VocBase/voc-types.h" +// for sig_atomic_t: +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + namespace arangodb { class MMFilesAllocatorThread; class MMFilesCollectorThread; diff --git a/arangod/MMFiles/mmfiles-fulltext-index.cpp b/arangod/MMFiles/mmfiles-fulltext-index.cpp index 4835940f05..6568e8eb66 100644 --- a/arangod/MMFiles/mmfiles-fulltext-index.cpp +++ b/arangod/MMFiles/mmfiles-fulltext-index.cpp @@ -24,6 +24,7 @@ #include "mmfiles-fulltext-index.h" #include "Basics/Exceptions.h" +#include "Basics/ScopeGuard.h" #include "Indexes/Index.h" #include "Logger/Logger.h" #include "MMFiles/mmfiles-fulltext-list.h" diff --git a/arangod/Pregel/TypedBuffer.h b/arangod/Pregel/TypedBuffer.h index 93856ab551..cb7e936cc8 100644 --- a/arangod/Pregel/TypedBuffer.h +++ b/arangod/Pregel/TypedBuffer.h @@ -31,6 +31,10 @@ #include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + #ifdef __linux__ #include #endif diff --git a/arangod/Replication/common-defines.cpp b/arangod/Replication/common-defines.cpp index bc83626d63..ded35c53d7 100644 --- a/arangod/Replication/common-defines.cpp +++ b/arangod/Replication/common-defines.cpp @@ -23,6 +23,7 @@ #include "Replication/common-defines.h" #include "Basics/tri-strings.h" +#include namespace arangodb { diff --git a/arangod/RestHandler/RestAdminExecuteHandler.cpp b/arangod/RestHandler/RestAdminExecuteHandler.cpp index 81bc74a61e..7ca2db4719 100644 --- a/arangod/RestHandler/RestAdminExecuteHandler.cpp +++ b/arangod/RestHandler/RestAdminExecuteHandler.cpp @@ -28,6 +28,7 @@ #include "Basics/Exceptions.h" #include "Basics/StaticStrings.h" #include "Basics/StringUtils.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #include "V8/JavaScriptSecurityContext.h" #include "V8/v8-globals.h" diff --git a/arangod/RestHandler/RestCursorHandler.cpp b/arangod/RestHandler/RestCursorHandler.cpp index a0a1b82685..c200d97ad5 100644 --- a/arangod/RestHandler/RestCursorHandler.cpp +++ b/arangod/RestHandler/RestCursorHandler.cpp @@ -28,6 +28,7 @@ #include "Basics/MutexLocker.h" #include "Basics/StaticStrings.h" #include "Basics/VelocyPackHelper.h" +#include "Basics/ScopeGuard.h" #include "Cluster/ServerState.h" #include "Transaction/Context.h" #include "Utils/Cursor.h" diff --git a/arangod/RestServer/ConsoleThread.cpp b/arangod/RestServer/ConsoleThread.cpp index e732cc78b5..2073767293 100644 --- a/arangod/RestServer/ConsoleThread.cpp +++ b/arangod/RestServer/ConsoleThread.cpp @@ -38,6 +38,10 @@ #include "V8Server/V8DealerFeature.h" #include "VocBase/vocbase.h" +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + using namespace arangodb; using namespace arangodb::application_features; using namespace arangodb::basics; diff --git a/arangod/RestServer/FileDescriptorsFeature.cpp b/arangod/RestServer/FileDescriptorsFeature.cpp index 1115d697fd..df4244eb54 100644 --- a/arangod/RestServer/FileDescriptorsFeature.cpp +++ b/arangod/RestServer/FileDescriptorsFeature.cpp @@ -28,6 +28,10 @@ #include "ProgramOptions/Section.h" #include "Scheduler/SchedulerFeature.h" +#ifdef TRI_HAVE_SYS_RESOURCE_H +#include +#endif + using namespace arangodb::application_features; using namespace arangodb::basics; using namespace arangodb::options; diff --git a/arangod/RestServer/InitDatabaseFeature.cpp b/arangod/RestServer/InitDatabaseFeature.cpp index 2f75ef5c0f..59ccced779 100644 --- a/arangod/RestServer/InitDatabaseFeature.cpp +++ b/arangod/RestServer/InitDatabaseFeature.cpp @@ -23,6 +23,8 @@ #include "InitDatabaseFeature.h" #ifdef _WIN32 +#include +#include #include #include #include @@ -37,6 +39,7 @@ #include "Basics/FileUtils.h" #include "Basics/exitcodes.h" #include "Basics/terminal-utils.h" +#include "Basics/ScopeGuard.h" #include "Cluster/ServerState.h" #include "Logger/Logger.h" #include "Logger/LoggerFeature.h" diff --git a/arangod/RocksDBEngine/RocksDBThrottle.cpp b/arangod/RocksDBEngine/RocksDBThrottle.cpp index de8ec36e15..383014f199 100644 --- a/arangod/RocksDBEngine/RocksDBThrottle.cpp +++ b/arangod/RocksDBEngine/RocksDBThrottle.cpp @@ -36,7 +36,11 @@ #ifndef _WIN32 #include +#endif + +#ifdef TRI_HAVE_UNISTD_H #include +#include #endif #include "Basics/ConditionLocker.h" diff --git a/arangod/StorageEngine/WalAccess.cpp b/arangod/StorageEngine/WalAccess.cpp index d96b2a5d49..d9f20b700f 100644 --- a/arangod/StorageEngine/WalAccess.cpp +++ b/arangod/StorageEngine/WalAccess.cpp @@ -22,6 +22,7 @@ //////////////////////////////////////////////////////////////////////////////// #include "WalAccess.h" +#include "Basics/ScopeGuard.h" #include "Replication/common-defines.h" #include "RestServer/DatabaseFeature.h" #include "VocBase/LogicalCollection.h" diff --git a/arangod/Transaction/Status.cpp b/arangod/Transaction/Status.cpp index 801675630f..d278bf0c27 100644 --- a/arangod/Transaction/Status.cpp +++ b/arangod/Transaction/Status.cpp @@ -24,6 +24,7 @@ #include "Transaction/Status.h" #include +#include namespace arangodb { namespace transaction { diff --git a/arangod/V8Server/V8DealerFeature.cpp b/arangod/V8Server/V8DealerFeature.cpp index 8971526994..61fcaa5a84 100644 --- a/arangod/V8Server/V8DealerFeature.cpp +++ b/arangod/V8Server/V8DealerFeature.cpp @@ -33,6 +33,7 @@ #include "Basics/FileUtils.h" #include "Basics/StringUtils.h" #include "Basics/TimedAction.h" +#include "Basics/ScopeGuard.h" #include "Cluster/ClusterFeature.h" #include "Cluster/ServerState.h" #include "Logger/Logger.h" diff --git a/arangod/V8Server/v8-voccursor.cpp b/arangod/V8Server/v8-voccursor.cpp index 8d962d03fe..67d6eabedc 100644 --- a/arangod/V8Server/v8-voccursor.cpp +++ b/arangod/V8Server/v8-voccursor.cpp @@ -27,6 +27,7 @@ #include "Basics/StringUtils.h" #include "Basics/VelocyPackHelper.h" #include "Basics/conversions.h" +#include "Basics/ScopeGuard.h" #include "Transaction/Context.h" #include "Transaction/V8Context.h" #include "Utils/CollectionNameResolver.h" diff --git a/arangod/VocBase/AccessMode.h b/arangod/VocBase/AccessMode.h index 60ddc5a1dc..35a8991395 100644 --- a/arangod/VocBase/AccessMode.h +++ b/arangod/VocBase/AccessMode.h @@ -27,6 +27,8 @@ #include "Basics/Common.h" #include "Basics/Exceptions.h" +#include + namespace arangodb { struct AccessMode { diff --git a/arangosh/Benchmark/BenchFeature.cpp b/arangosh/Benchmark/BenchFeature.cpp index 16a01462c4..5cb98c6fbf 100644 --- a/arangosh/Benchmark/BenchFeature.cpp +++ b/arangosh/Benchmark/BenchFeature.cpp @@ -26,6 +26,10 @@ #include #include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + #include "ApplicationFeatures/ApplicationServer.h" #include "Basics/StringUtils.h" #include "Benchmark/BenchmarkCounter.h" diff --git a/arangosh/Dump/DumpFeature.cpp b/arangosh/Dump/DumpFeature.cpp index f85a37a2af..f7d2033c10 100644 --- a/arangosh/Dump/DumpFeature.cpp +++ b/arangosh/Dump/DumpFeature.cpp @@ -39,6 +39,7 @@ #include "Basics/StaticStrings.h" #include "Basics/StringUtils.h" #include "Basics/VelocyPackHelper.h" +#include "Basics/ScopeGuard.h" #include "Maskings/Maskings.h" #include "ProgramOptions/ProgramOptions.h" #include "Random/RandomGenerator.h" diff --git a/arangosh/Export/ExportFeature.cpp b/arangosh/Export/ExportFeature.cpp index a160f3609b..530bdb3aba 100644 --- a/arangosh/Export/ExportFeature.cpp +++ b/arangosh/Export/ExportFeature.cpp @@ -25,6 +25,7 @@ #include "ApplicationFeatures/ApplicationServer.h" #include "Basics/FileUtils.h" #include "Basics/StringUtils.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #include "ProgramOptions/ProgramOptions.h" #include "Shell/ClientFeature.h" @@ -36,6 +37,9 @@ #include #include #include +#include +#include +#include using namespace arangodb::basics; using namespace arangodb::httpclient; diff --git a/arangosh/Import/ImportHelper.cpp b/arangosh/Import/ImportHelper.cpp index ceeccfd063..720e2f34c1 100644 --- a/arangosh/Import/ImportHelper.cpp +++ b/arangosh/Import/ImportHelper.cpp @@ -41,6 +41,14 @@ #include #include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + +#include +#include +#include + using namespace arangodb; using namespace arangodb::basics; using namespace arangodb::httpclient; diff --git a/arangosh/Shell/ConsoleFeature.cpp b/arangosh/Shell/ConsoleFeature.cpp index ef42bfe760..e534e34b1f 100644 --- a/arangosh/Shell/ConsoleFeature.cpp +++ b/arangosh/Shell/ConsoleFeature.cpp @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #endif @@ -33,11 +35,16 @@ #include "Basics/StringUtils.h" #include "Basics/messages.h" #include "Basics/terminal-utils.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #include "ProgramOptions/ProgramOptions.h" #include "ProgramOptions/Section.h" #include "Shell/ClientFeature.h" +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + #include #include diff --git a/arangosh/Utils/ManagedDirectory.cpp b/arangosh/Utils/ManagedDirectory.cpp index 77b3cd5ce5..a2c788ec9b 100644 --- a/arangosh/Utils/ManagedDirectory.cpp +++ b/arangosh/Utils/ManagedDirectory.cpp @@ -21,6 +21,12 @@ /// @author Dan Larkin-York //////////////////////////////////////////////////////////////////////////////// +#include + +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + #include "ManagedDirectory.h" #include "Basics/FileUtils.h" diff --git a/arangosh/Utils/ManagedDirectory.h b/arangosh/Utils/ManagedDirectory.h index 390971b974..57eb261cdc 100644 --- a/arangosh/Utils/ManagedDirectory.h +++ b/arangosh/Utils/ManagedDirectory.h @@ -38,6 +38,10 @@ #include "Enterprise/Encryption/EncryptionFeature.h" #endif +#include +#include +#include + namespace arangodb { /** * Manages a single directory in the file system, transparently handling diff --git a/lib/ApplicationFeatures/DaemonFeature.cpp b/lib/ApplicationFeatures/DaemonFeature.cpp index b7b713795f..c7da8bb581 100644 --- a/lib/ApplicationFeatures/DaemonFeature.cpp +++ b/lib/ApplicationFeatures/DaemonFeature.cpp @@ -24,6 +24,9 @@ #include #include +#include +#include +#include #include "Basics/FileUtils.h" #include "Basics/StringUtils.h" @@ -33,6 +36,18 @@ #include "ProgramOptions/ProgramOptions.h" #include "ProgramOptions/Section.h" +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + +#ifdef TRI_HAVE_SYS_WAIT_H +#include +#endif + +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + using namespace arangodb::application_features; using namespace arangodb::basics; using namespace arangodb::options; diff --git a/lib/ApplicationFeatures/PageSizeFeature.cpp b/lib/ApplicationFeatures/PageSizeFeature.cpp index 04fadf2936..dbb12a1e06 100644 --- a/lib/ApplicationFeatures/PageSizeFeature.cpp +++ b/lib/ApplicationFeatures/PageSizeFeature.cpp @@ -22,6 +22,9 @@ #include "PageSizeFeature.h" #include "Logger/Logger.h" +#ifdef TRI_HAVE_UNISTD_H +#include +#endif using namespace arangodb::basics; diff --git a/lib/ApplicationFeatures/PrivilegeFeature.cpp b/lib/ApplicationFeatures/PrivilegeFeature.cpp index 777d52b767..e438e99a9c 100644 --- a/lib/ApplicationFeatures/PrivilegeFeature.cpp +++ b/lib/ApplicationFeatures/PrivilegeFeature.cpp @@ -22,6 +22,12 @@ #include "PrivilegeFeature.h" +#include + +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + #ifdef ARANGODB_HAVE_GETGRGID #include #endif diff --git a/lib/ApplicationFeatures/PrivilegeFeature.h b/lib/ApplicationFeatures/PrivilegeFeature.h index b61cd84df6..61f7afc1e4 100644 --- a/lib/ApplicationFeatures/PrivilegeFeature.h +++ b/lib/ApplicationFeatures/PrivilegeFeature.h @@ -25,6 +25,8 @@ #include "ApplicationFeatures/ApplicationFeature.h" +#include + namespace arangodb { class PrivilegeFeature final : public application_features::ApplicationFeature { @@ -48,4 +50,4 @@ class PrivilegeFeature final : public application_features::ApplicationFeature { } // namespace arangodb -#endif \ No newline at end of file +#endif diff --git a/lib/ApplicationFeatures/SupervisorFeature.cpp b/lib/ApplicationFeatures/SupervisorFeature.cpp index 3ec1ef4bfc..69af6eb9b9 100644 --- a/lib/ApplicationFeatures/SupervisorFeature.cpp +++ b/lib/ApplicationFeatures/SupervisorFeature.cpp @@ -30,6 +30,23 @@ #include "ProgramOptions/ProgramOptions.h" #include "ProgramOptions/Section.h" +#ifdef TRI_HAVE_SYS_PRCTL_H +#include +#endif + +#ifdef TRI_HAVE_SYS_WAIT_H +#include +#endif + +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + +#include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + using namespace arangodb; using namespace arangodb::application_features; using namespace arangodb::basics; diff --git a/lib/Basics/ArangoGlobalContext.cpp b/lib/Basics/ArangoGlobalContext.cpp index d6d9a4b639..711a495336 100644 --- a/lib/Basics/ArangoGlobalContext.cpp +++ b/lib/Basics/ArangoGlobalContext.cpp @@ -21,6 +21,10 @@ //////////////////////////////////////////////////////////////////////////////// #include "ArangoGlobalContext.h" +#include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif #ifdef _WIN32 #include @@ -29,6 +33,10 @@ #endif #endif +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + #include "Basics/FileUtils.h" #include "Basics/StringUtils.h" #include "Basics/files.h" diff --git a/lib/Basics/Common.h b/lib/Basics/Common.h index d7bfcf27cd..d2b6bbb93e 100644 --- a/lib/Basics/Common.h +++ b/lib/Basics/Common.h @@ -33,11 +33,6 @@ // debug malloc for Windows (only used when DEBUG is set) #define _CRTDBG_MAP_ALLOC -// clang-format off -#include -#include -// clang-format on - #ifndef NOMINMAX #define NOMINMAX #endif @@ -52,100 +47,6 @@ // clang-format on #undef TRI_WITHIN_COMMON -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef TRI_HAVE_DIRENT_H -#include -#endif - -#ifdef TRI_HAVE_DIRECT_H -#include -#endif - -#ifdef TRI_HAVE_POSIX_THREADS -#ifdef _GNU_SOURCE -#include -#else -#define _GNU_SOURCE -#include -#undef _GNU_SOURCE -#endif -#endif - -#ifdef TRI_HAVE_PROCESS_H -#include -#endif - -#ifdef TRI_HAVE_SIGNAL_H -#include -#endif - -#ifdef TRI_HAVE_STDBOOL_H -#include -#endif - -#ifdef TRI_HAVE_UNISTD_H -#include -#endif - -#ifdef TRI_HAVE_STRINGS_H -#include -#endif - -#ifdef TRI_HAVE_NETDB_H -#include -#endif - -#ifdef TRI_HAVE_NETINET_STAR_H -#include -#include -#endif - -#ifdef TRI_HAVE_ARPA_INET_H -#include -#endif - -#ifdef TRI_HAVE_SYS_FILE_H -#include -#endif - -#ifdef TRI_HAVE_SYS_RESOURCE_H -#include -#endif - -#ifdef TRI_HAVE_SYS_TIME_H -#include -#endif - -#ifdef TRI_HAVE_SYS_PRCTL_H -#include -#endif - -#ifdef TRI_HAVE_SYS_SOCKET_H -#include -#endif - -#ifdef TRI_HAVE_SYS_TYPES_H -#include -#endif - -#ifdef TRI_HAVE_SYS_WAIT_H -#include -#endif - -#include #include #include #include @@ -167,7 +68,6 @@ #include "Basics/memory.h" #include "Basics/system-compiler.h" #include "Basics/system-functions.h" -#include "Basics/ScopeGuard.h" // clang-format on #undef TRI_WITHIN_COMMON diff --git a/lib/Basics/Exceptions.cpp b/lib/Basics/Exceptions.cpp index 7d0a476d18..d6f0de29ba 100644 --- a/lib/Basics/Exceptions.cpp +++ b/lib/Basics/Exceptions.cpp @@ -24,6 +24,12 @@ #include "Exceptions.h" #include "Logger/Logger.h" +#include + +#ifdef ARANGODB_ENABLE_MAINTAINER_MODE +#include +#endif + using namespace arangodb; using namespace arangodb::basics; diff --git a/lib/Basics/FileResult.cpp b/lib/Basics/FileResult.cpp new file mode 100644 index 0000000000..ae93284e76 --- /dev/null +++ b/lib/Basics/FileResult.cpp @@ -0,0 +1,32 @@ +//////////////////////////////////////////////////////////////////////////////// +/// DISCLAIMER +/// +/// Copyright 2017 ArangoDB GmbH, Cologne, Germany +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// +/// Copyright holder is ArangoDB GmbH, Cologne, Germany +/// +/// @author Dr. Frank Celler +//////////////////////////////////////////////////////////////////////////////// +#include "Basics/FileResult.h" +#include + +namespace arangodb { + +FileResult::FileResult(int sysErrorNumber) + : _result(TRI_ERROR_SYS_ERROR, strerror(sysErrorNumber)), + _sysErrorNumber(sysErrorNumber) {} + + +} diff --git a/lib/Basics/FileResult.h b/lib/Basics/FileResult.h index 6c93d40948..21ca2ea0f5 100644 --- a/lib/Basics/FileResult.h +++ b/lib/Basics/FileResult.h @@ -30,9 +30,7 @@ class FileResult { public: FileResult() : _result(), _sysErrorNumber(0) {} - explicit FileResult(int sysErrorNumber) - : _result(TRI_ERROR_SYS_ERROR, strerror(sysErrorNumber)), - _sysErrorNumber(sysErrorNumber) {} + explicit FileResult(int sysErrorNumber); // forwarded methods bool ok() const { return _result.ok(); } diff --git a/lib/Basics/FileUtils.cpp b/lib/Basics/FileUtils.cpp index 819df4de65..5ed52363e6 100644 --- a/lib/Basics/FileUtils.cpp +++ b/lib/Basics/FileUtils.cpp @@ -30,6 +30,12 @@ #ifdef TRI_HAVE_DIRECT_H #include #endif +#ifdef TRI_HAVE_UNISTD_H +#include +#endif +#include + +#include #include #include @@ -38,6 +44,7 @@ #include "Basics/StringBuffer.h" #include "Basics/files.h" #include "Basics/tri-strings.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" namespace { diff --git a/lib/Basics/HashSet.h b/lib/Basics/HashSet.h index 8291e0ae04..3dbab59a01 100644 --- a/lib/Basics/HashSet.h +++ b/lib/Basics/HashSet.h @@ -11,6 +11,7 @@ #include #include #include +#include namespace emilib { diff --git a/lib/Basics/IndexBucket.h b/lib/Basics/IndexBucket.h index bc83a86d28..ecab5ebd8d 100644 --- a/lib/Basics/IndexBucket.h +++ b/lib/Basics/IndexBucket.h @@ -30,6 +30,10 @@ #include "Basics/memory-map.h" #include "Logger/Logger.h" +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + namespace arangodb { namespace basics { diff --git a/lib/Basics/Mutex.cpp b/lib/Basics/Mutex.cpp index 6dfe68d5a6..8bf544f6d1 100644 --- a/lib/Basics/Mutex.cpp +++ b/lib/Basics/Mutex.cpp @@ -26,6 +26,7 @@ #include "Logger/Logger.h" #include +#include using namespace arangodb; diff --git a/lib/Basics/Nonce.cpp b/lib/Basics/Nonce.cpp index 0be12b662c..0030b5e655 100644 --- a/lib/Basics/Nonce.cpp +++ b/lib/Basics/Nonce.cpp @@ -23,6 +23,7 @@ //////////////////////////////////////////////////////////////////////////////// #include "Nonce.h" +#include #include "Basics/MutexLocker.h" #include "Basics/StringUtils.h" diff --git a/lib/Basics/ScopeGuard.h b/lib/Basics/ScopeGuard.h index 6b4a420c0b..a4fca9050b 100644 --- a/lib/Basics/ScopeGuard.h +++ b/lib/Basics/ScopeGuard.h @@ -24,12 +24,6 @@ #ifndef ARANGODB_BASICS_SCOPE_GUARD_H #define ARANGODB_BASICS_SCOPE_GUARD_H 1 -// must not be included from somewhere except from Common.h -// we will fix this later -#ifndef TRI_WITHIN_COMMON -#error use -#endif - #include #define SCOPE_GUARD_TOKEN_PASTE_WRAPPED(x, y) x##y diff --git a/lib/Basics/StringBuffer.cpp b/lib/Basics/StringBuffer.cpp index a0b78f2bec..04c77b7362 100644 --- a/lib/Basics/StringBuffer.cpp +++ b/lib/Basics/StringBuffer.cpp @@ -23,6 +23,7 @@ #include "StringBuffer.h" +#include "Basics/ScopeGuard.h" #include "Basics/conversions.h" #include "Basics/fpconv.h" #include "Zip/zip.h" @@ -858,3 +859,146 @@ std::ostream& operator<<(std::ostream& stream, arangodb::basics::StringBuffer co stream.write(buffer.begin(), buffer.length()); return stream; } + + +/// @brief uncompress the buffer into stringstream out, using zlib-inflate +int arangodb::basics::StringBuffer::inflate(std::stringstream& out, + size_t bufferSize, + size_t skip) { + z_stream strm; + + strm.zalloc = Z_NULL; + strm.zfree = Z_NULL; + strm.opaque = Z_NULL; + strm.avail_in = 0; + strm.next_in = Z_NULL; + + int res = inflateInit(&strm); + + if (res != Z_OK) { + return TRI_ERROR_OUT_OF_MEMORY; + } + + size_t len = this->length(); + + if (len < skip) { + len = 0; + } else { + len -= skip; + } + + strm.avail_in = (int)len; + strm.next_in = ((unsigned char*)this->c_str()) + skip; + + auto guard = scopeGuard([&strm] { (void)inflateEnd(&strm); }); + + auto buffer = std::make_unique(bufferSize); + + do { + if (strm.avail_in == 0) { + break; + } + + do { + strm.avail_out = (uInt)bufferSize; + strm.next_out = (unsigned char*)buffer.get(); + + res = ::inflate(&strm, Z_NO_FLUSH); + TRI_ASSERT(res != Z_STREAM_ERROR); + + switch (res) { + case Z_NEED_DICT: + case Z_DATA_ERROR: + case Z_MEM_ERROR: { + return TRI_ERROR_INTERNAL; + } + } + + out.write(buffer.get(), bufferSize - strm.avail_out); + } while (strm.avail_out == 0); + } while (res != Z_STREAM_END); + + if (res != Z_STREAM_END) { + return TRI_ERROR_NO_ERROR; + } + + return TRI_ERROR_INTERNAL; +} + +/// @brief uncompress the buffer into StringBuffer out, using zlib-inflate +int arangodb::basics::StringBuffer::inflate(arangodb::basics::StringBuffer& out, + size_t bufferSize, + size_t skip) { + z_stream strm; + + strm.zalloc = Z_NULL; + strm.zfree = Z_NULL; + strm.opaque = Z_NULL; + strm.avail_in = 0; + strm.next_in = Z_NULL; + + size_t len = this->length(); + bool raw = true; + + if (len < skip) { + len = 0; + } else { + len -= skip; + } + + unsigned char* start = ((unsigned char*)this->c_str()) + skip; + + // nginx seems to skip the header - which is wrong according to the + // RFC. The following is a hack to find out, if a header is present. + // There is a 1 in 31 chance that this will not work. + if (2 <= len) { + uint32_t first = (((uint32_t)start[0]) << 8) | ((uint32_t)start[1]); + + if (first % 31 == 0) { + raw = false; + } + } + + int res = raw ? inflateInit2(&strm, -15) : inflateInit(&strm); + + if (res != Z_OK) { + return TRI_ERROR_OUT_OF_MEMORY; + } + + strm.avail_in = (int)len; + strm.next_in = start; + + auto guard = scopeGuard([&strm] { (void)inflateEnd(&strm); }); + + auto buffer = std::make_unique(bufferSize); + + do { + if (strm.avail_in == 0) { + break; + } + + do { + strm.avail_out = (uInt)bufferSize; + strm.next_out = (unsigned char*)buffer.get(); + + res = ::inflate(&strm, Z_NO_FLUSH); + TRI_ASSERT(res != Z_STREAM_ERROR); + + switch (res) { + case Z_NEED_DICT: + case Z_DATA_ERROR: + case Z_MEM_ERROR: { + return TRI_ERROR_INTERNAL; + } + } + + out.appendText(buffer.get(), bufferSize - strm.avail_out); + } while (strm.avail_out == 0); + } while (res != Z_STREAM_END); + + if (res != Z_STREAM_END) { + return TRI_ERROR_NO_ERROR; + } + + return TRI_ERROR_INTERNAL; +} diff --git a/lib/Basics/StringBuffer.h b/lib/Basics/StringBuffer.h index a29d0797fc..342cf90792 100644 --- a/lib/Basics/StringBuffer.h +++ b/lib/Basics/StringBuffer.h @@ -26,10 +26,10 @@ #include "Basics/Common.h" #include "Basics/Exceptions.h" -#include "Zip/zip.h" #include #include +#include /// @brief string buffer with formatting routines struct TRI_string_buffer_t { @@ -291,143 +291,11 @@ class StringBuffer { } /// @brief uncompress the buffer into stringstream out, using zlib-inflate - int inflate(std::stringstream& out, size_t bufferSize = 16384, size_t skip = 0) { - z_stream strm; - - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - - int res = inflateInit(&strm); - - if (res != Z_OK) { - return TRI_ERROR_OUT_OF_MEMORY; - } - - size_t len = this->length(); - - if (len < skip) { - len = 0; - } else { - len -= skip; - } - - strm.avail_in = (int)len; - strm.next_in = ((unsigned char*)this->c_str()) + skip; - - auto guard = scopeGuard([&strm] { (void)inflateEnd(&strm); }); - - auto buffer = std::make_unique(bufferSize); - - do { - if (strm.avail_in == 0) { - break; - } - - do { - strm.avail_out = (uInt)bufferSize; - strm.next_out = (unsigned char*)buffer.get(); - - res = ::inflate(&strm, Z_NO_FLUSH); - TRI_ASSERT(res != Z_STREAM_ERROR); - - switch (res) { - case Z_NEED_DICT: - case Z_DATA_ERROR: - case Z_MEM_ERROR: { - return TRI_ERROR_INTERNAL; - } - } - - out.write(buffer.get(), bufferSize - strm.avail_out); - } while (strm.avail_out == 0); - } while (res != Z_STREAM_END); - - if (res != Z_STREAM_END) { - return TRI_ERROR_NO_ERROR; - } - - return TRI_ERROR_INTERNAL; - } + int inflate(std::stringstream& out, size_t bufferSize = 16384, size_t skip = 0); /// @brief uncompress the buffer into StringBuffer out, using zlib-inflate int inflate(arangodb::basics::StringBuffer& out, size_t bufferSize = 16384, - size_t skip = 0) { - z_stream strm; - - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - - size_t len = this->length(); - bool raw = true; - - if (len < skip) { - len = 0; - } else { - len -= skip; - } - - unsigned char* start = ((unsigned char*)this->c_str()) + skip; - - // nginx seems to skip the header - which is wrong according to the - // RFC. The following is a hack to find out, if a header is present. - // There is a 1 in 31 chance that this will not work. - if (2 <= len) { - uint32_t first = (((uint32_t)start[0]) << 8) | ((uint32_t)start[1]); - - if (first % 31 == 0) { - raw = false; - } - } - - int res = raw ? inflateInit2(&strm, -15) : inflateInit(&strm); - - if (res != Z_OK) { - return TRI_ERROR_OUT_OF_MEMORY; - } - - strm.avail_in = (int)len; - strm.next_in = start; - - auto guard = scopeGuard([&strm] { (void)inflateEnd(&strm); }); - - auto buffer = std::make_unique(bufferSize); - - do { - if (strm.avail_in == 0) { - break; - } - - do { - strm.avail_out = (uInt)bufferSize; - strm.next_out = (unsigned char*)buffer.get(); - - res = ::inflate(&strm, Z_NO_FLUSH); - TRI_ASSERT(res != Z_STREAM_ERROR); - - switch (res) { - case Z_NEED_DICT: - case Z_DATA_ERROR: - case Z_MEM_ERROR: { - return TRI_ERROR_INTERNAL; - } - } - - out.appendText(buffer.get(), bufferSize - strm.avail_out); - } while (strm.avail_out == 0); - } while (res != Z_STREAM_END); - - if (res != Z_STREAM_END) { - return TRI_ERROR_NO_ERROR; - } - - return TRI_ERROR_INTERNAL; - } + size_t skip = 0); /// @brief returns the low level buffer TRI_string_buffer_t* stringBuffer() { return &_buffer; } diff --git a/lib/Basics/StringUtils.cpp b/lib/Basics/StringUtils.cpp index d9830c4210..e23b3b9b4a 100644 --- a/lib/Basics/StringUtils.cpp +++ b/lib/Basics/StringUtils.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include diff --git a/lib/Basics/Thread.cpp b/lib/Basics/Thread.cpp index 9d364cb688..3feaed9823 100644 --- a/lib/Basics/Thread.cpp +++ b/lib/Basics/Thread.cpp @@ -26,15 +26,23 @@ #include #include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif #include "ApplicationFeatures/ApplicationServer.h" #include "Basics/ConditionLocker.h" #include "Basics/Exceptions.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #include #include +#ifdef TRI_HAVE_PROCESS_H +#include +#endif + using namespace arangodb; using namespace arangodb::application_features; using namespace arangodb::basics; diff --git a/lib/Basics/VelocyPackHelper.cpp b/lib/Basics/VelocyPackHelper.cpp index 09780481e1..ae860d2b5a 100644 --- a/lib/Basics/VelocyPackHelper.cpp +++ b/lib/Basics/VelocyPackHelper.cpp @@ -33,6 +33,7 @@ #include "Basics/files.h" #include "Basics/hashes.h" #include "Basics/tri-strings.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #include @@ -44,6 +45,13 @@ #include #include +#include +#include +#include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + extern "C" { unsigned long long XXH64(const void* input, size_t length, unsigned long long seed); } diff --git a/lib/Basics/application-exit.cpp b/lib/Basics/application-exit.cpp index 6dcda40667..bcf417730e 100644 --- a/lib/Basics/application-exit.cpp +++ b/lib/Basics/application-exit.cpp @@ -23,6 +23,9 @@ #include "Basics/CleanupFunctions.h" #include "Basics/Common.h" +#ifdef TRI_HAVE_UNISTD_H +#include +#endif static void defaultExitFunction(int, void*); diff --git a/lib/Basics/conversions.cpp b/lib/Basics/conversions.cpp index 77bade5525..bb6aa23750 100644 --- a/lib/Basics/conversions.cpp +++ b/lib/Basics/conversions.cpp @@ -23,6 +23,8 @@ #include "conversions.h" #include "Basics/tri-strings.h" +#include +#include static char const* const HEX = "0123456789ABCDEF"; diff --git a/lib/Basics/csv.cpp b/lib/Basics/csv.cpp index 901c32f288..68e8c90479 100644 --- a/lib/Basics/csv.cpp +++ b/lib/Basics/csv.cpp @@ -22,6 +22,7 @@ //////////////////////////////////////////////////////////////////////////////// #include "csv.h" +#include //////////////////////////////////////////////////////////////////////////////// /// @brief inits a CSV parser diff --git a/lib/Basics/error.cpp b/lib/Basics/error.cpp index 43f2bca398..c5270ec76c 100644 --- a/lib/Basics/error.cpp +++ b/lib/Basics/error.cpp @@ -23,6 +23,7 @@ #include "Basics/Common.h" #include "Basics/exitcodes.h" +#include /// @brief error number and system error struct ErrorContainer { diff --git a/lib/Basics/files.cpp b/lib/Basics/files.cpp index 6ffac245a0..d81796c1cb 100644 --- a/lib/Basics/files.cpp +++ b/lib/Basics/files.cpp @@ -31,6 +31,7 @@ #endif #include +#include #include "Basics/Exceptions.h" #include "Basics/FileUtils.h" @@ -45,9 +46,29 @@ #include "Basics/hashes.h" #include "Basics/tri-strings.h" #include "Basics/Utf8Helper.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #include "Random/RandomGenerator.h" +#ifdef TRI_HAVE_DIRENT_H +#include +#endif + +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + +#ifdef TRI_HAVE_SYS_TIME_H +#include +#endif + +#include +#include +#include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + using namespace arangodb::basics; using namespace arangodb; diff --git a/lib/Basics/hashes.cpp b/lib/Basics/hashes.cpp index 1773ba0eec..e8f75e6841 100644 --- a/lib/Basics/hashes.cpp +++ b/lib/Basics/hashes.cpp @@ -23,6 +23,8 @@ #include "hashes.h" +#include + /// @brief the FNV hash work horse static inline uint64_t FnvWork(uint8_t value, uint64_t hash) { static uint64_t const MagicPrime = 0x00000100000001b3ULL; diff --git a/lib/Basics/locks-posix.cpp b/lib/Basics/locks-posix.cpp index 0ebf1e554c..3708aeab33 100644 --- a/lib/Basics/locks-posix.cpp +++ b/lib/Basics/locks-posix.cpp @@ -23,10 +23,16 @@ #include #include +#include #include "locks.h" #ifdef TRI_HAVE_POSIX_THREADS + +#ifdef TRI_HAVE_SYS_TIME_H +#include +#endif + #include "Logger/Logger.h" /// @brief initializes a new condition variable diff --git a/lib/Basics/memory-map-posix.cpp b/lib/Basics/memory-map-posix.cpp index 3664e763dd..bab2867d3d 100644 --- a/lib/Basics/memory-map-posix.cpp +++ b/lib/Basics/memory-map-posix.cpp @@ -29,6 +29,7 @@ #include "Logger/Logger.h" #include +#include using namespace arangodb; diff --git a/lib/Basics/memory.cpp b/lib/Basics/memory.cpp index ba4f538912..15e7025df7 100644 --- a/lib/Basics/memory.cpp +++ b/lib/Basics/memory.cpp @@ -23,6 +23,10 @@ #include "Basics/Common.h" +#ifdef ARANGODB_ENABLE_MAINTAINER_MODE +#include +#endif + /// @brief basic memory management for allocate void* TRI_Allocate(size_t n) { void* m = ::malloc(n); diff --git a/lib/Basics/operating-system.h b/lib/Basics/operating-system.h index eb8891deca..57a9b3631a 100644 --- a/lib/Basics/operating-system.h +++ b/lib/Basics/operating-system.h @@ -836,7 +836,7 @@ typedef unsigned char bool; #define TRI_LSEEK ::_lseeki64 #define TRI_MKDIR(a, b) TRI_MKDIR_WIN32(a) #define TRI_OPEN(a, b) TRI_OPEN_WIN32((a), (b)) -#define TRI_READ ::_read +#define TRI_READ(a, b, c) static_cast(::_read(a, b, c)) #define TRI_DUP ::_dup #define TRI_WRITE ::_write #define TRI_FDOPEN(a, b) ::_fdopen((a), (b)) diff --git a/lib/Basics/process-utils.cpp b/lib/Basics/process-utils.cpp index c3f9afb249..8784cdef49 100644 --- a/lib/Basics/process-utils.cpp +++ b/lib/Basics/process-utils.cpp @@ -23,15 +23,24 @@ #include "process-utils.h" +#include +#include #if defined(TRI_HAVE_MACOS_MEM_STATS) #include -#include #endif #ifdef TRI_HAVE_SYS_PRCTL_H #include #endif +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + +#ifdef TRI_HAVE_SYS_WAIT_H +#include +#endif + #ifdef TRI_HAVE_MACH #include #include @@ -47,6 +56,11 @@ #include #include #endif +#include + +#ifdef TRI_HAVE_UNISTD_H +#include +#endif #include "Basics/MutexLocker.h" #include "Basics/StringBuffer.h" diff --git a/lib/Basics/socket-utils.cpp b/lib/Basics/socket-utils.cpp index 50fae19eba..d6ec952dae 100644 --- a/lib/Basics/socket-utils.cpp +++ b/lib/Basics/socket-utils.cpp @@ -25,6 +25,16 @@ #include "Logger/Logger.h" +#ifdef TRI_HAVE_NETDB_H +#include +#endif + +#include +#include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + //////////////////////////////////////////////////////////////////////////////// /// @brief closes a socket //////////////////////////////////////////////////////////////////////////////// @@ -346,3 +356,36 @@ int TRI_InetPton6(char const* src, unsigned char* dst) { return TRI_ERROR_NO_ERROR; } + +#ifdef _WIN32 +bool TRI_setsockopttimeout(TRI_socket_t s, double timeout) { + DWORD to = (DWORD)timeout * 1000; + + if (TRI_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char const*)&to, sizeof(to)) != 0) { + return false; + } + + if (TRI_setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (char const*)&to, sizeof(to)) != 0) { + return false; + } + return true; +} +#else +bool TRI_setsockopttimeout(TRI_socket_t s, double timeout) { + struct timeval tv; + + // shut up Valgrind + memset(&tv, 0, sizeof(tv)); + tv.tv_sec = (time_t)timeout; + tv.tv_usec = (suseconds_t)((timeout - (double)tv.tv_sec) * 1000000.0); + + if (TRI_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) != 0) { + return false; + } + + if (TRI_setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) != 0) { + return false; + } + return true; +} +#endif diff --git a/lib/Basics/socket-utils.h b/lib/Basics/socket-utils.h index e9a967069b..983c729219 100644 --- a/lib/Basics/socket-utils.h +++ b/lib/Basics/socket-utils.h @@ -26,6 +26,13 @@ #include "Basics/Common.h" +#ifdef TRI_HAVE_SYS_TYPES_H +#include +#endif +#ifdef TRI_HAVE_SYS_SOCKET_H +#include +#endif + #ifdef TRI_HAVE_WINSOCK2_H #include #include @@ -178,38 +185,7 @@ static inline int TRI_setsockopt(TRI_socket_t s, int level, int optname, /// @brief setsockopt abstraction for different OSes //////////////////////////////////////////////////////////////////////////////// -#ifdef _WIN32 -static inline bool TRI_setsockopttimeout(TRI_socket_t s, double timeout) { - DWORD to = (DWORD)timeout * 1000; - - if (TRI_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char const*)&to, sizeof(to)) != 0) { - return false; - } - - if (TRI_setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (char const*)&to, sizeof(to)) != 0) { - return false; - } - return true; -} -#else -static inline bool TRI_setsockopttimeout(TRI_socket_t s, double timeout) { - struct timeval tv; - - // shut up Valgrind - memset(&tv, 0, sizeof(tv)); - tv.tv_sec = (time_t)timeout; - tv.tv_usec = (suseconds_t)((timeout - (double)tv.tv_sec) * 1000000.0); - - if (TRI_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) != 0) { - return false; - } - - if (TRI_setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) != 0) { - return false; - } - return true; -} -#endif +bool TRI_setsockopttimeout(TRI_socket_t s, double timeout); //////////////////////////////////////////////////////////////////////////////// /// @brief checks whether or not a socket is valid diff --git a/lib/Basics/system-functions.cpp b/lib/Basics/system-functions.cpp index 951e3b9063..c48de18040 100644 --- a/lib/Basics/system-functions.cpp +++ b/lib/Basics/system-functions.cpp @@ -25,6 +25,9 @@ #include #include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif using namespace arangodb; using namespace arangodb::utilities; diff --git a/lib/Basics/terminal-utils.cpp b/lib/Basics/terminal-utils.cpp index 3daa0ee0a8..38effc57f0 100644 --- a/lib/Basics/terminal-utils.cpp +++ b/lib/Basics/terminal-utils.cpp @@ -22,6 +22,9 @@ //////////////////////////////////////////////////////////////////////////////// #include "terminal-utils.h" +#ifdef TRI_HAVE_UNISTD_H +#include +#endif //////////////////////////////////////////////////////////////////////////////// /// @brief returns the columns width diff --git a/lib/Basics/threads-posix.cpp b/lib/Basics/threads-posix.cpp index 8ea8ab534c..a2729baa22 100644 --- a/lib/Basics/threads-posix.cpp +++ b/lib/Basics/threads-posix.cpp @@ -23,6 +23,8 @@ #include "threads.h" +#include + #ifdef TRI_HAVE_POSIX_THREADS #include @@ -34,6 +36,10 @@ #include #endif +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + #include "Basics/tri-strings.h" #include "Logger/Logger.h" diff --git a/lib/Basics/tri-zip.cpp b/lib/Basics/tri-zip.cpp index a89cc43a8f..884c210c79 100644 --- a/lib/Basics/tri-zip.cpp +++ b/lib/Basics/tri-zip.cpp @@ -22,11 +22,13 @@ //////////////////////////////////////////////////////////////////////////////// #include "tri-zip.h" +#include #include "Basics/Common.h" #include "Basics/FileUtils.h" #include "Basics/files.h" #include "Basics/tri-strings.h" +#include "Basics/ScopeGuard.h" #include "Zip/unzip.h" #include "Zip/zip.h" @@ -35,6 +37,10 @@ #include "Zip/iowin32.h" #endif +#include + +#include + using namespace arangodb; namespace { diff --git a/lib/Basics/vector.cpp b/lib/Basics/vector.cpp index d3f15b119e..9f797985c4 100644 --- a/lib/Basics/vector.cpp +++ b/lib/Basics/vector.cpp @@ -22,6 +22,7 @@ //////////////////////////////////////////////////////////////////////////////// #include "vector.h" +#include //////////////////////////////////////////////////////////////////////////////// /// @brief grow rate diff --git a/lib/Basics/win-utils.cpp b/lib/Basics/win-utils.cpp index b706d8e04e..32d7d39cb7 100644 --- a/lib/Basics/win-utils.cpp +++ b/lib/Basics/win-utils.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include "win-utils.h" @@ -50,6 +51,7 @@ #include "Basics/directories.h" #include "Basics/files.h" #include "Basics/tri-strings.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #ifdef ARANGODB_ENABLE_MAINTAINER_MODE diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 5426c66d30..9164dba2b2 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -178,6 +178,7 @@ add_library(${LIB_ARANGO} STATIC Basics/Nonce.cpp Basics/ReadWriteLock.cpp Basics/Result.cpp + Basics/FileResult.cpp Basics/RocksDBLogger.cpp Basics/RocksDBUtils.cpp Basics/SharedPRNG.cpp diff --git a/lib/Endpoint/Endpoint.cpp b/lib/Endpoint/Endpoint.cpp index 0f68973cb3..78da835c9a 100644 --- a/lib/Endpoint/Endpoint.cpp +++ b/lib/Endpoint/Endpoint.cpp @@ -21,6 +21,7 @@ /// @author Jan Steemann //////////////////////////////////////////////////////////////////////////////// +#include #include "Endpoint.h" #include "Basics/Exceptions.h" diff --git a/lib/Endpoint/EndpointIp.cpp b/lib/Endpoint/EndpointIp.cpp index 1a83df3dd0..f20b90d6ba 100644 --- a/lib/Endpoint/EndpointIp.cpp +++ b/lib/Endpoint/EndpointIp.cpp @@ -29,6 +29,17 @@ #include "Endpoint/Endpoint.h" +#ifdef TRI_HAVE_NETDB_H +#include +#endif + +#ifdef TRI_HAVE_NETINET_STAR_H +#include +#include +#endif + +#include + using namespace arangodb; using namespace arangodb::basics; diff --git a/lib/Endpoint/EndpointIp.h b/lib/Endpoint/EndpointIp.h index 04bdb3a022..7a3fd43719 100644 --- a/lib/Endpoint/EndpointIp.h +++ b/lib/Endpoint/EndpointIp.h @@ -27,6 +27,8 @@ #include "Endpoint/Endpoint.h" +struct addrinfo; + namespace arangodb { class EndpointIp : public Endpoint { protected: diff --git a/lib/Endpoint/EndpointUnixDomain.cpp b/lib/Endpoint/EndpointUnixDomain.cpp index 1632c9e972..227ce13188 100644 --- a/lib/Endpoint/EndpointUnixDomain.cpp +++ b/lib/Endpoint/EndpointUnixDomain.cpp @@ -28,6 +28,7 @@ #include "Basics/FileUtils.h" #include "Endpoint/Endpoint.h" #include "Logger/Logger.h" +#include using namespace arangodb; using namespace arangodb::basics; diff --git a/lib/Logger/LogAppenderFile.cpp b/lib/Logger/LogAppenderFile.cpp index c8e2ecb2b4..b630967227 100644 --- a/lib/Logger/LogAppenderFile.cpp +++ b/lib/Logger/LogAppenderFile.cpp @@ -30,6 +30,12 @@ #include "Logger/Logger.h" #include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif +#include +#include +#include using namespace arangodb; using namespace arangodb::basics; @@ -334,3 +340,10 @@ void LogAppenderStdStream::writeLogMessage(int fd, bool useColors, } } } + + +LogAppenderStderr::LogAppenderStderr(std::string const& filter) + : LogAppenderStdStream("+", filter, STDERR_FILENO) {} + +LogAppenderStdout::LogAppenderStdout(std::string const& filter) + : LogAppenderStdStream("-", filter, STDOUT_FILENO) {} diff --git a/lib/Logger/LogAppenderFile.h b/lib/Logger/LogAppenderFile.h index 22a866a895..e73e6733dd 100644 --- a/lib/Logger/LogAppenderFile.h +++ b/lib/Logger/LogAppenderFile.h @@ -118,14 +118,12 @@ class LogAppenderStdStream : public LogAppenderStream { class LogAppenderStderr final : public LogAppenderStdStream { public: - explicit LogAppenderStderr(std::string const& filter) - : LogAppenderStdStream("+", filter, STDERR_FILENO) {} + explicit LogAppenderStderr(std::string const& filter); }; class LogAppenderStdout final : public LogAppenderStdStream { public: - explicit LogAppenderStdout(std::string const& filter) - : LogAppenderStdStream("-", filter, STDOUT_FILENO) {} + explicit LogAppenderStdout(std::string const& filter); }; } // namespace arangodb diff --git a/lib/Logger/LogAppenderSyslog.cpp b/lib/Logger/LogAppenderSyslog.cpp index 51b85b21c2..430e13a403 100644 --- a/lib/Logger/LogAppenderSyslog.cpp +++ b/lib/Logger/LogAppenderSyslog.cpp @@ -35,6 +35,7 @@ using namespace arangodb; #include "syslog_names.h" #endif +#include #include "Basics/MutexLocker.h" #include "Basics/StringUtils.h" diff --git a/lib/Logger/Logger.cpp b/lib/Logger/Logger.cpp index fb1c1f310d..268c94ca87 100644 --- a/lib/Logger/Logger.cpp +++ b/lib/Logger/Logger.cpp @@ -24,6 +24,7 @@ #include "Logger.h" +#include #include "Basics/ArangoGlobalContext.h" #include "Basics/Common.h" #include "Basics/ConditionLocker.h" diff --git a/lib/Logger/LoggerFeature.cpp b/lib/Logger/LoggerFeature.cpp index 4ed4193ebc..7f729f357d 100644 --- a/lib/Logger/LoggerFeature.cpp +++ b/lib/Logger/LoggerFeature.cpp @@ -26,6 +26,10 @@ #include #endif +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + #include "Basics/conversions.h" #include "Basics/StringUtils.h" #include "Logger/LogAppender.h" diff --git a/lib/ProgramOptions/ProgramOptions.cpp b/lib/ProgramOptions/ProgramOptions.cpp index ce5a6652c1..e7992fe110 100644 --- a/lib/ProgramOptions/ProgramOptions.cpp +++ b/lib/ProgramOptions/ProgramOptions.cpp @@ -34,6 +34,9 @@ #include #include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif #define ARANGODB_PROGRAM_OPTIONS_PROGNAME "#progname#" diff --git a/lib/Random/RandomGenerator.cpp b/lib/Random/RandomGenerator.cpp index 4c1579b691..3110f6f0cc 100644 --- a/lib/Random/RandomGenerator.cpp +++ b/lib/Random/RandomGenerator.cpp @@ -25,6 +25,14 @@ #include #include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif +#include +#include +#include + +#include #ifdef _WIN32 #include diff --git a/lib/Rest/HttpResponse.cpp b/lib/Rest/HttpResponse.cpp index 2e3b703b13..09195a3c94 100644 --- a/lib/Rest/HttpResponse.cpp +++ b/lib/Rest/HttpResponse.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include "Basics/Exceptions.h" #include "Basics/StringBuffer.h" diff --git a/lib/SimpleHttpClient/Communicator.cpp b/lib/SimpleHttpClient/Communicator.cpp index fabd19dfb9..aaec5ecbc5 100644 --- a/lib/SimpleHttpClient/Communicator.cpp +++ b/lib/SimpleHttpClient/Communicator.cpp @@ -28,6 +28,10 @@ #include "Logger/Logger.h" #include "Rest/HttpRequest.h" +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + using namespace arangodb; using namespace arangodb::basics; using namespace arangodb::communicator; diff --git a/lib/SimpleHttpClient/SimpleHttpClient.cpp b/lib/SimpleHttpClient/SimpleHttpClient.cpp index c26fd945cf..47ca27f2c8 100644 --- a/lib/SimpleHttpClient/SimpleHttpClient.cpp +++ b/lib/SimpleHttpClient/SimpleHttpClient.cpp @@ -25,8 +25,9 @@ #include "SimpleHttpClient.h" -#include "ApplicationFeatures/CommunicationPhase.h" +#include "Basics/ScopeGuard.h" #include "Basics/StringUtils.h" +#include "ApplicationFeatures/CommunicationPhase.h" #include "Logger/Logger.h" #include "Rest/HttpResponse.h" #include "SimpleHttpClient/GeneralClientConnection.h" diff --git a/lib/SimpleHttpClient/SslClientConnection.h b/lib/SimpleHttpClient/SslClientConnection.h index 53db4ef47e..2714e0457f 100644 --- a/lib/SimpleHttpClient/SslClientConnection.h +++ b/lib/SimpleHttpClient/SslClientConnection.h @@ -26,7 +26,6 @@ #include "Basics/Common.h" -#include "Basics/socket-utils.h" #include "SimpleHttpClient/GeneralClientConnection.h" #include "openssl/bio.h" diff --git a/lib/Ssl/SslInterface.cpp b/lib/Ssl/SslInterface.cpp index f4519046a1..63aeb31c14 100644 --- a/lib/Ssl/SslInterface.cpp +++ b/lib/Ssl/SslInterface.cpp @@ -25,8 +25,10 @@ #include "Basics/Exceptions.h" #include "Basics/StringUtils.h" +#include "Basics/ScopeGuard.h" #include "Random/UniformCharacter.h" +#include #include #include #include diff --git a/lib/Utilities/LinenoiseShell.cpp b/lib/Utilities/LinenoiseShell.cpp index 171a113543..79078520a8 100644 --- a/lib/Utilities/LinenoiseShell.cpp +++ b/lib/Utilities/LinenoiseShell.cpp @@ -30,6 +30,10 @@ extern "C" { #include "Logger/Logger.h" #include "Utilities/Completer.h" +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + using namespace arangodb; //////////////////////////////////////////////////////////////////////////////// diff --git a/lib/Utilities/ShellBase.cpp b/lib/Utilities/ShellBase.cpp index 205a2cdea0..89d30aa7c0 100644 --- a/lib/Utilities/ShellBase.cpp +++ b/lib/Utilities/ShellBase.cpp @@ -23,6 +23,8 @@ #include "ShellBase.h" +#include + #include "Basics/StringUtils.h" #include "Basics/files.h" #include "Utilities/Completer.h" diff --git a/lib/V8/V8LineEditor.cpp b/lib/V8/V8LineEditor.cpp index 91044c041c..f7b41a047d 100644 --- a/lib/V8/V8LineEditor.cpp +++ b/lib/V8/V8LineEditor.cpp @@ -32,6 +32,10 @@ #include "Utilities/ShellBase.h" #include "V8/v8-utils.h" +#ifdef TRI_HAVE_SIGNAL_H +#include +#endif + using namespace arangodb; namespace { diff --git a/lib/V8/v8-shell.cpp b/lib/V8/v8-shell.cpp index 61f4c565b0..ccd66674d4 100644 --- a/lib/V8/v8-shell.cpp +++ b/lib/V8/v8-shell.cpp @@ -35,6 +35,12 @@ #include "V8/v8-utils.h" #include +#include +#include +#include +#ifdef TRI_HAVE_UNISTD_H +#include +#endif using namespace arangodb; diff --git a/lib/V8/v8-utils.cpp b/lib/V8/v8-utils.cpp index 85f234e1d0..9d20b58f63 100644 --- a/lib/V8/v8-utils.cpp +++ b/lib/V8/v8-utils.cpp @@ -25,6 +25,7 @@ #ifdef _WIN32 #include +#include #include #include #include "Basics/win-utils.h" @@ -33,6 +34,7 @@ #include #include #include +#include #include #include "unicode/normalizer2.h" @@ -54,6 +56,7 @@ #include "Basics/terminal-utils.h" #include "Basics/tri-strings.h" #include "Basics/tri-zip.h" +#include "Basics/ScopeGuard.h" #include "Logger/Logger.h" #include "Random/RandomGenerator.h" #include "Random/UniformCharacter.h" diff --git a/lib/Zip/ioapi.cpp b/lib/Zip/ioapi.cpp index 9209f50bf1..45a3503cc8 100644 --- a/lib/Zip/ioapi.cpp +++ b/lib/Zip/ioapi.cpp @@ -30,6 +30,7 @@ #include "ioapi.h" #include +#include #include "Basics/Exceptions.h" voidpf call_zopen64(const zlib_filefunc64_32_def* pfilefunc, const void* filename, int mode) { diff --git a/tests/Basics/LoggerTest.cpp b/tests/Basics/LoggerTest.cpp index 117b0cec16..4c504c4efe 100644 --- a/tests/Basics/LoggerTest.cpp +++ b/tests/Basics/LoggerTest.cpp @@ -33,6 +33,10 @@ #include "Logger/Logger.h" #include "Logger/LogAppenderFile.h" +#ifdef TRI_HAVE_UNISTD_H +#include +#endif + using namespace arangodb; using namespace arangodb::basics; diff --git a/tests/Basics/conversions-test.cpp b/tests/Basics/conversions-test.cpp index 7e2b232eaa..c3b55abb91 100644 --- a/tests/Basics/conversions-test.cpp +++ b/tests/Basics/conversions-test.cpp @@ -31,7 +31,8 @@ #include "Basics/conversions.h" -#include +#include + // ----------------------------------------------------------------------------- // --SECTION-- private macros diff --git a/tests/Basics/csv-test.cpp b/tests/Basics/csv-test.cpp index ad6b4ea516..21e5f3cf87 100644 --- a/tests/Basics/csv-test.cpp +++ b/tests/Basics/csv-test.cpp @@ -30,6 +30,7 @@ #include "catch.hpp" #include +#include #include "Basics/csv.h" #include "Basics/tri-strings.h" diff --git a/tests/Cluster/ClusterRepairsTest.cpp b/tests/Cluster/ClusterRepairsTest.cpp index 203d32bbf8..99cd4025fc 100644 --- a/tests/Cluster/ClusterRepairsTest.cpp +++ b/tests/Cluster/ClusterRepairsTest.cpp @@ -22,6 +22,7 @@ #include "catch.hpp" +#include "Basics/ScopeGuard.h" #include "Cluster/ClusterRepairs.h" #include "Cluster/ServerState.h"