diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2020-12-15 19:44:52 +0100 |
---|---|---|
committer | cgzones <cgzones@googlemail.com> | 2020-12-19 21:13:32 +0100 |
commit | 9f68c8d34142746a16ea3883d736a0955977e625 (patch) | |
tree | fd9e6beb513616093a2ce41b35fa9d48afffa7c6 /Process.c | |
parent | 89473cc9ae950bbb5e291d1f186d372f66f66394 (diff) |
Merge Process_pidColumns into Process_fields and rework auto-fit for PID-like columns
Diffstat (limited to 'Process.c')
-rw-r--r-- | Process.c | 26 |
1 files changed, 9 insertions, 17 deletions
@@ -38,23 +38,15 @@ in the source distribution for its full text. static uid_t Process_getuid = (uid_t)-1; -char Process_pidFormat[20] = "%7d "; - -static char Process_titleBuffer[20][20]; +int Process_pidDigits = 7; void Process_setupColumnWidths() { int maxPid = Platform_getMaxPid(); if (maxPid == -1) return; - int digits = ceil(log10(maxPid)); - assert(digits < 20); - for (int i = 0; Process_pidColumns[i].label; i++) { - assert(i < 20); - xSnprintf(Process_titleBuffer[i], 20, "%*s ", digits, Process_pidColumns[i].label); - Process_fields[Process_pidColumns[i].id].title = Process_titleBuffer[i]; - } - xSnprintf(Process_pidFormat, sizeof(Process_pidFormat), "%%%dd ", digits); + Process_pidDigits = ceil(log10(maxPid)); + assert(Process_pidDigits <= PROCESS_MAX_PID_DIGITS); } void Process_humanNumber(RichString* str, unsigned long long number, bool coloring) { @@ -338,9 +330,9 @@ void Process_writeField(const Process* this, RichString* str, ProcessField field break; } case NLWP: xSnprintf(buffer, n, "%4ld ", this->nlwp); break; - case PGRP: xSnprintf(buffer, n, Process_pidFormat, this->pgrp); break; - case PID: xSnprintf(buffer, n, Process_pidFormat, this->pid); break; - case PPID: xSnprintf(buffer, n, Process_pidFormat, this->ppid); break; + case PGRP: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->pgrp); break; + case PID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->pid); break; + case PPID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->ppid); break; case PRIORITY: { if(this->priority <= -100) xSnprintf(buffer, n, " RT "); @@ -349,7 +341,7 @@ void Process_writeField(const Process* this, RichString* str, ProcessField field break; } case PROCESSOR: xSnprintf(buffer, n, "%3d ", Settings_cpuId(this->settings, this->processor)); break; - case SESSION: xSnprintf(buffer, n, Process_pidFormat, this->session); break; + case SESSION: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->session); break; case STARTTIME: xSnprintf(buffer, n, "%s", this->starttime_show); break; case STATE: { xSnprintf(buffer, n, "%c ", this->state); @@ -365,8 +357,8 @@ void Process_writeField(const Process* this, RichString* str, ProcessField field } case ST_UID: xSnprintf(buffer, n, "%5d ", this->st_uid); break; case TIME: Process_printTime(str, this->time); return; - case TGID: xSnprintf(buffer, n, Process_pidFormat, this->tgid); break; - case TPGID: xSnprintf(buffer, n, Process_pidFormat, this->tpgid); break; + case TGID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->tgid); break; + case TPGID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->tpgid); break; case TTY_NR: xSnprintf(buffer, n, "%3u:%3u ", major(this->tty_nr), minor(this->tty_nr)); break; case USER: { if (Process_getuid != this->st_uid) |