本文整理汇总了C++中LEN_AND_STR函数的典型用法代码示例。如果您正苦于以下问题:C++ LEN_AND_STR函数的具体用法?C++ LEN_AND_STR怎么用?C++ LEN_AND_STR使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了LEN_AND_STR函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: gtmrecv_changelog
int gtmrecv_changelog(void)
{
uint4 changelog_desired = 0, changelog_accepted = 0;
/* Grab the recvpool jnlpool option write lock */
if (0 > grab_sem(RECV, RECV_SERV_OPTIONS_SEM))
{
util_out_print("Error grabbing recvpool option write lock. Could not initiate change log", TRUE);
return (ABNORMAL_SHUTDOWN);
}
if (0 != recvpool.gtmrecv_local->changelog || 0 != recvpool.upd_proc_local->changelog)
{
util_out_print("Change log is already in progress. Not initiating change in log file or log interval", TRUE);
rel_sem(RECV, RECV_SERV_OPTIONS_SEM);
return (ABNORMAL_SHUTDOWN);
}
if ('\0' != gtmrecv_options.log_file[0]) /* trigger change in log file (for both receiver and update process) */
{
changelog_desired |= REPLIC_CHANGE_LOGFILE;
if (0 != strcmp(recvpool.gtmrecv_local->log_file, gtmrecv_options.log_file))
{
changelog_accepted |= REPLIC_CHANGE_LOGFILE;
strcpy(recvpool.gtmrecv_local->log_file, gtmrecv_options.log_file);
util_out_print("Change log initiated with file !AD", TRUE, LEN_AND_STR(gtmrecv_options.log_file));
} else
util_out_print("Log file is already !AD. Not initiating change in log file", TRUE,
LEN_AND_STR(gtmrecv_options.log_file));
}
if (0 != gtmrecv_options.rcvr_log_interval) /* trigger change in receiver log interval */
{
changelog_desired |= REPLIC_CHANGE_LOGINTERVAL;
if (gtmrecv_options.rcvr_log_interval != recvpool.gtmrecv_local->log_interval)
{
changelog_accepted |= REPLIC_CHANGE_LOGINTERVAL;
recvpool.gtmrecv_local->log_interval = gtmrecv_options.rcvr_log_interval;
util_out_print("Change initiated with receiver log interval !UL", TRUE, gtmrecv_options.rcvr_log_interval);
} else
util_out_print("Receiver log interval is already !UL. Not initiating change in log interval", TRUE,
gtmrecv_options.rcvr_log_interval);
}
if (0 != gtmrecv_options.upd_log_interval) /* trigger change in update process log interval */
{
changelog_desired |= REPLIC_CHANGE_UPD_LOGINTERVAL;
if (gtmrecv_options.upd_log_interval != recvpool.upd_proc_local->log_interval)
{
changelog_accepted |= REPLIC_CHANGE_UPD_LOGINTERVAL;
recvpool.upd_proc_local->log_interval = gtmrecv_options.upd_log_interval;
util_out_print("Change initiated with update process log interval !UL", TRUE,
gtmrecv_options.upd_log_interval);
} else
util_out_print("Update process log interval is already !UL. Not initiating change in log interval", TRUE,
gtmrecv_options.upd_log_interval);
}
if (0 != changelog_accepted)
recvpool.gtmrecv_local->changelog = changelog_accepted;
else
util_out_print("No change to log file or log interval", TRUE);
rel_sem(RECV, RECV_SERV_OPTIONS_SEM);
return ((0 != changelog_accepted && changelog_accepted == changelog_desired) ? NORMAL_SHUTDOWN : ABNORMAL_SHUTDOWN);
}
开发者ID:5HT,项目名称:mumps,代码行数:60,代码来源:gtmrecv_changelog.c
示例2: fgn_getrtn
/* Lookup an external function. Return function address if success, NULL otherwise.
* package_handle - DLL handle returned by fgn_getpak
* entry_name - symbol name to be looked up
* msgtype - message severity of the errors reported if any.
* Note: If msgtype is SUCCESS, errors are not issued. It is useful if the callers are not
* interested in message report and not willing to have condition handler overhead (eg. zro_search).
*/
fgnfnc fgn_getrtn(void_ptr_t package_handle, mstr *entry_name, int msgtype)
{
void_ptr_t sym_addr;
char_ptr_t dummy_err_str;
void *short_sym_addr;
char err_str[MAX_ERRSTR_LEN]; /* needed as util_out_print doesn't handle 64bit pointers */
error_def(ERR_DLLNORTN);
error_def(ERR_TEXT);
if (!(sym_addr = dlsym(package_handle, entry_name->addr)))
{
if (SUCCESS != msgtype)
{
assert(!(msgtype & ~SEV_MSK));
COPY_DLLERR_MSG;
rts_error(VARLSTCNT(8) MAKE_MSG_TYPE(ERR_DLLNORTN, msgtype), 2, LEN_AND_STR(entry_name->addr),
ERR_TEXT, 2, LEN_AND_STR(err_str));
}
} else
{ /* Tru64 - dlsym() is bound to return short pointer because of ld -taso flag used for GT.M */
#ifdef __osf__
short_sym_addr = sym_addr;
if (short_sym_addr != sym_addr)
{
sym_addr = NULL;
/* always report an error irrespective of msgtype - since this code should never
* have executed and/or the DLL might need to be rebuilt with 32-bit options */
rts_error(VARLSTCNT(8) ERR_DLLNORTN, 2, LEN_AND_STR(entry_name->addr),
ERR_TEXT, 2, LEN_AND_LIT("Symbol is loaded above the lower 31-bit address space"));
}
#endif
}
return (fgnfnc)sym_addr;
}
开发者ID:h4ck3rm1k3,项目名称:FIS-GT.M,代码行数:41,代码来源:fgn_getinfo.c
示例3: gtmsource_changelog
int gtmsource_changelog(void)
{
uint4 changelog_desired = 0, changelog_accepted = 0;
int log_fd = 0; /*used to indicate whether the new specified log file is writable*/
int close_status = 0; /*used to indicate if log file is successfully closed*/
char* err_code;
int save_errno;
assert(holds_sem[SOURCE][JNL_POOL_ACCESS_SEM]);
repl_log(stderr, TRUE, TRUE, "Initiating CHANGELOG operation on source server pid [%d] for secondary instance [%s]\n",
jnlpool.gtmsource_local->gtmsource_pid, jnlpool.gtmsource_local->secondary_instname);
if (0 != jnlpool.gtmsource_local->changelog)
{
util_out_print("Change log is already in progress. Not initiating change in log file or log interval", TRUE);
return (ABNORMAL_SHUTDOWN);
}
if ('\0' != gtmsource_options.log_file[0]) /* trigger change in log file */
{
changelog_desired |= REPLIC_CHANGE_LOGFILE;
if (0 != STRCMP(jnlpool.gtmsource_local->log_file, gtmsource_options.log_file))
{ /*check if the new log file is writable*/
OPENFILE3_CLOEXEC(gtmsource_options.log_file,
O_RDWR | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH, log_fd);
if (log_fd < 0)
{
save_errno = ERRNO;
err_code = STRERROR(save_errno);
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(8) ERR_REPLLOGOPN, 6,
LEN_AND_STR(gtmsource_options.log_file),
LEN_AND_STR(err_code),
LEN_AND_STR(NULL_DEVICE));
} else {
CLOSEFILE_IF_OPEN(log_fd, close_status);
assert(close_status==0);
changelog_accepted |= REPLIC_CHANGE_LOGFILE;
STRCPY(jnlpool.gtmsource_local->log_file, gtmsource_options.log_file);
util_out_print("Change log initiated with file !AD", TRUE, LEN_AND_STR(gtmsource_options.log_file));
}
} else
util_out_print("Log file is already !AD. Not initiating change in log file", TRUE,
LEN_AND_STR(gtmsource_options.log_file));
}
if (0 != gtmsource_options.src_log_interval) /* trigger change in log interval */
{
changelog_desired |= REPLIC_CHANGE_LOGINTERVAL;
if (gtmsource_options.src_log_interval != jnlpool.gtmsource_local->log_interval)
{
changelog_accepted |= REPLIC_CHANGE_LOGINTERVAL;
jnlpool.gtmsource_local->log_interval = gtmsource_options.src_log_interval;
util_out_print("Change log initiated with interval !UL", TRUE, gtmsource_options.src_log_interval);
} else
util_out_print("Log interval is already !UL. Not initiating change in log interval", TRUE,
gtmsource_options.src_log_interval);
}
if (0 != changelog_accepted)
jnlpool.gtmsource_local->changelog = changelog_accepted;
else
util_out_print("No change to log file or log interval", TRUE);
return ((0 != changelog_accepted && changelog_accepted == changelog_desired) ? NORMAL_SHUTDOWN : ABNORMAL_SHUTDOWN);
}
开发者ID:mihawk,项目名称:fis-gtm,代码行数:60,代码来源:gtmsource_changelog.c
示例4: gtmsource_mode_change
int gtmsource_mode_change(int to_mode)
{
uint4 savepid;
int exit_status;
int status, detach_status, remove_status;
int log_fd = 0, close_status = 0;
char* err_code;
int save_errno;
sgmnt_addrs *repl_csa;
assert(holds_sem[SOURCE][JNL_POOL_ACCESS_SEM]);
repl_log(stdout, TRUE, TRUE, "Initiating %s operation on source server pid [%d] for secondary instance [%s]\n",
(GTMSOURCE_MODE_ACTIVE_REQUESTED == to_mode) ? "ACTIVATE" : "DEACTIVATE",
jnlpool.gtmsource_local->gtmsource_pid, jnlpool.gtmsource_local->secondary_instname);
if ((jnlpool.gtmsource_local->mode == GTMSOURCE_MODE_ACTIVE_REQUESTED)
|| (jnlpool.gtmsource_local->mode == GTMSOURCE_MODE_PASSIVE_REQUESTED))
{
repl_log(stderr, FALSE, TRUE, "Source Server %s already requested, not changing mode\n",
(to_mode == GTMSOURCE_MODE_ACTIVE_REQUESTED) ? "ACTIVATE" : "DEACTIVATE");
return (ABNORMAL_SHUTDOWN);
}
if (((GTMSOURCE_MODE_ACTIVE == jnlpool.gtmsource_local->mode) && (GTMSOURCE_MODE_ACTIVE_REQUESTED == to_mode))
|| ((GTMSOURCE_MODE_PASSIVE == jnlpool.gtmsource_local->mode) && (GTMSOURCE_MODE_PASSIVE_REQUESTED == to_mode)))
{
repl_log(stderr, FALSE, TRUE, "Source Server already %s, not changing mode\n",
(to_mode == GTMSOURCE_MODE_ACTIVE_REQUESTED) ? "ACTIVE" : "PASSIVE");
return (ABNORMAL_SHUTDOWN);
}
assert(ROOTPRIMARY_UNSPECIFIED != gtmsource_options.rootprimary);
/*check if the new log file is writable*/
if ('\0' != gtmsource_options.log_file[0] && 0 != STRCMP(jnlpool.gtmsource_local->log_file, gtmsource_options.log_file))
{
OPENFILE3(gtmsource_options.log_file,
O_RDWR | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH, log_fd);
if (log_fd < 0) {
save_errno = ERRNO;
err_code = STRERROR(save_errno);
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(8) ERR_REPLLOGOPN, 6,
LEN_AND_STR(gtmsource_options.log_file),
LEN_AND_STR(err_code),
LEN_AND_STR(NULL_DEVICE));
return (ABNORMAL_SHUTDOWN);
}
CLOSEFILE_IF_OPEN(log_fd, close_status);
assert(close_status==0);
}
if ((GTMSOURCE_MODE_ACTIVE_REQUESTED == to_mode)
&& (ROOTPRIMARY_SPECIFIED == gtmsource_options.rootprimary) && jnlpool.jnlpool_ctl->upd_disabled)
{ /* ACTIVATE is specified with ROOTPRIMARY on a journal pool that was created with PROPAGATEPRIMARY. This is a
* case of transition from propagating primary to root primary. Enable updates in this journal pool and append
* a histinfo record to the replication instance file. The function "gtmsource_rootprimary_init" does just that.
*/
gtmsource_rootprimary_init(jnlpool.jnlpool_ctl->jnl_seqno);
}
DEBUG_ONLY(repl_csa = &FILE_INFO(jnlpool.jnlpool_dummy_reg)->s_addrs;)
开发者ID:ChristopherEdwards,项目名称:fis-gtm,代码行数:55,代码来源:gtmsource_mode_change.c
示例5: dse_dmp
void dse_dmp(void)
{
boolean_t dmp_res, glo_present, zwr_present;
patch_fdmp_recs = 0;
glo_present = (CLI_PRESENT == cli_present("GLO"));
zwr_present = (CLI_PRESENT == cli_present("ZWR"));
if (glo_present || zwr_present)
{
if (CLOSED_FMT == dse_dmp_format)
{
util_out_print("Error: must open an output file before dump.", TRUE);
return;
}
if (gtm_utf8_mode && (GLO_FMT == glo_present))
{
util_out_print("Error: GLO format is not supported in UTF-8 mode. Use ZWR format.", TRUE);
return;
}
if (OPEN_FMT == dse_dmp_format)
{
dse_dmp_format = (glo_present ? GLO_FMT : ZWR_FMT);
if (!gtm_utf8_mode)
dse_fdmp_output(LIT_AND_LEN("; DSE EXTRACT"));
else
dse_fdmp_output(LIT_AND_LEN("; DSE EXTRACT UTF-8"));
dse_fdmp_output(STR_AND_LEN(format_label[dse_dmp_format]));
} else if ((glo_present ? GLO_FMT : ZWR_FMT) != dse_dmp_format)
{
util_out_print("Error: current output file already contains !AD records.", TRUE,
LEN_AND_STR(&format_label[dse_dmp_format][MESS_OFF]));
return;
}
patch_is_fdmp = TRUE;
ESTABLISH(dse_dmp_handler);
} else
patch_is_fdmp = FALSE;
if (CLI_PRESENT == cli_present("RECORD") || CLI_PRESENT == cli_present("OFFSET"))
dmp_res = dse_r_dmp();
else
dmp_res = dse_b_dmp();
if (patch_is_fdmp)
{
REVERT;
if (dmp_res)
util_out_print("!UL !AD records written.!/", TRUE, patch_fdmp_recs,
LEN_AND_STR(&format_label[dse_dmp_format][MESS_OFF]));
}
return;
}
开发者ID:ChristopherEdwards,项目名称:fis-gtm,代码行数:50,代码来源:dse_dmp.c
示例6: mu_rndwn_all_helper
STATICFNDEF void mu_rndwn_all_helper(shm_parms *parm_buff, char *fname, int *exit_status, int *tmp_exit_status)
{
replpool_identifier replpool_id;
boolean_t ret_status, jnlpool_sem_created;
unsigned char ipcs_buff[MAX_IPCS_ID_BUF], *ipcs_ptr;
ESTABLISH(mu_rndwn_all_helper_ch);
if (validate_db_shm_entry(parm_buff, fname, tmp_exit_status))
{
if (SS_NORMAL == *tmp_exit_status)
{ /* shm still exists */
mu_gv_cur_reg_init();
gv_cur_region->dyn.addr->fname_len = strlen(fname);
STRNCPY_STR(gv_cur_region->dyn.addr->fname, fname, gv_cur_region->dyn.addr->fname_len);
if (mu_rndwn_file(gv_cur_region, FALSE))
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(4) ERR_MUFILRNDWNSUC, 2, DB_LEN_STR(gv_cur_region));
else
{ /* Save semid so that it will not be removed by mu_rndwn_sem_all() */
add_to_semids_list(FILE_INFO(gv_cur_region)->semid);
*exit_status = ERR_MUNOTALLSEC;
}
mu_gv_cur_reg_free();
} else
{ /* shm has been cleaned up by "validate_db_shm_entry" so no need of any more cleanup here */
assert(ERR_SHMREMOVED == *tmp_exit_status);
*tmp_exit_status = SS_NORMAL; /* reset tmp_exit_status for below logic to treat this as normal */
}
} else if ((SS_NORMAL == *tmp_exit_status)
&& validate_replpool_shm_entry(parm_buff, (replpool_id_ptr_t)&replpool_id, tmp_exit_status))
{
if (SS_NORMAL == *tmp_exit_status)
{
assert(JNLPOOL_SEGMENT == replpool_id.pool_type || RECVPOOL_SEGMENT == replpool_id.pool_type);
ret_status = mu_rndwn_repl_instance(&replpool_id, TRUE, FALSE, &jnlpool_sem_created);
ipcs_ptr = i2asc((uchar_ptr_t)ipcs_buff, parm_buff->shmid);
*ipcs_ptr = '\0';
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(6) (JNLPOOL_SEGMENT == replpool_id.pool_type) ?
(ret_status ? ERR_MUJPOOLRNDWNSUC : ERR_MUJPOOLRNDWNFL) :
(ret_status ? ERR_MURPOOLRNDWNSUC : ERR_MURPOOLRNDWNFL),
4, LEN_AND_STR(ipcs_buff), LEN_AND_STR(replpool_id.instfilename));
if (!ret_status)
*exit_status = ERR_MUNOTALLSEC;
} else
{ /* shm has been cleaned up by "validate_replpool_shm_entry" so no need of any more cleanup here */
assert(ERR_SHMREMOVED == *tmp_exit_status);
*tmp_exit_status = SS_NORMAL; /* reset tmp_exit_status for below logic to treat this as normal */
}
}
REVERT;
}
开发者ID:mihawk,项目名称:fis-gtm,代码行数:50,代码来源:mu_rndwn_all.c
示例7: lke_process
static bool lke_process(int argc)
{
bool flag = FALSE;
int res;
static int save_stderr = SYS_STDERR;
ESTABLISH_RET(util_ch, TRUE);
if (util_interrupt)
rts_error(VARLSTCNT(1) ERR_CTRLC);
if (SYS_STDERR != save_stderr) /* necesary in case of rts_error */
close_fileio(&save_stderr);
assert(SYS_STDERR == save_stderr);
func = 0;
util_interrupt = 0;
if (argc < 2)
display_prompt();
if ( EOF == (res = parse_cmd()))
{
if (util_interrupt)
{
rts_error(VARLSTCNT(1) ERR_CTRLC);
REVERT;
return TRUE;
}
else
{
REVERT;
return FALSE;
}
} else if (res)
{
if (1 < argc)
{
REVERT;
rts_error(VARLSTCNT(4) res, 2, LEN_AND_STR(cli_err_str));
} else
gtm_putmsg(VARLSTCNT(4) res, 2, LEN_AND_STR(cli_err_str));
}
if (func)
{
flag = open_fileio(&save_stderr); /* save_stderr = SYS_STDERR if -output option not present */
func();
if (flag)
close_fileio(&save_stderr);
assert(SYS_STDERR == save_stderr);
}
REVERT;
return(1 >= argc);
}
开发者ID:indera,项目名称:fis-gtm,代码行数:50,代码来源:lke.c
示例8: repl_inst_dump_triplehist
void repl_inst_dump_triplehist(char *inst_fn, int4 num_triples)
{
int4 idx;
off_t offset;
repl_triple curtriple;
jnl_proc_time whole_time;
int time_len;
char time_str[LENGTH_OF_TIME + 1];
boolean_t first_time = TRUE;
for (idx = 0; idx < num_triples; idx++, offset += SIZEOF(repl_triple))
{
if (first_time)
{
util_out_print("", TRUE);
first_time = FALSE;
PRINT_DASHES;
util_out_print(TRIPLEHIST_TITLE_STRING, TRUE);
PRINT_DASHES;
offset = REPL_INST_TRIPLE_OFFSET;
} else
PRINT_DASHES;
repl_inst_read(inst_fn, (off_t)offset, (sm_uc_ptr_t)&curtriple, SIZEOF(repl_triple));
PRINT_OFFSET_HEADER;
PRINT_OFFSET_PREFIX(offsetof(repl_triple, root_primary_instname[0]), SIZEOF(curtriple.root_primary_instname));
util_out_print(PREFIX_TRIPLEHIST "Root Primary Instance Name !R15AD", TRUE, idx,
LEN_AND_STR((char *)curtriple.root_primary_instname));
PRINT_OFFSET_PREFIX(offsetof(repl_triple, start_seqno), SIZEOF(curtriple.start_seqno));
util_out_print(PREFIX_TRIPLEHIST "Start Sequence Number [email protected] [[email protected]]", TRUE, idx,
&curtriple.start_seqno, &curtriple.start_seqno);
PRINT_OFFSET_PREFIX(offsetof(repl_triple, root_primary_cycle), SIZEOF(curtriple.root_primary_cycle));
util_out_print(PREFIX_TRIPLEHIST "Root Primary Cycle !10UL [0x!XL]", TRUE, idx,
curtriple.root_primary_cycle, curtriple.root_primary_cycle);
PRINT_OFFSET_PREFIX(offsetof(repl_triple, created_time), SIZEOF(curtriple.created_time));
JNL_WHOLE_FROM_SHORT_TIME(whole_time, curtriple.created_time);
time_len = format_time(whole_time, time_str, SIZEOF(time_str), SHORT_TIME_FORMAT);
util_out_print(PREFIX_TRIPLEHIST "Creation Time "TIME_DISPLAY_FAO, TRUE, idx,
time_len, time_str);
PRINT_OFFSET_PREFIX(offsetof(repl_triple, rcvd_from_instname[0]), SIZEOF(curtriple.rcvd_from_instname));
util_out_print(PREFIX_TRIPLEHIST "Received from Instance !R15AD", TRUE, idx,
LEN_AND_STR((char *)curtriple.rcvd_from_instname));
section_offset += SIZEOF(repl_triple);
}
}
开发者ID:h4ck3rm1k3,项目名称:fis-gtm,代码行数:49,代码来源:repl_inst_dump.c
示例9: mu_signal_process
void mu_signal_process(char *command, int signal)
{
boolean_t pid_present, name_present;
int4 pid, length, status, item, outv;
char prc_nam[20];
unsigned short name_len;
$DESCRIPTOR(d_prc_nam,"");
memset(prc_nam, 0, SIZEOF(prc_nam));
pid_present = name_present = FALSE;
if (cli_present("id") == CLI_PRESENT)
{
if(!cli_get_hex("id", &pid))
return;
pid_present = TRUE;
}
if (cli_present("name") == CLI_PRESENT)
{
name_len = 20;
if (!cli_get_str("name", prc_nam, &name_len))
return;
if (prc_nam[name_len-1] == '"')
name_len--;
if (prc_nam[0] == '"')
{
d_prc_nam.dsc$a_pointer = &prc_nam[1];
name_len--;
} else
d_prc_nam.dsc$a_pointer = &prc_nam;
d_prc_nam.dsc$w_length = name_len;
name_present = TRUE;
}
if (!name_present)
{
if (SS$_NORMAL == send_signal(pid, signal))
SENDMSG_OUTPUT("", pid);
return;
}
item = JPI$_PID;
status = lib$getjpi(&item, 0, &d_prc_nam, &outv, 0, 0);
if (SS$_NORMAL != status)
{
rts_error(VARLSTCNT(1) status);
return;
}
if (!pid_present)
{
if (SS$_NORMAL == send_signal(outv, signal))
SENDMSG_OUTPUT(&prc_nam, outv);
return;
}
if (outv != pid)
{
util_out_print("ID !XL and NAME !AD are not the same process", FLUSH, pid, LEN_AND_STR(&prc_nam));
return;
}
if (SS$_NORMAL == send_signal(pid, signal))
SENDMSG_OUTPUT(&prc_nam, pid);
return;
}
开发者ID:ChristopherEdwards,项目名称:fis-gtm,代码行数:60,代码来源:mu_signal_process.c
示例10: ext_stx_error
STATICFNDEF void ext_stx_error(int in_error, ...)
{
va_list args;
char *ext_table_name;
char buf[MAX_SRC_LINE], *b;
int num_tabs, num_spaces;
va_start(args, in_error);
ext_table_name = va_arg(args, char *);
va_end(args);
num_tabs = ext_source_column/TABLEN;
num_spaces = ext_source_column%TABLEN;
b = &buf[0];
memset(buf, '\t', num_tabs+2);
b += num_tabs+NUM_TABS_FOR_GTMERRSTR;
memset(b, ' ', num_spaces);
b += num_spaces;
memcpy(b, "^-----", POINTER_SIZE);
b += POINTER_SIZE;
*b = 0;
dec_err(VARLSTCNT(6) ERR_EXTSRCLIN, 4, ext_source_line_len, ext_source_line, b - &buf[0], &buf[0]);
dec_err(VARLSTCNT(6) ERR_EXTSRCLOC, 4, ext_source_column, ext_source_line_num, LEN_AND_STR(ext_table_name));
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) in_error);
}
开发者ID:ChristopherEdwards,项目名称:fis-gtm,代码行数:27,代码来源:exttab_parse.c
示例11: level_err
/* We made this a error seperate function because we did not wanted to do the MAXSTR_BUFF_DECL(buff) declartion in op_lock2,
* because MAXSTR_BUFF_DECL macro would allocate a huge stack every time op_lock2 is called.
*/
STATICFNDCL void level_err(mlk_pvtblk *pvt_ptr); /* This definition is made here because there is no appropriate place to
* put this prototype. This will not be used anywhere else so we did not
* wanted to create a op_lock2.h just for this function.
*/
STATICFNDCL void level_err(mlk_pvtblk *pvt_ptr)
{
MAXSTR_BUFF_DECL(buff);
MAXSTR_BUFF_INIT;
lock_str_to_buff(pvt_ptr, buff, MAX_STRBUFF_INIT);
rts_error(VARLSTCNT(7) ERR_LOCKINCR2HIGH, 1, pvt_ptr->level, ERR_LOCKIS, 2, LEN_AND_STR(buff));
}
开发者ID:duck57,项目名称:fis-gtm-freebsd,代码行数:14,代码来源:op_lock2.c
示例12: main
int main (int argc, char **argv)
{
int res;
DCL_THREADGBL_ACCESS;
GTM_THREADGBL_INIT;
set_blocksig();
gtm_imagetype_init(MUPIP_IMAGE);
invocation_mode = MUMPS_UTILTRIGR;
gtm_wcswidth_fnptr = gtm_wcswidth;
gtm_env_init(); /* read in all environment variables */
err_init(util_base_ch);
UNICODE_ONLY(gtm_strToTitle_ptr = >m_strToTitle);
GTM_ICU_INIT_IF_NEEDED; /* Note: should be invoked after err_init (since it may error out) and before CLI parsing */
sig_init(generic_signal_handler, NULL, suspsigs_handler, continue_handler); /* Note: no ^C handler is defined (yet) */
atexit(mupip_exit_handler);
licensed = TRUE;
in_backup = FALSE;
op_open_ptr = mu_op_open;
mu_get_term_characterstics();
cli_lex_setup(argc,argv);
if (argc < 2) /* Interactive mode */
display_prompt();
/* this call should be after cli_lex_setup() due to S390 A/E conversion */
gtm_chk_dist(argv[0]);
INIT_GBL_ROOT(); /* Needed for GVT initialization */
init_gtm();
while (TRUE)
{ func = 0;
if ((res = parse_cmd()) == EOF)
break;
else if (res)
{
if (1 < argc)
rts_error(VARLSTCNT(4) res, 2, LEN_AND_STR(cli_err_str));
else
gtm_putmsg(VARLSTCNT(4) res, 2, LEN_AND_STR(cli_err_str));
}
if (func)
func();
if (argc > 1) /* Non-interactive mode, exit after command */
break;
display_prompt();
}
mupip_exit(SS_NORMAL);
}
开发者ID:duck57,项目名称:fis-gtm-freebsd,代码行数:46,代码来源:mupip.c
示例13: mupfndfil
/* mupfndfil.c
* Description:
* For a region find if the corresponding database is present.
* Arguments:
* reg: Region's pointer
* filestr: Sent as allocated memory, if returned full path is needed in this mstr
* Returns: TRUE if region's database file is found
* FALSE, otherwise
* Side Effects:
* reg->dyn.addr->fname_len and reg->dyn.addr->fname are updated
*/
boolean_t mupfndfil(gd_region *reg, mstr *filestr)
{
char filename[MAX_FN_LEN];
mstr file, def, ret, *retptr;
uint4 ustatus;
switch(reg->dyn.addr->acc_meth)
{
case dba_mm:
case dba_bg:
break;
# ifdef VMS
case dba_usr:
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(6) ERR_NOUSERDB, 4, LEN_AND_LIT("specified function"), REG_LEN_STR(reg));
return FALSE; /* This is currently a VMS only possibility and has no corresponding test case */
# endif
default:
util_out_print("REGION !AD has an unrecognized access method.", TRUE, REG_LEN_STR(reg));
return FALSE;
}
file.addr = (char *)reg->dyn.addr->fname;
file.len = reg->dyn.addr->fname_len;
#if defined(UNIX)
file.addr[file.len] = 0;
if (is_raw_dev(file.addr))
{
def.addr = DEF_NODBEXT;
def.len = SIZEOF(DEF_NODBEXT) - 1;
} else
{
def.addr = DEF_DBEXT; /* UNIX need to pass "*.dat" but reg->dyn.addr->defext has "DAT" */
def.len = SIZEOF(DEF_DBEXT) - 1;
}
#elif defined(VMS)
def.addr = (char *)reg->dyn.addr->defext;
def.len = SIZEOF(reg->dyn.addr->defext);
#endif
if (NULL == filestr)
{
ret.len = SIZEOF(filename);
ret.addr = filename;
retptr = &ret;
} else
retptr = filestr;
if (FILE_PRESENT != gtm_file_stat(&file, &def, retptr, FALSE, &ustatus))
{
if (!jgbl.mupip_journal)
{ /* Do not print error messages in case of call from mur_open_files().
* Currently we use "jgbl.mupip_journal" to identify a call from mupip_recover code */
util_out_print("REGION !AD's file !AD cannot be found.", TRUE, REG_LEN_STR(reg), LEN_AND_STR(file.addr));
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(1) ustatus);
}
return FALSE;
}
reg->dyn.addr->fname_len = retptr->len;
memcpy(reg->dyn.addr->fname, retptr->addr, retptr->len + 1);
return TRUE;
}
开发者ID:ChristopherEdwards,项目名称:fis-gtm,代码行数:69,代码来源:mupfndfil.c
示例14: mupip_set_journal_newstate
uint4 mupip_set_journal_newstate(set_jnl_options *jnl_options, jnl_create_info *jnl_info, mu_set_rlist *rptr)
{
enum jnl_state_codes jnl_curr_state;
enum repl_state_codes repl_curr_state;
boolean_t current_image;
enum db_acc_method acc_meth;
error_def(ERR_REPLNOBEFORE);
error_def(ERR_REPLJNLCNFLCT);
error_def(ERR_JNLDISABLE);
error_def(ERR_MMBEFOREJNL);
error_def(ERR_MMNOBFORRPL);
jnl_curr_state = (enum jnl_state_codes)rptr->sd->jnl_state;
repl_curr_state = (enum repl_state_codes)rptr->sd->repl_state;
acc_meth = rptr->sd->acc_meth;
current_image = rptr->sd->jnl_before_image;
if (CLI_ABSENT == jnl_options->cli_journal)
rptr->jnl_new_state = jnl_curr_state;
else if ((CLI_NEGATED == jnl_options->cli_journal) || (CLI_NEGATED == jnl_options->cli_enable))
rptr->jnl_new_state = jnl_notallowed; /* DISABLE specified */
else if ((jnl_notallowed != jnl_curr_state) || (CLI_PRESENT == jnl_options->cli_enable))
{ /* journaling is already ENABLED or ENABLE is explicitly specified */
if (CLI_NEGATED == jnl_options->cli_on) /* OFF specified */
rptr->jnl_new_state = jnl_closed;
else if (repl_curr_state == repl_was_open && CLI_PRESENT != jnl_options->cli_replic_on)
{ /* Journaling was turned OFF by jnl_file_lost(). Do not allow turning journaling ON without also
turning replication ON */
gtm_putmsg(VARLSTCNT(10) ERR_REPLJNLCNFLCT, 8, LEN_AND_STR(jnl_state_lit[jnl_open]),
DB_LEN_STR(gv_cur_region), LEN_AND_STR(repl_state_lit[repl_closed]),
LEN_AND_STR(jnl_state_lit[jnl_open]));
return EXIT_WRN;
}
else /* ON explicitly specified or present by default */
rptr->jnl_new_state = jnl_open;
} else /* jnl_notallowed == jnl_curr_state && CLI_ABSENT == jnl_options->cli_enable */
{
if (CLI_PRESENT != jnl_options->cli_replic_on)
{
gtm_putmsg(VARLSTCNT(4) ERR_JNLDISABLE, 2, DB_LEN_STR(gv_cur_region));
return EXIT_WRN;
} else
rptr->jnl_new_state = jnl_open; /* turn journaling on for REPLICATION=ON */
}
VMS_ONLY(rptr->before_images = (jnl_options->image_type_specified ? jnl_info->before_images : current_image);)
开发者ID:CeperaCPP,项目名称:fis-gtm,代码行数:45,代码来源:mupip_set_journal_newstate.c
示例15: fgn_getpak
/* Lookup package. Return package handle if success, NULL otherwise.
* package_name - DLL name
* msgtype - message severity of the errors reported if any.
* Note - Errors are not issued if msgtype is SUCCESS, which is to be used if the callers are not
* interested in message report and not willing to have condition handler overhead.
*/
void_ptr_t fgn_getpak(char *package_name, int msgtype)
{
void_ptr_t ret_handle;
char_ptr_t dummy_err_str;
char err_str[MAX_ERRSTR_LEN]; /* needed as util_out_print doesn't handle 64bit pointers */
error_def(ERR_TEXT);
error_def(ERR_DLLNOOPEN);
if (!(ret_handle = dlopen(package_name, RTLD_LAZY)))
{
if (SUCCESS != msgtype)
{
assert(!(msgtype & ~SEV_MSK));
COPY_DLLERR_MSG;
rts_error(VARLSTCNT(8) MAKE_MSG_TYPE(ERR_DLLNOOPEN, msgtype), 2, LEN_AND_STR(package_name),
ERR_TEXT, 2, LEN_AND_STR(err_str));
}
}
return ret_handle;
}
开发者ID:h4ck3rm1k3,项目名称:FIS-GT.M,代码行数:26,代码来源:fgn_getinfo.c
示例16: log_detailed_log
void log_detailed_log(char *X, srch_hist *Y, srch_hist *Z, int level, kill_set *kill_set_list, trans_num tn)
{
int i;
block_id bitmap = 1, temp_bitmap; /* bitmap is initialized to 1, which is not a bitmap block id */
assert(NULL != (char *)(Y));
assert(0 < (Y)->depth);
assert((NULL == (char *)(Z)) || (0 < (Z)->depth));
util_out_print("!AD::[email protected]::", FALSE, LEN_AND_STR(X), &tn);
for (i = 0; i <= (Y)->depth; i++)
util_out_print("!SL|", FALSE, (Y)->h[i].blk_num);
if (NULL != (char *)(Z))
{
util_out_print("-", FALSE);
for (i = 0; i <= (Z)->depth; i++)
util_out_print("!SL|", FALSE, (Z)->h[i].blk_num);
}
if (cw_set_depth)
{
util_out_print("::", FALSE);
for (i = 0; i < cw_set_depth; i++)
util_out_print("!SL|", FALSE, cw_set[i].blk);
}
if ((0 == memcmp((X), "SPL", 3))
|| (0 == memcmp((X), "CLS", 3))
|| (0 == memcmp((X), "SWA", 3)))
{
if (NULL != (char *)(Z))
util_out_print("::!SL|!SL", TRUE,
(Y)->h[level].blk_num, (Z)->h[level].blk_num);
else
util_out_print("::!SL", TRUE, (Y)->h[level].blk_num);
} else
{
if ((0 == memcmp((X), "KIL", 3)) && (NULL != kill_set_list))
{
util_out_print("::", FALSE);
for (i = 0; i < kill_set_list->used; i++)
{
temp_bitmap = kill_set_list->blk[i].block & (~(BLKS_PER_LMAP - 1));
if (bitmap != temp_bitmap)
{
if (1 != bitmap)
util_out_print("]", FALSE);
bitmap = temp_bitmap;
util_out_print("[!SL:", FALSE, bitmap);
}
util_out_print("!SL,", FALSE, kill_set_list->blk[i].block);
}
util_out_print("]", TRUE);
}
}
}
开发者ID:h4ck3rm1k3,项目名称:fis-gtm,代码行数:53,代码来源:mu_reorg.c
示例17: gds_file_size
gtm_uint64_t gds_file_size(file_control *fc)
{
unix_db_info *udi;
int fstat_res;
struct stat stat_buf;
udi = (unix_db_info *)fc->file_info;
FSTAT_FILE(udi->fd, &stat_buf, fstat_res);
if (-1 == fstat_res)
rts_error(VARLSTCNT(5) ERR_DBFILOPERR, 2, LEN_AND_STR(udi->fn), errno);
assert(0 == stat_buf.st_size % DISK_BLOCK_SIZE);
return (gtm_uint64_t)(stat_buf.st_size / DISK_BLOCK_SIZE);
}
开发者ID:ChristopherEdwards,项目名称:fis-gtm,代码行数:13,代码来源:gds_file_size.c
示例18: set_enospc_flags
void set_enospc_flags(gd_addr *addr_ptr, char enospc_enable_list[], boolean_t ok_to_interrupt)
{
gd_region *r_local, *r_top;
int i;
sgmnt_addrs *csa;
const char *syslog_msg;
DCL_THREADGBL_ACCESS;
SETUP_THREADGBL_ACCESS;
for (r_local = addr_ptr->regions, r_top = r_local + addr_ptr->n_regions, i = 0;
r_local < r_top; r_local++, i++)
{
if (!r_local->open || r_local->was_open)
continue;
if ((dba_bg != r_local->dyn.addr->acc_meth) && (dba_mm != r_local->dyn.addr->acc_meth))
continue;
csa = &FILE_INFO(r_local)->s_addrs;
if (ANTICIPATORY_FREEZE_ENABLED(csa))
{
switch(enospc_enable_list[i])
{
case NONE:
syslog_msg = "Turning off fake ENOSPC for both database and journal file.";
csa->nl->fake_db_enospc = FALSE;
csa->nl->fake_jnl_enospc = FALSE;
break;
case DB_ON:
syslog_msg = "Turning on fake ENOSPC only for database file.";
csa->nl->fake_db_enospc = TRUE;
csa->nl->fake_jnl_enospc = FALSE;
break;
case JNL_ON:
syslog_msg = "Turning on fake ENOSPC only for journal file.";
csa->nl->fake_db_enospc = FALSE;
csa->nl->fake_jnl_enospc = TRUE;
break;
case DB_AND_JNL_ON:
syslog_msg = "Turning on fake ENOSPC for both database and journal file.";
csa->nl->fake_db_enospc = TRUE;
csa->nl->fake_jnl_enospc = TRUE;
break;
default:
assert(FALSE);
}
if (ok_to_interrupt)
send_msg_csa(CSA_ARG(NULL) VARLSTCNT(8) ERR_TEXT, 2, DB_LEN_STR(r_local), ERR_TEXT, 2,
LEN_AND_STR(syslog_msg));
}
}
}
开发者ID:ChristyV,项目名称:fis-gtm,代码行数:51,代码来源:heartbeat_timer.c
示例19: dse_process
static bool dse_process(int argc)
{
int res;
ESTABLISH_RET(util_ch, TRUE);
func = 0;
util_interrupt = 0;
if (EOF == (res = parse_cmd()))
{
if (util_interrupt)
{
rts_error(VARLSTCNT(1) ERR_CTRLC);
REVERT;
return TRUE;
} else
{
REVERT;
return FALSE;
}
} else if (res)
{
if (1 < argc)
{
/* Here we need to REVERT since otherwise we stay in dse in a loop
* The design of dse needs to be changed to act like VMS (which is:
* if there is an error in the dse command (dse dumpoa), go to command
* prompt, but UNIX exits
*/
REVERT;
rts_error(VARLSTCNT(4) res, 2, LEN_AND_STR(cli_err_str));
} else
gtm_putmsg(VARLSTCNT(4) res, 2, LEN_AND_STR(cli_err_str));
}
if (func)
func();
REVERT;
return(1 >= argc);
}
开发者ID:CeperaCPP,项目名称:fis-gtm,代码行数:38,代码来源:dse.c
示例20: mu_signal_process
void mu_signal_process(char *command, int signal)
{
unsigned short slen;
int len, toprocess_id, save_errno;
char buff[256];
error_def(ERR_MUPCLIERR);
error_def(ERR_MUPIPSIG);
slen = sizeof(buff);
if (!cli_get_str("ID", buff, &slen))
mupip_exit(ERR_MUPCLIERR);
len = slen;
toprocess_id = asc2i((uchar_ptr_t)buff, len);
if (toprocess_id < 0)
{
util_out_print("Error converting !AD to a number", FLUSH, len, buff);
mupip_exit(ERR_MUPCLIERR);
} else
{
if (-1 == kill(toprocess_id, signal))
{
save_errno = errno;
util_out_print("Error issuing !AD to process !UL: !AZ", FLUSH,
LEN_AND_STR(command), toprocess_id, STRERROR(errno));
} else
{
util_out_print("!AD issued to process !UL", FLUSH, LEN_AND_STR(command), toprocess_id);
if (!MEMCMP_LIT(command, STOP_STR))
{
send_msg(VARLSTCNT(9) ERR_MUPIPSIG, 7, LEN_AND_STR(command), signal, process_id, process_id,
toprocess_id, toprocess_id);
}
}
}
return;
}
开发者ID:5HT,项目名称:mumps,代码行数:36,代码来源:mu_signal_process.c
注:本文中的LEN_AND_STR函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论