Round 326: Mount ext, Umount ext, Findmnt ext, Lsblk ext, Losetup ext (20 commands)

ober

305e674ce0c66ec73106affc5402ac163c05ec29

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index ab7a716..ac663ae 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 326 — Mount ext, Umount ext, Findmnt ext, Lsblk ext, Losetup ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `mount-device` | :orange_circle: | Mount device |
+| `mount-bind` | :orange_circle: | Bind mount |
+| `mount-tmpfs` | :orange_circle: | Mount tmpfs |
+| `mount-overlay` | :orange_circle: | Mount overlay |
+| `umount-device` | :orange_circle: | Unmount device |
+| `umount-lazy` | :orange_circle: | Lazy unmount |
+| `umount-force` | :orange_circle: | Force unmount |
+| `umount-all` | :orange_circle: | Unmount all |
+| `findmnt-show` | :orange_circle: | Show mount table |
+| `findmnt-source` | :orange_circle: | Find by source |
+| `findmnt-target` | :orange_circle: | Find by target |
+| `findmnt-type` | :orange_circle: | Find by type |
+| `lsblk-show` | :orange_circle: | Show block devices |
+| `lsblk-json` | :orange_circle: | Show as JSON |
+| `lsblk-paths` | :orange_circle: | Show full paths |
+| `lsblk-discard` | :orange_circle: | Show discard info |
+| `losetup-list` | :orange_circle: | List loop devices |
+| `losetup-attach` | :orange_circle: | Attach loop device |
+| `losetup-detach` | :orange_circle: | Detach loop device |
+| `losetup-info` | :orange_circle: | Show loop device info |
+
 ### Round 325 — Mkfs ext, Fsck ext, Tune2fs ext, Xfs-admin ext, Resize2fs ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 900f653..63567cd 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24331,4 +24331,56 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Device: "
       (lambda (dev)
-        (echo-message! echo (str "Resize2fs: checking " dev))))))
\ No newline at end of file
+        (echo-message! echo (str "Resize2fs: checking " dev))))))
+
+;;; Round 326 — Findmnt ext, Lsblk ext, Losetup ext (batch 2)
+
+(def (cmd-findmnt-target app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Target path: "
+      (lambda (path)
+        (echo-message! echo (str "Findmnt: finding mount at " path))))))
+
+(def (cmd-findmnt-type app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Filesystem type: "
+      (lambda (fstype)
+        (echo-message! echo (str "Findmnt: finding " fstype " mounts"))))))
+
+(def (cmd-lsblk-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsblk: showing block devices")))
+
+(def (cmd-lsblk-json app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsblk: showing block devices (JSON)")))
+
+(def (cmd-lsblk-paths app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsblk: showing full device paths")))
+
+(def (cmd-lsblk-discard app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lsblk: showing discard capabilities")))
+
+(def (cmd-losetup-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Losetup: listing loop devices")))
+
+(def (cmd-losetup-attach app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Image file: "
+      (lambda (img)
+        (echo-message! echo (str "Losetup: attaching " img))))))
+
+(def (cmd-losetup-detach app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Loop device: "
+      (lambda (dev)
+        (echo-message! echo (str "Losetup: detaching " dev))))))
+
+(def (cmd-losetup-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Loop device: "
+      (lambda (dev)
+        (echo-message! echo (str "Losetup: info for " dev))))))
\ 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 02ede7b..824da3c 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -25032,3 +25032,61 @@
       (lambda (spec)
         (echo-message! echo (str "Tune2fs: setting " spec))))))
 
+;;; Round 326 — Mount ext, Umount ext, Findmnt ext, Lsblk ext, Losetup ext (batch 1)
+
+(def (cmd-mount-device app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device and mountpoint: "
+      (lambda (spec)
+        (echo-message! echo (str "Mount: mounting " spec))))))
+
+(def (cmd-mount-bind app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Source and target: "
+      (lambda (spec)
+        (echo-message! echo (str "Mount: bind mounting " spec))))))
+
+(def (cmd-mount-tmpfs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Mountpoint: "
+      (lambda (mnt)
+        (echo-message! echo (str "Mount: tmpfs at " mnt))))))
+
+(def (cmd-mount-overlay app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Lower:upper:work:target: "
+      (lambda (spec)
+        (echo-message! echo (str "Mount: overlay " spec))))))
+
+(def (cmd-umount-device app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Mountpoint: "
+      (lambda (mnt)
+        (echo-message! echo (str "Umount: unmounting " mnt))))))
+
+(def (cmd-umount-lazy app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Mountpoint: "
+      (lambda (mnt)
+        (echo-message! echo (str "Umount: lazy unmounting " mnt))))))
+
+(def (cmd-umount-force app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Mountpoint: "
+      (lambda (mnt)
+        (echo-message! echo (str "Umount: force unmounting " mnt))))))
+
+(def (cmd-umount-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Umount: unmounting all filesystems")))
+
+(def (cmd-findmnt-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Findmnt: showing mount table")))
+
+(def (cmd-findmnt-source app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Source device: "
+      (lambda (dev)
+        (echo-message! echo (str "Findmnt: finding mounts from " dev))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 3738416..2aa6dc9 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8263,4 +8263,25 @@
   (register-command! 'resize2fs-shrink cmd-resize2fs-shrink)
   (register-command! 'resize2fs-info cmd-resize2fs-info)
   (register-command! 'resize2fs-check cmd-resize2fs-check)
+  ;; Round 326
+  (register-command! 'mount-device cmd-mount-device)
+  (register-command! 'mount-bind cmd-mount-bind)
+  (register-command! 'mount-tmpfs cmd-mount-tmpfs)
+  (register-command! 'mount-overlay cmd-mount-overlay)
+  (register-command! 'umount-device cmd-umount-device)
+  (register-command! 'umount-lazy cmd-umount-lazy)
+  (register-command! 'umount-force cmd-umount-force)
+  (register-command! 'umount-all cmd-umount-all)
+  (register-command! 'findmnt-show cmd-findmnt-show)
+  (register-command! 'findmnt-source cmd-findmnt-source)
+  (register-command! 'findmnt-target cmd-findmnt-target)
+  (register-command! 'findmnt-type cmd-findmnt-type)
+  (register-command! 'lsblk-show cmd-lsblk-show)
+  (register-command! 'lsblk-json cmd-lsblk-json)
+  (register-command! 'lsblk-paths cmd-lsblk-paths)
+  (register-command! 'lsblk-discard cmd-lsblk-discard)
+  (register-command! 'losetup-list cmd-losetup-list)
+  (register-command! 'losetup-attach cmd-losetup-attach)
+  (register-command! 'losetup-detach cmd-losetup-detach)
+  (register-command! 'losetup-info cmd-losetup-info)
 )