int sh_readconf_setTime (const char * str, ShTimerItem what) { unsigned long i = atoi (str); SL_ENTER( _("sh_readconf_setTime")); if (i < LONG_MAX) { if (what == SET_MAILTIME) { TPT((0, FIL__, __LINE__, _("msg=<Set mail timer to %ld>\n"), i)); sh.mailTime.alarm_interval = i; } else if (what == SET_FILETIME) { TPT((0, FIL__, __LINE__, _("msg=<Set filecheck timer to %ld>\n"),i)); sh.fileCheck.alarm_interval = i; } SL_RETURN( 0, _("sh_readconf_setTime")); } else { sh_error_handle ((-1), FIL__, __LINE__, 0, MSG_EINVALL, _("set timer"), (long) i); SL_RETURN( (-1), _("sh_readconf_setTime")); } }
int sh_readconf_set_path (char * which, const char * what) { int len; SL_ENTER( _("sh_readconf_set_path")); if (which == NULL || what == NULL) { TPT((0, FIL__, __LINE__ , _("msg=<Input error>\n"))); SL_RETURN( -1, _("sh_readconf_set_path")); } if (0 == sl_strcmp(what, _("AUTO"))) { len = sl_strlen(which); if ( (len + sl_strlen(sh.host.name) + 2) > SH_PATHBUF) { TPT((0, FIL__, __LINE__ , _("msg=<Path too large: %s:%s>\n"), which, sh.host.name)); SL_RETURN( -1, _("sh_readconf_set_path")); } else { which[len] = ':'; which[len+1] = '\0'; sl_strlcat(which, sh.host.name, SH_PATHBUF); } } else /* not auto */ { if (sl_strlen(what) > (SH_PATHBUF-1)) { TPT((0, FIL__, __LINE__ , _("msg=<Path too large: %s>\n"), what)); SL_RETURN( -1, _("sh_readconf_set_path")); } else { sl_strlcpy(which, what, SH_PATHBUF); } } SL_RETURN( 0, _("sh_readconf_set_path")); }
// P is decomposed where dim(a) = 'state_dim' and dim(y) = dim(Y) = 1. // | Pa Pay PaY | // | Pya Py PyY | // | PYa PYy PY | void AccumulatorTransitionMatrix::sandwich_inplace(Spd &P)const { int state_dim = transition_matrix_->ncol(); if(P.ncol() != state_dim+2) report_multiplication_error( transition_matrix_, observation_vector_, contains_end_, fraction_in_initial_period_, P.col(0)); SubMatrix TPT(P, 0, state_dim-1, 0, state_dim-1); transition_matrix_->sandwich_inplace_submatrix(TPT); double a = 1 - fraction_in_initial_period_ * contains_end_; int b = !contains_end_; Vec zTPT = TPT * observation_vector_; double zTPTz = observation_vector_.dot(zTPT); Vec TPay = (*transition_matrix_) * VectorView(P.col(state_dim), 0, state_dim); Vec TPaY = (*transition_matrix_) * VectorView(P.col(state_dim+1), 0, state_dim); double zTPay = observation_vector_.dot(TPay); double zTPaY = observation_vector_.dot(TPaY); double Py = P(state_dim, state_dim); double PY = P(state_dim+1, state_dim+1); double PyY = P(state_dim, state_dim+1); VectorView(P.col(state_dim), 0, state_dim) = zTPT; VectorView(P.row(state_dim), 0, state_dim) = zTPT; P(state_dim, state_dim) = zTPTz; VectorView tmp(P.col(state_dim+1), 0, state_dim); tmp = a*TPay + b*TPaY; VectorView(P.row(state_dim+1), 0, state_dim) = tmp; P(state_dim+1, state_dim) = a*zTPay + b*zTPaY; P(state_dim, state_dim+1) = P(state_dim+1, state_dim); P(state_dim+1, state_dim+1) = a*a*Py + b*b*PY + 2*a*b*PyY; }
static int sh_readconfig_line (char * line) { char * key; const char * value; char * tmp; int i; int good_opt = -1; #if defined (SH_WITH_CLIENT) || defined (SH_STANDALONE) int modnum, modkey; #endif static const char *dummy = N_("dummy"); static const char *closing[] = { N_("closecommand"), N_("closeaddress"), N_("logmonendgroup"), N_("logmonendhost"), NULL }; static const char *ident[] = { N_("severityreadonly"), N_("severitylogfiles"), N_("severitygrowinglogs"), N_("severityignorenone"), N_("severityignoreall"), N_("severityattributes"), N_("severitydirs"), N_("severityfiles"), N_("severitynames"), N_("severityuser0"), N_("severityuser1"), N_("severityuser2"), N_("severityuser3"), N_("severityuser4"), N_("severityprelink"), NULL }; static int identnum[] = { SH_ERR_T_RO, SH_ERR_T_LOGS, SH_ERR_T_GLOG, SH_ERR_T_NOIG, SH_ERR_T_ALLIG, SH_ERR_T_ATTR, SH_ERR_T_DIR, SH_ERR_T_FILE, SH_ERR_T_NAME, SH_ERR_T_USER0, SH_ERR_T_USER1, SH_ERR_T_USER2, SH_ERR_T_USER3, SH_ERR_T_USER4, SH_ERR_T_PRELINK, }; SL_ENTER(_("sh_readconf_line")); /* convert to lowercase */ tmp = line; while (*tmp != '=' && *tmp != '\0') { *tmp = tolower( (int) *tmp); ++tmp; } key = line; /* interpret line */ value = strchr(line, '='); if (value == NULL || (*value) == '\0') { if (key != NULL) { i = 0; while (closing[i] != NULL) { if (sl_strncmp(key,_(closing[i]),sl_strlen(closing[i])-1) == 0) { value = dummy; goto ok_novalue; } ++i; } TPT(( 0, FIL__, __LINE__, _("msg=<ConfigFile: not key=value: %s>\n"), line)); } SL_RETURN(good_opt, _("sh_readconf_line")); } else ++value; /* skip leading whitespace */ while ((*value) == ' ' || (*value) == '\t') ++value; if ((*value) == '\0') /* no value */ { if (key != NULL) { TPT(( 0, FIL__, __LINE__, _("msg=<ConfigFile: not key=value: %s>\n"), line)); } SL_RETURN(good_opt, _("sh_readconf_line")); } ok_novalue: if (!sl_is_suid()) { TPT(( 0, FIL__, __LINE__, _("msg=<ConfigFile: %s>\n"), line)); } /* Expand shell expressions. This return allocated memory which we must free. * If !defined(SH_EVAL_SHELL), this will reduce to a strdup. */ value = sh_readconf_expand_value(value); if (!value || (*value) == '\0') { TPT(( 0, FIL__, __LINE__, _("msg=<ConfigFile: empty after shell expansion: %s>\n"), line)); SL_RETURN(good_opt, _("sh_readconf_line")); } #if defined (SH_WITH_CLIENT) || defined (SH_STANDALONE) if (read_mode == SH_SECTION_OTHER) { for (modnum = 0; modList[modnum].name != NULL; ++modnum) { for (modkey = 0; modList[modnum].conf_table[modkey].the_opt != NULL; ++modkey) { if (sl_strncmp (key, _(modList[modnum].conf_table[modkey].the_opt), sl_strlen(modList[modnum].conf_table[modkey].the_opt) ) == 0) { good_opt = 0; if (0 != modList[modnum].conf_table[modkey].func(value)) sh_error_handle ((-1), FIL__, __LINE__, 0, MSG_EINVALS, _(modList[modnum].conf_table[modkey].the_opt), value); if (!sl_is_suid()) { TPT(( 0, FIL__, __LINE__, _("msg=<line = %s, option = %s>\n"), line, _(modList[modnum].conf_table[modkey].the_opt))); } goto outburst; } } } } outburst: #endif if (read_mode == SH_SECTION_THRESHOLD) { i = 0; while (ident[i] != NULL) { if (sl_strncmp (key, _(ident[i]), sl_strlen(ident[i])) == 0) { good_opt = 0; sh_error_set_iv (identnum[i], value); break; } ++i; } } else { i = 0; while (ext_table[i].optname != NULL) { if ((ext_table[i].section == read_mode || ext_table[i].alt_section == read_mode) && sl_strncmp (key, _(ext_table[i].optname), sl_strlen(ext_table[i].optname)) == 0) { good_opt = 0; if (0 != ext_table[i].func (value)) sh_error_handle ((-1), FIL__, __LINE__, 0, MSG_EINVALS, _(ext_table[i].optname), value); break; } ++i; } } SH_FREE((char*)value); SL_RETURN(good_opt, _("sh_readconf_line")); }