Commit d89dfafb authored by Robert Schmidt's avatar Robert Schmidt

Add read_version() to convert version string to numbers

read_version() takes a version string in format "x.y.z" with x being
major, y minor, and z patch number. It transforms reads them into
separate numbers, and outputs in the correspondingly named variables.
parent 2b717d49
......@@ -132,3 +132,21 @@ void set_priority(int priority)
abort();
}
}
/**
* @brief Convert a version string x.y.z into numbers.
*
* The function takes a version string of format "x.y.z" where x is the major
* version number, y minor, z patch. It tries to match version, and outputs the
* numbers in the correspondingly named variables.
*
* @return The number of version parts matched (should be three on x.y.z).
*/
int read_version(const char *version, uint8_t *major, uint8_t *minor, uint8_t *patch)
{
int ret = sscanf(version, "%hhu.%hhu.%hhu", major, minor, patch);
// EOF means "end of input reached or matching failure"
if (ret == EOF)
return 3;
return ret; // ret has number of items matched
}
......@@ -107,6 +107,10 @@ void set_priority(int priority);
char *itoa(int i);
#define STRINGIFY(S) #S
#define TO_STRING(S) STRINGIFY(S)
int read_version(const char *version, uint8_t *major, uint8_t *minor, uint8_t *patch);
#define findInList(keY, result, list, element_type) {\
int i;\
for (i=0; i<sizeof(list)/sizeof(element_type) ; i++)\
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment