static int update_widgets(GtkBuilder *builder) { return iio_device_debug_attr_read_all(dev, __update_widget, builder); }
static int connect_widgets(GtkBuilder *builder) { return iio_device_debug_attr_read_all(dev, __connect_widget, builder); }
void save_to_ini(FILE *f, const char *driver_name, struct iio_device *dev, const char * const *whitelist, size_t list_len) { unsigned int i; struct load_store_params params = { .dev = dev, .whitelist = whitelist, .list_len = list_len, .is_debug = false, .f = f, }; if (driver_name) { fwrite("\n[", 1, 2, f); fwrite(driver_name, 1, strlen(driver_name), f); fwrite("]\n", 1, 2, f); } for (i = 0; i < iio_device_get_channels_count(dev); i++) iio_channel_attr_read_all(iio_device_get_channel(dev, i), save_to_ini_chn_cb, ¶ms); iio_device_attr_read_all(dev, save_to_ini_dev_cb, ¶ms); params.is_debug = true; iio_device_debug_attr_read_all(dev, save_to_ini_dev_cb, ¶ms); } int foreach_in_ini(const char *ini_file, int (*cb)(int, const char *, const char *, const char *)) { int ret = 0; const char *name, *key, *value; size_t nlen, klen, vlen; struct INI *ini = ini_open(ini_file); if (!ini) return -1; while (ini_next_section(ini, &name, &nlen) > 0) { char *n = malloc(nlen + 1); if (!n) goto err_ini_close; snprintf(n, nlen + 1, "%.*s", (int) nlen, name); while (ini_read_pair(ini, &key, &klen, &value, &vlen) > 0) { int line = ini_get_line_number(ini, key); char *v, *k = malloc(klen + 1); if (!k) { free(n); goto err_ini_close; } v = malloc(vlen + 1); if (!v) { free(k); free(n); goto err_ini_close; } snprintf(k, klen + 1, "%.*s", (int) klen, key); snprintf(v, vlen + 1, "%.*s", (int) vlen, value); ret = cb(line, n, k, v); /* only needed when debugging - this should be done in each section if (ret < 0) { fprintf(stderr, "issue in '%s' file: Section:'%s' key:'%s' value:'%s'\n", ini_file, n, k, v); } */ free(k); free(v); if (ret < 0) { free(n); goto err_ini_close; } if (ret > 0) { ret = 0; break; } } free(n); } err_ini_close: ini_close(ini); return ret; }