diff options
Diffstat (limited to 'tools/aconfig/aconfig_storage_read_api/aconfig_storage_read_api.cpp')
-rw-r--r-- | tools/aconfig/aconfig_storage_read_api/aconfig_storage_read_api.cpp | 53 |
1 files changed, 36 insertions, 17 deletions
diff --git a/tools/aconfig/aconfig_storage_read_api/aconfig_storage_read_api.cpp b/tools/aconfig/aconfig_storage_read_api/aconfig_storage_read_api.cpp index 50076aab31..97ada3a33e 100644 --- a/tools/aconfig/aconfig_storage_read_api/aconfig_storage_read_api.cpp +++ b/tools/aconfig/aconfig_storage_read_api/aconfig_storage_read_api.cpp @@ -1,16 +1,13 @@ -#include <android-base/file.h> -#include <android-base/logging.h> - #include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> +#include <errno.h> +#include <string.h> #include "rust/cxx.h" #include "aconfig_storage/lib.rs.h" #include "aconfig_storage/aconfig_storage_read_api.hpp" -using namespace android::base; - namespace aconfig_storage { /// Storage location pb file @@ -36,7 +33,9 @@ static Result<std::string> find_storage_file( case StorageFileType::flag_info: return storage_dir + "/boot/" + container + ".info"; default: - return Error() << "Invalid file type " << file_type; + auto result = Result<std::string>(); + result.errmsg = "Invalid storage file type"; + return result; } } @@ -49,7 +48,9 @@ Result<MappedStorageFile*> get_mapped_file_impl( StorageFileType file_type) { auto file_result = find_storage_file(storage_dir, container, file_type); if (!file_result.ok()) { - return Error() << file_result.error(); + auto result = Result<MappedStorageFile*>(); + result.errmsg = file_result.error(); + return result; } return map_storage_file(*file_result); } @@ -60,18 +61,24 @@ Result<MappedStorageFile*> get_mapped_file_impl( Result<MappedStorageFile*> map_storage_file(std::string const& file) { int fd = open(file.c_str(), O_CLOEXEC | O_NOFOLLOW | O_RDONLY); if (fd == -1) { - return ErrnoError() << "failed to open " << file; + auto result = Result<MappedStorageFile*>(); + result.errmsg = std::string("failed to open ") + file + ": " + strerror(errno); + return result; }; struct stat fd_stat; if (fstat(fd, &fd_stat) < 0) { - return ErrnoError() << "fstat failed"; + auto result = Result<MappedStorageFile*>(); + result.errmsg = std::string("fstat failed: ") + strerror(errno); + return result; } size_t file_size = fd_stat.st_size; void* const map_result = mmap(nullptr, file_size, PROT_READ, MAP_SHARED, fd, 0); if (map_result == MAP_FAILED) { - return ErrnoError() << "mmap failed"; + auto result = Result<MappedStorageFile*>(); + result.errmsg = std::string("mmap failed: ") + strerror(errno); + return result; } auto mapped_file = new MappedStorageFile(); @@ -82,7 +89,7 @@ Result<MappedStorageFile*> map_storage_file(std::string const& file) { } /// Map from StoredFlagType to FlagValueType -android::base::Result<FlagValueType> map_to_flag_value_type( +Result<FlagValueType> map_to_flag_value_type( StoredFlagType stored_type) { switch (stored_type) { case StoredFlagType::ReadWriteBoolean: @@ -90,7 +97,9 @@ android::base::Result<FlagValueType> map_to_flag_value_type( case StoredFlagType::FixedReadOnlyBoolean: return FlagValueType::Boolean; default: - return Error() << "Unsupported stored flag type"; + auto result = Result<FlagValueType>(); + result.errmsg = "Unsupported stored flag type"; + return result; } } @@ -110,7 +119,9 @@ Result<uint32_t> get_storage_file_version( if (version_cxx.query_success) { return version_cxx.version_number; } else { - return Error() << version_cxx.error_message; + auto result = Result<uint32_t>(); + result.errmsg = version_cxx.error_message.c_str(); + return result; } } @@ -128,7 +139,9 @@ Result<PackageReadContext> get_package_read_context( context.boolean_start_index = context_cxx.boolean_start_index; return context; } else { - return Error() << context_cxx.error_message; + auto result = Result<PackageReadContext>(); + result.errmsg = context_cxx.error_message.c_str(); + return result; } } @@ -147,7 +160,9 @@ Result<FlagReadContext> get_flag_read_context( context.flag_index = context_cxx.flag_index; return context; } else { - return Error() << context_cxx.error_message; + auto result = Result<FlagReadContext>(); + result.errmsg = context_cxx.error_message.c_str(); + return result; } } @@ -161,7 +176,9 @@ Result<bool> get_boolean_flag_value( if (value_cxx.query_success) { return value_cxx.flag_value; } else { - return Error() << value_cxx.error_message; + auto result = Result<bool>(); + result.errmsg = value_cxx.error_message.c_str(); + return result; } } @@ -177,7 +194,9 @@ Result<uint8_t> get_flag_attribute( if (info_cxx.query_success) { return info_cxx.flag_attribute; } else { - return Error() << info_cxx.error_message; + auto result = Result<uint8_t>(); + result.errmsg = info_cxx.error_message.c_str(); + return result; } } } // namespace aconfig_storage |