+int pushgconfdata(struct gconffile **cf, const char *data) {
+ int i;
+ struct gconffile *newcf;
+
+ if (!*cf) {
+ newcf = malloc(sizeof(struct gconffile) * 2);
+ if (!newcf)
+ return 0;
+ memset(newcf, 0, sizeof(struct gconffile) * 2);
+ } else {
+ for (i = 0; (*cf)[i].data || (*cf)[i].path; i++);
+ newcf = realloc(*cf, sizeof(struct gconffile) * (i + 2));
+ if (!newcf)
+ return 0;
+ memmove(newcf + 1, newcf, sizeof(struct gconffile) * (i + 1));
+ memset(newcf, 0, sizeof(struct gconffile));
+ }
+ newcf[0].data = data;
+ *cf = newcf;
+ return 1;
+}
+