/*---------------------------------------------- * d_c_cli_negated * disallow_check_cli_negated * * This is a wrapper for cli_negated to be used * from disallow functions (i.e. check_disallow * and those it calls). * * Mimicks NEG operator of VMS CLI. * * Do not use other than in *_disallow functions. * * Arguments: * qualifier string * * Return: * TRUE if negated, * FALSE otherwise *---------------------------------------------- */ boolean_t d_c_cli_negated(char *str) { boolean_t val; char *str_ptr; val = cli_negated(str); str_ptr = strchr(str,DOT); if (str_ptr) str_ptr++; /* skip the dot */ else str_ptr = str; cli_err_strcat(str_ptr); return(val); }
void mupip_freeze(void) { int4 status; bool record; tp_region *rptr, *rptr1; boolean_t freeze, override; uint4 online; freeze_status freeze_ret; int dummy_errno; const char *msg1[] = { "unfreeze", "freeze" } ; const char *msg2[] = { "UNFROZEN", "FROZEN" } ; const char *msg3[] = { "unfrozen", "frozen" } ; status = SS_NORMAL; in_mupip_freeze = TRUE; UNIX_ONLY(jnlpool_init_needed = TRUE); mu_outofband_setup(); gvinit(); freeze = (CLI_PRESENT == cli_present("ON")); online = (CLI_PRESENT == cli_present("ONLINE")); if (online) online |= ((!cli_negated("AUTORELEASE")) ? CHILLED_AUTORELEASE_MASK : 0); if (CLI_PRESENT == cli_present("OFF")) { if (TRUE == freeze) { util_out_print("The /ON qualifier is invalid with the /OFF qualifier", TRUE); mupip_exit(ERR_MUPCLIERR); } } if (CLI_PRESENT == cli_present("RECORD")) { record = TRUE; if (FALSE == freeze) { util_out_print("The /RECORD qualifier is invalid with the /OFF qualifier", TRUE); mupip_exit(ERR_MUPCLIERR); } } else record = FALSE; if (CLI_PRESENT == cli_present("OVERRIDE")) { override = TRUE; if (freeze) { util_out_print("The /OVERRIDE qualifier is invalid with the /ON qualifier", TRUE); mupip_exit(ERR_MUPCLIERR); } } else
void get_cmd_qlf(command_qualifier *qualif) { static readonly char upper[] = "UPPER"; static readonly char lower[] = "LOWER"; mstr *s; int temp_int; unsigned short len; unsigned char inbuf[255]; qualif->qlf = glb_cmd_qlf.qlf; qualif->object_file.mvtype = qualif->list_file.mvtype = qualif->ceprep_file.mvtype = 0; if (cli_present("OBJECT") == CLI_PRESENT) { qualif->qlf |= CQ_OBJECT; qualif->object_file.mvtype = MV_STR; s = &qualif->object_file.str; len = s->len; if (cli_get_str("OBJECT", s->addr, &len) == FALSE) { s->len = 0; if (glb_cmd_qlf.object_file.mvtype == MV_STR && glb_cmd_qlf.object_file.str.len > 0) { s->len = glb_cmd_qlf.object_file.str.len; memcpy(s->addr, glb_cmd_qlf.object_file.str.addr, s->len); } } else s->len = len; } else if (cli_negated("OBJECT") == TRUE) qualif->qlf &= ~CQ_OBJECT; if (cli_present("CROSS_REFERENCE") == CLI_PRESENT) qualif->qlf |= CQ_CROSS_REFERENCE; else if (cli_negated("CROSS_REFERENCE") == TRUE) qualif->qlf &= ~CQ_CROSS_REFERENCE; if (cli_negated("IGNORE") == TRUE) qualif->qlf &= ~CQ_IGNORE; else qualif->qlf |= CQ_IGNORE; if (cli_present("DEBUG") == CLI_PRESENT) qualif->qlf |= CQ_DEBUG; else if (cli_negated("DEBUG") == TRUE) qualif->qlf &= ~CQ_DEBUG; if (cli_negated("LINE_ENTRY") == TRUE) qualif->qlf &= ~CQ_LINE_ENTRY; if (cli_negated("INLINE_LITERALS") == TRUE) qualif->qlf &= ~CQ_INLINE_LITERALS; #ifdef DEBUG if (cli_present("MACHINE_CODE") == CLI_PRESENT) qualif->qlf |= CQ_MACHINE_CODE; else if (cli_negated("MACHINE_CODE") == TRUE) qualif->qlf &= ~CQ_MACHINE_CODE; #else qualif->qlf &= ~CQ_MACHINE_CODE; #endif if (cli_negated("WARNINGS") == TRUE) qualif->qlf &= ~CQ_WARNINGS; else qualif->qlf |= CQ_WARNINGS; if (cli_negated("LIST") == TRUE) qualif->qlf &= (~CQ_LIST & ~CQ_MACHINE_CODE); else if (cli_present("LIST") == CLI_PRESENT) { qualif->qlf |= CQ_LIST; qualif->list_file.mvtype = MV_STR; s = &qualif->list_file.str; len = s->len; if (cli_get_str("LIST", s->addr, &len) == FALSE) { s->len = 0; if (glb_cmd_qlf.list_file.mvtype == MV_STR && glb_cmd_qlf.list_file.str.len > 0) { s->len = glb_cmd_qlf.list_file.str.len; memcpy(s->addr, glb_cmd_qlf.list_file.str.addr, s->len); } } else s->len = len; } else if (!(qualif->qlf & CQ_LIST)) { qualif->qlf &= ~CQ_MACHINE_CODE; } if (cli_get_int("LENGTH",&temp_int) == FALSE) temp_int = 66; lst_param.lines_per_page = temp_int; if (cli_get_int("SPACE",&temp_int) == FALSE || temp_int <= 0 || temp_int >= lst_param.lines_per_page) temp_int = 1; lst_param.space = temp_int; if (cli_present("LABELS") == CLI_PRESENT) { len = sizeof(inbuf); if (cli_get_str("LABELS", (char *)&inbuf[0], &len)) { if (len == sizeof(upper) - 1) { if (!memcmp(upper, &inbuf[0], len)) qualif->qlf &= ~CQ_LOWER_LABELS; else if (!memcmp(lower, &inbuf[0], len)) qualif->qlf |= CQ_LOWER_LABELS; } } } if (cli_present("CE_PREPROCESS") == CLI_PRESENT) { qualif->qlf |= CQ_CE_PREPROCESS; qualif->ceprep_file.mvtype = MV_STR; s = &qualif->ceprep_file.str; len = s->len; if (cli_get_str("CE_PREPROCESS", s->addr, &len) == FALSE) { s->len = 0; if (glb_cmd_qlf.ceprep_file.mvtype == MV_STR && glb_cmd_qlf.ceprep_file.str.len > 0) { s->len = glb_cmd_qlf.ceprep_file.str.len; memcpy(s->addr, glb_cmd_qlf.ceprep_file.str.addr, s->len); } } else s->len = len; } else if (cli_negated("CE_PREPROCESS") == TRUE) qualif->qlf &= ~CQ_CE_PREPROCESS; }
void mupip_backup(void) { bool journal; char *tempdirname, *tempfilename, *ptr; uint4 level, blk, status, ret; unsigned short s_len, length, ntries; int4 size, gds_ratio, buff_size, i, crit_counter; uint4 ustatus; size_t backup_buf_size; trans_num tn; backup_buff_ptr_t bptr; static boolean_t once = TRUE; backup_reg_list *rptr, *clnup_ptr; boolean_t inc_since_inc , inc_since_rec, result, newjnlfiles, gotit, newjnlfiles_specified, keep_prev_link, bkdbjnl_disable_specified, bkdbjnl_off_specified; unsigned char since_buff[50]; jnl_create_info jnl_info; file_control *fc; char tempdir_trans_buffer[MAX_TRANS_NAME_LEN], tempnam_prefix[MAX_FN_LEN], tempdir_full_buffer[MAX_FN_LEN + 1], jnl_file_name[JNL_NAME_SIZE]; char *jnl_str_ptr, rep_str[256], jnl_str[256], entry[256], full_jnl_fn[JNL_NAME_SIZE], prev_jnl_fn[JNL_NAME_SIZE]; int ccnt, index, comparison, num, jnl_fstat; mstr tempdir_log, tempdir_trans, *file, tempdir_full, filestr; uint4 jnl_status, temp_file_name_len, tempdir_trans_len, trans_log_name_status; #if defined(VMS) struct FAB temp_fab; struct NAM temp_nam; struct XABPRO temp_xabpro; short iosb[4]; char def_jnl_fn[MAX_FN_LEN]; GDS_INFO *gds_info; char exp_file_name[MAX_FN_LEN]; uint4 exp_file_name_len; #elif defined(UNIX) struct stat stat_buf; int fstat_res; int sync_io_status; boolean_t sync_io, sync_io_specified; #else # error UNSUPPORTED PLATFORM #endif boolean_t jnl_options[jnl_end_of_list] = {FALSE, FALSE, FALSE}, save_no_prev_link; error_def(ERR_BACKUPCTRL); error_def(ERR_MUPCLIERR); error_def(ERR_FREEZECTRL); error_def(ERR_DBRDONLY); error_def(ERR_DBFILERR); error_def(ERR_MUNOACTION); error_def(ERR_MUNOFINISH); error_def(ERR_BACKUP2MANYKILL); error_def(ERR_MUSELFBKUP); error_def(ERR_JNLNOCREATE); error_def(ERR_JNLCREATE); error_def(ERR_PREVJNLLINKCUT); error_def(ERR_JNLSTATE); error_def(ERR_FILEEXISTS); error_def(ERR_JNLDISABLE); error_def(ERR_FILEPARSE); error_def(ERR_JNLFNF); error_def(ERR_NOTRNDMACC); /* ==================================== STEP 1. Initialization ======================================= */ ret = SS_NORMAL; jnl_str_ptr = &jnl_str[0]; halt_ptr = grlist = NULL; in_backup = TRUE; inc_since_inc = inc_since_rec = file_backed_up = error_mupip = FALSE; debug_mupip = (CLI_PRESENT == cli_present("DBG")); mu_outofband_setup(); jnl_status = 0; if (once) { gvinit(); once = FALSE; } /* ============================ STEP 2. Parse and construct grlist ================================== */ if (incremental = (CLI_PRESENT == cli_present("INCREMENTAL") || CLI_PRESENT == cli_present("BYTESTREAM"))) { int4 temp_tn; if (0 == cli_get_hex("TRANSACTION", &temp_tn)) { temp_tn = 0; s_len = sizeof(since_buff); if (cli_get_str("SINCE", (char *)since_buff, &s_len)) { lower_to_upper(since_buff, since_buff, s_len); if ((0 == memcmp(since_buff, "INCREMENTAL", s_len)) || (0 == memcmp(since_buff, "BYTESTREAM", s_len))) inc_since_inc = TRUE; else if (0 == memcmp(since_buff, "RECORD", s_len)) inc_since_rec = TRUE; } } else if (temp_tn < 1) { util_out_print("The minimum allowable transaction number is one.", TRUE); mupip_exit(ERR_MUNOACTION); } tn = (trans_num)temp_tn; } online = (TRUE != cli_negated("ONLINE")); record = (CLI_PRESENT == cli_present("RECORD")); newjnlfiles_specified = FALSE; newjnlfiles = TRUE; /* by default */ keep_prev_link = TRUE; if (CLI_PRESENT == cli_present("NEWJNLFILES")) { newjnlfiles_specified = newjnlfiles = TRUE; if (CLI_NEGATED == cli_present("NEWJNLFILES.PREVLINK")) keep_prev_link = FALSE; UNIX_ONLY( sync_io_status = cli_present("NEWJNLFILES.SYNC_IO"); sync_io_specified = TRUE; if (CLI_PRESENT == sync_io_status) sync_io = TRUE; else if (CLI_NEGATED == sync_io_status) sync_io = FALSE; else sync_io_specified = FALSE; ) } else if (CLI_NEGATED == cli_present("NEWJNLFILES"))
void get_cmd_qlf(command_qualifier *qualif) { static readonly char upper[] = "UPPER"; static readonly char lower[] = "LOWER"; mstr *s; int4 temp_int; unsigned short len; unsigned char inbuf[255]; qualif->qlf = glb_cmd_qlf.qlf; qualif->object_file.mvtype = qualif->list_file.mvtype = qualif->ceprep_file.mvtype = 0; INIT_QUALIF_STR(qualif, CQ_OBJECT, object_file); INIT_QUALIF_STR(qualif, CQ_LIST, list_file); INIT_QUALIF_STR(qualif, CQ_CE_PREPROCESS, ceprep_file); if (gtm_utf8_mode) qualif->qlf |= CQ_UTF8; /* Mark as being compiled in UTF8 mode */ if (cli_present("OBJECT") == CLI_PRESENT) { qualif->qlf |= CQ_OBJECT; qualif->object_file.mvtype = MV_STR; s = &qualif->object_file.str; len = s->len; if (cli_get_str("OBJECT", s->addr, &len) == FALSE) { s->len = 0; if (glb_cmd_qlf.object_file.mvtype == MV_STR && glb_cmd_qlf.object_file.str.len > 0) { s->len = glb_cmd_qlf.object_file.str.len; memcpy(s->addr, glb_cmd_qlf.object_file.str.addr, s->len); } } else s->len = len; } else if (cli_negated("OBJECT") == TRUE) qualif->qlf &= ~CQ_OBJECT; if (cli_present("CROSS_REFERENCE") == CLI_PRESENT) qualif->qlf |= CQ_CROSS_REFERENCE; else if (cli_negated("CROSS_REFERENCE") == TRUE) qualif->qlf &= ~CQ_CROSS_REFERENCE; if (cli_negated("IGNORE") == TRUE) qualif->qlf &= ~CQ_IGNORE; else qualif->qlf |= CQ_IGNORE; if (cli_present("DEBUG") == CLI_PRESENT) qualif->qlf |= CQ_DEBUG; else if (cli_negated("DEBUG") == TRUE) qualif->qlf &= ~CQ_DEBUG; if (cli_negated("LINE_ENTRY") == TRUE) qualif->qlf &= ~CQ_LINE_ENTRY; if (cli_negated("INLINE_LITERALS") == TRUE) qualif->qlf &= ~CQ_INLINE_LITERALS; if (cli_negated("ALIGN_STRINGS") == TRUE) qualif->qlf &= ~CQ_ALIGN_STRINGS; #ifdef DEBUG if (cli_present("MACHINE_CODE") == CLI_PRESENT) qualif->qlf |= CQ_MACHINE_CODE; else if (cli_negated("MACHINE_CODE") == TRUE) qualif->qlf &= ~CQ_MACHINE_CODE; #else qualif->qlf &= ~CQ_MACHINE_CODE; #endif if (cli_negated("WARNINGS") == TRUE) qualif->qlf &= ~CQ_WARNINGS; else qualif->qlf |= CQ_WARNINGS; if (cli_negated("LIST") == TRUE) qualif->qlf &= (~CQ_LIST & ~CQ_MACHINE_CODE); else if (cli_present("LIST") == CLI_PRESENT) { qualif->qlf |= CQ_LIST; qualif->list_file.mvtype = MV_STR; s = &qualif->list_file.str; len = s->len; if (cli_get_str("LIST", s->addr, &len) == FALSE) { s->len = 0; if (glb_cmd_qlf.list_file.mvtype == MV_STR && glb_cmd_qlf.list_file.str.len > 0) { s->len = glb_cmd_qlf.list_file.str.len; memcpy(s->addr, glb_cmd_qlf.list_file.str.addr, s->len); } } else s->len = len; } else if (!(qualif->qlf & CQ_LIST)) qualif->qlf &= ~CQ_MACHINE_CODE; if (cli_get_int("LENGTH",&temp_int) == FALSE) temp_int = 66; lst_param.lines_per_page = temp_int; if (cli_get_int("SPACE",&temp_int) == FALSE || temp_int <= 0 || temp_int >= lst_param.lines_per_page) temp_int = 1; lst_param.space = temp_int; if (cli_present("LABELS") == CLI_PRESENT) { len = SIZEOF(inbuf); if (cli_get_str("LABELS", (char *)&inbuf[0], &len)) { if (len == SIZEOF(upper) - 1) { if (!memcmp(upper, &inbuf[0], len)) qualif->qlf &= ~CQ_LOWER_LABELS; else if (!memcmp(lower, &inbuf[0], len)) qualif->qlf |= CQ_LOWER_LABELS; } } } # ifdef UNIX if (CLI_PRESENT == cli_present("NAMEOFRTN")) qualif->qlf |= CQ_NAMEOFRTN; # endif if (cli_present("CE_PREPROCESS") == CLI_PRESENT) { qualif->qlf |= CQ_CE_PREPROCESS; qualif->ceprep_file.mvtype = MV_STR; s = &qualif->ceprep_file.str; len = s->len; if (cli_get_str("CE_PREPROCESS", s->addr, &len) == FALSE) { s->len = 0; if (glb_cmd_qlf.ceprep_file.mvtype == MV_STR && glb_cmd_qlf.ceprep_file.str.len > 0) { s->len = glb_cmd_qlf.ceprep_file.str.len; memcpy(s->addr, glb_cmd_qlf.ceprep_file.str.addr, s->len); } } else s->len = len; } else if (cli_negated("CE_PREPROCESS") == TRUE) qualif->qlf &= ~CQ_CE_PREPROCESS; # ifdef USHBIN_SUPPORTED if (CLI_PRESENT == cli_present("DYNAMIC_LITERALS")) qualif->qlf |= CQ_DYNAMIC_LITERALS; # endif # ifdef UNIX if (CLI_PRESENT == cli_present("EMBED_SOURCE")) qualif->qlf |= CQ_EMBED_SOURCE; else if (cli_negated("EMBED_SOURCE")) qualif->qlf &= ~CQ_EMBED_SOURCE; # endif }