diff options
author | José Bollo <jose.bollo@iot.bzh> | 2015-12-22 19:14:53 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2015-12-22 19:14:53 +0100 |
commit | a8f72186c447ba9b917c7f24a00497ae36dbc71f (patch) | |
tree | 46368c4333aba36cf6c1c5e4e52127826de2a7d0 /src/wgt-info.c | |
parent | ce714369c64051d5307ef7ac9af2c53b6edfbb4a (diff) |
implementation of installation by the daemon
Change-Id: I50ceca8c515df5a22f3387ccd1a6e3716641661f
Diffstat (limited to 'src/wgt-info.c')
-rw-r--r-- | src/wgt-info.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/wgt-info.c b/src/wgt-info.c index 1560feb..4d6b37d 100644 --- a/src/wgt-info.c +++ b/src/wgt-info.c @@ -75,6 +75,34 @@ static xmlChar *optcontent(xmlNodePtr node) return node ? xmlNodeGetContent(node) : NULL; } +static char *mkidaver(char *id, char *version) +{ + int lid, lver; + char c, *r; + if (id && version) { + lid = strlen(id); + c = version[lver = 0]; + while(c && c != ' ') { + if (c != '.') + c = version[++lver]; + else { + do { + c = version[++lver]; + } while (c && c != ' ' && c != '.'); + break; + } + } + r = malloc(2 + lid + lver); + if (r) { + memcpy(r, id, lid); + r[lid] = '@'; + memcpy(r + lid + 1, version, lver + 1); + return r; + } + } + return NULL; +} + static int fill_desc(struct wgt_desc *desc, int want_icons, int want_features, int want_preferences) { xmlNodePtr node, pnode; @@ -91,6 +119,7 @@ static int fill_desc(struct wgt_desc *desc, int want_icons, int want_features, i } desc->id = xmlGetProp(node, wgt_config_string_id); desc->version = xmlGetProp(node, wgt_config_string_version); + desc->idaver = mkidaver(desc->id, desc->version); 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); @@ -237,6 +266,7 @@ static void free_desc(struct wgt_desc *desc) xmlFree(desc->id); xmlFree(desc->version); + free(desc->idaver); xmlFree(desc->viewmodes); xmlFree(desc->defaultlocale); xmlFree(desc->name); @@ -289,9 +319,10 @@ static void dump_desc(struct wgt_desc *desc, FILE *f, const char *prefix) struct wgt_desc_param *param; if (desc->id) fprintf(f, "%sid: %s\n", prefix, desc->id); + if (desc->version) fprintf(f, "%sversion: %s\n", prefix, desc->version); + 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); - if (desc->version) fprintf(f, "%sversion: %s\n", prefix, desc->version); if (desc->viewmodes) fprintf(f, "%sviewmodes: %s\n", prefix, desc->viewmodes); if (desc->defaultlocale) fprintf(f, "%sdefaultlocale: %s\n", prefix, desc->defaultlocale); if (desc->name) fprintf(f, "%sname: %s\n", prefix, desc->name); |