schemaprog.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include<gio/gio.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4. int main(int argc, char **argv) {
  5. GSettingsSchemaSource *src;
  6. GSettingsSchema *schema;
  7. GSettings *settings;
  8. GVariant *value;
  9. GError *error = NULL;
  10. src = g_settings_schema_source_new_from_directory("schemas",
  11. g_settings_schema_source_get_default(), TRUE, &error);
  12. if(error) {
  13. fprintf(stderr, "Fail: %s\n", error->message);
  14. g_error_free(error);
  15. return 1;
  16. }
  17. schema = g_settings_schema_source_lookup(src, "com.github.meson", FALSE);
  18. if(!schema) {
  19. fprintf(stderr, "Could not get schema from source.\n");
  20. return 2;
  21. }
  22. settings = g_settings_new_full(schema, NULL, NULL);
  23. if(!settings) {
  24. fprintf(stderr, "Could not get settings object.\n");
  25. return 3;
  26. }
  27. value = g_settings_get_value(settings, "greeting");
  28. if(!value) {
  29. fprintf(stderr, "Could not get value from settings.\n");
  30. return 4;
  31. }
  32. if(strcmp("Hello", g_variant_get_string(value, NULL)) != 0) {
  33. fprintf(stderr, "Value of setting is incorrect.\n");
  34. return 5;
  35. }
  36. g_variant_unref(value);
  37. g_object_unref(settings);
  38. g_settings_schema_unref(schema);
  39. g_settings_schema_source_unref(src);
  40. return 0;
  41. }