From 2813150a209dccc246fa6c80b2764fbf00be703e Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 23 Aug 2005 02:08:16 +0000
Subject: [PATCH] New feature (requested by sinister-x), if a msg header object
 is passed to bbs.post_msg(), it will be used for the in-relpy-to header
 fields and thread linkage automatically.

---
 src/sbbs3/js_bbs.cpp | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp
index cc961c0cb3..223042472c 100644
--- a/src/sbbs3/js_bbs.cpp
+++ b/src/sbbs3/js_bbs.cpp
@@ -2262,22 +2262,39 @@ js_postmsg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 {
 	long		mode=0;
 	uint		subnum;
+	uintN		n;
+	JSObject*	hdrobj;
 	sbbs_t*		sbbs;
+	smbmsg_t*	remsg=NULL;
+	smbmsg_t	msg;
+
+	*rval = JSVAL_FALSE;
 
 	if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
 		return(JS_FALSE);
 
 	subnum=get_subnum(cx,sbbs,argv[0]);
 
-	if(subnum>=sbbs->cfg.total_subs) {	// invalid sub-board
-		*rval = JSVAL_FALSE;
+	if(subnum>=sbbs->cfg.total_subs) 	// invalid sub-board
 		return(JS_TRUE);
+
+	ZERO_VAR(msg);
+
+	for(n=1; n<argc; n++) {
+		if(JSVAL_IS_NUMBER(argv[n]))
+			JS_ValueToInt32(cx,argv[n],(int32*)&mode);
+		else if(JSVAL_IS_OBJECT(argv[n])) {
+			if((hdrobj=JSVAL_TO_OBJECT(argv[n]))==NULL)
+				return(JS_TRUE);
+			remsg=&msg;
+			if(!js_ParseMsgHeaderObject(cx,hdrobj,remsg))
+				return(JS_TRUE);
+		}
 	}
 
-	if(argc>1 && JSVAL_IS_NUMBER(argv[1]))
-		JS_ValueToInt32(cx,argv[1],(int32*)&mode);
+	*rval = BOOLEAN_TO_JSVAL(sbbs->postmsg(subnum,remsg,mode));
+	smb_freemsgmem(&msg);
 
-	*rval = BOOLEAN_TO_JSVAL(sbbs->postmsg(subnum,NULL,mode));
 	return(JS_TRUE);
 }
 
@@ -2635,9 +2652,11 @@ static jsSyncMethodSpec js_bbs_functions[] = {
 	,JSDOCSTR("list extended file information for files in the specified file directory")
 	,310
 	},		
-	{"post_msg",		js_postmsg,			1,	JSTYPE_BOOLEAN,	JSDOCSTR("sub-board [,number mode]")
+	{"post_msg",		js_postmsg,			1,	JSTYPE_BOOLEAN,	JSDOCSTR("sub-board [,number mode] [,object reply_header]")
 	,JSDOCSTR("post a message in the specified message sub-board (number or internal code) "
-		"with optinal <i>mode</i> (bitfield)")
+		"with optinal <i>mode</i> (bitfield)<br>"
+		"If <i>reply_header</i> is specified (a header object returned from <i>MsgBase.get_msg_header()</i>), that header "
+		"will be used for the in-reply-to header fields (added in v3.13)")
 	,310
 	},		
 	{"cfg_msg_scan",	js_msgscan_cfg,		0,	JSTYPE_VOID,	JSDOCSTR("[number type]")
-- 
GitLab