+int read_setting_fontspec(void *handle, const char *name, FontSpec *result)
+{
+ char *settingname;
+ FontSpec ret;
+ char tmp[256];
+
+ if (!read_setting_s(handle, name, tmp, sizeof(tmp)))
+ return 0;
+ c2pstrcpy(ret.name, tmp);
+ settingname = dupcat(name, "Face", NULL);
+ ret.face = read_setting_i(handle, settingname, 0);
+ sfree(settingname);
+ settingname = dupcat(name, "Height", NULL);
+ ret.size = read_setting_i(handle, settingname, 0);
+ sfree(settingname);
+ if (ret.size == 0) return 0;
+ *result = ret;
+ return 1;
+}
+
+void write_setting_fontspec(void *handle, const char *name, FontSpec font)
+{
+ char *settingname;
+ char tmp[256];
+
+ p2cstrcpy(tmp, font.name);
+ write_setting_s(handle, name, tmp);
+ settingname = dupcat(name, "Face", NULL);
+ write_setting_i(handle, settingname, font.face);
+ sfree(settingname);
+ settingname = dupcat(name, "Size", NULL);
+ write_setting_i(handle, settingname, font.size);
+ sfree(settingname);
+}
+
+int read_setting_filename(void *handle, const char *name, Filename *result)
+{
+ return !!read_setting_s(handle, name, result->path, sizeof(result->path));
+}
+
+void write_setting_filename(void *handle, const char *name, Filename result)
+{
+ write_setting_s(handle, name, result.path);
+}
+