From f14c493976748127b52d34f010c3f41397d81ad6 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Wed, 30 Oct 2002 10:36:02 +0000
Subject: [PATCH] MsgBase class now requires an open() method call.

---
 exec/chkspace.js    |  4 ++++
 exec/newslink.js    |  5 +++--
 exec/nntpservice.js | 22 ++++++++++++++++------
 3 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/exec/chkspace.js b/exec/chkspace.js
index 16090039e8..1d50eba4c9 100644
--- a/exec/chkspace.js
+++ b/exec/chkspace.js
@@ -12,6 +12,10 @@ if(freespace==-1 || freespace > Number(argv[0])*1024*1024)
 log("!Low disk space: " + freespace + " bytes");
 
 msgbase = new MsgBase("mail");
+if(msgbase.open!=undefined && msgbase.open()==false) {
+	log("!ERROR " + msgbase.last_error);
+	exit();
+}
 
 hdr = { to: 'sysop', to_ext: '1', from: 'chkspace', subject: 'Low disk space notification' }
 
diff --git a/exec/newslink.js b/exec/newslink.js
index e7cc488fbf..94024e5209 100644
--- a/exec/newslink.js
+++ b/exec/newslink.js
@@ -214,8 +214,9 @@ for(i in area) {
 
 	printf("sub: %s, newsgroup: %s\r\n",sub,newsgroup);
 	msgbase = new MsgBase(sub);
-	if(msgbase == null) {
-		printf("!ERROR opening msgbase: %s\r\n",sub);
+	if(msgbase.open!=undefined && msgbase.open()==false) {
+		printf("!ERROR %s opening msgbase: %s\r\n",msgbase.last_error,sub);
+		delete msgbase;
 		continue;
 	}
 
diff --git a/exec/nntpservice.js b/exec/nntpservice.js
index e90cc6f905..5d167101ad 100644
--- a/exec/nntpservice.js
+++ b/exec/nntpservice.js
@@ -78,11 +78,14 @@ function getReferenceTo(reference) {
 	var msg = parseInt(reference.replace(re,"$1"));
 
 	var msgbase = new MsgBase(sub);
-	if (msgbase != null) {
-		var hdr = msgbase.get_msg_header(false,msg);
-		if (hdr != null)
-			to = hdr.from;
-	}
+	if(msgbase.open!=undefined && msgbase.open()==false)
+		return to;
+
+	var hdr = msgbase.get_msg_header(false,msg);
+	if (hdr != null)
+		to = hdr.from;
+
+	msgbase.close();
 
 	return to;
 }
@@ -205,6 +208,8 @@ while(client.socket.is_connected) {
 			for(g in msg_area.grp_list)
 				for(s in msg_area.grp_list[g].sub_list) {
 					msgbase=new MsgBase(msg_area.grp_list[g].sub_list[s].code);
+					if(msgbase.open!=undefined && msgbase.open()==false)
+						continue;
 					writeln(format("%s %u %u %s"
 						,msg_area.grp_list[g].sub_list[s].newsgroup
 						,msgbase.last_msg
@@ -237,9 +242,12 @@ while(client.socket.is_connected) {
 			for(g in msg_area.grp_list)
 				for(s in msg_area.grp_list[g].sub_list)
 					if(msg_area.grp_list[g].sub_list[s].newsgroup.toLowerCase()==cmd[1].toLowerCase()) {
-						found=true;
 						msgbase=new MsgBase(msg_area.grp_list[g].sub_list[s].code);
+						if(msgbase.open!=undefined && msgbase.open()==false)
+							continue;
+						found=true;
 						selected=msg_area.grp_list[g].sub_list[s];
+						break;
 					}
 			if(found)
 				writeln(format("211 %u %u %u %s group selected"
@@ -652,6 +660,8 @@ while(client.socket.is_connected) {
 							    hdr.from=user.name;	// Use real names
 
 						    msgbase=new MsgBase(msg_area.grp_list[g].sub_list[s].code);
+							if(msgbase.open!=undefined && msgbase.open()==false)
+								continue;
 						    if(msgbase.save_msg(hdr,body)) {
 							    log(format("%s posted a message on %s",user.alias,newsgroups[n]));
 							    writeln("240 article posted ok");
-- 
GitLab