summaryrefslogtreecommitdiffstats
path: root/Process.c
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2021-01-27 15:11:44 +0100
committerBenBE <BenBE@geshi.org>2021-01-30 14:21:26 +0100
commitd5de1bc23d693df76444f1454a783e80cda89a88 (patch)
treecf1a807cb15156d20ff61f81b0c33d9f539b808e /Process.c
parenta3c8285237c673189b28c897910cf6eb8629bfaf (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.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/Process.c b/Process.c
index f164e5f5..38572da2 100644
--- a/Process.c
+++ b/Process.c
@@ -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:

© 2014-2024 Faster IT GmbH | imprint | privacy policy