int
drslot_chrp_pci(struct options *opts)
{
	int rc;
	struct dr_node *all_nodes;

	all_nodes = get_hp_nodes();
	if (all_nodes == NULL) {
		say(ERROR, "There are no PCI hot plug slots on this system.\n");
		return -1;
	}

#ifdef DBG_HOT_PLUG
	print_slots_list(all_nodes);
#endif

	if (!opts->usr_drc_name)
		opts->usr_drc_name = find_drc_name(opts->usr_drc_index, all_nodes);

	switch (opts->action) {
	    case ADD:
		rc = do_add(opts, all_nodes);
		break;
	    case REMOVE:
		rc = do_remove(opts, all_nodes);
		break;
	    case REPLACE:
		rc = do_replace(opts, all_nodes);
		break;
	    case IDENTIFY:
		rc = do_identify(opts, all_nodes);
		break;
	    default:
		say(ERROR, "Invalid operation specified!\n");
		rc = -1;
		break;
	}

	free_node(all_nodes);
	return rc;
}
示例#2
0
int main(int argc, char *argv[])
{
    int opt;
    
    while((opt = getopt(argc, argv, "p:")) != -1) {
        switch(opt) {
        case 'p':
            errno = 0;
            port = strtoul(optarg, NULL, 0);
            if (errno)
                usage();
            port_opt = 1;
            break;
        default:
            usage();
        }
    }
    if (optind != argc)
        usage();

    do_identify();
    return 0;
}
示例#3
0
bool item_list::handle_item(item_t* item)
{
  switch (m_action)
  {
  case DROP:
  case PICKUP:
    choose_item(item);
    return false;
  case READ:
    do_read(item);
    return true;
  case QUAF:
    do_quaf(item);
    return true;
  case ZAP:
    do_zap(item);
    return true;
  case EQUIP:
    do_equip(item);
    return true;
  case SHOW_ALL:
    return true;
  case IDENTIFY:
    do_identify(item);
    return true;
  case ENCHANT_WEAPON:
  case ENCHANT_ARMOR:
    do_enchant(item);
    return true;
  case EAT:
    do_eat(item);
    return true;
  }

  return false;
}
示例#4
0
static void do_identify(char *var,char type)
{
    char *label,*path,*alias,*initrd,*keytab,*appstr,*dtem,*addappstr;
    char *rootstr;
    int root,image, ramdisk, kt, append;

#if 1
    image = !!strchr(opt,'i');
    ramdisk = !!strchr(opt,'r');
    kt = !!strchr(opt,'k');
    append = !!strchr(opt,'a');
    root = !!strchr(opt,'R');
    if (opt && !image && !ramdisk && !kt && !append
    	&& !idefault && !root) exit(1);
/*    if (!opt) image = 1; */
#else
    image = ramdisk = 1;
    printf("do_identify:  opt=\"%s\"\n", opt);
#endif
    
    label = strrchr(path = cfg_get_strg(cf_identify,var),'/');
    if (label) label++;
    if (cfg_get_strg(cf_all,"label")) label = cfg_get_strg(cf_all,"label");
    else if (!label) label = path;

    if (!first) first = stralloc(label);
    
    alias = cfg_get_strg(cf_all,"alias");
    dtem = cfg_get_strg(cf_options,"default");

    if (verbose>=2) printf("identify: dtem=%s  label=%s\n", dtem, label);
#ifdef LCF_IGNORECASE
    if (dtem && (!strcasecmp(label,dtem) || (alias && !strcasecmp(alias,dtem)))) {
#else
    if (dtem && (!strcmp(label,dtem) || (alias && !strcmp(alias,dtem)))) {
#endif
	if (verbose>=2) printf("setting  dflt\n");
	dflt = dtem;
    }

    initrd = cfg_get_strg(cf_kernel,"initrd");
    if (!initrd) initrd = cfg_get_strg(cf_options,"initrd");
    keytab = cfg_get_strg(cf_options,"keytable");
    if (!keytab) keytab="us.ktl";
    appstr = cfg_get_strg(cf_kernel,"append");
    if (!appstr) appstr = cfg_get_strg(cf_options,"append");
    addappstr = cfg_get_strg(cf_kernel,"addappend");
    rootstr = cfg_get_strg(cf_kernel,"root");
    if (!rootstr) rootstr = cfg_get_strg(cf_options,"root");

#ifdef LCF_IGNORECASE
    if (!strcasecmp(label,identify) || (alias && !strcasecmp(alias,identify))) {
#else
    if (!strcmp(label,identify) || (alias && !strcmp(alias,identify))) {
#endif
	if (image) printf("%s\n",path);
	if (ramdisk) printf("%s\n",initrd?initrd:"No initial ramdisk specified");
	if (kt) printf("%s\n",keytab);
	if (append) {
	    if (!appstr && !addappstr)
		printf("No append= was specified\n");
	    else if ((appstr && !addappstr) || (!appstr && addappstr))
		printf("%s\n", appstr?appstr:addappstr);
	    else printf("%s %s\n", appstr, addappstr);
	}
	if (root) printf("%s\n",rootstr?rootstr:"No root specified");
	if (idefault) printf("%s\n", dflt ? dflt : first);
	exit(0);
    }
}


void id_image(void)
{
    cfg_init(cf_image);
    (void) cfg_parse(cf_image);
    do_identify("image",'i');
    cfg_init(cf_identify);
}


void id_other(void)
{
    cfg_init(cf_other);
    cfg_init(cf_kernel);
    curr_drv_map = curr_prt_map = 0;
    (void) cfg_parse(cf_other);
    cfg_init(cf_identify);
}