📄 u_data.c
字号:
{ {"VarList", cfg_var_list_name, NULL }, {"%VarListsEnd", cfg_varlists_end, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el var_list_kwtbl[] = { {"VarName", cfg_vlist_nvar, NULL }, {"Domain", cfg_vlist_ndom, NULL }, {"VarListEnd", cfg_vlist_end, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el var_blocks_begin_kwtbl[] = { {"%VBlocksBegin", cfg_var_blocks_begin, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el var_block_begin_kwtbl[] = { {"%VBlockBegin", cfg_var_block_begin, NULL }, {"%VBlocksEnd", cfg_var_blocks_end, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el var_block_kwtbl[] = { {"TypeName", cfg_block_type_name, NULL }, {"NumVars", cfg_block_num_vars, NULL }, {"BaseVarName", cfg_block_base_var_name, NULL }, {"UpdateOnRead", cfg_block_update_on_read, NULL }, {"UpdateOnTime", cfg_block_update_on_time, NULL }, {"%VBlockEnd", cfg_var_block_end, NULL }, { NULL, NULL, NULL} };/************************************************************************/typedef struct dom_cfg { ST_BOOLEAN dom_in_progress; INITDOWN_REQ_INFO *dom_info; ST_CHAR *cap_dest; } DOM_CFG;static DOM_CFG *dom_cfg_ctrl;#define MAX_PI_DOMS 20typedef struct pi_cfg { ST_BOOLEAN pi_in_progress; ST_CHAR pi_name[MAX_IDENT_LEN+1]; ST_CHAR *dom_dest; ST_INT num_dom; ST_CHAR *dom_table[MAX_PI_DOMS]; } PI_CFG;static PI_CFG *pi_cfg_ctrl;typedef struct jrnl_cfg { ST_BOOLEAN jrnlInProgress; ST_CHAR jrnlName[MAX_IDENT_LEN+1]; ST_BOOLEAN bDeletable; ST_CHAR *jrnlFile; } JRNL_CFG;static JRNL_CFG *pstJrnlCtrl;/************************************************************************//************************************************************************//* load_variables *//************************************************************************/extern ST_INT cfg_max_string_len;extern ST_INT cfg_line_buf_size;extern ST_INT cfg_max_rval_len;ST_VOID load_variables (ST_VOID) {#ifdef REQUIRE_S_LOG cfg_sLogCtrl = sLogCtrl;#endif cfg_log_mask |= CFG_LOG_ERR; named_type_name = chk_calloc (1,MAX_IDENT_LEN + 1); named_var_name = chk_calloc (1,VAR_NAME_BUF_LEN + 1); named_var_list_name = chk_calloc (1,VAR_NAME_BUF_LEN + 1); named_domain = chk_calloc (1,MAX_IDENT_LEN + 1); dom_cfg_ctrl = chk_calloc (1, sizeof (DOM_CFG)); pi_cfg_ctrl = chk_calloc (1, sizeof (PI_CFG)); pstJrnlCtrl = chk_calloc (1, sizeof (JRNL_CFG));/* To allow very large TDL strings to be added, increase buffer size */ cfg_max_string_len = 1000; cfg_line_buf_size = 1000; cfg_max_rval_len = 1000; m_rt_type_limit = 500; cfg_process_file (MMSVAR_CFG_FILE, domains_base_kwtbl); chk_free (named_type_name); chk_free (named_var_name); chk_free (named_var_list_name); chk_free (named_domain); chk_free (dom_cfg_ctrl); chk_free (pi_cfg_ctrl); chk_free (pstJrnlCtrl); }/************************************************************************//************************************************************************//* cfg_domains_begin *//************************************************************************//* Initial state for parsing domains cfg file */static ST_VOID cfg_domains_begin (ST_VOID) { /* Configuration file successfully opened, log msg */ dom_cfg_ctrl->dom_in_progress = SD_FALSE; dom_cfg_ctrl->dom_info = (INITDOWN_REQ_INFO *) dest_buffer; dom_cfg_ctrl->cap_dest = dest_buffer + 1000; dom_cfg_ctrl->dom_info->sharable = SD_TRUE; dom_cfg_ctrl->dom_info->num_of_capab = 0; cfg_tbl_push (domain_name_kwtbl); }/************************************************************************//* cfg_domain_name *//************************************************************************//* Get Named domain name and save it in named_domain_name var */static ST_VOID cfg_domain_name (ST_VOID) {ST_CHAR *name;NAMED_DOM_CTRL *dom; if (dom_cfg_ctrl->dom_in_progress) { printf ("\n Added custom domain '%s'", dom_cfg_ctrl->dom_info->dname); dom = ms_add_named_domain (dom_cfg_ctrl->dom_info,0x7F); if (!dom) { printf ("\n"); ms_perror (mms_op_err); wait_msg ("NAMED DOMAIN ADD FAILURE"); } else { dom->deletable = SD_TRUE; dom->state = DOM_READY; } dom_cfg_ctrl->dom_in_progress = SD_FALSE; } if (name = cfg_get_string_ptr ()) { dom_cfg_ctrl->dom_in_progress = SD_TRUE; dom_cfg_ctrl->dom_info->num_of_capab = 0; strncpy (dom_cfg_ctrl->dom_info->dname, name, MAX_IDENT_LEN); } else cfg_set_config_err (); }/************************************************************************/static ST_VOID cfg_capability (ST_VOID) {ST_CHAR *cap;ST_CHAR **capab_list_ptr; if (!dom_cfg_ctrl->dom_in_progress) { cfg_set_config_err (); return; } if (cap = cfg_get_string_ptr ()) { capab_list_ptr = (ST_CHAR **)(dom_cfg_ctrl->dom_info + 1); capab_list_ptr += dom_cfg_ctrl->dom_info->num_of_capab; *capab_list_ptr = dom_cfg_ctrl->cap_dest; strcpy (dom_cfg_ctrl->cap_dest, cap); dom_cfg_ctrl->cap_dest += strlen (dom_cfg_ctrl->cap_dest) +1; ++dom_cfg_ctrl->dom_info->num_of_capab; } else cfg_set_config_err (); }/************************************************************************//* cfg_domains_end *//************************************************************************//* Pop domain_name_kwtbl from stack to return to domains_base_kwtbl */static ST_VOID cfg_domains_end (ST_VOID) {NAMED_DOM_CTRL *dom; if (dom_cfg_ctrl->dom_in_progress) { printf ("\n Added custom domain '%s'", dom_cfg_ctrl->dom_info->dname); dom = ms_add_named_domain (dom_cfg_ctrl->dom_info,0x7F); if (!dom) wait_msg ("NAMED DOMAIN ADD FAILURE"); else dom->deletable = SD_TRUE; dom_cfg_ctrl->dom_in_progress = SD_FALSE; } /* Pop from stack the domain_name_kwtbl so that types section can be*/ /* processed */ /* Push var_begin_kwtbl to read vars */ cfg_tbl_pop (1); cfg_tbl_push (domains_base_kwtbl); }/************************************************************************//* cfg_pis_begin *//************************************************************************//* Initial state for parsing pis cfg file */static ST_VOID cfg_pis_begin (ST_VOID) { /* Configuration file successfully opened, log msg */ pi_cfg_ctrl->pi_in_progress = SD_FALSE; pi_cfg_ctrl->dom_dest = dest_buffer; pi_cfg_ctrl->num_dom = 0; cfg_tbl_push (pi_name_kwtbl); }/************************************************************************//* cfg_pi_name *//************************************************************************//* Get Named pi name and save it in named_pi_name var */static ST_VOID cfg_pi_name (ST_VOID) {ST_CHAR *name;PROG_INV *pi_ptr; if (pi_cfg_ctrl->pi_in_progress) { printf ("\n Added custom pi '%s'", pi_cfg_ctrl->pi_name); pi_ptr = ms_add_pi (pi_cfg_ctrl->pi_name, pi_cfg_ctrl->num_dom, pi_cfg_ctrl->dom_table, 0xff); if (!pi_ptr) wait_msg ("NAMED pi ADD FAILURE"); else pi_ptr->deletable = SD_TRUE; pi_cfg_ctrl->pi_in_progress = SD_FALSE; } if (name = cfg_get_string_ptr ()) { pi_cfg_ctrl->pi_in_progress = SD_TRUE; pi_cfg_ctrl->num_dom = 0; strncpy (pi_cfg_ctrl->pi_name, name, MAX_IDENT_LEN); } else cfg_set_config_err (); }/************************************************************************/static ST_VOID cfg_pi_dom (ST_VOID) {ST_CHAR *dom; if (!pi_cfg_ctrl->pi_in_progress) { cfg_set_config_err (); return; } if (dom = cfg_get_string_ptr ()) { strcpy (pi_cfg_ctrl->dom_dest, dom); pi_cfg_ctrl->dom_table[pi_cfg_ctrl->num_dom] = pi_cfg_ctrl->dom_dest; pi_cfg_ctrl->dom_dest += strlen (pi_cfg_ctrl->dom_dest) +1; ++pi_cfg_ctrl->num_dom; } else cfg_set_config_err (); }/************************************************************************//* cfg_pis_end *//************************************************************************//* Pop pi_name_kwtbl from stack to return to pis_base_kwtbl */static ST_VOID cfg_pis_end (ST_VOID) {PROG_INV *pi_ptr; if (pi_cfg_ctrl->pi_in_progress) { printf ("\n Added custom pi '%s'", pi_cfg_ctrl->pi_name); pi_ptr = ms_add_pi (pi_cfg_ctrl->pi_name, pi_cfg_ctrl->num_dom, pi_cfg_ctrl->dom_table, 0xff); if (!pi_ptr) wait_msg ("NAMED pi ADD FAILURE"); else pi_ptr->deletable = SD_TRUE; pi_cfg_ctrl->pi_in_progress = SD_FALSE; } /* Pop from stack the pi_name_kwtbl so that types section can be*/ /* processed */ /* Push var_begin_kwtbl to read vars */ cfg_tbl_pop (1); cfg_tbl_push (domains_base_kwtbl); }/************************************************************************//* cfg_journal_begin *//************************************************************************/static ST_VOID cfg_journal_begin (ST_VOID) { pstJrnlCtrl->jrnlInProgress = SD_FALSE; pstJrnlCtrl->bDeletable = SD_FALSE; pstJrnlCtrl->jrnlFile = NULL; domain_specific = SD_FALSE; cfg_tbl_push (jrnl_name_kwtbl); }/************************************************************************//* cfg_jrnl_name *//************************************************************************/static ST_VOID cfg_jrnl_name (ST_VOID) {ST_CHAR *name;JOURNAL *pstJournal;NAMED_DOM_CTRL *dom_ctrl;DOMAIN_OBJS *dom; if (pstJrnlCtrl->jrnlInProgress) { printf ("\n Adding Journal '%s'", pstJrnlCtrl->jrnlName); if (domain_specific == SD_TRUE) { printf (" to domain '%s'", named_domain); if (dom_ctrl = ms_find_named_dom (named_domain)) { dom = &(dom_ctrl->objs); } else { dom = NULL; printf ("\n Bad DomainName '%s' Failed adding Journal '%s'", named_domain, pstJrnlCtrl->jrnlName); ms_perror (mms_op_err); wait_msg(""); } } else { dom = &(m_vmd_select->vmd_wide); } pstJournal = ms_add_journal (dom, pstJrnlCtrl->jrnlName, pstJrnlCtrl->bDeletable); if (!pstJournal) wait_msg ("ADD Journal FAILURE"); else pstJournal->usr = pstJrnlCtrl->jrnlFile; pstJrnlCtrl->jrnlInProgress = SD_FALSE; domain_specific = SD_FALSE; } if (name = cfg_get_string_ptr ()) { pstJrnlCtrl->jrnlInProgress = SD_TRUE; strncpy (pstJrnlCtrl->jrnlName, name, MAX_IDENT_LEN); } else cfg_set_config_err (); }/************************************************************************//* cfg_jrnl_ndom *//************************************************************************//* Save the domain name *//* stack next keyword table */static ST_VOID cfg_jrnl_ndom (ST_VOID) { ST_CHAR *dom_name_ptr = NULL; /* Set the var name to empty str */ memset (named_domain, 0, MAX_IDENT_LEN+1); if (dom_name_ptr = cfg_get_string_ptr ()) { strncpy (named_domain, dom_name_ptr, MAX_IDENT_LEN); domain_specific = SD_TRUE; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -