entier LataOptions::parse_option(const Nom & s)
{
  if (s.debute_par("verbosity=")) {
    entier level = read_int_opt(s);
    set_Journal_level(level);
  } else if (s.debute_par("regularize=")) {
    regularize = true;
    regularize_tolerance = read_float_opt(s);
  } else if (s.debute_par("regularize_polyedre=")) {
    regularize_polyedre = read_int_opt(s);
  } else if (s.debute_par("extend_domain=")) {
    extend_domain = read_int_opt(s);
  } else if (s == "invalidate") {
    invalidate = true;
  } else if (s.debute_par("reconnect=")) {
    reconnect = true;
    reconnect_tolerance = read_float_opt(s);   
  } else if (s.debute_par("reconnect_tolerance=")) {
    reconnect_tolerance = read_float_opt(s);   
  } else if (s == "dualmesh") {
    dual_mesh = true;
  } else if (s == "nodualmesh") {
    dual_mesh = false;
  } else if (s == "ncmesh") {
    nc_mesh = true;
  } else if (s == "facesmesh") {
    faces_mesh = true;
  } else if (s == "nofacesmesh") {
    faces_mesh = false;
  } else if (s == "boundarymesh") {
    boundary_mesh = true;
  } else if (s.debute_par("clipbox=")) {
    Noms list = extract_list(((const char*)s)+8);
    if (list.size() != 6) {
      Journal() << "Error : clipbox parameters expects 6 values" << endl;
      throw;
    }
    for (entier i = 0; i < 3; i++) {
      clipbox_min[i] = read_float_opt(list[i]);
      clipbox_max[i] = read_float_opt(list[i+3]);
    }
  } else if (s == "load_virtual_elements") {
    load_virtual_elements = true;
  } else if (s == "user_fields") {
    user_fields_ = true;
    Journal() << "Option: User_fields ON" << endl;
  } else if (s.debute_par("ijk_mesh_nb_parts")) {
    ijk_mesh_nb_parts_ = read_int_opt(s);
  } else if (s == "export_fields_at_faces") {
    export_fields_at_faces_ = 1;
  } else if (s.debute_par("ijk_virt_layer=")) {
    ijk_virt_layer = read_int_opt(s);
  } else
    return user_fields_options_.parse_option(s);;
  return 1;
}
示例#2
0
/**
	maybe_setup
	Creates the ~/.freenote/probe.team file, based on user input.
	Assumes that we are /not/ daemonized yet.
	Returns 0 for success (i.e., successful setup -or- the probe has
	already been set up), -1 for failure (ex., couldn't write to the file).
*/
int maybe_setup()
{
	fm_init_base();
	if(read_str_opt("auto-setup")) {
		return set_teamstring(read_str_opt("auto-setup"));
	}
	if(read_int_opt("setup") || 
		!(fm_exists(FM_TEAM_INFO) || read_int_opt("no-tokens"))) {
		try(do_setup());
		p_exit(PEXIT_NORMAL);
	}
	return 0;
}

/*
	do_setup
	Does the setup.  Returns 0 for success, -1 for failure.
	It doesn't use io_* because it's interactive.
*/
static int do_setup()
{
	char	team[TEAM_MAXLEN],
		pin[PIN_MAXLEN],
		*tmp = fm_abs(FM_TEAM_INFO);
	int	r;

	//  It's a little long.
	printf(	"FreeNote Probe Setup:\n"
		"Please follow the on-screen instructions.\n"
		"\n"
		"If you do not have a team, you can visit http://freenote."
		"petta-tech.com\nto register.\n"
		"If you don't want to register, you can run the probe with"
		"the\n'--no-tokens'/'-n' option, "
		"or add 'no-tokens' to ~/.freenote/rc.\n"
		"Please enter your team name:  ");
	fgets(team, TEAM_MAXLEN, stdin);
	chomp(team);
	printf("Please enter your team's pin code:  ");
	fgets(pin, PIN_MAXLEN, stdin);
	chomp(pin);
	printf("Writing the information to %s...\n", tmp);
	r = set_team_info(team, pin);
	try(r);
	printf("Ready to roll!  Run the probe again, without --setup.\n");

	return r;
}

/**
	set_team_info
	Generates ~/.freenote/probe.team from the two arguments (the team
	name and the pin code).  Returns 0 for success, -1 for failure.
*/
int set_team_info(const char *team_name, const char *pin_code)
{
	// strlen("team_name:", ";\n", "pin_code:", ";\n\0") = 24
	char buffer[TEAM_MAXLEN + PIN_MAXLEN + 24];

	sprintf(buffer, "team_name:%s;\npin_code:%s;\n", team_name, pin_code);
	return fm_write(FM_TEAM_INFO, buffer, strlen(buffer)) - 1;
}