From 0bf20d51336aef08850d0152a6e1501f4b733cf6 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Thu, 5 Oct 2017 12:06:49 -0700 Subject: Don't include "error_code.h" in edify/expr.h. Use forward declartion to avoid pull in the module that contains error_code.h (trying to move it into libotautil). Otherwise all the modules that include "edify/expr.h" need to depend on the module that exports error_code.h. .cpp sources should include "error_code.h" explicitly to use the enums. Test: lunch aosp_{angler,bullhead,dragon,fugu,sailfish}-userdebug; mmma bootable/recovery Change-Id: Ic82db2746c7deb866e8cdfb3c57e0b1ecc71c4dc --- edify/expr.cpp | 9 ++++----- edify/expr.h | 38 ++++++++++++++++++++------------------ error_code.h | 6 +++--- updater/updater.cpp | 1 + 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/edify/expr.cpp b/edify/expr.cpp index 54ab3325c..403162d6d 100644 --- a/edify/expr.cpp +++ b/edify/expr.cpp @@ -31,6 +31,8 @@ #include #include +#include "error_code.h" + // Functions should: // // - return a malloc()'d string @@ -416,8 +418,5 @@ Value* ErrorAbort(State* state, CauseCode cause_code, const char* format, ...) { return nullptr; } -State::State(const std::string& script, void* cookie) : - script(script), - cookie(cookie) { -} - +State::State(const std::string& script, void* cookie) + : script(script), cookie(cookie), error_code(kNoError), cause_code(kNoCause) {} diff --git a/edify/expr.h b/edify/expr.h index 4838d20c0..32828028a 100644 --- a/edify/expr.h +++ b/edify/expr.h @@ -23,32 +23,34 @@ #include #include -#include "error_code.h" +// Forward declaration to avoid including "error_code.h". +enum ErrorCode : int; +enum CauseCode : int; struct State { - State(const std::string& script, void* cookie); + State(const std::string& script, void* cookie); - // The source of the original script. - const std::string& script; + // The source of the original script. + const std::string& script; - // Optional pointer to app-specific data; the core of edify never - // uses this value. - void* cookie; + // Optional pointer to app-specific data; the core of edify never + // uses this value. + void* cookie; - // The error message (if any) returned if the evaluation aborts. - // Should be empty initially, will be either empty or a string that - // Evaluate() returns. - std::string errmsg; + // The error message (if any) returned if the evaluation aborts. + // Should be empty initially, will be either empty or a string that + // Evaluate() returns. + std::string errmsg; - // error code indicates the type of failure (e.g. failure to update system image) - // during the OTA process. - ErrorCode error_code = kNoError; + // error code indicates the type of failure (e.g. failure to update system image) + // during the OTA process. + ErrorCode error_code; - // cause code provides more detailed reason of an OTA failure (e.g. fsync error) - // in addition to the error code. - CauseCode cause_code = kNoCause; + // cause code provides more detailed reason of an OTA failure (e.g. fsync error) + // in addition to the error code. + CauseCode cause_code; - bool is_retry = false; + bool is_retry = false; }; enum ValueType { diff --git a/error_code.h b/error_code.h index 4e3032bc9..26b9bb40d 100644 --- a/error_code.h +++ b/error_code.h @@ -17,7 +17,7 @@ #ifndef _ERROR_CODE_H_ #define _ERROR_CODE_H_ -enum ErrorCode { +enum ErrorCode : int { kNoError = -1, kLowBattery = 20, kZipVerificationFailure, @@ -30,7 +30,7 @@ enum ErrorCode { kUpdateBinaryCommandFailure, }; -enum CauseCode { +enum CauseCode : int { kNoCause = -1, kArgsParsingFailure = 100, kStashCreationFailure, @@ -51,7 +51,7 @@ enum CauseCode { kVendorFailure = 200 }; -enum UncryptErrorCode { +enum UncryptErrorCode : int { kUncryptNoError = -1, kUncryptErrorPlaceholder = 50, kUncryptTimeoutError = 100, diff --git a/updater/updater.cpp b/updater/updater.cpp index e10174f71..309c309a5 100644 --- a/updater/updater.cpp +++ b/updater/updater.cpp @@ -31,6 +31,7 @@ #include #include "edify/expr.h" +#include "error_code.h" #include "otafault/config.h" #include "otautil/DirUtil.h" #include "otautil/SysUtil.h" -- cgit v1.2.3