Refactor to tty_nr process field display

If no terminal name can be found, fall back to generic display method
with major and minor device numbers.

Print special value '(none)' in case both are zero.
main
Christian Göttsche 5 years ago committed by BenBE
parent 03d6345c89
commit a3c8285237
  1. 12
      Process.c
  2. 13
      linux/LinuxProcess.c

@ -365,7 +365,17 @@ void Process_writeField(const Process* this, RichString* str, ProcessField field
case TIME: Process_printTime(str, this->time); return; case TIME: Process_printTime(str, this->time); return;
case TGID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->tgid); break; case TGID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->tgid); break;
case TPGID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, this->tpgid); 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 TTY_NR: {
unsigned int major = major(this->tty_nr);
unsigned int minor = minor(this->tty_nr);
if (major == 0 && minor == 0) {
attr = CRT_colors[PROCESS_SHADOW];
xSnprintf(buffer, n, "(none) ");
} else {
xSnprintf(buffer, n, "%3u:%3u ", major, minor);
}
break;
}
case USER: { case USER: {
if (Process_getuid != this->st_uid) if (Process_getuid != this->st_uid)
attr = CRT_colors[PROCESS_SHADOW]; attr = CRT_colors[PROCESS_SHADOW];

@ -607,15 +607,14 @@ static void LinuxProcess_writeField(const Process* this, RichString* str, Proces
int attr = CRT_colors[DEFAULT_COLOR]; int attr = CRT_colors[DEFAULT_COLOR];
size_t n = sizeof(buffer) - 1; size_t n = sizeof(buffer) - 1;
switch (field) { switch (field) {
case TTY_NR: { case TTY_NR:
if (lp->ttyDevice) { if (lp->ttyDevice) {
xSnprintf(buffer, n, "%-9s", lp->ttyDevice + 5 /* skip "/dev/" */); xSnprintf(buffer, n, "%-8s ", lp->ttyDevice + 5 /* skip "/dev/" */);
} else { break;
attr = CRT_colors[PROCESS_SHADOW];
xSnprintf(buffer, n, "? ");
} }
break;
} Process_writeField(this, str, field);
return;
case CMINFLT: Process_colorNumber(str, lp->cminflt, coloring); return; case CMINFLT: Process_colorNumber(str, lp->cminflt, coloring); return;
case CMAJFLT: Process_colorNumber(str, lp->cmajflt, coloring); return; case CMAJFLT: Process_colorNumber(str, lp->cmajflt, coloring); return;
case M_DRS: Process_humanNumber(str, lp->m_drs * pageSizeKB, coloring); return; case M_DRS: Process_humanNumber(str, lp->m_drs * pageSizeKB, coloring); return;

Loading…
Cancel
Save