summaryrefslogtreecommitdiffstats
path: root/src/wgt-info.c
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2015-12-22 19:14:53 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2015-12-22 19:14:53 +0100
commita8f72186c447ba9b917c7f24a00497ae36dbc71f (patch)
tree46368c4333aba36cf6c1c5e4e52127826de2a7d0 /src/wgt-info.c
parentce714369c64051d5307ef7ac9af2c53b6edfbb4a (diff)
implementation of installation by the daemon
Change-Id: I50ceca8c515df5a22f3387ccd1a6e3716641661f
Diffstat (limited to 'src/wgt-info.c')
-rw-r--r--src/wgt-info.c33
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);