diff options
author | 2023-10-12 20:57:02 +0000 | |
---|---|---|
committer | 2023-10-25 13:37:21 -0700 | |
commit | 3caae303bdeff661b0551ea32b5ac679aeb1f38a (patch) | |
tree | 98727eace536e76507c9a0afe7f14893996b7a49 | |
parent | 373a25271ca7ad5f6b5884b0a36c26d24be245fd (diff) |
Migrate off of base::StringPrintf
Bug: 302723053
Test: mma
Change-Id: Id7f0b1d0a11747a5a61a2550f05d7caaabf339a3
-rw-r--r-- | libs/binder/RpcState.cpp | 33 | ||||
-rw-r--r-- | libs/binder/servicedispatcher.cpp | 11 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcTest.cpp | 13 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcTestCommon.h | 4 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcTestServiceTrusty.cpp | 2 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcTestTrusty.cpp | 1 | ||||
-rw-r--r-- | libs/binder/tests/format.h | 29 | ||||
-rw-r--r-- | libs/binder/trusty/binderRpcTest/rules.mk | 1 | ||||
-rw-r--r-- | libs/binder/trusty/binderRpcTest/service/rules.mk | 1 |
9 files changed, 62 insertions, 33 deletions
diff --git a/libs/binder/RpcState.cpp b/libs/binder/RpcState.cpp index 5046253837..26a2f4fa39 100644 --- a/libs/binder/RpcState.cpp +++ b/libs/binder/RpcState.cpp @@ -20,7 +20,6 @@ #include <android-base/macros.h> #include <android-base/scopeguard.h> -#include <android-base/stringprintf.h> #include <binder/BpBinder.h> #include <binder/IPCThreadState.h> #include <binder/RpcServer.h> @@ -30,6 +29,7 @@ #include "Utils.h" #include <random> +#include <sstream> #include <inttypes.h> @@ -39,8 +39,6 @@ namespace android { -using base::StringPrintf; - #if RPC_FLAKE_PRONE void rpcMaybeWaitToFlake() { [[clang::no_destroy]] static std::random_device r; @@ -329,8 +327,10 @@ std::string RpcState::BinderNode::toString() const { desc = "(not promotable)"; } - return StringPrintf("node{%p times sent: %zu times recd: %zu type: %s}", - this->binder.unsafe_get(), this->timesSent, this->timesRecd, desc); + std::stringstream ss; + ss << "node{" << intptr_t(this->binder.unsafe_get()) << " times sent: " << this->timesSent + << " times recd: " << this->timesRecd << " type: " << desc << "}"; + return ss.str(); } RpcState::CommandData::CommandData(size_t size) : mSize(size) { @@ -1220,10 +1220,11 @@ status_t RpcState::validateParcel(const sp<RpcSession>& session, const Parcel& p uint32_t protocolVersion = session->getProtocolVersion().value(); if (protocolVersion < RPC_WIRE_PROTOCOL_VERSION_RPC_HEADER_FEATURE_EXPLICIT_PARCEL_SIZE && !rpcFields->mObjectPositions.empty()) { - *errorMsg = StringPrintf("Parcel has attached objects but the session's protocol version " - "(%" PRIu32 ") is too old, must be at least %" PRIu32, - protocolVersion, - RPC_WIRE_PROTOCOL_VERSION_RPC_HEADER_FEATURE_EXPLICIT_PARCEL_SIZE); + std::stringstream ss; + ss << "Parcel has attached objects but the session's protocol version (" << protocolVersion + << ") is too old, must be at least " + << RPC_WIRE_PROTOCOL_VERSION_RPC_HEADER_FEATURE_EXPLICIT_PARCEL_SIZE; + *errorMsg = ss.str(); return BAD_VALUE; } @@ -1236,9 +1237,10 @@ status_t RpcState::validateParcel(const sp<RpcSession>& session, const Parcel& p case RpcSession::FileDescriptorTransportMode::UNIX: { constexpr size_t kMaxFdsPerMsg = 253; if (rpcFields->mFds->size() > kMaxFdsPerMsg) { - *errorMsg = StringPrintf("Too many file descriptors in Parcel for unix " - "domain socket: %zu (max is %zu)", - rpcFields->mFds->size(), kMaxFdsPerMsg); + std::stringstream ss; + ss << "Too many file descriptors in Parcel for unix domain socket: " + << rpcFields->mFds->size() << " (max is " << kMaxFdsPerMsg << ")"; + *errorMsg = ss.str(); return BAD_VALUE; } break; @@ -1249,9 +1251,10 @@ status_t RpcState::validateParcel(const sp<RpcSession>& session, const Parcel& p // available on Android constexpr size_t kMaxFdsPerMsg = 8; if (rpcFields->mFds->size() > kMaxFdsPerMsg) { - *errorMsg = StringPrintf("Too many file descriptors in Parcel for Trusty " - "IPC connection: %zu (max is %zu)", - rpcFields->mFds->size(), kMaxFdsPerMsg); + std::stringstream ss; + ss << "Too many file descriptors in Parcel for Trusty IPC connection: " + << rpcFields->mFds->size() << " (max is " << kMaxFdsPerMsg << ")"; + *errorMsg = ss.str(); return BAD_VALUE; } break; diff --git a/libs/binder/servicedispatcher.cpp b/libs/binder/servicedispatcher.cpp index 5bf9680284..f2693dda95 100644 --- a/libs/binder/servicedispatcher.cpp +++ b/libs/binder/servicedispatcher.cpp @@ -22,7 +22,6 @@ #include <android-base/file.h> #include <android-base/logging.h> #include <android-base/properties.h> -#include <android-base/stringprintf.h> #include <android/debug/BnAdbCallback.h> #include <android/debug/IAdbManager.h> #include <android/os/BnServiceManager.h> @@ -46,7 +45,6 @@ using android::base::LogdLogger; using android::base::LogId; using android::base::LogSeverity; using android::base::StdioLogger; -using android::base::StringPrintf; using std::string_view_literals::operator""sv; namespace { @@ -57,11 +55,12 @@ using android::debug::IAdbManager; int Usage(const char* program) { auto basename = Basename(program); - auto format = R"(dispatch calls to RPC service. + // clang-format off + LOG(ERROR) << R"(dispatch calls to RPC service. Usage: - %s [-g] [-i <ip_address>] <service_name> + )" << basename << R"( [-g] [-i <ip_address>] <service_name> <service_name>: the service to connect to. - %s [-g] manager + )" << basename << R"( [-g] manager Runs an RPC-friendly service that redirects calls to servicemanager. -g: use getService() instead of checkService(). @@ -71,7 +70,7 @@ Usage: blocks until killed. Otherwise, writes error message to stderr and exits with non-zero code. )"; - LOG(ERROR) << StringPrintf(format, basename.c_str(), basename.c_str()); + // clang-format on return EX_USAGE; } diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp index 1340ea1d2c..bc34d4c36f 100644 --- a/libs/binder/tests/binderRpcTest.cpp +++ b/libs/binder/tests/binderRpcTest.cpp @@ -18,7 +18,6 @@ // only used on NDK tests outside of vendor #include <aidl/IBinderRpcTest.h> #endif -#include <android-base/stringprintf.h> #include <chrono> #include <cstdlib> @@ -59,12 +58,12 @@ constexpr char kTrustyIpcDevice[] = "/dev/trusty-ipc-dev0"; static std::string WaitStatusToString(int wstatus) { if (WIFEXITED(wstatus)) { - return base::StringPrintf("exit status %d", WEXITSTATUS(wstatus)); + return std::format("exit status {}", WEXITSTATUS(wstatus)); } if (WIFSIGNALED(wstatus)) { - return base::StringPrintf("term signal %d", WTERMSIG(wstatus)); + return std::format("term signal {}", WTERMSIG(wstatus)); } - return base::StringPrintf("unexpected state %d", wstatus); + return std::format("unexpected state {}", wstatus); } static void debugBacktrace(pid_t pid) { @@ -260,9 +259,9 @@ std::unique_ptr<ProcessSession> BinderRpc::createRpcTestSocketServerProcessEtc( bool noKernel = GetParam().noKernel; std::string path = android::base::GetExecutableDirectory(); - auto servicePath = android::base::StringPrintf("%s/binder_rpc_test_service%s%s", path.c_str(), - singleThreaded ? "_single_threaded" : "", - noKernel ? "_no_kernel" : ""); + auto servicePath = + std::format("{}/binder_rpc_test_service{}{}", path, + singleThreaded ? "_single_threaded" : "", noKernel ? "_no_kernel" : ""); base::unique_fd bootstrapClientFd, socketFd; diff --git a/libs/binder/tests/binderRpcTestCommon.h b/libs/binder/tests/binderRpcTestCommon.h index eceff35e3e..786fab8133 100644 --- a/libs/binder/tests/binderRpcTestCommon.h +++ b/libs/binder/tests/binderRpcTestCommon.h @@ -22,7 +22,6 @@ #include <BnBinderRpcCallback.h> #include <BnBinderRpcSession.h> #include <BnBinderRpcTest.h> -#include <android-base/stringprintf.h> #include <binder/Binder.h> #include <binder/BpBinder.h> #include <binder/IPCThreadState.h> @@ -58,6 +57,7 @@ #include "../BuildFlags.h" #include "../FdTrigger.h" #include "../RpcState.h" // for debugging +#include "format.h" #include "utils/Errors.h" namespace android { @@ -91,7 +91,7 @@ static inline std::vector<uint32_t> testVersions() { } static inline std::string trustyIpcPort(uint32_t serverVersion) { - return base::StringPrintf("com.android.trusty.binderRpcTestService.V%" PRIu32, serverVersion); + return std::format("com.android.trusty.binderRpcTestService.V{}", serverVersion); } enum class SocketType { diff --git a/libs/binder/tests/binderRpcTestServiceTrusty.cpp b/libs/binder/tests/binderRpcTestServiceTrusty.cpp index cb632e95bf..aaca8d091a 100644 --- a/libs/binder/tests/binderRpcTestServiceTrusty.cpp +++ b/libs/binder/tests/binderRpcTestServiceTrusty.cpp @@ -16,7 +16,6 @@ #define TLOG_TAG "binderRpcTestService" -#include <android-base/stringprintf.h> #include <binder/RpcServerTrusty.h> #include <inttypes.h> #include <lib/tipc/tipc.h> @@ -28,7 +27,6 @@ #include "binderRpcTestCommon.h" using namespace android; -using android::base::StringPrintf; using binder::Status; static int gConnectionCounter = 0; diff --git a/libs/binder/tests/binderRpcTestTrusty.cpp b/libs/binder/tests/binderRpcTestTrusty.cpp index fcb83bdabd..8acaae6e95 100644 --- a/libs/binder/tests/binderRpcTestTrusty.cpp +++ b/libs/binder/tests/binderRpcTestTrusty.cpp @@ -16,7 +16,6 @@ #define LOG_TAG "binderRpcTest" -#include <android-base/stringprintf.h> #include <binder/RpcTransportTipcTrusty.h> #include <trusty-gtest.h> #include <trusty_ipc.h> diff --git a/libs/binder/tests/format.h b/libs/binder/tests/format.h new file mode 100644 index 0000000000..b5440a43e4 --- /dev/null +++ b/libs/binder/tests/format.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * 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. + */ + +// TODO(b/302723053): remove this header and replace with <format> once b/175635923 is done +// ETA for this blocker is 2023-10-27~2023-11-10. +// Also, remember to remove fmtlib's format.cc from trusty makefiles. + +#if __has_include(<format>) +#include <format> +#else +#include <fmt/format.h> + +namespace std { +using fmt::format; +} +#endif
\ No newline at end of file diff --git a/libs/binder/trusty/binderRpcTest/rules.mk b/libs/binder/trusty/binderRpcTest/rules.mk index 975f689d1a..e46ccfb967 100644 --- a/libs/binder/trusty/binderRpcTest/rules.mk +++ b/libs/binder/trusty/binderRpcTest/rules.mk @@ -21,6 +21,7 @@ MODULE := $(LOCAL_DIR) MANIFEST := $(LOCAL_DIR)/manifest.json MODULE_SRCS += \ + $(FMTLIB_DIR)/src/format.cc \ $(LIBBINDER_TESTS_DIR)/binderRpcUniversalTests.cpp \ $(LIBBINDER_TESTS_DIR)/binderRpcTestCommon.cpp \ $(LIBBINDER_TESTS_DIR)/binderRpcTestTrusty.cpp \ diff --git a/libs/binder/trusty/binderRpcTest/service/rules.mk b/libs/binder/trusty/binderRpcTest/service/rules.mk index 5d1a51dca2..50ae3d25fa 100644 --- a/libs/binder/trusty/binderRpcTest/service/rules.mk +++ b/libs/binder/trusty/binderRpcTest/service/rules.mk @@ -21,6 +21,7 @@ MODULE := $(LOCAL_DIR) MANIFEST := $(LOCAL_DIR)/manifest.json MODULE_SRCS := \ + $(FMTLIB_DIR)/src/format.cc \ $(LIBBINDER_TESTS_DIR)/binderRpcTestCommon.cpp \ $(LIBBINDER_TESTS_DIR)/binderRpcTestServiceTrusty.cpp \ |