[PATCH] lib: fwts_release: call lsb_release rather than parsing raw data (LP: #1266823)
Keng-Yu Lin
keng-yu.lin at canonical.com
Tue Jan 14 07:36:47 UTC 2014
On Thu, Jan 9, 2014 at 2:49 PM, IvanHu <ivan.hu at canonical.com> wrote:
> On 01/07/2014 11:41 PM, Colin King wrote:
>>
>> From: Colin Ian King <colin.king at canonical.com>
>>
>> Getting release info only works if /etc/lsb_release exists. Some Debian
>> based systems may have this information fetched from other places, so
>> instead
>> parse the output from lsb_release -a to get the information as this
>> provides
>> the consistent output across Debian systems.
>>
>> Signed-off-by: Colin Ian King <colin.king at canonical.com>
>> ---
>> src/lib/src/fwts_release.c | 17 +++++++++++------
>> 1 file changed, 11 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/lib/src/fwts_release.c b/src/lib/src/fwts_release.c
>> index 24f8789..f82ab4e 100644
>> --- a/src/lib/src/fwts_release.c
>> +++ b/src/lib/src/fwts_release.c
>> @@ -35,7 +35,7 @@ static void fwts_release_field_get(char *needle, char
>> *delimiter, char *text, ch
>> if (strstr(text, needle) == NULL)
>> return;
>> str++;
>> - while (*str == ' ')
>> + while (*str == ' ' || *str == '\t')
>> str++;
>>
>> if (*str)
>> @@ -53,10 +53,10 @@ void fwts_release_get_debian(fwts_list *list,
>> fwts_release *release)
>> fwts_list_foreach(item, list) {
>> char *line = fwts_text_list_text(item);
>>
>> - fwts_release_field_get("DISTRIB_ID", "=", line,
>> &release->distributor);
>> - fwts_release_field_get("DISTRIB_RELEASE", "=", line,
>> &release->description);
>> - fwts_release_field_get("DISTRIB_CODENAME", "=", line,
>> &release->release);
>> - fwts_release_field_get("DISTRIB_DESCRIPTION", "=", line,
>> &release->codename);
>> + fwts_release_field_get("Distributor ID:", ":", line,
>> &release->distributor);
>
>
> Just minor thing,
> The Field should be changed to "Distributor ID", remove the delimiter.
>
>
>> + fwts_release_field_get("Release", ":", line,
>> &release->description);
>> + fwts_release_field_get("Codename", ":", line,
>> &release->release);
>> + fwts_release_field_get("Description", ":", line,
>> &release->codename);
>> }
>> }
>>
>> @@ -78,6 +78,7 @@ fwts_release *fwts_release_get(void)
>> {
>> fwts_list *list;
>> fwts_release *release;
>> + int status;
>>
>> if ((release = calloc(1, sizeof(fwts_release))) == NULL)
>> return NULL;
>> @@ -86,7 +87,11 @@ fwts_release *fwts_release_get(void)
>> * For the moment, check in /etc/lsb-release, we need to add in
>> * support for different distros too.
>> */
>> - if ((list = fwts_file_open_and_read("/etc/lsb-release")) != NULL)
>> {
>> + if (fwts_pipe_exec("lsb_release -a", &list, &status) != FWTS_OK) {
>> + free(release);
>> + return NULL;
>> + }
>> + if (list) {
>> fwts_release_get_debian(list, release);
>> fwts_list_free(list, free);
>> }
>>
>
>
Acked-by: Keng-Yu Lin <kengyu at canonical.com>
More information about the fwts-devel
mailing list