summaryrefslogtreecommitdiffstats
path: root/edify/expr.h
diff options
context:
space:
mode:
authorTianjie Xu <xunchang@google.com>2016-04-30 20:49:59 +0200
committerTianjie Xu <xunchang@google.com>2016-05-20 22:56:53 +0200
commit162558382b768a4120b3e41090a4c7b53f11469a (patch)
tree7e0d268233fc6bea07a361cf6913fc3a5e524063 /edify/expr.h
parentAdd time and I/O info to last_install (diff)
downloadandroid_bootable_recovery-162558382b768a4120b3e41090a4c7b53f11469a.tar
android_bootable_recovery-162558382b768a4120b3e41090a4c7b53f11469a.tar.gz
android_bootable_recovery-162558382b768a4120b3e41090a4c7b53f11469a.tar.bz2
android_bootable_recovery-162558382b768a4120b3e41090a4c7b53f11469a.tar.lz
android_bootable_recovery-162558382b768a4120b3e41090a4c7b53f11469a.tar.xz
android_bootable_recovery-162558382b768a4120b3e41090a4c7b53f11469a.tar.zst
android_bootable_recovery-162558382b768a4120b3e41090a4c7b53f11469a.zip
Diffstat (limited to 'edify/expr.h')
-rw-r--r--edify/expr.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/edify/expr.h b/edify/expr.h
index 36f8e9612..5c06de846 100644
--- a/edify/expr.h
+++ b/edify/expr.h
@@ -19,6 +19,7 @@
#include <unistd.h>
+#include "error_code.h"
#include "yydefs.h"
#define MAX_STRING_LEN 1024
@@ -39,6 +40,15 @@ typedef struct {
// Should be NULL initially, will be either NULL or a malloc'd
// pointer after Evaluate() returns.
char* errmsg;
+
+ // error code indicates the type of failure (e.g. failure to update system image)
+ // during the OTA process.
+ ErrorCode error_code = kNoError;
+
+ // cause code provides more detailed reason of an OTA failure (e.g. fsync error)
+ // in addition to the error code.
+ CauseCode cause_code = kNoCause;
+
} State;
#define VAL_STRING 1 // data will be NULL-terminated; size doesn't count null
@@ -152,7 +162,13 @@ Value** ReadValueVarArgs(State* state, int argc, Expr* argv[]);
// Use printf-style arguments to compose an error message to put into
// *state. Returns NULL.
-Value* ErrorAbort(State* state, const char* format, ...) __attribute__((format(printf, 2, 3)));
+Value* ErrorAbort(State* state, const char* format, ...)
+ __attribute__((format(printf, 2, 3), deprecated));
+
+// ErrorAbort has an optional (but recommended) argument 'cause_code'. If the cause code
+// is set, it will be logged into last_install and provides reason of OTA failures.
+Value* ErrorAbort(State* state, CauseCode cause_code, const char* format, ...)
+ __attribute__((format(printf, 3, 4)));
// Wrap a string into a Value, taking ownership of the string.
Value* StringValue(char* str);