summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Process.c12
-rw-r--r--linux/LinuxProcess.c13
2 files changed, 17 insertions, 8 deletions
diff --git a/Process.c b/Process.c
index 3f91b67d..f164e5f5 100644
--- a/Process.c
+++ b/Process.c
@@ -365,7 +365,17 @@ void Process_writeField(const Process* this, RichString* str, ProcessField field
case TIME: Process_printTime(str, this->time); return;
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 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: {
if (Process_getuid != this->st_uid)
attr = CRT_colors[PROCESS_SHADOW];
diff --git a/linux/LinuxProcess.c b/linux/LinuxProcess.c
index 488b9372..79e73e84 100644
--- a/linux/LinuxProcess.c
+++ b/linux/LinuxProcess.c
@@ -607,15 +607,14 @@ static void LinuxProcess_writeField(const Process* this, RichString* str, Proces
int attr = CRT_colors[DEFAULT_COLOR];
size_t n = sizeof(buffer) - 1;
switch (field) {
- case TTY_NR: {
+ case TTY_NR:
if (lp->ttyDevice) {
- xSnprintf(buffer, n, "%-9s", lp->ttyDevice + 5 /* skip "/dev/" */);
- } else {
- attr = CRT_colors[PROCESS_SHADOW];
- xSnprintf(buffer, n, "? ");
+ xSnprintf(buffer, n, "%-8s ", lp->ttyDevice + 5 /* skip "/dev/" */);
+ break;
}
- break;
- }
+
+ Process_writeField(this, str, field);
+ return;
case CMINFLT: Process_colorNumber(str, lp->cminflt, coloring); return;
case CMAJFLT: Process_colorNumber(str, lp->cmajflt, coloring); return;
case M_DRS: Process_humanNumber(str, lp->m_drs * pageSizeKB, coloring); return;