Exemple #1
0
/* 画像を読み込む */
static bool load_images(void)
{
	const char *file;
	struct image *img;

	/* 背景を読み込んでFOレイヤに描画する */
	file = get_string_param(RETROSPECT_PARAM_BG_FILE);
	img = create_image_from_file(BG_DIR, file);
	if (img == NULL) {
		log_script_exec_footer();
		return false;
	}
	draw_image_to_fo(img);
	destroy_image(img);

	/* 前景を読み込んでFIレイヤに描画する */
	file = get_string_param(MENU_PARAM_FG_FILE);
	img = create_image_from_file(BG_DIR, file);
	if (img == NULL) {
		log_script_exec_footer();
		return false;
	}
	draw_image_to_fi(img);
	destroy_image(img);

	return true;
}
Exemple #2
0
/* サムネイルごとの情報をロードする */
static bool load_thumbnail_params(void)
{
	int32_t flag_val;
	int i;

	/* 各サムネイルの情報を取得する */
	thumbnail_count = 0;
	for(i = 0; i < THUMBNAIL_SIZE; i++) {
		/* ラベルを取得する */
		thumbnail[i].label = get_string_param(PARAM_LABEL(i));
		if (strcmp(thumbnail[i].label, "") == 0)
			break;	/* すべてのサムネイルを処理した*/

		/* 変数の値を求める */
		if (!get_variable_by_string(get_string_param(PARAM_FLAG(i)),
					    &flag_val))
			return false;

		/* サムネイルを有効にするかを求める */
		thumbnail[i].enabled = flag_val != 0;

		/* 表示位置を取得する */
		thumbnail[i].x = get_int_param(PARAM_X(i));
		thumbnail[i].y = get_int_param(PARAM_Y(i));

		thumbnail_count++;
	}

	for(i = thumbnail_count; i < THUMBNAIL_SIZE; i++)
		thumbnail[i].enabled = false;

	return true;
}
Exemple #3
0
static ret_code_t parmctrl(void)
{
	SaHpiResourceIdT	resid;
	int			i;
	char			buf[10];
	SaErrorT		rv;
	SaHpiParmActionT	act;
	ret_code_t		ret;

	ret = ask_rpt(&resid);
	if (ret != HPI_SHELL_OK) return(ret);
	i = get_string_param("Action (default,save,restore): ", buf, 9);
	if (i != 0) {
		printf("Invalid action: %s\n", buf);
		return(HPI_SHELL_PARM_ERROR);
	};
	if (strcmp(buf, "default") == 0)
		act = SAHPI_DEFAULT_PARM;
	else if (strcmp(buf, "save") == 0)
		act = SAHPI_SAVE_PARM;
	else if (strcmp(buf, "restore") == 0)
		act = SAHPI_RESTORE_PARM;
	else {
		printf("Invalid action: %s\n", buf);
		return(HPI_SHELL_PARM_ERROR);
	};

	rv = saHpiParmControl(Domain->sessionId, resid, act);
	if (rv != SA_OK) {
		printf("saHpiParmControl error = %s\n", oh_lookup_error(rv));
		return HPI_SHELL_CMD_ERROR;
	};
	return (HPI_SHELL_OK);
}
Exemple #4
0
static ret_code_t set_tag(void)
{
	SaHpiResourceIdT	resid = 0;
	SaHpiTextBufferT	tbuf;
	int			i;
	char			buf[SAHPI_MAX_TEXT_BUFFER_LENGTH + 1];
	SaErrorT		rv;
	SaHpiRptEntryT		rpt_entry;
	Rpt_t			tmp_rpt;
	ret_code_t		ret;

	ret = ask_rpt(&resid);
	if (ret != HPI_SHELL_OK) return(ret);
	i = get_string_param("New tag: ", buf, SAHPI_MAX_TEXT_BUFFER_LENGTH);
	if (i != 0) {
		printf("Invalid tag: %s\n", buf);
		return(HPI_SHELL_PARM_ERROR);
	};
	strcpy(tbuf.Data, buf);
	tbuf.DataType = SAHPI_TL_TYPE_TEXT;
	tbuf.Language = SAHPI_LANG_ENGLISH;
	tbuf.DataLength = i;
	rv = saHpiResourceTagSet(Domain->sessionId, resid, &tbuf);
	if (rv != SA_OK) {
		printf("saHpiResourceTagSet error = %s\n", oh_lookup_error(rv));
		return HPI_SHELL_CMD_ERROR;
	};
	rv = saHpiRptEntryGetByResourceId(Domain->sessionId, resid, &rpt_entry);
	make_attrs_rpt(&tmp_rpt, &rpt_entry);
	show_Rpt(&tmp_rpt, ui_print);
	free_attrs(&(tmp_rpt.Attrutes));
	return (HPI_SHELL_OK);
}
Exemple #5
0
ret_code_t ann_block_modeset(void)
{
	SaErrorT		rv;
	SaHpiAnnunciatorModeT	mode;
	char			buf[256];
	int			res;

	res = get_string_param("Mode(auto|user|shared): ", buf, 10);
	if (res != 0) {
		printf("Invalid mode: %s\n", buf);
		return(HPI_SHELL_PARM_ERROR);
	};
	if (strcmp(buf, "auto") == 0)
		mode = SAHPI_ANNUNCIATOR_MODE_AUTO;
	else if (strcmp(buf, "user") == 0)
		mode = SAHPI_ANNUNCIATOR_MODE_USER;
	else if (strcmp(buf, "shared") == 0)
		mode = SAHPI_ANNUNCIATOR_MODE_SHARED;
	else {
		printf("Invalid mode: %s\n", buf);
		return(HPI_SHELL_PARM_ERROR);
	};
	rv = saHpiAnnunciatorModeSet(Domain->sessionId, ann_block_env.rptid,
		ann_block_env.rdrnum, mode);
	if (rv != SA_OK) {
		printf("saHpiAnnunciatorModeSet error %s\n",
			oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	return(HPI_SHELL_OK);
}
Exemple #6
0
static int add_inventory_field(SaHpiSessionIdT sessionId, SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
{
	SaErrorT	rv;
	SaHpiIdrFieldT	field;
	char		buf[256];
	int		res, i;

	i = get_int_param("Area Id: ", &res);
	if (i != 1) {
		printf("Error!!! Invalid Area Id\n");
		return(-1);
	};
	field.AreaId = res;

	i = get_string_param("Field type(chass,time,manuf,prodname,prodver,"
		"snum,pnum,file,tag,custom): ", buf, 9);
	if (i != 0) {
		printf("Error!!! Invalid Field type: %s\n", buf);
		return(-1);
	};
	for (i = 0; Field_types[i].name != (char *)NULL; i++)
		if (strcmp(Field_types[i].name, buf) == 0) break;
	if (Field_types[i].name == (char *)NULL) {
		printf("Error!!! Unknown Field type: %s\n", buf);
		return(-1);
	};
	field.Type = Field_types[i].val;
	field.ReadOnly = SAHPI_FALSE;
	i = get_string_param("Field value: ", buf, 256);
	if (i != 0) {
		printf("Error!!! Invalid Field value: %s\n", buf);
		return(-1);
	};
	i = strlen(buf);
	field.Field.DataType = SAHPI_TL_TYPE_TEXT;
	field.Field.Language = SAHPI_LANG_ENGLISH;
	field.Field.DataLength = i;
	if (i > 0)
		strcpy(field.Field.Data, buf);
	rv = saHpiIdrFieldAdd(sessionId, rptid, rdrnum, &field);
	if (rv != SA_OK) {
		printf("ERROR!!! saHpiIdrFieldAdd: %s\n", oh_lookup_error(rv));
		return(rv);
	};
	return(SA_OK);
}
 AxisCamPolled() : ROS_Slave(), cam(NULL), frame_id(0)
 {
   register_source(image = new FlowImage("image"));
   register_sink(shutter = new FlowEmpty("shutter"), 
     ROS_CALLBACK(AxisCamPolled, shutter_cb));
   if (!get_string_param(".host", axis_host))
   {
     printf("axis_host parameter not specified; defaulting to 192.168.0.90\n");
     axis_host = "192.168.0.90";
   }
   printf("axis host set to [%s]\n", axis_host.c_str());
   get_int_param(".frame_id", &frame_id);
   cam = new AxisCam(axis_host);
 }
Exemple #8
0
static ret_code_t get_uri( SaHpiTextBufferT* uri )
{
    int i;

    i = get_string_param("Source URI: ", (char*)(uri->Data), SAHPI_MAX_TEXT_BUFFER_LENGTH);
    if ( i != 0 ) {
        printf( "Error!!! Invalid string: %s\n", uri->Data );
        return HPI_SHELL_PARM_ERROR ;
    }
    uri->DataType   = SAHPI_TL_TYPE_TEXT;
    uri->Language   = SAHPI_LANG_ENGLISH;
    uri->DataLength = strlen( (char*)(uri->Data) );
    return HPI_SHELL_OK;
}
Exemple #9
0
static ret_code_t delete_announ(SaHpiResourceIdT rptid, SaHpiInstrumentIdT rdrnum)
{
	SaErrorT		rv;
	char			str[32];
	int			i, any = 0;
	SaHpiSeverityT		sev = SAHPI_OK;
	SaHpiEntryIdT		entryId = 0;

	i = get_string_param("EntryId(<Id> | any): ", str, 32);
	if (i != 0) return(HPI_SHELL_PARM_ERROR);
	if (strcmp(str, "any") == 0) any = 1;
	else entryId = atoi(str);
	if (any) {
		i = get_string_param("Severity(crit|maj|min|info|ok|all): ",
			str, 10);
		if (i != 0) return(-1);
		if (strcmp(str, "crit") == 0) sev = SAHPI_CRITICAL;
		else if (strcmp(str, "maj") == 0) sev = SAHPI_MAJOR;
		else if (strcmp(str, "min") == 0) sev = SAHPI_MINOR;
		else if (strcmp(str, "info") == 0) sev = SAHPI_INFORMATIONAL;
		else if (strcmp(str, "ok") == 0) sev = SAHPI_OK;
		else if (strcmp(str, "all") == 0) sev = SAHPI_ALL_SEVERITIES;
		else {
			printf("Invalid severity %s\n", str);
			return(HPI_SHELL_PARM_ERROR);
		};
		entryId = SAHPI_ENTRY_UNSPECIFIED;
	};

	rv = saHpiAnnunciatorDelete(Domain->sessionId, rptid, rdrnum,
		entryId, sev);
	if (rv != SA_OK) {
		printf("saHpiAnnunciatorDelete error %s\n", oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	return HPI_SHELL_OK;
}
Exemple #10
0
int ConfigImpl::get_int_param(const string& section,const  string&  param_name, int& value)
{
    int rv = 0;
    string tmp;

    rv = get_string_param(section, param_name, tmp);
    if(rv < 0)
    {
        return -1;
    }

    value = strtol(tmp.c_str(),0,0);

    return 0;
}
Exemple #11
0
int ConfigImpl::get_double_param(const string& section, const string&  param_name, double& value)
{

    int rv = 0;
    string tmp;

    rv = get_string_param(section, param_name, tmp);
    if(rv < 0)
    {
        return -1;
    }

    value = atof(tmp.c_str());

    return 0;
}
Exemple #12
0
void Lab2VitMain::finish_utt(double logProb)
    {
    m_totFrmCnt += m_feats.size1();
    m_totLogProb += logProb;

    //  Output results.
    if (m_doAlign)
        write_int_vector(m_outStrm, m_labelList, m_idStr);
    else
        {
        cout << "  Output:";
        for (int labelIdx = 0; labelIdx < (int) m_labelList.size();
            ++labelIdx)
            {
            m_outStrm << m_graph.get_word_sym_table().get_str(
                m_labelList[labelIdx]) << " ";
            cout << " " << m_graph.get_word_sym_table().get_str(
                m_labelList[labelIdx]);
            }
        m_outStrm << "(" << m_idStr << ")" << endl;
        cout << endl;
        }

    string chartFile = get_string_param(m_params, "chart_file");
    if (!chartFile.empty())
        {
        //  Output DP chart, for debugging.
        ofstream chartStrm(chartFile.c_str());
        int frmCnt = m_feats.size1();
        int stateCnt = m_graph.get_state_count();
        matrix<double> matProbs(frmCnt + 1, stateCnt);
        matrix<int> matArcs(frmCnt + 1, stateCnt);
        for (int frmIdx = 0; frmIdx <= frmCnt; ++frmIdx)
            {
            for (int srcIdx = 0; srcIdx < stateCnt; ++srcIdx)
                {
                matProbs(frmIdx, srcIdx) =
                    m_chart(frmIdx, srcIdx).get_log_prob();
                matArcs(frmIdx, srcIdx) =
                    m_chart(frmIdx, srcIdx).get_arc_id();
                }
            }
        write_float_matrix(chartStrm, matProbs, m_idStr + "_probs");
        write_int_matrix(chartStrm, matArcs, m_idStr + "_arcs");
        chartStrm.close();
        }
    }
Exemple #13
0
Lab2VitMain::Lab2VitMain(const map<string, string>& params) :
    m_params(params), m_frontEnd(m_params),
    m_gmmSet(get_required_string_param(m_params, "gmm")),
    m_audioStrm(get_required_string_param(m_params, "audio_file").c_str()),
    m_doAlign(!get_string_param(m_params, "align_file").empty()),
    m_outStrm(get_required_string_param(m_params,
        !m_doAlign ? "dcd_file" : "align_file").c_str()),
    m_acousWgt(get_float_param(m_params, "ac_wgt", 1.0)),
    m_totFrmCnt(0), m_totLogProb(0.0)
    {
    if (!m_doAlign)
        m_graph.read(get_required_string_param(m_params, "graph_file"),
            get_required_string_param(m_params, "word_syms"));
    else
        m_graphStrm.open(
            get_required_string_param(m_params, "graph_file").c_str());
    }
Exemple #14
0
static int set_inventory_field(SaHpiSessionIdT sessionId, SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
{
	SaErrorT	rv;
	SaHpiIdrFieldT	field;
	char		buf[256];
	int		res, i;

	memset(&field, 0, sizeof(SaHpiIdrFieldT));
	i = get_int_param("Area Id: ", &res);
	if (i != 1) {
		printf("Error!!! Invalid Area Id\n");
		return(-1);
	};
	field.AreaId = res;

	i = get_int_param("Field Id: ", &res);
	if (i != 1) {
		printf("Error!!! Invalid Field Id\n");
		return(-1);
	};
	field.FieldId = res;

	i = get_string_param("Field type(chass,time,manuf,prodname,prodver,"
		"snum,pnum,file,tag,custom): ", buf, 9);
	if (i == 0) {
		for (i = 0; Field_types[i].name != (char *)NULL; i++)
			if (strcmp(Field_types[i].name, buf) == 0) break;
		if (Field_types[i].name == (char *)NULL) {
			printf("Error!!! Unknown Field type: %s\n", buf);
			return(-1);
		};
		field.Type = Field_types[i].val;
	};
	i = set_text_buffer(&(field.Field));
	if (i != 0) {
		printf("Invalid text\n");
		return(HPI_SHELL_CMD_ERROR);
	};
	rv = saHpiIdrFieldSet(sessionId, rptid, rdrnum, &field);
	if (rv != SA_OK) {
		printf("ERROR!!! saHpiIdrFieldSet: %s\n", oh_lookup_error(rv));
		return(rv);
	};
	return(SA_OK);
}
Exemple #15
0
static ret_code_t set_sever(void)
{
	SaHpiResourceIdT	resid;
	SaHpiSeverityT		sev = SAHPI_OK;
	int			i;
	char			buf[SEV_BUF_SIZE + 1];
	SaErrorT		rv;
	SaHpiRptEntryT		rpt_entry;
	Rpt_t			tmp_rpt;
	ret_code_t		ret;

	ret = ask_rpt(&resid);
	if (ret != HPI_SHELL_OK) return(ret);
	i = get_string_param(
		"New severity (crit, maj, min, inf, ok, debug, all): ",
		buf, SEV_BUF_SIZE);
	if (i != 0) {
		printf("Invalid sevetity: %s\n", buf);
		return(HPI_SHELL_PARM_ERROR);
	};
	for (i = 0; Sev_array[i].name != (char *)NULL; i++)
		if (strcmp(buf, Sev_array[i].name) == 0) {
			sev = Sev_array[i].val;
			break;
		};
	if (Sev_array[i].name == (char *)NULL) {
		printf("Invalid sevetity type: %s\n", buf);
		return(HPI_SHELL_PARM_ERROR);
	};
	rv = saHpiResourceSeveritySet(Domain->sessionId, resid, sev);
	if (rv != SA_OK) {
		printf("saHpiResourceSeveritySet error = %s\n",
			oh_lookup_error(rv));
		return HPI_SHELL_CMD_ERROR;
	};
	rv = saHpiRptEntryGetByResourceId(Domain->sessionId, resid, &rpt_entry);
	make_attrs_rpt(&tmp_rpt, &rpt_entry);
	show_Rpt(&tmp_rpt, ui_print);
	free_attrs(&(tmp_rpt.Attrutes));
	return (HPI_SHELL_OK);
}
Exemple #16
0
static int add_inventory_area(SaHpiSessionIdT sessionId, SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
{
	SaHpiEntryIdT	entry;
	SaErrorT	rv;
	char		buf[10];
	int		i;

	i = get_string_param("Area type (inter,chass,board,prod,oem): ", buf, 9);
	if (i != 0) return(-1);
	for (i = 0; Area_types[i].name != (char *)NULL; i++)
		if (strcmp(Area_types[i].name, buf) == 0) break;
	if (Area_types[i].name == (char *)NULL) {
		printf("Error!!! Unknown Area type: %s\n", buf);
		return(-1);
	};
	rv = saHpiIdrAreaAdd(sessionId, rptid, rdrnum, Area_types[i].val, &entry);
	if (rv != SA_OK) {
		printf("ERROR!!! saHpiIdrAreaAdd: %s\n", oh_lookup_error(rv));
		return(rv);
	};
	return(SA_OK);
}
Exemple #17
0
  Servo() : ROS_Slave(), mot(NULL), ipdcmot_host("192.168.1.123"),
    pos_send_freq(1.0)
  {
    register_sink(setpos_blocking = new FlowFloat64("setpos_blocking"), ROS_CALLBACK(Servo, setpos_blocking_cb));
    register_source(setpos_result = new FlowInt32("setpos_result"));

    register_sink(getpos_blocking = new FlowEmpty("getpos_blocking"), ROS_CALLBACK(Servo, getpos_blocking_cb));
    register_source(getpos_result = new FlowFloat64("getpos_result"));

    register_sink(patrol = new FlowPatrol("patrol"), ROS_CALLBACK(Servo, patrol_cb));
    register_source(pos_f = new FlowFloat64("pos"));
    register_source(status_f = new FlowString("status"));

    register_with_master();
    if (!get_string_param(".host", ipdcmot_host))
      printf("ipdcmot_host parameter not specified... defaulting to [%s]\n", ipdcmot_host.c_str());
    printf("ipdcmot host set to [%s]\n", ipdcmot_host.c_str());
    get_double_param(".pos_send_freq", &pos_send_freq);
    printf("position send frequency set to %f\n", pos_send_freq);
    mot = new IPDCMOT(ipdcmot_host, 75.0);
    status_f->data = "ready";
    status_f->publish();
  }
Exemple #18
0
static ret_code_t wtd_set(void)
{
	SaHpiResourceIdT	rptid;
	SaHpiWatchdogNumT	wtdnum;
	SaHpiWatchdogT		watchdog;
	SaHpiWatchdogExpFlagsT	flags;
	SaErrorT		rv;
	ret_code_t		ret;
	int			i, res;
	char			*str, *str1;
	char			tmp[256];

	ret = ask_rpt(&rptid);
	if (ret != HPI_SHELL_OK) return(ret);
	ret = ask_rdr(rptid, SAHPI_WATCHDOG_RDR, &wtdnum);
	if (ret != HPI_SHELL_OK) return(ret);

	i = get_string_param("Log(0 | 1): ", tmp, 255);
	if (i != 0) {
		printf("Invalid Log value: %s\n", tmp);
		return(HPI_SHELL_PARM_ERROR);
	};
	if (tmp[0] == '1') watchdog.Log = SAHPI_TRUE;
	else watchdog.Log = SAHPI_FALSE;

	i = get_string_param("Running(0 | 1): ", tmp, 255);
	if (i != 0) {
		printf("Invalid Running value: %s\n", tmp);
		return(HPI_SHELL_PARM_ERROR);
	};
	if (tmp[0] == '1') watchdog.Running = SAHPI_TRUE;
	else watchdog.Running = SAHPI_FALSE;

	i = get_string_param(
		"TimerUse(none|bios_frb2|bios_post|os_load|sms_os|oem): ",
		tmp, 255);
	if (i != 0) {
		printf("Invalid TimerUse value: %s\n", tmp);
		return(HPI_SHELL_PARM_ERROR);
	};
	if (strcmp(tmp, "none") == 0)
		watchdog.TimerUse = SAHPI_WTU_NONE;
	else if (strcmp(tmp, "bios_frb2") == 0)
		watchdog.TimerUse = SAHPI_WTU_BIOS_FRB2;
	else if (strcmp(tmp, "bios_post") == 0)
		watchdog.TimerUse = SAHPI_WTU_BIOS_POST;
	else if (strcmp(tmp, "os_load") == 0)
		watchdog.TimerUse = SAHPI_WTU_OS_LOAD;
	else if (strcmp(tmp, "sms_os") == 0)
		watchdog.TimerUse = SAHPI_WTU_SMS_OS;
	else if (strcmp(tmp, "oem") == 0)
		watchdog.TimerUse = SAHPI_WTU_OEM;
	else {
		printf("Invalid TimerUse value: %s\n", tmp);
		return(HPI_SHELL_PARM_ERROR);
	};

	i = get_string_param(
		"TimerAction(no|reset|pwr_down|pwr_cycle|int): ",
		tmp, 255);
	if (i != 0) {
		printf("Invalid TimerAction value: %s\n", tmp);
		return(HPI_SHELL_PARM_ERROR);
	};
	if (strcmp(tmp, "no") == 0)
		watchdog.TimerAction = SAHPI_WAE_NO_ACTION;
	else if (strcmp(tmp, "reset") == 0)
		watchdog.TimerAction = SAHPI_WAE_RESET;
	else if (strcmp(tmp, "pwr_down") == 0)
		watchdog.TimerAction = SAHPI_WAE_POWER_DOWN;
	else if (strcmp(tmp, "pwr_cycle") == 0)
		watchdog.TimerAction = SAHPI_WAE_POWER_CYCLE;
	else if (strcmp(tmp, "int") == 0)
		watchdog.TimerAction = SAHPI_WAE_TIMER_INT;
	else {
		printf("Invalid TimerAction value: %s\n", tmp);
		return(HPI_SHELL_PARM_ERROR);
	};

	i = get_string_param("PretimerInterrupt(no|smi|nmi|mess|oem): ",
		tmp, 255);
	if (i != 0) {
		printf("Invalid PretimerInterrupt value: %s\n", tmp);
		return(HPI_SHELL_PARM_ERROR);
	};
	if (strcmp(tmp, "no") == 0)
		watchdog.PretimerInterrupt = SAHPI_WPI_NONE;
	else if (strcmp(tmp, "smi") == 0)
		watchdog.PretimerInterrupt = SAHPI_WPI_SMI;
	else if (strcmp(tmp, "nmi") == 0)
		watchdog.PretimerInterrupt = SAHPI_WPI_NMI;
	else if (strcmp(tmp, "mess") == 0)
		watchdog.PretimerInterrupt = SAHPI_WPI_MESSAGE_INTERRUPT;
	else if (strcmp(tmp, "oem") == 0)
		watchdog.PretimerInterrupt = SAHPI_WPI_OEM;
	else {
		printf("Invalid TimerAction value: %s\n", tmp);
		return(HPI_SHELL_PARM_ERROR);
	};

	i = get_int_param("TimeOut: ", &res);
	if (i != 1) {
		printf("Invalid TimeOut value\n");
		return(HPI_SHELL_PARM_ERROR);
	};
	watchdog.PreTimeoutInterval = res;

	i = get_string_param("Flags(\"bios_frb2|bios_post|os_load|sms_os|oem\"): ",
		tmp, 255);
	if (i != 0) *tmp = 0;
	flags = 0;
	str = tmp;
	while (strlen(str) != 0) {
		while (isspace(*str)) str++;
		str1 = str;
		while ((*str1 != ' ') && (*str1 != 0) && (*str1 != '|')) str1++;
		if (*str1 != 0) *str1++ = 0;
		else *str1 = 0;
		if (strcmp(str, "bios_frb2") == 0)
			flags |= SAHPI_WATCHDOG_EXP_BIOS_FRB2;
		if (strcmp(str, "bios_post") == 0)
			flags |= SAHPI_WATCHDOG_EXP_BIOS_POST;
		if (strcmp(str, "os_load") == 0)
			flags |= SAHPI_WATCHDOG_EXP_OS_LOAD;
		if (strcmp(str, "sms_os") == 0)
			flags |= SAHPI_WATCHDOG_EXP_SMS_OS;
		if (strcmp(str, "oem") == 0)
			flags |= SAHPI_WATCHDOG_EXP_OEM;
		str = str1;
	};

	watchdog.TimerUseExpFlags = flags;
	i = get_int_param("InitialCount: ", &res);
	if (i != 1) {
		printf("Invalid InitialCount value\n");
		return(HPI_SHELL_PARM_ERROR);
	};
	watchdog.InitialCount = res;

	rv = saHpiWatchdogTimerSet(Domain->sessionId, rptid, wtdnum, &watchdog);
	if (rv != SA_OK) {
		printf("ERROR!!! Set Watchdog: ResourceId=%d WatchdogNum=%d: %s\n",
			rptid, wtdnum, oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	return HPI_SHELL_OK;
}
Exemple #19
0
static ret_code_t show_rdr(void)
{
	Rdr_t			tmp_rdr;
	SaHpiRdrT		rdr_entry;
	SaHpiResourceIdT	rptid = 0;
	SaHpiInstrumentIdT	rdrnum;
	SaHpiRdrTypeT		type;
	SaErrorT		rv;
	int			i;
	char			buf[10], t;
	term_def_t		*term;
	ret_code_t		ret;

	term = get_next_term();
	if (term == NULL) {
		if (read_file) return(HPI_SHELL_CMD_ERROR);
		i = show_rpt_list(Domain, SHOW_ALL_RPT, rptid, ui_print);
		if (i == 0) {
			printf("NO rpt!\n");
			return(HPI_SHELL_CMD_ERROR);
		};
		i = get_string_param("RPT (ID | all) ==> ", buf, 9);
		if (i != 0) return HPI_SHELL_CMD_ERROR;
		if (strncmp(buf, "all", 3) == 0) {
			show_rpt_list(Domain, SHOW_ALL_RDR, rptid, ui_print);
			return(HPI_SHELL_OK);
		};
		rptid = (SaHpiResourceIdT)atoi(buf);
	} else {
		if (strcmp(term->term, "all") == 0) {
			show_rpt_list(Domain, SHOW_ALL_RDR, rptid, ui_print);
			return(HPI_SHELL_OK);
		};
		if (isdigit(term->term[0]))
			rptid = (SaHpiResourceIdT)atoi(term->term);
		else
			return HPI_SHELL_PARM_ERROR;
	};
	term = get_next_term();
	if (term == NULL) {
		if (read_file) return(HPI_SHELL_CMD_ERROR);
		i = get_string_param("RDR Type (s|a|c|w|i|all) ==> ",
			buf, 9);
		if (i != 0) return HPI_SHELL_PARM_ERROR;
	} else {
		memset(buf, 0, 10);
		strncpy(buf, term->term, 3);
	};
	if (strncmp(buf, "all", 3) == 0) t = 'n';
	else t = *buf;
	if (t == 'c') type = SAHPI_CTRL_RDR;
	else if (t == 's') type = SAHPI_SENSOR_RDR;
	else if (t == 'i') type = SAHPI_INVENTORY_RDR;
	else if (t == 'w') type = SAHPI_WATCHDOG_RDR;
	else if (t == 'a') type = SAHPI_ANNUNCIATOR_RDR;
	else type = SAHPI_NO_RECORD;
	ret = ask_rdr(rptid, type, &rdrnum);
	if (ret != HPI_SHELL_OK) return(ret);
	if (type == SAHPI_NO_RECORD)
		rv = find_rdr_by_num(Domain->sessionId, rptid,
			rdrnum, type, 0, &rdr_entry);
	else
		rv = saHpiRdrGetByInstrumentId(Domain->sessionId,
			rptid, type, rdrnum, &rdr_entry);
	if (rv != SA_OK) {
		printf("ERROR!!! Get rdr: ResourceId=%d RdrType=%d"
			"RdrNum=%d: %s\n",
			rptid, type, rdrnum, oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	make_attrs_rdr(&tmp_rdr, &rdr_entry);
	show_Rdr(&tmp_rdr, ui_print);
	free_attrs(&(tmp_rdr.Attrutes));
	return HPI_SHELL_OK;
}
Exemple #20
0
static ret_code_t settime_evtlog(void)
{
	SaHpiResourceIdT	rptid = 0;
	SaErrorT		rv;
	SaHpiTimeT		newtime;
	struct tm		new_tm_time;
	char			buf[READ_BUF_SIZE];
	int			day_array[] = { 31, 28, 31, 30, 31, 30, 31,
						31, 30, 31, 30, 31 };
	term_def_t		*term;
	int			i;

	rptid = SAHPI_UNSPECIFIED_RESOURCE_ID;
	term = get_next_term();
	if ((term != NULL) && (isdigit(term->term[0]))) {
		if (strchr(term->term, ':') != (char *)NULL) {
			unget_term();
			rptid = SAHPI_UNSPECIFIED_RESOURCE_ID;
		} else 
			rptid = (SaHpiResourceIdT)atoi(term->term);
	} else
		rptid = SAHPI_UNSPECIFIED_RESOURCE_ID;

	if (rptid == SAHPI_UNSPECIFIED_RESOURCE_ID)
		printf("Set date and time for Domain Event Log!\n");
	else
		printf("Set date and time for Resource %d!\n", rptid);

	memset(&new_tm_time, 0, sizeof(struct tm));
	i = get_string_param("format: MM:DD:YYYY:hh:mm:ss ==> ",
		buf, READ_BUF_SIZE);
	if (i != 0) return(HPI_SHELL_PARM_ERROR);
	sscanf(buf, "%d:%d:%d:%d:%d:%d",
		&new_tm_time.tm_mon, &new_tm_time.tm_mday,
		&new_tm_time.tm_year, &new_tm_time.tm_hour,
		&new_tm_time.tm_min, &new_tm_time.tm_sec);
	if ((new_tm_time.tm_mon < 1) || (new_tm_time.tm_mon > 12)) {
		printf("Month out of range: (%d)\n", new_tm_time.tm_mon);
		return(HPI_SHELL_PARM_ERROR);
	};
	new_tm_time.tm_mon--;
	if (new_tm_time.tm_year < 1900) {
		printf("Year out of range: (%d)\n", new_tm_time.tm_year);
		return(HPI_SHELL_PARM_ERROR);
	};
	if (new_tm_time.tm_mon == 1) {
	/* if the given year is a leap year */
		if ((((new_tm_time.tm_year % 4) == 0)
			&& ((new_tm_time.tm_year % 100) != 0))
			|| ((new_tm_time.tm_year % 400) == 0))
			day_array[1] = 29;
	};

	if ((new_tm_time.tm_mday < 1) ||
		(new_tm_time.tm_mday > day_array[new_tm_time.tm_mon])) {
		printf("Day out of range: (%d)\n", new_tm_time.tm_mday);
		return(HPI_SHELL_PARM_ERROR);
	};

	new_tm_time.tm_year -= 1900;
	
	if ((new_tm_time.tm_hour < 0) || (new_tm_time.tm_hour > 24)) {
		printf("Hours out of range: (%d)\n", new_tm_time.tm_hour);
		return(HPI_SHELL_PARM_ERROR);
	};
	if ((new_tm_time.tm_min < 0) || (new_tm_time.tm_min > 60)) {
		printf("Minutes out of range: (%d)\n", new_tm_time.tm_min);
		return(HPI_SHELL_PARM_ERROR);
	};
	if ((new_tm_time.tm_sec < 0) || (new_tm_time.tm_sec > 60)) {
		printf("Seconds out of range: (%d)\n", new_tm_time.tm_sec);
		return(HPI_SHELL_PARM_ERROR);
	};

	newtime = (SaHpiTimeT) mktime(&new_tm_time) * 1000000000;
 	rv = saHpiEventLogTimeSet(Domain->sessionId, rptid, newtime);
	if (rv != SA_OK) 
	{
		printf("saHpiEventLogTimeSet %s\n", oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	}

	return (HPI_SHELL_OK);
}
Exemple #21
0
static void parse_samsync_partial_replication_objects(TALLOC_CTX *mem_ctx,
						      int argc,
						      const char **argv,
						      bool *do_single_object_replication,
						      struct samsync_object **objects,
						      uint32_t *num_objects)
{
	int i;

	if (argc > 0) {
		*do_single_object_replication = true;
	}

	for (i=0; i<argc; i++) {

		struct samsync_object o;

		ZERO_STRUCT(o);

		if (!StrnCaseCmp(argv[i], "user_rid=", strlen("user_rid="))) {
			o.object_identifier.rid		= get_int_param(argv[i]);
			o.object_type			= NETR_DELTA_USER;
			o.database_id			= SAM_DATABASE_DOMAIN;
		}
		if (!StrnCaseCmp(argv[i], "group_rid=", strlen("group_rid="))) {
			o.object_identifier.rid		= get_int_param(argv[i]);
			o.object_type			= NETR_DELTA_GROUP;
			o.database_id			= SAM_DATABASE_DOMAIN;
		}
		if (!StrnCaseCmp(argv[i], "group_member_rid=", strlen("group_member_rid="))) {
			o.object_identifier.rid		= get_int_param(argv[i]);
			o.object_type			= NETR_DELTA_GROUP_MEMBER;
			o.database_id			= SAM_DATABASE_DOMAIN;
		}
		if (!StrnCaseCmp(argv[i], "alias_rid=", strlen("alias_rid="))) {
			o.object_identifier.rid		= get_int_param(argv[i]);
			o.object_type			= NETR_DELTA_ALIAS;
			o.database_id			= SAM_DATABASE_BUILTIN;
		}
		if (!StrnCaseCmp(argv[i], "alias_member_rid=", strlen("alias_member_rid="))) {
			o.object_identifier.rid		= get_int_param(argv[i]);
			o.object_type			= NETR_DELTA_ALIAS_MEMBER;
			o.database_id			= SAM_DATABASE_BUILTIN;
		}
		if (!StrnCaseCmp(argv[i], "account_sid=", strlen("account_sid="))) {
			const char *sid_str = get_string_param(argv[i]);
			string_to_sid(&o.object_identifier.sid, sid_str);
			o.object_type			= NETR_DELTA_ACCOUNT;
			o.database_id			= SAM_DATABASE_PRIVS;
		}
		if (!StrnCaseCmp(argv[i], "policy_sid=", strlen("policy_sid="))) {
			const char *sid_str = get_string_param(argv[i]);
			string_to_sid(&o.object_identifier.sid, sid_str);
			o.object_type			= NETR_DELTA_POLICY;
			o.database_id			= SAM_DATABASE_PRIVS;
		}
		if (!StrnCaseCmp(argv[i], "trustdom_sid=", strlen("trustdom_sid="))) {
			const char *sid_str = get_string_param(argv[i]);
			string_to_sid(&o.object_identifier.sid, sid_str);
			o.object_type			= NETR_DELTA_TRUSTED_DOMAIN;
			o.database_id			= SAM_DATABASE_PRIVS;
		}
		if (!StrnCaseCmp(argv[i], "secret_name=", strlen("secret_name="))) {
			o.object_identifier.name	= get_string_param(argv[i]);
			o.object_type			= NETR_DELTA_SECRET;
			o.database_id			= SAM_DATABASE_PRIVS;
		}

		if (o.object_type > 0) {
			ADD_TO_ARRAY(mem_ctx, struct samsync_object, o,
				     objects, num_objects);
		}
	}
}
Exemple #22
0
/*********************************************************
 List the groups.
**********************************************************/
static int net_groupmap_list(struct net_context *c, int argc, const char **argv)
{
	size_t entries;
	bool long_list = false;
	size_t i;
	fstring ntgroup = "";
	fstring sid_string = "";
	const char list_usage_str[] = N_("net groupmap list [verbose] "
				         "[ntgroup=NT group] [sid=SID]\n"
				         "    verbose\tPrint verbose list\n"
				         "    ntgroup\tNT group to list\n"
				         "    sid\tSID of group to list");

	if (c->display_usage) {
		d_printf("%s\n%s\n", _("Usage: "), list_usage_str);
		return 0;
	}

	if (c->opt_verbose || c->opt_long_list_entries)
		long_list = true;

	/* get the options */
	for ( i=0; i<argc; i++ ) {
		if ( !strcasecmp_m(argv[i], "verbose")) {
			long_list = true;
		}
		else if ( !strncasecmp_m(argv[i], "ntgroup", strlen("ntgroup")) ) {
			fstrcpy( ntgroup, get_string_param( argv[i] ) );
			if ( !ntgroup[0] ) {
				d_fprintf(stderr, _("must supply a name\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "sid", strlen("sid")) ) {
			fstrcpy( sid_string, get_string_param( argv[i] ) );
			if ( !sid_string[0] ) {
				d_fprintf(stderr, _("must supply a SID\n"));
				return -1;
			}
		}
		else {
			d_fprintf(stderr, _("Bad option: %s\n"), argv[i]);
			d_printf("%s\n%s\n", _("Usage:"), list_usage_str);
			return -1;
		}
	}

	/* list a single group is given a name */
	if ( ntgroup[0] || sid_string[0] ) {
		struct dom_sid sid;
		GROUP_MAP *map;

		if ( sid_string[0] )
			strlcpy(ntgroup, sid_string, sizeof(ntgroup));

		if (!get_sid_from_input(&sid, ntgroup)) {
			return -1;
		}

		map = talloc_zero(NULL, GROUP_MAP);
		if (!map) {
			return -1;
		}

		/* Get the current mapping from the database */
		if(!pdb_getgrsid(map, sid)) {
			d_fprintf(stderr,
				  _("Failure to local group SID in the "
				    "database\n"));
			TALLOC_FREE(map);
			return -1;
		}

		print_map_entry(map, long_list );
		TALLOC_FREE(map);
	}
	else {
		GROUP_MAP **maps = NULL;
		bool ok = false;
		/* enumerate all group mappings */
		ok = pdb_enum_group_mapping(NULL, SID_NAME_UNKNOWN,
					    &maps, &entries,
					    ENUM_ALL_MAPPED);
		if (!ok) {
			return -1;
		}

		for (i=0; i<entries; i++) {
			print_map_entry(maps[i], long_list);
		}

		TALLOC_FREE(maps);
	}

	return 0;
}
Exemple #23
0
static int net_groupmap_delete(struct net_context *c, int argc, const char **argv)
{
	struct dom_sid sid;
	fstring ntgroup = "";
	fstring sid_string = "";
	int i;
	const char delete_usage_str[] = N_("net groupmap delete "
					   "{ntgroup=<string>|sid=<SID>}");

	if (c->display_usage) {
		d_printf("%s\n%s\n", _("Usage:\n"), delete_usage_str);
		return 0;
	}

	/* get the options */
	for ( i=0; i<argc; i++ ) {
		if ( !strncasecmp_m(argv[i], "ntgroup", strlen("ntgroup")) ) {
			fstrcpy( ntgroup, get_string_param( argv[i] ) );
			if ( !ntgroup[0] ) {
				d_fprintf(stderr, _("must supply a name\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "sid", strlen("sid")) ) {
			fstrcpy( sid_string, get_string_param( argv[i] ) );
			if ( !sid_string[0] ) {
				d_fprintf(stderr, _("must supply a SID\n"));
				return -1;
			}
		}
		else {
			d_fprintf(stderr, _("Bad option: %s\n"), argv[i]);
			return -1;
		}
	}

	if ( !ntgroup[0] && !sid_string[0]) {
		d_printf("%s\n%s\n", _("Usage:\n"), delete_usage_str);
		return -1;
	}

	/* give preference to the SID if we have that */

	if ( sid_string[0] )
		strlcpy(ntgroup, sid_string, sizeof(ntgroup));

	if ( !get_sid_from_input(&sid, ntgroup) ) {
		d_fprintf(stderr, _("Unable to resolve group %s to a SID\n"),
			  ntgroup);
		return -1;
	}

	if ( !NT_STATUS_IS_OK(pdb_delete_group_mapping_entry(sid)) ) {
		d_fprintf(stderr,
			  _("Failed to remove group %s from the mapping db!\n"),
			  ntgroup);
		return -1;
	}

	d_printf(_("Sucessfully removed %s from the mapping db\n"), ntgroup);

	return 0;
}
Exemple #24
0
static int net_groupmap_modify(struct net_context *c, int argc, const char **argv)
{
	struct dom_sid sid;
	GROUP_MAP *map = NULL;
	fstring ntcomment = "";
	fstring type = "";
	fstring ntgroup = "";
	fstring unixgrp = "";
	fstring sid_string = "";
	enum lsa_SidType sid_type = SID_NAME_UNKNOWN;
	int i;
	gid_t gid;
	const char modify_usage_str[] = N_("net groupmap modify "
					   "{ntgroup=<string>|sid=<SID>} "
					   "[comment=<string>] "
					   "[unixgroup=<string>] "
					   "[type=<domain|local>]");

	if (c->display_usage) {
		d_printf("%s\n%s\n", _("Usage:\n"), modify_usage_str);
		return 0;
	}

	/* get the options */
	for ( i=0; i<argc; i++ ) {
		if ( !strncasecmp_m(argv[i], "ntgroup", strlen("ntgroup")) ) {
			fstrcpy( ntgroup, get_string_param( argv[i] ) );
			if ( !ntgroup[0] ) {
				d_fprintf(stderr, _("must supply a name\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "sid", strlen("sid")) ) {
			fstrcpy( sid_string, get_string_param( argv[i] ) );
			if ( !sid_string[0] ) {
				d_fprintf(stderr, _("must supply a name\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "comment", strlen("comment")) ) {
			fstrcpy( ntcomment, get_string_param( argv[i] ) );
			if ( !ntcomment[0] ) {
				d_fprintf(stderr,
					  _("must supply a comment string\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "unixgroup", strlen("unixgroup")) ) {
			fstrcpy( unixgrp, get_string_param( argv[i] ) );
			if ( !unixgrp[0] ) {
				d_fprintf(stderr,
					  _("must supply a group name\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "type", strlen("type")) )  {
			fstrcpy( type, get_string_param( argv[i] ) );
			switch ( type[0] ) {
				case 'd':
				case 'D':
					sid_type = SID_NAME_DOM_GRP;
					break;
				case 'l':
				case 'L':
					sid_type = SID_NAME_ALIAS;
					break;
			}
		}
		else {
			d_fprintf(stderr, _("Bad option: %s\n"), argv[i]);
			return -1;
		}
	}

	if ( !ntgroup[0] && !sid_string[0] ) {
		d_printf("%s\n%s\n", _("Usage:\n"), modify_usage_str);
		return -1;
	}

	/* give preference to the SID; if both the ntgroup name and SID
	   are defined, use the SID and assume that the group name could be a
	   new name */

	if ( sid_string[0] ) {
		if (!get_sid_from_input(&sid, sid_string)) {
			return -1;
		}
	}
	else {
		if (!get_sid_from_input(&sid, ntgroup)) {
			return -1;
		}
	}

	map = talloc_zero(NULL, GROUP_MAP);
	if (!map) {
		return -1;
	}

	/* Get the current mapping from the database */
	if(!pdb_getgrsid(map, sid)) {
		d_fprintf(stderr,
			 _("Failed to find local group SID in the database\n"));
		TALLOC_FREE(map);
		return -1;
	}

	/*
	 * Allow changing of group type only between domain and local
	 * We disallow changing Builtin groups !!! (SID problem)
	 */
	if (sid_type == SID_NAME_UNKNOWN) {
		d_fprintf(stderr, _("Can't map to an unknown group type.\n"));
		TALLOC_FREE(map);
		return -1;
        }

	if (map->sid_name_use == SID_NAME_WKN_GRP) {
		d_fprintf(stderr,
			  _("You can only change between domain and local "
			    "groups.\n"));
		TALLOC_FREE(map);
		return -1;
	}

	map->sid_name_use = sid_type;

	/* Change comment if new one */
	if (ntcomment[0]) {
		map->comment = talloc_strdup(map, ntcomment);
		if (!map->comment) {
			d_fprintf(stderr, _("Out of memory!\n"));
			return -1;
		}
	}

	if (ntgroup[0]) {
		map->nt_name = talloc_strdup(map, ntgroup);
		if (!map->nt_name) {
			d_fprintf(stderr, _("Out of memory!\n"));
			return -1;
		}
	}

	if ( unixgrp[0] ) {
		gid = nametogid( unixgrp );
		if ( gid == -1 ) {
			d_fprintf(stderr, _("Unable to lookup UNIX group %s.  "
					    "Make sure the group exists.\n"),
				unixgrp);
			TALLOC_FREE(map);
			return -1;
		}

		map->gid = gid;
	}

	if (!NT_STATUS_IS_OK(pdb_update_group_mapping_entry(map))) {
		d_fprintf(stderr, _("Could not update group database\n"));
		TALLOC_FREE(map);
		return -1;
	}

	d_printf(_("Updated mapping entry for %s\n"), map->nt_name);

	TALLOC_FREE(map);
	return 0;
}
Exemple #25
0
static int net_groupmap_add(struct net_context *c, int argc, const char **argv)
{
	struct dom_sid sid;
	fstring ntgroup = "";
	fstring unixgrp = "";
	fstring string_sid = "";
	fstring type = "";
	fstring ntcomment = "";
	enum lsa_SidType sid_type = SID_NAME_DOM_GRP;
	uint32 rid = 0;
	gid_t gid;
	int i;
	GROUP_MAP *map;

	const char *name_type;
	const char add_usage_str[] = N_("net groupmap add "
					"{rid=<int>|sid=<string>}"
					" unixgroup=<string> "
					"[type=<domain|local|builtin>] "
					"[ntgroup=<string>] "
					"[comment=<string>]");

	name_type = "domain group";

	if (c->display_usage) {
		d_printf("%s\n%s\n", _("Usage:\n"), add_usage_str);
		return 0;
	}

	/* get the options */
	for ( i=0; i<argc; i++ ) {
		if ( !strncasecmp_m(argv[i], "rid", strlen("rid")) ) {
			rid = get_int_param(argv[i]);
			if ( rid < DOMAIN_RID_ADMINS ) {
				d_fprintf(stderr,
					  _("RID must be greater than %d\n"),
					  (uint32)DOMAIN_RID_ADMINS-1);
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "unixgroup", strlen("unixgroup")) ) {
			fstrcpy( unixgrp, get_string_param( argv[i] ) );
			if ( !unixgrp[0] ) {
				d_fprintf(stderr,_( "must supply a name\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "ntgroup", strlen("ntgroup")) ) {
			fstrcpy( ntgroup, get_string_param( argv[i] ) );
			if ( !ntgroup[0] ) {
				d_fprintf(stderr, _("must supply a name\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "sid", strlen("sid")) ) {
			fstrcpy( string_sid, get_string_param( argv[i] ) );
			if ( !string_sid[0] ) {
				d_fprintf(stderr, _("must supply a SID\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "comment", strlen("comment")) ) {
			fstrcpy( ntcomment, get_string_param( argv[i] ) );
			if ( !ntcomment[0] ) {
				d_fprintf(stderr,
					  _("must supply a comment string\n"));
				return -1;
			}
		}
		else if ( !strncasecmp_m(argv[i], "type", strlen("type")) )  {
			fstrcpy( type, get_string_param( argv[i] ) );
			switch ( type[0] ) {
				case 'b':
				case 'B':
					sid_type = SID_NAME_WKN_GRP;
					name_type = "wellknown group";
					break;
				case 'd':
				case 'D':
					sid_type = SID_NAME_DOM_GRP;
					name_type = "domain group";
					break;
				case 'l':
				case 'L':
					sid_type = SID_NAME_ALIAS;
					name_type = "alias (local) group";
					break;
				default:
					d_fprintf(stderr,
						  _("unknown group type %s\n"),
						  type);
					return -1;
			}
		}
		else {
			d_fprintf(stderr, _("Bad option: %s\n"), argv[i]);
			return -1;
		}
	}

	if ( !unixgrp[0] ) {
		d_printf("%s\n%s\n", _("Usage:\n"), add_usage_str);
		return -1;
	}

	if ( (gid = nametogid(unixgrp)) == (gid_t)-1 ) {
		d_fprintf(stderr, _("Can't lookup UNIX group %s\n"), unixgrp);
		return -1;
	}

	map = talloc_zero(NULL, GROUP_MAP);
	if (!map) {
		return -1;
	}
	/* Default is domain group. */
	map->sid_name_use = SID_NAME_DOM_GRP;
	if (pdb_getgrgid(map, gid)) {
		d_printf(_("Unix group %s already mapped to SID %s\n"),
			 unixgrp, sid_string_tos(&map->sid));
		TALLOC_FREE(map);
		return -1;
	}
	TALLOC_FREE(map);

	if ( (rid == 0) && (string_sid[0] == '\0') ) {
		d_printf(_("No rid or sid specified, choosing a RID\n"));
		if (pdb_capabilities() & PDB_CAP_STORE_RIDS) {
			if (!pdb_new_rid(&rid)) {
				d_printf(_("Could not get new RID\n"));
			}
		} else {
			rid = algorithmic_pdb_gid_to_group_rid(gid);
		}
		d_printf(_("Got RID %d\n"), rid);
	}

	/* append the rid to our own domain/machine SID if we don't have a full SID */
	if ( !string_sid[0] ) {
		sid_compose(&sid, get_global_sam_sid(), rid);
		sid_to_fstring(string_sid, &sid);
	}

	if (!ntcomment[0]) {
		switch (sid_type) {
		case SID_NAME_WKN_GRP:
			fstrcpy(ntcomment, "Wellknown Unix group");
			break;
		case SID_NAME_DOM_GRP:
			fstrcpy(ntcomment, "Domain Unix group");
			break;
		case SID_NAME_ALIAS:
			fstrcpy(ntcomment, "Local Unix group");
			break;
		default:
			fstrcpy(ntcomment, "Unix group");
			break;
		}
	}

	if (!ntgroup[0] )
		strlcpy(ntgroup, unixgrp, sizeof(ntgroup));

	if (!NT_STATUS_IS_OK(add_initial_entry(gid, string_sid, sid_type, ntgroup, ntcomment))) {
		d_fprintf(stderr, _("adding entry for group %s failed!\n"), ntgroup);
		return -1;
	}

	d_printf(_("Successfully added group %s to the mapping db as a %s\n"),
		 ntgroup, name_type);
	return 0;
}
Exemple #26
0
static int net_dom_unjoin(struct net_context *c, int argc, const char **argv)
{
	const char *server_name = NULL;
	const char *account = NULL;
	const char *password = NULL;
	uint32_t unjoin_flags = NETSETUP_ACCT_DELETE |
				NETSETUP_JOIN_DOMAIN |
				NETSETUP_IGNORE_UNSUPPORTED_FLAGS;
	struct cli_state *cli = NULL;
	bool do_reboot = false;
	NTSTATUS ntstatus;
	NET_API_STATUS status;
	int ret = -1;
	int i;

	if (argc < 1 || c->display_usage) {
		return net_dom_usage(c, argc, argv);
	}

	if (c->opt_host) {
		server_name = c->opt_host;
	}

	for (i=0; i<argc; i++) {
		if (strnequal(argv[i], "account", strlen("account"))) {
			account = get_string_param(argv[i]);
			if (!account) {
				return -1;
			}
		}
		if (strnequal(argv[i], "password", strlen("password"))) {
			password = get_string_param(argv[i]);
			if (!password) {
				return -1;
			}
		}
		if (strequal(argv[i], "reboot")) {
			do_reboot = true;
		}
	}

	if (do_reboot) {
		ntstatus = net_make_ipc_connection_ex(c, c->opt_workgroup,
						      server_name, NULL, 0,
						      &cli);
		if (!NT_STATUS_IS_OK(ntstatus)) {
			return -1;
		}
	}

	status = NetUnjoinDomain(server_name, account, password, unjoin_flags);
	if (status != 0) {
		printf("Failed to unjoin domain: %s\n",
			libnetapi_get_error_string(c->netapi_ctx, status));
		goto done;
	}

	if (do_reboot) {
		c->opt_comment = "Shutting down due to a domain membership "
				 "change";
		c->opt_reboot = true;
		c->opt_timeout = 30;

		ret = run_rpc_command(c, cli,
				      &ndr_table_initshutdown.syntax_id,
				      0, rpc_init_shutdown_internals,
				      argc, argv);
		if (ret == 0) {
			goto done;
		}

		ret = run_rpc_command(c, cli, &ndr_table_winreg.syntax_id, 0,
				      rpc_reg_shutdown_internals,
				      argc, argv);
		goto done;
	}

	ret = 0;

 done:
	if (cli) {
		cli_shutdown(cli);
	}

	return ret;
}
Exemple #27
0
int main(int argc, char **argv)
{
	/* Parameter check */
	const char *printdb_path = NULL;

	if (argc < 2) {
		usage();
		return 1;
	}

	if (strncmp(argv[1], "tdbfile", strlen("tdbfile")) != 0) {
		usage();
		return 1;
	}

	printdb_path = get_string_param(argv[1]);
	if (!printdb_path) {
		return 1;
	}

	if (!(tdb = tdb_open(printdb_path, 0, 0, O_RDWR | O_CREAT,
			     0666))) {
		printf("%s: unable to open %s\n", argv[0], printdb_path);
		return 1;
	}

	/* Ensure we are modes 666 */

	chmod(printdb_path, 0666);

	/* Do commands */

	if (strcmp(argv[2], "lpq") == 0) {
		return lpq_command(argc - 2, &argv[2]);
	}

	if (strcmp(argv[2], "lprm") == 0) {
		return lprm_command(argc - 2, &argv[2]);
	}

	if (strcmp(argv[2], "print") == 0) {
		return print_command(argc - 2, &argv[2]);
	}

	if (strcmp(argv[2], "queuepause") == 0) {
		return queuepause_command(argc - 2, &argv[2]);
	}

	if (strcmp(argv[2], "queueresume") == 0) {
		return queueresume_command(argc - 2, &argv[2]);
	}

	if (strcmp(argv[2], "lppause") == 0) {
		return lppause_command(argc - 2, &argv[2]);
	}

	if (strcmp(argv[2], "lpresume") == 0) {
		return lpresume_command(argc - 2, &argv[2]);
	}

	/* Unknown command */

	printf("%s: invalid command %s\n", argv[0], argv[1]);
	return 1;
}
Exemple #28
0
static ret_code_t set_control_state(SaHpiSessionIdT sessionid,
	SaHpiResourceIdT resourceid, SaHpiCtrlNumT num)
{
        SaErrorT		rv;
	SaHpiRdrT		rdr;
	SaHpiCtrlRecT		*ctrl;
	SaHpiCtrlTypeT		type;
	SaHpiCtrlStateDigitalT	state_val = 0;
	SaHpiCtrlModeT		mode;
	SaHpiCtrlStateT		state;
	char			buf[SAHPI_MAX_TEXT_BUFFER_LENGTH];
	char			*str;
	int			i, res;

	rv = saHpiRdrGetByInstrumentId(sessionid, resourceid, SAHPI_CTRL_RDR,
		num, &rdr);
	if (rv != SA_OK) {
		printf("saHpiRdrGetByInstrumentId: error: %s\n", oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	memset(&state, 0, sizeof(SaHpiCtrlStateT));
	i = get_string_param("Mode(auto|manual): ", buf, 7);
	if (i != 0) return(HPI_SHELL_CMD_ERROR);
	if (strcmp(buf, "auto") == 0) mode = SAHPI_CTRL_MODE_AUTO;
	else if (strcmp(buf, "manual") == 0) mode = SAHPI_CTRL_MODE_MANUAL;
	else return(HPI_SHELL_CMD_ERROR);
	if (mode == SAHPI_CTRL_MODE_AUTO) {
		rv = saHpiControlSet(sessionid, resourceid, num,
			mode, (SaHpiCtrlStateT *)NULL);
		if (rv != SA_OK) {
			printf("saHpiControlSet: error: %s\n",
				oh_lookup_error(rv));
			return(HPI_SHELL_CMD_ERROR);
		};
		return(HPI_SHELL_OK);
	};
	ctrl = &(rdr.RdrTypeUnion.CtrlRec);
	type = ctrl->Type;
	state.Type = type;
	switch (type) {
		case SAHPI_CTRL_TYPE_DIGITAL:
			i = get_string_param(
				"New state(on|off|pulseon|pulseoff): ", buf, 9);
			if (i != 0) return(HPI_SHELL_CMD_ERROR);
			if (strcmp(buf, "on") == 0) state_val = SAHPI_CTRL_STATE_ON;
			if (strcmp(buf, "off") == 0) state_val = SAHPI_CTRL_STATE_OFF;
			if (strcmp(buf, "pulseon") == 0)
				state_val = SAHPI_CTRL_STATE_PULSE_ON;
			if (strcmp(buf, "pulseoff") == 0)
				state_val = SAHPI_CTRL_STATE_PULSE_OFF;
			state.StateUnion.Digital = state_val;
			break;
		case SAHPI_CTRL_TYPE_DISCRETE:
			i = get_int_param("Value ==> ", &res);
			if (i != 1) {
				printf("Invalid value\n");
				return HPI_SHELL_CMD_ERROR;
			};
			state.StateUnion.Discrete = res;
			break;
		case SAHPI_CTRL_TYPE_ANALOG:
			i = get_int_param("Value ==> ", &res);
			if (i != 1) {
				printf("Invalid value\n");
				return HPI_SHELL_CMD_ERROR;
			};
			state.StateUnion.Analog = res;
			break;
		case SAHPI_CTRL_TYPE_STREAM:
			i = get_string_param("Repeat(yes|no): ", buf, 4);
			if (i != 0) return(HPI_SHELL_CMD_ERROR);
			str = buf;
			while (*str == ' ') str++;
			if (strncmp(str, "yes", 3) == 0)
				state.StateUnion.Stream.Repeat = 1;
			i = get_string_param("Stream: ", buf, 4);
			i = strlen(buf);
			if (i > 4) i = 4;
			state.StateUnion.Stream.StreamLength = i;
			strncpy((char *)(state.StateUnion.Stream.Stream), buf, i);
			break;
		case SAHPI_CTRL_TYPE_TEXT:
			i = get_int_param("Line #: ", &res);
			if (i != 1) {
				printf("Invalid value\n");
				return HPI_SHELL_CMD_ERROR;
			};
			state.StateUnion.Text.Line = res;
			printf("Text: ");
			i = set_text_buffer(&(state.StateUnion.Text.Text));
			if (i != 0) {
				printf("Invalid text\n");
				return(HPI_SHELL_CMD_ERROR);
			};
			break;
		case SAHPI_CTRL_TYPE_OEM:
			i = get_int_param("Manufacturer Id: ", &res);
			if (i != 1) {
				printf("Invalid value\n");
				return HPI_SHELL_CMD_ERROR;
			};
			state.StateUnion.Oem.MId = res;
			memset(state.StateUnion.Oem.Body, 0,
				SAHPI_CTRL_MAX_OEM_BODY_LENGTH);
			i = get_hex_string_param("Oem body: ",
				(char *)(state.StateUnion.Oem.Body),
				SAHPI_CTRL_MAX_OEM_BODY_LENGTH);
			state.StateUnion.Oem.BodyLength = i;
			break;
		default:
			strcpy(buf, "Unknown control type\n");
			return(HPI_SHELL_CMD_ERROR);
	};
	rv = saHpiControlSet(sessionid, resourceid, num,
		SAHPI_CTRL_MODE_MANUAL, &state);
	if (rv != SA_OK) {
		printf("saHpiControlSet: error: %s\n",
			oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	return(HPI_SHELL_OK);
}
Exemple #29
0
int set_text_buffer(SaHpiTextBufferT *buf)
{
	int		i, j, ind;
	char		str[SAHPI_MAX_TEXT_BUFFER_LENGTH], *str1;
	SaHpiTextTypeT	type = SAHPI_TL_TYPE_TEXT;
	SaHpiLanguageT	lang = SAHPI_LANG_ENGLISH;

	i = get_string_param("DataType(text|bcd|ascii6|bin|unicode): ", str, 10);
	if (i != 0) return(-1);
	if (strcmp(str, "text") == 0) type = SAHPI_TL_TYPE_TEXT;
	else if (strcmp(str, "bcd") == 0) type = SAHPI_TL_TYPE_BCDPLUS;
	else if (strcmp(str, "ascii6") == 0) type = SAHPI_TL_TYPE_ASCII6;
	else if (strcmp(str, "bin") == 0) type = SAHPI_TL_TYPE_BINARY;
	else if (strcmp(str, "unicode") == 0) type = SAHPI_TL_TYPE_UNICODE;

	/*
	 *   ask a language for unicode and text: Fix me
	 */

	i = get_string_param("Text: ", str, SAHPI_MAX_TEXT_BUFFER_LENGTH);
	if (i != 0) return(-1);
	buf->DataType = type;
	switch (type) {
		case SAHPI_TL_TYPE_UNICODE:
			printf("UNICODE: not implemented");
			return(-1);
		case SAHPI_TL_TYPE_BCDPLUS:
			str1 = (char *)&(buf->Data);
			ind = 0;
			for (i = 0; i < strlen(str); i++) {
				for (j = 0; j < 0x0D; j++)
					if (bcdplus_codes[j] == str[i]) break;
				if (j >= 0x0D) return(-1);
				if (i % 2) str1[ind++] += j << 4;
				else str1[ind] = j;
			};
			buf->DataLength = (i + 1)/ 2;
			break;
		case SAHPI_TL_TYPE_ASCII6:
			i = stringtoascii6(str, (char *)&(buf->Data));
			if (i < 0) return(-1);
			buf->DataLength = i;
			break;
		case SAHPI_TL_TYPE_TEXT:
			snprintf((char *)&(buf->Data), SAHPI_MAX_TEXT_BUFFER_LENGTH, "%s", str);
			buf->DataLength = strlen(str);
			buf->Language = lang;
			break;
		case SAHPI_TL_TYPE_BINARY:
			str1 = (char *)&(buf->Data);
			ind = 0;
			for (i = 0; i < strlen(str); i++) {
				for (j = 0; j < 16; j++)
					if (hex_codes[j] == toupper(str[i])) break;
				if (j >= 16) return(-1);
				if (i % 2) str1[ind++] += j;
				else str1[ind] = j << 4;
			};
			buf->DataLength = (i + 1)/ 2;
			break;
	};
	return(0);
}
Exemple #30
0
static ret_code_t add_announ(SaHpiResourceIdT rptid, SaHpiInstrumentIdT rdrnum)
{
	SaErrorT		rv;
	char			str[32];
	int			i;
	SaHpiSeverityT		sev = SAHPI_OK;
	SaHpiAnnouncementT	announ;
	SaHpiStatusCondTypeT	type = SAHPI_STATUS_COND_TYPE_SENSOR;
	SaHpiDomainIdT		did;
	SaHpiResourceIdT	resId;
	SaHpiSensorNumT		sennum = 0;

	memset(&announ, 0, sizeof(SaHpiAnnouncementT));
	i = get_string_param("Severity(crit|maj|min|info|ok): ",
		str, 10);
	if (i != 0) return(HPI_SHELL_PARM_ERROR);
	if (strcmp(str, "crit") == 0) sev = SAHPI_CRITICAL;
	else if (strcmp(str, "maj") == 0) sev = SAHPI_MAJOR;
	else if (strcmp(str, "min") == 0) sev = SAHPI_MINOR;
	else if (strcmp(str, "info") == 0) sev = SAHPI_INFORMATIONAL;
	else if (strcmp(str, "ok") == 0) sev = SAHPI_OK;
	else {
		printf("Invalid severity %s\n", str);
		return(HPI_SHELL_PARM_ERROR);
	};
	announ.Severity = sev;

	memset(&announ, 0, sizeof(SaHpiAnnouncementT));
	i = get_string_param("Condition Type(sensor|res|oem|user): ",
		str, 10);
	if (i != 0) return(-1);
	if (strcmp(str, "sensor") == 0) type = SAHPI_STATUS_COND_TYPE_SENSOR;
	else if (strcmp(str, "res") == 0) type = SAHPI_STATUS_COND_TYPE_RESOURCE;
	else if (strcmp(str, "oem") == 0) type = SAHPI_STATUS_COND_TYPE_OEM;
	else if (strcmp(str, "user") == 0) type = SAHPI_STATUS_COND_TYPE_USER;
	else {
		printf("Invalid Condition Type %s\n", str);
		return(HPI_SHELL_PARM_ERROR);
	};
	announ.StatusCond.Type = type;
	// EntityPath:  is needed ???
	// oh_encode_entitypath(char *str, SaHpiEntityPathT *ep);   convert string into ep.

	i = get_int_param("DomainId: ", (int *)&did);
	if (i != 1) did = SAHPI_UNSPECIFIED_DOMAIN_ID;
	announ.StatusCond.DomainId = did;

	i = get_int_param("ResourceId: ", (int *)&resId);
	if (i != 1) resId = SAHPI_UNSPECIFIED_RESOURCE_ID;
	announ.StatusCond.ResourceId = resId;

	i = get_int_param("Sensor number: ", (int *)&sennum);
	announ.StatusCond.SensorNum = sennum;

	rv = saHpiAnnunciatorAdd(Domain->sessionId, rptid, rdrnum, &announ);
	if (rv != SA_OK) {
		printf("saHpiAnnunciatorAdd error %s\n", oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	return HPI_SHELL_OK;
}