From 76c486fa56b56441464445592da060c00b9dd122 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Debian Linux)" <rob@synchro.net>
Date: Thu, 14 Sep 2023 13:59:41 -0700
Subject: [PATCH] A simple script to delete messages a msgbase

e.g. 'jsexec delmsgs mail from joe-blow'
---
 exec/delmsgs.js | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 exec/delmsgs.js

diff --git a/exec/delmsgs.js b/exec/delmsgs.js
new file mode 100644
index 0000000000..eecd0a9077
--- /dev/null
+++ b/exec/delmsgs.js
@@ -0,0 +1,34 @@
+// Delete msgs
+// usage: [msg-base=mail] [hdr-field=from] "value"
+
+load("sbbsdefs.js");
+
+"use strict";
+
+var base = new MsgBase(argv[0] || "mail");
+var field = argv[1] || "from";
+var value = String(argv[2]).toLowerCase();
+if(!base.open())
+	throw new Error("Can't open base: " + base.code);
+var total_msgs = base.total_msgs;
+var removed = 0;
+for(i=0;i<total_msgs;i++) {
+	hdr = base.get_msg_header(	/* by_offset:		*/	true,
+								/* offset:			*/	i,
+								/* expand_fields:	*/	false);
+	printf("#%lu from: %-30s %08lx\r\n",hdr.number,hdr.from,hdr.attr);
+	if(hdr && !(hdr.attr & MSG_DELETE) && String(hdr[field]).toLowerCase() == value) {
+		hdr.attr |= MSG_DELETE;
+		printf("Removing message #%lu\r\n",hdr.number);
+		if(!base.put_msg_header(true,i,hdr))
+			alert(base.last_error);
+		else {
+			removed++;
+		}
+	}
+}
+
+base.close();
+
+print();
+print(format("Removed %u msgs", removed));
-- 
GitLab