#include "sysdep.h"
#include "bool.h"
#include "FTreg.h"
#include "verb.h"
#include "verbs.h"
#include "verbrgy.h"

NORET UserRegisterRequests(NOARGS)
{
 /* Gets replaced in the user's customization file */
}

extern struct AlFieldTypeRegistry_str *bool_FTrecptr;
extern struct AlFieldTypeRegistry_str *string_FTrecptr;
extern struct AlFieldTypeRegistry_str *ci_string_FTrecptr;
extern struct AlFieldTypeRegistry_str *cicomma_FTrecptr;
extern struct AlFieldTypeRegistry_str *comma_FTrecptr;
extern struct AlFieldTypeRegistry_str *substring_FTrecptr;
extern struct AlFieldTypeRegistry_str *date_FTrecptr;
extern struct AlFieldTypeRegistry_str *int_FTrecptr;

NORET SystemRegisterRequests(NOARGS)
{
  if (AlFTreg_exists_string(bool_FTrecptr->name) == Bool_FALSE)
    RegisterFieldType(bool_FTrecptr);
  if (AlFTreg_exists_string(string_FTrecptr->name) == Bool_FALSE)
    RegisterFieldType(string_FTrecptr);
  if (AlFTreg_exists_string(ci_string_FTrecptr->name) == Bool_FALSE)
    RegisterFieldType(ci_string_FTrecptr);
  if (AlFTreg_exists_string(cicomma_FTrecptr->name) == Bool_FALSE)
    RegisterFieldType(cicomma_FTrecptr);
  if (AlFTreg_exists_string(comma_FTrecptr->name) == Bool_FALSE)
    RegisterFieldType(comma_FTrecptr);
  if (AlFTreg_exists_string(date_FTrecptr->name) == Bool_FALSE)
    RegisterFieldType(date_FTrecptr);
  if (AlFTreg_exists_string(int_FTrecptr->name) == Bool_FALSE)
    RegisterFieldType(int_FTrecptr);
  AlVerbReg_register("delete current message", AlVerb_create(AlVerbs_delete, 0, 0, 0));
  AlVerbReg_register("shell with message as stdin", AlVerb_create(AlVerbs_system, 1,1,1));
  AlVerbReg_register("shell with message body as stdin", AlVerb_create(AlVerbs_system_body, 1,1,1));
  AlVerbReg_register("move to", AlVerb_create(AlVerbs_move, 1, 2, 1));
  AlVerbReg_register("copy to", AlVerb_create(AlVerbs_copy, 1, 2, 1));
  AlVerbReg_register("runrules", AlVerb_create(AlVerbs_runrules, 1, 3, 1));
  AlVerbReg_register("add to user property", AlVerb_create(AlVerbs_add, 2, 2, 2));
  AlVerbReg_register("subtract from user property", AlVerb_create(AlVerbs_subtract, 2, 2, 2));
  AlVerbReg_register("set user property", AlVerb_create(AlVerbs_set, 2, 2, 2));
  AlVerbReg_register("clear user property", AlVerb_create(AlVerbs_clear, 1, 1, 1));
  AlVerbReg_register("stop processing current message", AlVerb_create(AlVerbs_stop_rs, 0, 0, 0));
  AlVerbReg_register("make user property permanent", 
	 AlVerb_create(AlVerbs_set_uprop_permanent, 1, 1, 1));
  AlVerbReg_register("make user property temporary", 
	 AlVerb_create(AlVerbs_set_uprop_nopermanent, 1, 1, 1));
  AlVerbReg_register("remail current message to",
	 AlVerb_create(AlVerbs_resend, 1, 1, 1));
  AlVerbReg_register("formatted shell command",
		     AlVerb_create(AlVerbs_shell, 1, 2, 1));
}

