91 lines
2.6 KiB
C
91 lines
2.6 KiB
C
|
/****************************************************************
|
||
|
* *
|
||
|
* 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 <errno.h>
|
||
|
#include "gtm_stdlib.h" /* for exit() */
|
||
|
#include "gtm_limits.h"
|
||
|
#include "gtm_stat.h"
|
||
|
#include "gtm_string.h"
|
||
|
#include "muextr.h" /* for glist */
|
||
|
#include "cli.h"
|
||
|
#include "gdsroot.h"
|
||
|
#include "gdsbt.h"
|
||
|
#include "gdsfhead.h"
|
||
|
#include "rtnhdr.h"
|
||
|
#include "gv_trigger.h"
|
||
|
#include "mupip_trigger.h"
|
||
|
#include "mu_trig_trgfile.h"
|
||
|
#include "trigger_select_protos.h"
|
||
|
#include "util.h"
|
||
|
#include "mupip_exit.h"
|
||
|
|
||
|
void mupip_trigger(void)
|
||
|
{
|
||
|
char trigger_file_name[MAX_FN_LEN + 1], select_list[MAX_LINE], select_file_name[MAX_FN_LEN + 1];
|
||
|
unsigned short trigger_file_len = MAX_FN_LEN + 1, select_list_len = MAX_LINE;
|
||
|
int reg_max_rec, reg_max_key, reg_max_blk;
|
||
|
unsigned short sf_name_len;
|
||
|
int local_errno;
|
||
|
struct stat statbuf;
|
||
|
boolean_t noprompt;
|
||
|
|
||
|
error_def(ERR_MUPCLIERR);
|
||
|
error_def(ERR_NOSELECT);
|
||
|
error_def(ERR_MUNOACTION);
|
||
|
error_def(ERR_INVSTRLEN);
|
||
|
|
||
|
if (CLI_PRESENT == cli_present("TRIGGERFILE"))
|
||
|
{
|
||
|
noprompt = (CLI_PRESENT == cli_present("NOPROMPT"));
|
||
|
if (!cli_get_str("TRIGGERFILE", trigger_file_name, &trigger_file_len))
|
||
|
{
|
||
|
util_out_print("Error parsing TRIGGERFILE name", TRUE);
|
||
|
mupip_exit(ERR_MUPCLIERR);
|
||
|
}
|
||
|
assert('\0' == trigger_file_name[trigger_file_len]); /* should have been made sure by caller */
|
||
|
if (0 == trigger_file_len)
|
||
|
{
|
||
|
util_out_print("Missing input file name", TRUE);
|
||
|
mupip_exit(ERR_MUPCLIERR);
|
||
|
}
|
||
|
gvinit();
|
||
|
mu_trig_trgfile(trigger_file_name, (uint4)trigger_file_len, noprompt);
|
||
|
}
|
||
|
if (CLI_PRESENT == cli_present("SELECT"))
|
||
|
{
|
||
|
if (FALSE == cli_get_str("SELECT", select_list, &select_list_len))
|
||
|
mupip_exit(ERR_MUPCLIERR);
|
||
|
sf_name_len = MAX_FN_LEN;
|
||
|
if (FALSE == cli_get_str("FILE", select_file_name, &sf_name_len))
|
||
|
mupip_exit(ERR_MUPCLIERR);
|
||
|
if (0 == sf_name_len)
|
||
|
{
|
||
|
select_file_name[0] = '\0';
|
||
|
}
|
||
|
else if (-1 == Stat((char *)select_file_name, &statbuf))
|
||
|
{
|
||
|
if (ENOENT != errno)
|
||
|
{
|
||
|
local_errno = errno;
|
||
|
perror("Error opening output file");
|
||
|
mupip_exit(local_errno);
|
||
|
}
|
||
|
}else
|
||
|
{
|
||
|
util_out_print("Error opening output file: !AD -- File exists", TRUE, sf_name_len, select_file_name);
|
||
|
mupip_exit(ERR_MUNOACTION);
|
||
|
}
|
||
|
(void)trigger_select(select_list, (uint4)select_list_len, select_file_name, (uint4)sf_name_len);
|
||
|
}
|
||
|
}
|