Round 287: ACL ext, Xattr ext, Chattr ext, Quota ext, Fstab ext (20 commands)

ober

9a12c25aae556e64c795d32d5af5a1f9f87410c6

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 72f49f7..2ca9430 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 287 — ACL ext, Xattr ext, Chattr ext, Quota ext, Fstab ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| acl-get | :orange_circle: | Get file ACL |
+| acl-set | :orange_circle: | Set file ACL |
+| acl-remove | :orange_circle: | Remove file ACL |
+| acl-default | :orange_circle: | Set default ACL |
+| xattr-list | :orange_circle: | List extended attributes |
+| xattr-get | :orange_circle: | Get extended attribute |
+| xattr-set | :orange_circle: | Set extended attribute |
+| xattr-remove | :orange_circle: | Remove extended attribute |
+| chown-recursive | :orange_circle: | Recursive chown |
+| chmod-recursive | :orange_circle: | Recursive chmod |
+| chattr-set | :orange_circle: | Set file attributes |
+| chattr-get | :orange_circle: | Get file attributes |
+| quota-check | :orange_circle: | Check disk quotas |
+| quota-set | :orange_circle: | Set user quota |
+| quota-report | :orange_circle: | Generate quota report |
+| quota-status | :orange_circle: | Show quota status |
+| fstab-list | :orange_circle: | List fstab entries |
+| fstab-add | :orange_circle: | Add fstab entry |
+| fstab-remove | :orange_circle: | Remove fstab entry |
+| fstab-check | :orange_circle: | Check fstab syntax |
+
 ### Round 286 — PAM ext, SSHD ext, GPG ext, SSL ext, Vault ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 909577c..c4dcd94 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22235,4 +22235,56 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Secret path: "
       (lambda (path)
-        (echo-message! echo (str "Vault: reading " path))))))
\ No newline at end of file
+        (echo-message! echo (str "Vault: reading " path))))))
+
+;;; Round 287 — Chattr ext, Quota ext, Fstab ext (batch 2)
+
+(def (cmd-chattr-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Chattr: setting attributes on " file))))))
+
+(def (cmd-chattr-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Chattr: getting attributes of " file))))))
+
+(def (cmd-quota-check app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Quota: checking quotas")))
+
+(def (cmd-quota-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "User: "
+      (lambda (user)
+        (echo-message! echo (str "Quota: setting for " user))))))
+
+(def (cmd-quota-report app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Quota: generating report")))
+
+(def (cmd-quota-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Quota: showing status")))
+
+(def (cmd-fstab-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fstab: listing entries")))
+
+(def (cmd-fstab-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "Fstab: adding entry for " dev))))))
+
+(def (cmd-fstab-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Mount point: "
+      (lambda (mp)
+        (echo-message! echo (str "Fstab: removing " mp))))))
+
+(def (cmd-fstab-check app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fstab: checking syntax")))
\ 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 da99052..c91f7af 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -22888,3 +22888,65 @@
       (lambda (file)
         (echo-message! echo (str "GPG: importing " file))))))
 
+;;; Round 287 — ACL ext, Xattr ext, Chattr ext (batch 1)
+
+(def (cmd-acl-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "ACL: getting ACL for " file))))))
+
+(def (cmd-acl-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "ACL: setting ACL on " file))))))
+
+(def (cmd-acl-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "ACL: removing ACL from " file))))))
+
+(def (cmd-acl-default app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Directory: "
+      (lambda (dir)
+        (echo-message! echo (str "ACL: setting default ACL on " dir))))))
+
+(def (cmd-xattr-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Xattr: listing attributes of " file))))))
+
+(def (cmd-xattr-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Xattr: getting attribute from " file))))))
+
+(def (cmd-xattr-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Xattr: setting attribute on " file))))))
+
+(def (cmd-xattr-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Xattr: removing attribute from " file))))))
+
+(def (cmd-chown-recursive app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Path: "
+      (lambda (path)
+        (echo-message! echo (str "Chown: recursive on " path))))))
+
+(def (cmd-chmod-recursive app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Path: "
+      (lambda (path)
+        (echo-message! echo (str "Chmod: recursive on " path))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index faf4db2..911b6c9 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7444,4 +7444,25 @@
   (register-command! 'vault-seal cmd-vault-seal)
   (register-command! 'vault-unseal cmd-vault-unseal)
   (register-command! 'vault-read cmd-vault-read)
+  ;; Round 287
+  (register-command! 'acl-get cmd-acl-get)
+  (register-command! 'acl-set cmd-acl-set)
+  (register-command! 'acl-remove cmd-acl-remove)
+  (register-command! 'acl-default cmd-acl-default)
+  (register-command! 'xattr-list cmd-xattr-list)
+  (register-command! 'xattr-get cmd-xattr-get)
+  (register-command! 'xattr-set cmd-xattr-set)
+  (register-command! 'xattr-remove cmd-xattr-remove)
+  (register-command! 'chown-recursive cmd-chown-recursive)
+  (register-command! 'chmod-recursive cmd-chmod-recursive)
+  (register-command! 'chattr-set cmd-chattr-set)
+  (register-command! 'chattr-get cmd-chattr-get)
+  (register-command! 'quota-check cmd-quota-check)
+  (register-command! 'quota-set cmd-quota-set)
+  (register-command! 'quota-report cmd-quota-report)
+  (register-command! 'quota-status cmd-quota-status)
+  (register-command! 'fstab-list cmd-fstab-list)
+  (register-command! 'fstab-add cmd-fstab-add)
+  (register-command! 'fstab-remove cmd-fstab-remove)
+  (register-command! 'fstab-check cmd-fstab-check)
 )