	/*** (C) Copyright 1984, 1985  S.R.I. International ***/
/*
 *
 *	Command to KEYWORD flag messages
 *
 */
#include "vax-mm.h"

/*
 *	Set keyflags
 */
CMD_Keywords()
{
	int Message;
	int Keyflag;
	int Number_Of_Messages = 0;

	/*
	 *	Get Keyflags
	 */
	Keyflag = Get_Keyflags();
	if (Keyflag == 0) return;
	/*
	 *	Message List
	 */
	Parse_Message_List("CURRENT");
	/*
	 *	Confirm
	 */
	Confirm();
	/*
	 *	Do it
	 */
	while(1) {
		Message = Next_Message(1);
		if (Message <= 0) break;
		Current_Message = Message;
		Messages[Message-1].Keyword_Flags |= Keyflag;
		Update_Message(Message);
		Number_Of_Messages++;
	}
	if (Number_Of_Messages) printf("\n");
}


/*
 *	Clear keyflags
 */
CMD_Unkeywords()
{
	int Message;
	int Keyflag;
	int Number_Of_Messages = 0;

	/*
	 *	Get Keyflags
	 */
	Keyflag = Get_Keyflags();
	if (Keyflag == 0) return;
	/*
	 *	Message List
	 */
	Parse_Message_List("CURRENT");
	/*
	 *	Confirm
	 */
	Confirm();
	/*
	 *	Do it
	 */
	while(1) {
		Message = Next_Message(1);
		if (Message <= 0) break;
		Current_Message = Message;
		Messages[Message-1].Keyword_Flags &= ~Keyflag;
		Update_Message(Message);
		Number_Of_Messages++;
	}
	if (Number_Of_Messages) printf("\n");
}


/*
 *	Get flags
 */
int Get_Keyflags()
{
	static struct comnd_function keyword =
			{COMND_KEYWORD,0,0,(int)&Key_Table};
	static struct comnd_function star =
			{COMND_TOKEN,
			 COMND_HELP_VALID | COMND_SUPPRESS_DEFAULT_HELP,
			 &keyword,
			 (int)"*",
			 "\"*\""};
	struct comnd_function *f;
	struct tbluk_keyword *t;
	int Status;

	/*
	 *	Get the keyword
	 */
	Status = comnd_jsys(&Command_State,&star,&t,&f);
	if (Status < 0) {
		printf("?parse error (later)\n");
		return(0);
	}
	/*
	 *	"*" == -1
	 */
	if (f == &star) return(-1);
	/*
	 *	Otherwise, return the keyword bit
	 */
	Status = (t - Key_Table.keywords);
	return(1 << Status);
}
