+ 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));
+ }
+ }
+
+ return hash;
+}
+
+const struct sr_output *setup_output_format(const struct sr_dev_inst *sdi)
+{
+ const struct sr_output_module *omod;
+ const struct sr_option *opts;
+ const struct sr_output *o;
+ GHashTable *fmtargs, *fmtopts;