X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwgt-info.c;h=089a5639aeaaec54511e29f5178a0c7d6b80c8ca;hb=69df60bd6622a56200d2d03e1b7d899569adf650;hp=4d6b37d7ac4506318a75301a15c4980ed7d97f4d;hpb=a8f72186c447ba9b917c7f24a00497ae36dbc71f;p=src%2Fapp-framework-main.git diff --git a/src/wgt-info.c b/src/wgt-info.c index 4d6b37d..089a563 100644 --- a/src/wgt-info.c +++ b/src/wgt-info.c @@ -1,5 +1,5 @@ /* - Copyright 2015 IoT.bzh + Copyright 2015, 2016 IoT.bzh author: José Bollo @@ -20,6 +20,7 @@ #include #include #include +#include #include @@ -75,34 +76,58 @@ static xmlChar *optcontent(xmlNodePtr node) return node ? xmlNodeGetContent(node) : NULL; } -static char *mkidaver(char *id, char *version) +static char *mkver(char *version) { - int lid, lver; + unsigned int lver; char c, *r; - if (id && version) { - lid = strlen(id); + if (version) { c = version[lver = 0]; - while(c && c != ' ') { - if (c != '.') + while(c && c != ' ' && c != '.') + c = version[++lver]; + if (c == '.') { + c = version[++lver]; + while(c && c != ' ' && c != '.') c = version[++lver]; - else { - do { - c = version[++lver]; - } while (c && c != ' ' && c != '.'); - break; - } } + r = malloc(lver + 1); + if (r) { + memcpy(r, version, lver); + r[lver] = 0; + return r; + } + } + return NULL; +} + +static char *mkidaver(char *id, char *ver) +{ + size_t lid, lver; + char *r; + if (id && ver) { + lid = strlen(id); + lver = strlen(ver); r = malloc(2 + lid + lver); if (r) { memcpy(r, id, lid); r[lid] = '@'; - memcpy(r + lid + 1, version, lver + 1); + memcpy(r + lid + 1, ver, lver); + r[lid + lver + 1] = 0; return r; } } return NULL; } +static void make_lowercase(char *s) +{ + if (s) { + while(*s) { + *s = (char)tolower(*s); + s++; + } + } +} + static int fill_desc(struct wgt_desc *desc, int want_icons, int want_features, int want_preferences) { xmlNodePtr node, pnode; @@ -118,8 +143,11 @@ static int fill_desc(struct wgt_desc *desc, int want_icons, int want_features, i return -1; } desc->id = xmlGetProp(node, wgt_config_string_id); + make_lowercase(desc->id); desc->version = xmlGetProp(node, wgt_config_string_version); - desc->idaver = mkidaver(desc->id, desc->version); + desc->ver = mkver(desc->version); + make_lowercase(desc->ver); + desc->idaver = mkidaver(desc->id, desc->ver); desc->width = getpropnum(node, wgt_config_string_width, 0); desc->height = getpropnum(node, wgt_config_string_height, 0); desc->viewmodes = xmlGetProp(node, wgt_config_string_viewmodes); @@ -266,6 +294,7 @@ static void free_desc(struct wgt_desc *desc) xmlFree(desc->id); xmlFree(desc->version); + free(desc->ver); free(desc->idaver); xmlFree(desc->viewmodes); xmlFree(desc->defaultlocale); @@ -320,6 +349,7 @@ static void dump_desc(struct wgt_desc *desc, FILE *f, const char *prefix) if (desc->id) fprintf(f, "%sid: %s\n", prefix, desc->id); if (desc->version) fprintf(f, "%sversion: %s\n", prefix, desc->version); + if (desc->ver) fprintf(f, "%sver: %s\n", prefix, desc->ver); if (desc->idaver) fprintf(f, "%sidaver: %s\n", prefix, desc->idaver); if (desc->width) fprintf(f, "%swidth: %d\n", prefix, desc->width); if (desc->height) fprintf(f, "%sheight: %d\n", prefix, desc->height);