浏览代码

Fix busted display of tty names in /proc/summary.

Andreas Kling 6 年之前
父节点
当前提交
d980ddc745
共有 4 个文件被更改,包括 17 次插入2 次删除
  1. 2 1
      Kernel/ProcFileSystem.cpp
  2. 11 0
      Kernel/StdLib.cpp
  3. 1 0
      Kernel/StdLib.h
  4. 3 1
      Kernel/sync.sh

+ 2 - 1
Kernel/ProcFileSystem.cpp

@@ -3,6 +3,7 @@
 #include <VirtualFileSystem/VirtualFileSystem.h>
 #include <VirtualFileSystem/VirtualFileSystem.h>
 #include "system.h"
 #include "system.h"
 #include "MemoryManager.h"
 #include "MemoryManager.h"
+#include "StdLib.h"
 
 
 static ProcFileSystem* s_the;
 static ProcFileSystem* s_the;
 
 
@@ -210,7 +211,7 @@ ByteBuffer procfs$summary()
             task->parentPID(),
             task->parentPID(),
             task->timesScheduled(),
             task->timesScheduled(),
             task->fileHandleCount(),
             task->fileHandleCount(),
-            task->tty() ? task->tty()->ttyName().characters() : "n/a",
+            task->tty() ? strrchr(task->tty()->ttyName().characters(), '/') + 1 : "n/a",
             task->name().characters());
             task->name().characters());
     }
     }
     *ptr = '\0';
     *ptr = '\0';

+ 11 - 0
Kernel/StdLib.cpp

@@ -24,6 +24,17 @@ void* memset(void* dest, BYTE c, DWORD n)
     return dest;
     return dest;
 }
 }
 
 
+char* strrchr(const char* str, int ch)
+{
+    char *last = nullptr;
+    char c;
+    for (; (c = *str); ++str) {
+        if (c == ch)
+            last = (char*)str;
+    }
+    return last;
+}
+
 DWORD strlen(const char* str)
 DWORD strlen(const char* str)
 {
 {
     DWORD len = 0;
     DWORD len = 0;

+ 1 - 0
Kernel/StdLib.h

@@ -19,3 +19,4 @@ DWORD strlen(const char*);
 void *memset(void*, BYTE, DWORD);
 void *memset(void*, BYTE, DWORD);
 char *strdup(const char*);
 char *strdup(const char*);
 int memcmp(const void*, const void*, size_t);
 int memcmp(const void*, const void*, size_t);
+char* strrchr(const char* str, int ch);

+ 3 - 1
Kernel/sync.sh

@@ -1,5 +1,7 @@
+rm -f _fs_contents.lock
+rm -f _fs_contents
 cp -p _fs_contents.stock _fs_contents
 cp -p _fs_contents.stock _fs_contents
-mkdir mnt
+mkdir -p mnt
 mount -o loop _fs_contents mnt/
 mount -o loop _fs_contents mnt/
 cp -R ../Base/* mnt/
 cp -R ../Base/* mnt/
 cp ../Userland/sh mnt/bin/sh
 cp ../Userland/sh mnt/bin/sh