Commit f9146175 authored by Hisham Muhammad's avatar Hisham Muhammad
Browse files

Make settings file finding sequence more straightforward

Avoid unnecessary access() call and make code read more linearly.
parent 03b25817
...@@ -382,10 +382,8 @@ Settings* Settings_new(int cpuCount) { ...@@ -382,10 +382,8 @@ Settings* Settings_new(int cpuCount) {
free(htopDir); free(htopDir);
free(configDir); free(configDir);
struct stat st; struct stat st;
if (lstat(legacyDotfile, &st) != 0) { int err = lstat(legacyDotfile, &st);
st.st_mode = 0; if (err || S_ISLNK(st.st_mode)) {
}
if (access(legacyDotfile, R_OK) != 0 || S_ISLNK(st.st_mode)) {
free(legacyDotfile); free(legacyDotfile);
legacyDotfile = NULL; legacyDotfile = NULL;
} }
...@@ -394,19 +392,26 @@ Settings* Settings_new(int cpuCount) { ...@@ -394,19 +392,26 @@ Settings* Settings_new(int cpuCount) {
this->colorScheme = 0; this->colorScheme = 0;
this->changed = false; this->changed = false;
this->delay = DEFAULT_DELAY; this->delay = DEFAULT_DELAY;
bool ok = Settings_read(this, legacyDotfile ? legacyDotfile : this->filename); bool ok = false;
if (ok) {
if (legacyDotfile) { if (legacyDotfile) {
ok = Settings_read(this, legacyDotfile);
if (ok) {
// Transition to new location and delete old configuration file // Transition to new location and delete old configuration file
if (Settings_write(this)) if (Settings_write(this))
unlink(legacyDotfile); unlink(legacyDotfile);
} }
} else { free(legacyDotfile);
}
if (!ok) {
ok = Settings_read(this, this->filename);
}
if (!ok) {
this->changed = true; this->changed = true;
// TODO: how to get SYSCONFDIR correctly through Autoconf? // TODO: how to get SYSCONFDIR correctly through Autoconf?
char* systemSettings = String_cat(SYSCONFDIR, "/htoprc"); char* systemSettings = String_cat(SYSCONFDIR, "/htoprc");
ok = Settings_read(this, systemSettings); ok = Settings_read(this, systemSettings);
free(systemSettings); free(systemSettings);
}
if (!ok) { if (!ok) {
Settings_defaultMeters(this); Settings_defaultMeters(this);
this->hideKernelThreads = true; this->hideKernelThreads = true;
...@@ -414,8 +419,6 @@ Settings* Settings_new(int cpuCount) { ...@@ -414,8 +419,6 @@ Settings* Settings_new(int cpuCount) {
this->highlightThreads = true; this->highlightThreads = true;
this->headerMargin = true; this->headerMargin = true;
} }
}
free(legacyDotfile);
return this; return this;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment