diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2021-01-27 15:11:44 +0100 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2021-01-30 14:21:26 +0100 |
commit | d5de1bc23d693df76444f1454a783e80cda89a88 (patch) | |
tree | cf1a807cb15156d20ff61f81b0c33d9f539b808e /Process.c | |
parent | a3c8285237c673189b28c897910cf6eb8629bfaf (diff) |
Overhaul sorting of state process column
Do not sort by ascii value of the state identifier, sort by relevance
Diffstat (limited to 'Process.c')
-rw-r--r-- | Process.c | 40 |
1 files changed, 39 insertions, 1 deletions
@@ -518,6 +518,44 @@ int Process_compare(const void* v1, const void* v2) { return result; } +static uint8_t stateCompareValue(char state) { + switch (state) { + + case 'S': + return 10; + + case 'I': + return 9; + + case 'X': + return 8; + + case 'Z': + return 7; + + case 't': + return 6; + + case 'T': + return 5; + + case 'L': + return 4; + + case 'D': + return 3; + + case 'R': + return 2; + + case '?': + return 1; + + default: + return 0; + } +} + int Process_compareByKey_Base(const Process* p1, const Process* p2, ProcessField key) { int r; @@ -557,7 +595,7 @@ int Process_compareByKey_Base(const Process* p1, const Process* p2, ProcessField r = SPACESHIP_NUMBER(p1->starttime_ctime, p2->starttime_ctime); return r != 0 ? r : SPACESHIP_NUMBER(p1->pid, p2->pid); case STATE: - return SPACESHIP_NUMBER(Process_sortState(p1->state), Process_sortState(p2->state)); + return SPACESHIP_NUMBER(stateCompareValue(p1->state), stateCompareValue(p2->state)); case ST_UID: return SPACESHIP_NUMBER(p1->st_uid, p2->st_uid); case TIME: |