Round 308: CUPS ext, Lp ext, Avahi ext, Resolvectl ext, Ethtool ext (20 commands)

ober

4c54a8ad7cc8c83de2d35c9c842a49f4c75750b7

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 569f26a..57f039a 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 308 — CUPS ext, Lp ext, Avahi ext, Resolvectl ext, Ethtool ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| cups-list | :orange_circle: | List printers |
+| cups-add | :orange_circle: | Add printer |
+| cups-remove | :orange_circle: | Remove printer |
+| cups-status | :orange_circle: | Show CUPS status |
+| lp-print | :orange_circle: | Print file |
+| lp-queue | :orange_circle: | Show print queue |
+| lp-cancel | :orange_circle: | Cancel print job |
+| lp-status | :orange_circle: | Printer status |
+| avahi-browse | :orange_circle: | Browse mDNS services |
+| avahi-resolve | :orange_circle: | Resolve hostname |
+| avahi-publish | :orange_circle: | Publish service |
+| avahi-daemon | :orange_circle: | Daemon status |
+| resolvectl-status | :orange_circle: | DNS resolver status |
+| resolvectl-query | :orange_circle: | Query DNS |
+| resolvectl-flush | :orange_circle: | Flush DNS cache |
+| resolvectl-statistics | :orange_circle: | DNS statistics |
+| ethtool-info | :orange_circle: | Show NIC info |
+| ethtool-stats | :orange_circle: | Show NIC stats |
+| ethtool-speed | :orange_circle: | Show NIC speed |
+| ethtool-ring | :orange_circle: | Show ring params |
+
 ### Round 307 — NetworkManager ext, Nmcli ext, WPA Supplicant ext, Iw ext, Hostapd ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 7a018ed..40dd84e 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -23351,4 +23351,58 @@
 
 (def (cmd-hostapd-config app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Hostapd: viewing configuration")))
\ No newline at end of file
+    (echo-message! echo "Hostapd: viewing configuration")))
+
+;;; Round 308 — Avahi ext, Resolvectl ext, Ethtool ext (batch 2)
+
+(def (cmd-avahi-publish app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Service name: "
+      (lambda (svc)
+        (echo-message! echo (str "Avahi: publishing " svc))))))
+
+(def (cmd-avahi-daemon app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Avahi: daemon status")))
+
+(def (cmd-resolvectl-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Resolvectl: showing status")))
+
+(def (cmd-resolvectl-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Hostname: "
+      (lambda (host)
+        (echo-message! echo (str "Resolvectl: querying " host))))))
+
+(def (cmd-resolvectl-flush app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Resolvectl: flushing DNS cache")))
+
+(def (cmd-resolvectl-statistics app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Resolvectl: showing statistics")))
+
+(def (cmd-ethtool-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Ethtool: info for " iface))))))
+
+(def (cmd-ethtool-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Ethtool: stats for " iface))))))
+
+(def (cmd-ethtool-speed app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Ethtool: speed of " iface))))))
+
+(def (cmd-ethtool-ring app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Ethtool: ring params of " iface))))))
\ 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 b42b823..1334883 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -24078,3 +24078,55 @@
       (lambda (ssid)
         (echo-message! echo (str "WPA: connecting to " ssid))))))
 
+;;; Round 308 — CUPS ext, Lp ext, Avahi ext (batch 1)
+
+(def (cmd-cups-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CUPS: listing printers")))
+
+(def (cmd-cups-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Printer URI: "
+      (lambda (uri)
+        (echo-message! echo (str "CUPS: adding printer " uri))))))
+
+(def (cmd-cups-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Printer: "
+      (lambda (ptr)
+        (echo-message! echo (str "CUPS: removing " ptr))))))
+
+(def (cmd-cups-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CUPS: showing status")))
+
+(def (cmd-lp-print app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "Lp: printing " file))))))
+
+(def (cmd-lp-queue app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lp: showing print queue")))
+
+(def (cmd-lp-cancel app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Job ID: "
+      (lambda (id)
+        (echo-message! echo (str "Lp: cancelling job " id))))))
+
+(def (cmd-lp-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lp: showing printer status")))
+
+(def (cmd-avahi-browse app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Avahi: browsing services")))
+
+(def (cmd-avahi-resolve app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Hostname: "
+      (lambda (host)
+        (echo-message! echo (str "Avahi: resolving " host))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index a02e37b..59792f3 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7885,4 +7885,25 @@
   (register-command! 'hostapd-stop cmd-hostapd-stop)
   (register-command! 'hostapd-status cmd-hostapd-status)
   (register-command! 'hostapd-config cmd-hostapd-config)
+  ;; Round 308
+  (register-command! 'cups-list cmd-cups-list)
+  (register-command! 'cups-add cmd-cups-add)
+  (register-command! 'cups-remove cmd-cups-remove)
+  (register-command! 'cups-status cmd-cups-status)
+  (register-command! 'lp-print cmd-lp-print)
+  (register-command! 'lp-queue cmd-lp-queue)
+  (register-command! 'lp-cancel cmd-lp-cancel)
+  (register-command! 'lp-status cmd-lp-status)
+  (register-command! 'avahi-browse cmd-avahi-browse)
+  (register-command! 'avahi-resolve cmd-avahi-resolve)
+  (register-command! 'avahi-publish cmd-avahi-publish)
+  (register-command! 'avahi-daemon cmd-avahi-daemon)
+  (register-command! 'resolvectl-status cmd-resolvectl-status)
+  (register-command! 'resolvectl-query cmd-resolvectl-query)
+  (register-command! 'resolvectl-flush cmd-resolvectl-flush)
+  (register-command! 'resolvectl-statistics cmd-resolvectl-statistics)
+  (register-command! 'ethtool-info cmd-ethtool-info)
+  (register-command! 'ethtool-stats cmd-ethtool-stats)
+  (register-command! 'ethtool-speed cmd-ethtool-speed)
+  (register-command! 'ethtool-ring cmd-ethtool-ring)
 )