summaryrefslogtreecommitdiff
path: root/futility/updater_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'futility/updater_utils.c')
-rw-r--r--futility/updater_utils.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/futility/updater_utils.c b/futility/updater_utils.c
index cc60ee8a..978936fa 100644
--- a/futility/updater_utils.c
+++ b/futility/updater_utils.c
@@ -23,6 +23,9 @@
#define COMMAND_BUFFER_SIZE 256
+/* System environment values. */
+static const char * const STR_REV = "rev";
+
/*
* Strips a string (usually from shell execution output) by removing all the
* trailing characters in pattern. If pattern is NULL, match by space type
@@ -425,9 +428,28 @@ static int host_get_fw_vboot2(void)
return VbGetSystemPropertyInt("fw_vboot2");
}
+/* A help function to get $(mosys platform version). */
static int host_get_platform_version(void)
{
- return VbGetSystemPropertyInt("board_id");
+ char *result = host_shell("mosys platform version");
+ long rev = -1;
+
+ /* Result should be 'revN' */
+ if (strncmp(result, STR_REV, strlen(STR_REV)) == 0)
+ rev = strtol(result + strlen(STR_REV), NULL, 0);
+
+ /* we should never have negative or extremely large versions,
+ * but clamp just to be sure
+ */
+ if (rev < 0)
+ rev = 0;
+ if (rev > INT_MAX)
+ rev = INT_MAX;
+
+ VB2_DEBUG("Raw data = [%s], parsed version is %ld\n", result, rev);
+
+ free(result);
+ return rev;
}
/*