- struct sr_output_format **outputs, *omod;
- int i;
-
- omod = NULL;
- outputs = sr_output_list();
- for (i = 0; outputs[i]; i++) {
- if (!strcmp(outputs[i]->id, name)) {
- omod = outputs[i];
- break;
- }
+ GHashTable *hash;
+ GVariant *gvar;
+ const struct sr_option *opt;
+ char *s;
+
+ hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
+ (GDestroyNotify)g_variant_unref);
+ for (opt = opts; opt->id && opt->def; opt++) {
+ if (!(s = g_hash_table_lookup(genargs, opt->id)))
+ continue;
+ if (g_variant_is_of_type(opt->def, G_VARIANT_TYPE_UINT32)) {
+ gvar = g_variant_new_uint32(strtoul(s, NULL, 10));
+ g_hash_table_insert(hash, g_strdup(opt->id),
+ g_variant_ref_sink(gvar));
+ printf("opt %s value %s\n", opt->id, s);
+ } else {
+ g_critical("Don't know how to convert option '%s' to %s!",
+ opt->id, g_variant_get_type_string(opt->def));
+ }