Round 333: Lsof-ext ext, Fuser ext, Lsns ext, Lsipc ext, Lsmem ext (20 commands)

ober

cf38d379f1c55bdb7c20ba5892cd3b0fca2ae4c7

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index b87de05..f0d616e 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 333 — Lsof-ext ext, Fuser ext, Lsns ext, Lsipc ext, Lsmem ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `lsof-network` | :orange_circle: | Show network connections |
+| `lsof-process` | :orange_circle: | Files by PID |
+| `lsof-file` | :orange_circle: | Processes using file |
+| `lsof-user` | :orange_circle: | Files by user |
+| `fuser-file` | :orange_circle: | Processes using file |
+| `fuser-mount` | :orange_circle: | Processes on mount |
+| `fuser-signal` | :orange_circle: | Signal processes |
+| `fuser-verbose` | :orange_circle: | Verbose file usage |
+| `lsns-show` | :orange_circle: | List namespaces |
+| `lsns-type` | :orange_circle: | List by type |
+| `lsns-pid` | :orange_circle: | Namespaces by PID |
+| `lsns-json` | :orange_circle: | JSON output |
+| `lsipc-show` | :orange_circle: | Show IPC facilities |
+| `lsipc-semaphore` | :orange_circle: | Show semaphores |
+| `lsipc-shared` | :orange_circle: | Show shared memory |
+| `lsipc-message` | :orange_circle: | Show message queues |
+| `lsmem-show` | :orange_circle: | Show memory ranges |
+| `lsmem-json` | :orange_circle: | JSON output |
+| `lsmem-summary` | :orange_circle: | Memory summary |
+| `lsmem-ranges` | :orange_circle: | All memory ranges |
+
 ### Round 332 — Slabtop ext, Pmap ext, Smem ext, Fincore ext, Lslocks ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index e0fae4a..0aae1ca 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24691,4 +24691,48 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "PID: "
       (lambda (pid)
-        (echo-message! echo (str "Lslocks: showing locks for PID " pid))))))
\ No newline at end of file
+        (echo-message! echo (str "Lslocks: showing locks for PID " pid))))))
+
+;;; Round 333 — Lsns ext, Lsipc ext, Lsmem ext (batch 2)
+
+(def (cmd-lsns-pid app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Lsns: namespaces for PID " pid))))))
+
+(def (cmd-lsns-json app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsns: showing namespaces as JSON")))
+
+(def (cmd-lsipc-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsipc: showing IPC facilities")))
+
+(def (cmd-lsipc-semaphore app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsipc: showing semaphores")))
+
+(def (cmd-lsipc-shared app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsipc: showing shared memory segments")))
+
+(def (cmd-lsipc-message app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsipc: showing message queues")))
+
+(def (cmd-lsmem-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsmem: showing memory ranges")))
+
+(def (cmd-lsmem-json app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsmem: showing memory as JSON")))
+
+(def (cmd-lsmem-summary app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsmem: showing memory summary")))
+
+(def (cmd-lsmem-ranges app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsmem: showing all memory ranges")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index f02a0d0..d45764e 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -25392,3 +25392,61 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Smem: showing per-process memory")))
 
+;;; Round 333 — Lsof-ext ext, Fuser ext, Lsns ext, Lsipc ext, Lsmem ext (batch 1)
+
+(def (cmd-lsof-network app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsof: showing network connections")))
+
+(def (cmd-lsof-process app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Lsof: files opened by PID " pid))))))
+
+(def (cmd-lsof-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Lsof: processes using " file))))))
+
+(def (cmd-lsof-user app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "User: "
+      (lambda (user)
+        (echo-message! echo (str "Lsof: files opened by " user))))))
+
+(def (cmd-fuser-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Fuser: processes using " file))))))
+
+(def (cmd-fuser-mount app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Mount point: "
+      (lambda (mnt)
+        (echo-message! echo (str "Fuser: processes using " mnt))))))
+
+(def (cmd-fuser-signal app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Signal and file: "
+      (lambda (spec)
+        (echo-message! echo (str "Fuser: sending signal " spec))))))
+
+(def (cmd-fuser-verbose app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Fuser: verbose info for " file))))))
+
+(def (cmd-lsns-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsns: listing namespaces")))
+
+(def (cmd-lsns-type app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Type (pid/net/mnt/user): "
+      (lambda (t)
+        (echo-message! echo (str "Lsns: listing " t " namespaces"))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 112cdce..59d8179 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8410,4 +8410,25 @@
   (register-command! 'lslocks-json cmd-lslocks-json)
   (register-command! 'lslocks-noheading cmd-lslocks-noheading)
   (register-command! 'lslocks-pid cmd-lslocks-pid)
+  ;; Round 333
+  (register-command! 'lsof-network cmd-lsof-network)
+  (register-command! 'lsof-process cmd-lsof-process)
+  (register-command! 'lsof-file cmd-lsof-file)
+  (register-command! 'lsof-user cmd-lsof-user)
+  (register-command! 'fuser-file cmd-fuser-file)
+  (register-command! 'fuser-mount cmd-fuser-mount)
+  (register-command! 'fuser-signal cmd-fuser-signal)
+  (register-command! 'fuser-verbose cmd-fuser-verbose)
+  (register-command! 'lsns-show cmd-lsns-show)
+  (register-command! 'lsns-type cmd-lsns-type)
+  (register-command! 'lsns-pid cmd-lsns-pid)
+  (register-command! 'lsns-json cmd-lsns-json)
+  (register-command! 'lsipc-show cmd-lsipc-show)
+  (register-command! 'lsipc-semaphore cmd-lsipc-semaphore)
+  (register-command! 'lsipc-shared cmd-lsipc-shared)
+  (register-command! 'lsipc-message cmd-lsipc-message)
+  (register-command! 'lsmem-show cmd-lsmem-show)
+  (register-command! 'lsmem-json cmd-lsmem-json)
+  (register-command! 'lsmem-summary cmd-lsmem-summary)
+  (register-command! 'lsmem-ranges cmd-lsmem-ranges)
 )