2012-02-05 11:35:58 -05:00
|
|
|
/****************************************************************
|
|
|
|
* *
|
|
|
|
* Copyright 2010 Fidelity Information Services, Inc *
|
|
|
|
* *
|
|
|
|
* This source code contains the intellectual property *
|
|
|
|
* of its copyright holder(s), and is made available *
|
|
|
|
* under a license. If you do not know the terms of *
|
|
|
|
* the license, please stop and do not read further. *
|
|
|
|
* *
|
|
|
|
****************************************************************/
|
|
|
|
|
|
|
|
#include "mdef.h"
|
|
|
|
|
|
|
|
#include "gdsroot.h"
|
|
|
|
#include "gtm_string.h"
|
|
|
|
#include "cli.h"
|
2012-06-14 08:55:06 -04:00
|
|
|
#include <rtnhdr.h>
|
2012-02-05 11:35:58 -05:00
|
|
|
#include "mu_gv_stack_init.h"
|
|
|
|
#include "trigger_trgfile_protos.h"
|
|
|
|
#include "mu_trig_trgfile.h"
|
|
|
|
#include "mupip_exit.h"
|
|
|
|
|
|
|
|
GBLREF boolean_t skip_dbtriggers; /* see gbldefs.c for description of this global */
|
|
|
|
GBLREF IN_PARMS *cli_lex_in_ptr;
|
|
|
|
GBLREF boolean_t is_replicator;
|
|
|
|
GBLREF int tprestart_state;
|
|
|
|
|
|
|
|
void mu_trig_trgfile(char *trigger_filename, int trigger_filename_len, boolean_t noprompt)
|
|
|
|
{
|
|
|
|
IN_PARMS *cli_lex_in_ptr_save = NULL;
|
|
|
|
boolean_t trigger_error;
|
|
|
|
|
|
|
|
error_def(ERR_MUNOACTION);
|
|
|
|
|
|
|
|
is_replicator = TRUE;
|
|
|
|
/* Since ^#t global is the ONLY global that is touched by MUPIP TRIGGERS and we currently dont support triggers
|
|
|
|
* on ^#t global, it is safe to set skip_dbtriggers to TRUE for this process. This is in fact needed so we
|
|
|
|
* skip cdb_sc_triggermod processing in t_end and tp_tend as otherwise that could cause unnecessary restarts in
|
|
|
|
* journal recovery and update process which at least the former is not designed to handle.
|
|
|
|
*/
|
|
|
|
skip_dbtriggers = TRUE;
|
|
|
|
mu_gv_stack_init();
|
|
|
|
if (NULL != cli_lex_in_ptr)
|
|
|
|
{
|
|
|
|
cli_lex_in_ptr_save = (IN_PARMS *)malloc(SIZEOF(IN_PARMS) + cli_lex_in_ptr->buflen);
|
|
|
|
cli_lex_in_ptr_save->argc = cli_lex_in_ptr->argc;
|
|
|
|
cli_lex_in_ptr_save->argv = cli_lex_in_ptr->argv;
|
|
|
|
cli_lex_in_ptr_save->tp = cli_lex_in_ptr_save->in_str + (cli_lex_in_ptr->tp - cli_lex_in_ptr->in_str);
|
|
|
|
cli_lex_in_ptr_save->buflen = cli_lex_in_ptr->buflen;
|
|
|
|
memcpy(cli_lex_in_ptr_save->in_str, cli_lex_in_ptr->in_str, cli_lex_in_ptr->buflen);
|
|
|
|
} else
|
|
|
|
cli_lex_in_ptr_save = NULL;
|
|
|
|
trigger_error = trigger_trgfile_tpwrap(trigger_filename, trigger_filename_len, noprompt);
|
|
|
|
if (NULL != cli_lex_in_ptr)
|
|
|
|
free(cli_lex_in_ptr);
|
|
|
|
cli_lex_in_ptr = cli_lex_in_ptr_save;
|
|
|
|
if (trigger_error)
|
|
|
|
mupip_exit(ERR_MUNOACTION);
|
|
|
|
}
|