Store .sort_key as a string

This commit is contained in:
Hisham Muhammad 2018-01-30 14:21:17 -02:00
parent 0800424fe6
commit 59982a188c
1 changed files with 9 additions and 5 deletions

View File

@ -209,16 +209,21 @@ static void Settings_defaultMeters(Settings* this) {
this->meterColumns[1].modes[r++] = TEXT_METERMODE; this->meterColumns[1].modes[r++] = TEXT_METERMODE;
} }
static const char* toFieldName(int i) {
return Process_fields[i].name;
}
static int toFieldIndex(const char* str) { static int toFieldIndex(const char* str) {
if (isdigit(str[0])) { if (isdigit(str[0])) {
// This "+1" is for compatibility with the older enum format. // This "+1" is for compatibility with the older enum format.
int id = atoi(str) + 1; int id = atoi(str) + 1;
if (Process_fields[id].name && id < Platform_numberOfFields) { if (id < Platform_numberOfFields && toFieldName(id)) {
return id; return id;
} }
} else { } else {
for (int p = 1; p < LAST_PROCESSFIELD; p++) { for (int p = 1; p < LAST_PROCESSFIELD; p++) {
if (Process_fields[p].name && strcmp(Process_fields[p].name, str) == 0) { const char* pName = toFieldName(p);
if (pName && strcmp(pName, str) == 0) {
return p; return p;
} }
} }
@ -378,7 +383,7 @@ static void writeFields(FILE* fd, ProcessField* fields, bool byName) {
const char* sep = ""; const char* sep = "";
for (int i = 0; fields[i]; i++) { for (int i = 0; fields[i]; i++) {
if (byName) { if (byName) {
fprintf(fd, "%s%s", sep, Process_fields[fields[i]].name); fprintf(fd, "%s%s", sep, toFieldName(fields[i]));
} else { } else {
// This " - 1" is for compatibility with the older enum format. // This " - 1" is for compatibility with the older enum format.
fprintf(fd, "%s%d", sep, (int) fields[i] - 1); fprintf(fd, "%s%d", sep, (int) fields[i] - 1);
@ -447,8 +452,7 @@ bool Settings_write(Settings* this) {
fprintf(fd, "screen:%s=", ss->name); fprintf(fd, "screen:%s=", ss->name);
writeFields(fd, ss->fields, true); writeFields(fd, ss->fields, true);
fprintf(fd, ".tree_view=%d\n", (int) ss->treeView); fprintf(fd, ".tree_view=%d\n", (int) ss->treeView);
// This "-1" is for compatibility with the older enum format. fprintf(fd, ".sort_key=%s\n", toFieldName(ss->sortKey));
fprintf(fd, ".sort_key=%d\n", (int) ss->sortKey-1);
fprintf(fd, ".sort_direction=%d\n", (int) ss->direction); fprintf(fd, ".sort_direction=%d\n", (int) ss->direction);
} }
} }