diff options
Diffstat (limited to 'futility/updater_utils.c')
-rw-r--r-- | futility/updater_utils.c | 24 |
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; } /* |