}
void save_settings(void) {
- char *dir, *path, *tmp;
+ const char *dir;
+ char *path, *tmp;
FILE *fp = 0;
size_t n, m, c;
- byte_xasprintf(&dir, "%s/.disorder", getenv("HOME"));
+ if(!(dir = profile_directory())) {
+ fpopup_msg(GTK_MESSAGE_ERROR, "failed to find home directory");
+ goto done;
+ }
byte_xasprintf(&path, "%s/disobedience", dir);
byte_xasprintf(&tmp, "%s.tmp", path);
mkdir(dir, 02700); /* make sure directory exists */
int nvec;
size_t n, m, c;
- byte_xasprintf(&path, "%s/.disorder/disobedience", getenv("HOME"));
- if(!(fp = fopen(path, "r"))) {
+ if(!(path = profile_filename("disobedience")))
+ fpopup_msg(GTK_MESSAGE_ERROR, "failed to find home directory");
+ else if(!(fp = fopen(path, "r"))) {
if(errno != ENOENT)
fpopup_msg(GTK_MESSAGE_ERROR, "error opening %s: %s",
path, strerror(errno));
if(!strcmp(vec[0], "color")) {
GdkColor *color;
if(nvec != 7) {
- error(0, "%s: malformed '%s' command", path, vec[0]);
+ disorder_error(0, "%s: malformed '%s' command", path, vec[0]);
continue;
}
for(n = 0; n < NSTYLES && strcmp(styles[n].name, vec[1]); ++n)
;
if(n >= NSTYLES) {
- error(0, "%s: unknown style '%s'", path, vec[1]);
+ disorder_error(0, "%s: unknown style '%s'", path, vec[1]);
continue;
}
for(m = 0; m < NSTATES && strcmp(states[m], vec[2]); ++m)
;
if(m >= NSTATES) {
- error(0, "%s: unknown state '%s'", path, vec[2]);
+ disorder_error(0, "%s: unknown state '%s'", path, vec[2]);
continue;
}
for(c = 0; c < NCOLORS && strcmp(colors[c].name, vec[3]); ++c)
;
if(c >= NCOLORS) {
- error(0, "%s: unknown color '%s'", path, vec[3]);
+ disorder_error(0, "%s: unknown color '%s'", path, vec[3]);
continue;
}
color = (GdkColor *)((char *)styles[n].style + colors[c].offset) + m;
color->blue = strtoul(vec[6], 0, 0);
} else if(!strcmp(vec[0], "browser")) {
if(nvec != 2) {
- error(0, "%s: malformed '%s' command", path, vec[0]);
+ disorder_error(0, "%s: malformed '%s' command", path, vec[0]);
continue;
}
browser = vec[1];
} else
/* mention errors but otherwise ignore them */
- error(0, "%s: unknown command '%s'", path, vec[0]);
+ disorder_error(0, "%s: unknown command '%s'", path, vec[0]);
}
if(ferror(fp)) {
fpopup_msg(GTK_MESSAGE_ERROR, "error reading %s: %s",