diff --git a/orte/mca/plm/alps/plm_alps_module.c b/orte/mca/plm/alps/plm_alps_module.c index fc557dc013..51fa2d95a1 100644 --- a/orte/mca/plm/alps/plm_alps_module.c +++ b/orte/mca/plm/alps/plm_alps_module.c @@ -398,7 +398,7 @@ cleanup: /* check for failed launch - if so, force terminate */ if (failed_launch) { - orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); + orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); } return rc; diff --git a/orte/mca/plm/gridengine/plm_gridengine_module.c b/orte/mca/plm/gridengine/plm_gridengine_module.c index 0b2e85fe05..68a871458e 100644 --- a/orte/mca/plm/gridengine/plm_gridengine_module.c +++ b/orte/mca/plm/gridengine/plm_gridengine_module.c @@ -566,7 +566,7 @@ cleanup: /* check for failed launch - if so, force terminate */ if (failed_launch) { - orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); + orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); } return rc; diff --git a/orte/mca/plm/lsf/plm_lsf_module.c b/orte/mca/plm/lsf/plm_lsf_module.c index 2980da5700..0434c107f6 100644 --- a/orte/mca/plm/lsf/plm_lsf_module.c +++ b/orte/mca/plm/lsf/plm_lsf_module.c @@ -167,7 +167,7 @@ static int plm_lsf_launch_job(orte_job_t *jdata) } /* save the active jobid */ - active_job = jobid; + active_job = jdata->jobid; /* Get the map for this job */ if (NULL == (map = orte_rmaps.get_job_map(active_job))) { @@ -347,7 +347,7 @@ cleanup: /* check for failed launch - if so, force terminate */ if (failed_launch) { if (ORTE_SUCCESS != - orte_plm_base_launch_failed(jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); + orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); } return rc; diff --git a/orte/mca/plm/process/plm_process_module.c b/orte/mca/plm/process/plm_process_module.c index d32d8a847e..a5eff1b773 100644 --- a/orte/mca/plm/process/plm_process_module.c +++ b/orte/mca/plm/process/plm_process_module.c @@ -861,7 +861,7 @@ launch_apps: /* check for failed launch - if so, force terminate */ if( failed_launch ) { - orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); + orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); } return rc; diff --git a/orte/mca/plm/rsh/plm_rsh_module.c b/orte/mca/plm/rsh/plm_rsh_module.c index 165811f740..461f7d3df6 100644 --- a/orte/mca/plm/rsh/plm_rsh_module.c +++ b/orte/mca/plm/rsh/plm_rsh_module.c @@ -806,7 +806,7 @@ launch_apps: /* check for failed launch - if so, force terminate */ if (failed_launch) { - orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); + orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); } return rc; diff --git a/orte/mca/plm/slurm/plm_slurm_module.c b/orte/mca/plm/slurm/plm_slurm_module.c index fee726eae6..d32bebcb8c 100644 --- a/orte/mca/plm/slurm/plm_slurm_module.c +++ b/orte/mca/plm/slurm/plm_slurm_module.c @@ -400,7 +400,7 @@ cleanup: /* check for failed launch - if so, force terminate */ if (failed_launch) { - orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); + orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); } return rc; diff --git a/orte/mca/plm/submit/pls_submit_module.c b/orte/mca/plm/submit/pls_submit_module.c index f9b960c05d..3144abc745 100644 --- a/orte/mca/plm/submit/pls_submit_module.c +++ b/orte/mca/plm/submit/pls_submit_module.c @@ -942,7 +942,7 @@ launch_apps: /* check for failed launch - if so, force terminate */ if (failed_launch) { - orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); + orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START); } return rc; diff --git a/orte/mca/ras/base/ras_base_allocate.c b/orte/mca/ras/base/ras_base_allocate.c index 794339d46b..db151402ec 100644 --- a/orte/mca/ras/base/ras_base_allocate.c +++ b/orte/mca/ras/base/ras_base_allocate.c @@ -115,7 +115,42 @@ int orte_ras_base_allocate(orte_job_t *jdata) /* nothing was found, or no active module was alive. Our next * option is to look for a hostfile and assign our global - * pool from there. Hostfile names, if given, are included + * pool from there. First, we check for a default hostfile + * as set by an mca param + */ + if (NULL != orte_default_hostfile) { + OPAL_OUTPUT_VERBOSE((5, orte_ras_base.ras_output, + "%s ras:base:allocate parsing default hostfile %s", + ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), + orte_default_hostfile)); + + /* a default hostfile was provided - parse it */ + if (ORTE_SUCCESS != (rc = orte_util_add_hostfile_nodes(&nodes, + &override_oversubscribed, + orte_default_hostfile))) { + ORTE_ERROR_LOG(rc); + OBJ_DESTRUCT(&nodes); + return rc; + } + } + /* if something was found in the default hostfile, we use that as our global + * pool - set it and we are done + */ + if (!opal_list_is_empty(&nodes)) { + /* store the results in the global resource pool - this removes the + * list items + */ + if (ORTE_SUCCESS != (rc = orte_ras_base_node_insert(&nodes, jdata))) { + ORTE_ERROR_LOG(rc); + } + /* update the jdata object with override_oversubscribed flag */ + jdata->oversubscribe_override = override_oversubscribed; + /* cleanup */ + OBJ_DESTRUCT(&nodes); + return rc; + } + + /* Individual hostfile names, if given, are included * in the app_contexts for this job. We therefore need to * retrieve the app_contexts for the job, and then cycle * through them to see if anything is there. The parser will diff --git a/orte/mca/rmaps/base/rmaps_base_support_fns.c b/orte/mca/rmaps/base/rmaps_base_support_fns.c index 730f819b60..eef73996ef 100644 --- a/orte/mca/rmaps/base/rmaps_base_support_fns.c +++ b/orte/mca/rmaps/base/rmaps_base_support_fns.c @@ -75,6 +75,26 @@ int orte_rmaps_base_get_target_nodes(opal_list_t *allocated_nodes, orte_std_cntr return ORTE_ERR_SILENT; } + /* is there a default hostfile? */ + if (NULL != orte_default_hostfile) { + /* yes - filter the node list through the file, removing + * any nodes not in the file -or- excluded via ^ + */ + if (ORTE_SUCCESS != (rc = orte_util_filter_hostfile_nodes(allocated_nodes, + orte_default_hostfile))) { + ORTE_ERROR_LOG(rc); + return rc; + } + } + + /** check that anything is here */ + if (0 == opal_list_get_size(allocated_nodes)) { + opal_show_help("help-orte-rmaps-base.txt", + "orte-rmaps-base:no-available-resources", + true); + return ORTE_ERR_SILENT; + } + /* did the app_context contain a hostfile? */ if (NULL != app->hostfile) { /* yes - filter the node list through the file, removing diff --git a/orte/runtime/orte_globals.c b/orte/runtime/orte_globals.c index 62dca779c7..b5be509837 100644 --- a/orte/runtime/orte_globals.c +++ b/orte/runtime/orte_globals.c @@ -57,6 +57,7 @@ bool orte_wakeup_ordered = false; bool orte_abort_in_progress = false; int orte_timeout_usec_per_proc; float orte_max_timeout; +char *orte_default_hostfile; orte_process_name_t orte_globals_name_wildcard = {ORTE_JOBID_WILDCARD, ORTE_VPID_WILDCARD}; orte_process_name_t orte_globals_name_invalid = {ORTE_JOBID_INVALID, ORTE_VPID_INVALID}; @@ -149,6 +150,11 @@ int orte_register_params(void) "Time to wait [in usecs/proc] before aborting an ORTE operation (default: 10 usec/proc)", false, false, 10, &orte_timeout_usec_per_proc); + /* default hostfile */ + mca_base_param_reg_string_name("default", "hostfile", + "Name of the default hostfile (relative or absolute path)", + false, false, NULL, &orte_default_hostfile); + /* All done */ params_set = true; diff --git a/orte/runtime/orte_globals.h b/orte/runtime/orte_globals.h index 406d1a85ce..6623a00495 100644 --- a/orte/runtime/orte_globals.h +++ b/orte/runtime/orte_globals.h @@ -329,6 +329,8 @@ ORTE_DECLSPEC extern bool orte_wakeup_ordered; ORTE_DECLSPEC extern int orte_timeout_usec_per_proc; ORTE_DECLSPEC extern float orte_max_timeout; +ORTE_DECLSPEC extern char *orte_default_hostfile; + /* global arrays for data storage */ ORTE_DECLSPEC extern opal_pointer_array_t *orte_job_data; ORTE_DECLSPEC extern opal_pointer_array_t *orte_node_pool; diff --git a/orte/tools/orterun/orterun.c b/orte/tools/orterun/orterun.c index b46005a4d2..676d791ab8 100644 --- a/orte/tools/orterun/orterun.c +++ b/orte/tools/orterun/orterun.c @@ -170,7 +170,10 @@ opal_cmd_line_init_t cmd_line_init[] = { { NULL, NULL, NULL, '\0', "machinefile", "machinefile", 1, NULL, OPAL_CMD_LINE_TYPE_STRING, "Provide a hostfile" }, - + { "default", "hostfile", NULL, '\0', "default-hostfile", "default-hostfile", 1, + NULL, OPAL_CMD_LINE_TYPE_STRING, + "Provide a default hostfile" }, + /* uri of Open MPI server, or at least where to get it */ { NULL, NULL, NULL, '\0', "ompi-server", "ompi-server", 1, &orterun_globals.ompi_server, OPAL_CMD_LINE_TYPE_STRING, diff --git a/orte/util/hostfile/hostfile.c b/orte/util/hostfile/hostfile.c index 2391143dfc..c6dc4bac11 100644 --- a/orte/util/hostfile/hostfile.c +++ b/orte/util/hostfile/hostfile.c @@ -40,6 +40,7 @@ #include "opal/mca/installdirs/installdirs.h" #include "orte/util/sys_info.h" +#include "orte/util/name_fns.h" #include "orte/mca/errmgr/errmgr.h" #include "orte/mca/ras/ras_types.h" #include "orte/runtime/orte_globals.h" @@ -110,27 +111,6 @@ static char *hostfile_parse_string(void) return strdup(orte_util_hostfile_value.sval); } -static char *hostfile_parse_string_or_int(void) -{ - int rc; - char tmp_str[64]; - - if (ORTE_HOSTFILE_EQUAL != orte_util_hostfile_lex()){ - return NULL; - } - rc = orte_util_hostfile_lex(); - switch (rc) { - case ORTE_HOSTFILE_STRING: - return strdup(orte_util_hostfile_value.sval); - case ORTE_HOSTFILE_INT: - sprintf(tmp_str,"%d",orte_util_hostfile_value.ival); - return strdup(tmp_str); - default: - return NULL; - } - -} - static orte_node_t* hostfile_lookup(opal_list_t* nodes, const char* name) { opal_list_item_t* item; @@ -146,38 +126,11 @@ static orte_node_t* hostfile_lookup(opal_list_t* nodes, const char* name) return NULL; } -static int validate_slot_list (char *cpu_list) -{ - int i,list_len = strlen(cpu_list); - - for(i=0; i < list_len; i++){ - if ('0' <= cpu_list[i] && '9' >= cpu_list[i]) { - continue; - } - else if (':' == cpu_list[i]) { - continue; - } - else if (',' == cpu_list[i]) { - continue; - } - else if ('*' == cpu_list[i]) { - continue; - } - else if ('-' == cpu_list[i]) { - continue; - } - return ORTE_ERROR; - } - return ORTE_SUCCESS; -} - -static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* procs) +static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* exclude) { char buff[64]; - char *tmp; int rc; orte_node_t* node; - orte_ras_proc_t* proc; bool update = false; bool got_count = false; bool got_max = false; @@ -193,7 +146,7 @@ static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* pro ORTE_HOSTFILE_INT == token || ORTE_HOSTFILE_IPV4 == token || ORTE_HOSTFILE_IPV6 == token) { - + if(ORTE_HOSTFILE_INT == token) { sprintf(buff,"%d", orte_util_hostfile_value.ival); value = buff; @@ -213,6 +166,38 @@ static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* pro } opal_argv_free (argv); + /* if the first letter of the name is '^', then this is a node + * to be excluded. Remove the ^ character so the nodename is + * usable, and put it on the exclude list + */ + if ('^' == node_name[0]) { + int i, len; + len = strlen(node_name); + for (i=1; i < len; i++) { + node_name[i-1] = node_name[i]; + } + node_name[len-1] = '\0'; /* truncate */ + /* convert this into something globally unique */ + if (strcmp(node_name, "localhost") == 0 || opal_ifislocal(node_name)) { + /* Nodename has been allocated, that is for sure */ + free (node_name); + node_name = strdup(orte_system_info.nodename); + } + + /* Do we need to make a new node object? First check to see + if it's already in the exclude list */ + if (NULL == (node = hostfile_lookup(exclude, node_name))) { + node = OBJ_NEW(orte_node_t); + node->name = node_name; + } + /* Note that we need to add this back to the exclude list. + If it was found, we just removed it (in hostfile_lookup()), + so this puts it back. If it was not found, then we have to + add it to the exclude list anyway. */ + opal_list_append(exclude, &node->super); + return ORTE_SUCCESS; + } + /* convert this into something globally unique */ if (strcmp(node_name, "localhost") == 0 || opal_ifislocal(node_name)) { /* Nodename has been allocated, that is for sure */ @@ -225,9 +210,6 @@ static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* pro if (NULL == (node = hostfile_lookup(updates, node_name))) { node = OBJ_NEW(orte_node_t); node->name = node_name; - node->username = username; - node->slots = 0; - /* Note that we need to set update to true regardless of whether the node was found on the updates list or not. If it was found, we just removed it (in hostfile_lookup()), @@ -278,48 +260,6 @@ static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* pro } break; - case ORTE_HOSTFILE_SLOT: - tmp = hostfile_parse_string_or_int(); - proc = OBJ_NEW(orte_ras_proc_t); - proc->node_name = strdup(node_name); - argv = opal_argv_split (tmp, '@'); - cnt = opal_argv_count (argv); - switch (cnt) { - case 1: - proc->cpu_list = strdup(argv[0]); - if (ORTE_SUCCESS != (rc = validate_slot_list(proc->cpu_list))) { - OBJ_RELEASE(proc); - OBJ_RELEASE(node); - opal_argv_free (argv); - ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM); - hostfile_parse_error(token); - return ORTE_ERROR; - } - break; - case 2: - proc->rank = strtol(argv[0],(char **)NULL,0); - proc->cpu_list = strdup(argv[1]); - if (ORTE_SUCCESS != (rc = validate_slot_list(proc->cpu_list))) { - OBJ_RELEASE(proc); - OBJ_RELEASE(node); - opal_argv_free (argv); - ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM); - hostfile_parse_error(token); - return ORTE_ERROR; - } - break; - default: - OBJ_RELEASE(proc); - OBJ_RELEASE(node); - opal_argv_free (argv); - ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM); - hostfile_parse_error(token); - return ORTE_ERROR; - } - opal_argv_free (argv); - opal_list_append(procs, &proc->super); - number_of_slots++; - break; case ORTE_HOSTFILE_SLOTS_MAX: rc = hostfile_parse_int(); if (rc < 0) { @@ -379,13 +319,13 @@ done: * Parse the specified file into a node list. */ -static int hostfile_parse(const char *hostfile, opal_list_t* updates, opal_list_t* procs) +static int hostfile_parse(const char *hostfile, opal_list_t* updates, opal_list_t* exclude) { int token; int rc = ORTE_SUCCESS; OPAL_THREAD_LOCK(&hostfile_mutex); - + cur_hostfile_name = hostfile; orte_util_hostfile_done = false; @@ -418,7 +358,7 @@ static int hostfile_parse(const char *hostfile, opal_list_t* updates, opal_list_ case ORTE_HOSTFILE_HOSTNAME: case ORTE_HOSTFILE_IPV4: case ORTE_HOSTFILE_IPV6: - rc = hostfile_parse_line(token, updates, procs); + rc = hostfile_parse_line(token, updates, exclude); if (ORTE_SUCCESS != rc) { goto unlock; } @@ -448,17 +388,40 @@ int orte_util_add_hostfile_nodes(opal_list_t *nodes, bool *override_oversubscribed, char *hostfile) { - opal_list_t procs; - opal_list_item_t *item; + opal_list_t exclude; + opal_list_item_t *item, *itm; int rc; - OBJ_CONSTRUCT(&procs, opal_list_t); + + OPAL_OUTPUT_VERBOSE((1, orte_debug_output, + "%s hostfile: checking hostfile %s for nodes", + ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), hostfile)); + + OBJ_CONSTRUCT(&exclude, opal_list_t); /* parse the hostfile and add the contents to the list */ - if (ORTE_SUCCESS != (rc = hostfile_parse(hostfile, nodes, &procs))) { + if (ORTE_SUCCESS != (rc = hostfile_parse(hostfile, nodes, &exclude))) { goto cleanup; } + /* remove from the list of nodes those that are in the exclude list */ + while(NULL != (item = opal_list_remove_first(&exclude))) { + orte_node_t *exnode = (orte_node_t*)item; + /* check for matches on nodes */ + for (itm = opal_list_get_first(nodes); + itm != opal_list_get_end(nodes); + itm = opal_list_get_next(itm)) { + orte_node_t *node=(orte_node_t*)itm; + if (0 == strcmp(exnode->name, node->name)) { + /* match - remove it */ + opal_list_remove_item(nodes, itm); + OBJ_RELEASE(itm); + break; + } + } + OBJ_RELEASE(item); + } + /* indicate that ORTE should override any oversubscribed conditions * based on local hardware limits since the user (a) might not have * provided us any info on the #slots for a node, and (b) the user @@ -469,11 +432,7 @@ int orte_util_add_hostfile_nodes(opal_list_t *nodes, *override_oversubscribed = true; cleanup: - while(NULL != (item = opal_list_remove_first(&procs))) { - OBJ_RELEASE(item); - } - - OBJ_DESTRUCT(&procs); + OBJ_DESTRUCT(&exclude); return rc; } @@ -485,19 +444,42 @@ cleanup: int orte_util_filter_hostfile_nodes(opal_list_t *nodes, char *hostfile) { - opal_list_t newnodes; + opal_list_t newnodes, exclude; opal_list_item_t *item1, *item2; orte_node_t *node_from_list, *node_from_file; bool node_found; int rc; + OPAL_OUTPUT_VERBOSE((1, orte_debug_output, + "%s hostfile: filtering nodes through hostfile %s", + ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), hostfile)); + /* parse the hostfile and create local list of findings */ OBJ_CONSTRUCT(&newnodes, opal_list_t); - if (ORTE_SUCCESS != (rc = hostfile_parse(hostfile, &newnodes, NULL))) { + OBJ_CONSTRUCT(&exclude, opal_list_t); + if (ORTE_SUCCESS != (rc = hostfile_parse(hostfile, &newnodes, &exclude))) { OBJ_DESTRUCT(&newnodes); return rc; } + /* remove from the list of newnodes those that are in the exclude list */ + while(NULL != (item1 = opal_list_remove_first(&exclude))) { + node_from_file = (orte_node_t*)item1; + /* check for matches on nodes */ + for (item2 = opal_list_get_first(&newnodes); + item2 != opal_list_get_end(&newnodes); + item2 = opal_list_get_next(item2)) { + orte_node_t *node=(orte_node_t*)item2; + if (0 == strcmp(node_from_file->name, node->name)) { + /* match - remove it */ + opal_list_remove_item(&newnodes, item2); + OBJ_RELEASE(item2); + break; + } + } + OBJ_RELEASE(item1); + } + /* now check our nodes and remove any that don't match. We can * destruct our hostfile list as we go since this won't be needed */ diff --git a/orte/util/hostfile/hostfile_lex.c b/orte/util/hostfile/hostfile_lex.c index 422d1ba82e..39200cf3f4 100644 --- a/orte/util/hostfile/hostfile_lex.c +++ b/orte/util/hostfile/hostfile_lex.c @@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 37 -#define YY_END_OF_BUFFER 38 +#define YY_NUM_RULES 36 +#define YY_END_OF_BUFFER 37 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,27 +372,28 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[180] = +static yyconst flex_int16_t yy_accept[184] = { 0, - 32, 32, 5, 5, 38, 36, 10, 1, 36, 36, - 32, 36, 31, 32, 11, 32, 32, 32, 32, 32, - 32, 5, 7, 6, 10, 1, 0, 9, 0, 2, - 32, 4, 0, 32, 0, 31, 32, 32, 32, 0, - 32, 32, 32, 35, 32, 32, 32, 32, 32, 32, - 5, 6, 6, 8, 0, 3, 0, 31, 32, 32, - 32, 32, 0, 0, 32, 32, 32, 32, 32, 12, - 32, 32, 32, 0, 0, 31, 32, 32, 32, 32, - 32, 0, 0, 34, 32, 32, 32, 32, 32, 32, - 32, 32, 15, 32, 0, 0, 31, 32, 32, 32, + 31, 31, 5, 5, 37, 35, 10, 1, 35, 35, + 31, 35, 30, 31, 11, 31, 31, 31, 31, 31, + 31, 31, 5, 7, 6, 10, 1, 0, 9, 0, + 2, 31, 4, 0, 31, 0, 30, 31, 31, 31, + 0, 31, 31, 31, 34, 31, 31, 31, 31, 31, + 31, 31, 5, 6, 6, 8, 0, 3, 0, 30, + 31, 31, 31, 31, 0, 0, 31, 31, 31, 31, + 31, 31, 31, 12, 31, 31, 31, 0, 0, 30, + 31, 31, 31, 31, 31, 0, 0, 33, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 0, 0, - 0, 34, 32, 32, 13, 32, 32, 32, 32, 32, - 32, 14, 32, 32, 32, 0, 0, 32, 32, 0, - 34, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 33, 0, 34, - 32, 32, 20, 21, 32, 22, 32, 32, 23, 32, - 32, 32, 32, 32, 32, 33, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 28, 33, 24, 25, - 26, 18, 27, 19, 16, 17, 29, 30, 0 + 30, 31, 31, 31, 0, 33, 31, 31, 13, 31, + 31, 31, 31, 31, 31, 14, 31, 31, 31, 0, + 0, 31, 31, 0, 33, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 32, 0, 33, 31, 31, 19, 20, 31, 21, + 31, 31, 22, 31, 31, 31, 31, 31, 31, 32, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 27, 32, 23, 24, 25, 17, 26, 18, 15, 16, + 28, 29, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -406,10 +407,10 @@ static yyconst flex_int32_t yy_ec[256] = 13, 1, 1, 14, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 7, 7, 7, 7, 17, 7, 18, 15, 19, 15, + 7, 7, 7, 17, 18, 7, 19, 15, 20, 15, - 20, 15, 16, 16, 16, 16, 16, 21, 22, 23, - 24, 25, 16, 26, 27, 28, 29, 16, 16, 30, + 21, 15, 16, 16, 16, 16, 16, 22, 23, 24, + 25, 26, 16, 27, 28, 29, 30, 16, 16, 31, 16, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -427,177 +428,196 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[31] = +static yyconst flex_int32_t yy_meta[32] = { 0, 1, 1, 2, 3, 1, 4, 5, 6, 7, 1, - 8, 9, 1, 5, 8, 6, 6, 8, 8, 8, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 + 8, 9, 1, 5, 8, 6, 5, 6, 8, 8, + 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6 } ; -static yyconst flex_int16_t yy_base[196] = +static yyconst flex_int16_t yy_base[202] = { 0, - 0, 0, 28, 29, 454, 455, 34, 455, 449, 449, - 0, 32, 37, 64, 455, 79, 99, 15, 433, 429, - 422, 0, 455, 63, 68, 455, 444, 455, 444, 455, - 0, 455, 443, 111, 434, 121, 0, 136, 63, 29, - 156, 166, 0, 0, 176, 415, 414, 400, 405, 408, - 0, 71, 106, 455, 424, 455, 69, 186, 104, 198, - 213, 233, 406, 121, 243, 0, 253, 263, 394, 120, - 161, 388, 389, 386, 161, 123, 378, 273, 171, 0, - 283, 376, 134, 372, 293, 303, 338, 321, 325, 324, - 171, 173, 318, 185, 203, 331, 328, 313, 328, 323, + 0, 0, 29, 30, 386, 528, 35, 528, 381, 381, + 0, 33, 38, 66, 528, 82, 103, 119, 15, 360, + 356, 349, 0, 528, 65, 70, 528, 371, 528, 371, + 528, 0, 528, 370, 129, 357, 140, 0, 156, 65, + 30, 177, 188, 0, 0, 199, 215, 337, 336, 333, + 338, 341, 0, 73, 74, 528, 354, 528, 108, 222, + 119, 235, 251, 272, 344, 117, 283, 0, 294, 305, + 321, 328, 331, 74, 124, 324, 325, 340, 134, 123, + 334, 339, 143, 0, 350, 333, 135, 332, 361, 372, + 330, 312, 314, 313, 137, 138, 306, 182, 182, 323, - 324, 323, 318, 333, 171, 311, 309, 222, 305, 225, - 304, 248, 297, 296, 299, 305, 246, 303, 298, 297, - 295, 294, 283, 278, 269, 267, 267, 266, 266, 260, - 258, 262, 263, 258, 261, 259, 254, 264, 261, 257, - 249, 248, 0, 0, 237, 0, 231, 203, 0, 195, - 197, 193, 181, 177, 169, 172, 143, 119, 117, 100, - 96, 94, 62, 59, 30, 27, 0, 455, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 455, 353, - 362, 371, 377, 386, 395, 404, 411, 415, 416, 423, - 425, 427, 429, 431, 433 + 320, 383, 321, 394, 317, 311, 310, 405, 138, 302, + 300, 169, 296, 176, 295, 197, 288, 287, 291, 297, + 202, 295, 294, 289, 288, 287, 274, 273, 264, 259, + 259, 258, 261, 255, 234, 236, 230, 229, 232, 230, + 225, 234, 231, 227, 219, 217, 0, 0, 211, 0, + 205, 207, 0, 201, 209, 207, 202, 201, 202, 206, + 185, 181, 175, 141, 124, 92, 85, 64, 30, 27, + 0, 528, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 528, 426, 435, 444, 450, 456, 465, 474, + 483, 490, 494, 499, 501, 508, 510, 512, 514, 516, + 518 } ; -static yyconst flex_int16_t yy_def[196] = +static yyconst flex_int16_t yy_def[202] = { 0, - 179, 1, 180, 180, 179, 179, 179, 179, 181, 182, - 183, 179, 179, 183, 179, 179, 16, 16, 17, 17, - 17, 184, 179, 185, 179, 179, 181, 179, 182, 179, - 183, 179, 186, 13, 179, 13, 14, 179, 36, 187, - 183, 14, 17, 188, 16, 17, 17, 17, 17, 17, - 184, 185, 185, 179, 186, 179, 179, 36, 58, 183, - 179, 61, 189, 190, 41, 42, 41, 16, 17, 17, - 17, 17, 17, 179, 179, 34, 34, 60, 78, 62, - 61, 191, 190, 192, 41, 41, 17, 17, 17, 17, - 17, 17, 17, 17, 179, 179, 34, 78, 98, 61, + 183, 1, 184, 184, 183, 183, 183, 183, 185, 186, + 187, 183, 183, 187, 183, 183, 16, 188, 16, 17, + 17, 17, 189, 183, 190, 183, 183, 185, 183, 186, + 183, 187, 183, 191, 13, 183, 13, 14, 183, 37, + 192, 187, 14, 17, 193, 16, 194, 17, 17, 17, + 17, 17, 189, 190, 190, 183, 191, 183, 183, 37, + 60, 187, 183, 63, 195, 196, 42, 43, 42, 16, + 194, 39, 17, 17, 17, 17, 17, 183, 183, 35, + 35, 62, 82, 64, 63, 197, 196, 198, 42, 42, + 17, 17, 17, 17, 17, 17, 17, 17, 183, 183, - 193, 194, 183, 41, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 179, 179, 183, 62, 179, - 195, 183, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 179, 179, 179, + 35, 82, 102, 63, 199, 200, 187, 42, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 183, + 183, 187, 64, 183, 201, 187, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 179, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 179, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 0, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179 + 17, 183, 183, 183, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 183, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 183, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 0, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183 } ; -static yyconst flex_int16_t yy_nxt[486] = +static yyconst flex_int16_t yy_nxt[560] = { 0, 6, 7, 8, 9, 10, 11, 11, 11, 6, 12, - 13, 14, 15, 11, 16, 17, 11, 16, 18, 16, - 17, 19, 17, 17, 17, 17, 20, 17, 21, 17, - 23, 23, 40, 24, 24, 25, 26, 32, 46, 47, - 64, 33, 31, 31, 34, 35, 178, 36, 37, 177, - 38, 39, 34, 34, 39, 39, 39, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 40, 53, 25, - 26, 179, 54, 59, 41, 42, 179, 74, 41, 75, - 179, 41, 41, 41, 31, 31, 43, 44, 176, 45, - 37, 175, 38, 45, 43, 43, 45, 45, 45, 43, + 13, 14, 15, 11, 16, 17, 18, 11, 16, 19, + 16, 17, 20, 17, 17, 17, 17, 21, 17, 22, + 17, 24, 24, 41, 25, 25, 26, 27, 33, 48, + 49, 66, 34, 32, 32, 35, 36, 182, 37, 38, + 181, 39, 40, 35, 32, 35, 40, 40, 40, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 41, + 55, 26, 27, 183, 56, 61, 42, 43, 183, 55, + 42, 93, 183, 56, 42, 42, 42, 32, 32, 44, + 45, 94, 46, 38, 180, 39, 46, 44, 32, 44, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 31, 53, 179, 43, 77, 54, 43, 43, 43, 179, - 174, 34, 31, 173, 40, 34, 172, 89, 34, 34, - 34, 58, 64, 97, 37, 59, 90, 179, 59, 59, - 59, 31, 31, 31, 171, 83, 60, 37, 170, 31, - 61, 62, 31, 61, 61, 61, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 65, 66, 91, 74, - 65, 96, 169, 65, 65, 65, 67, 92, 123, 179, - 67, 99, 168, 67, 67, 67, 68, 124, 167, 108, - 68, 110, 113, 68, 68, 68, 76, 109, 166, 111, + 46, 46, 46, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 32, 179, 78, 44, 79, 178, + 41, 44, 44, 44, 32, 32, 32, 183, 66, 81, + 32, 95, 32, 101, 38, 32, 32, 183, 183, 35, + 32, 96, 78, 35, 100, 127, 87, 35, 35, 35, + 60, 183, 177, 103, 61, 128, 112, 114, 61, 61, + 61, 32, 32, 32, 113, 115, 62, 38, 176, 32, + 63, 64, 32, 32, 63, 63, 63, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 67, 68, 117, + 120, 67, 121, 131, 132, 67, 67, 67, 69, 118, - 77, 114, 165, 77, 77, 77, 35, 115, 78, 37, - 164, 116, 79, 117, 163, 79, 79, 79, 31, 31, - 80, 44, 162, 81, 37, 161, 31, 81, 80, 80, - 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 31, 127, 128, 80, 130, 131, - 80, 80, 80, 85, 116, 133, 139, 85, 160, 159, - 85, 85, 85, 86, 134, 158, 157, 86, 83, 116, - 86, 86, 86, 87, 156, 155, 154, 87, 153, 152, - 87, 87, 87, 98, 151, 150, 149, 99, 148, 147, - 99, 99, 99, 100, 146, 145, 144, 100, 143, 142, + 134, 135, 69, 175, 137, 119, 69, 69, 69, 70, + 120, 174, 143, 70, 138, 173, 172, 70, 70, 70, + 32, 32, 171, 170, 169, 168, 32, 167, 72, 166, + 165, 32, 80, 164, 163, 162, 81, 161, 87, 120, + 81, 81, 81, 36, 160, 82, 38, 159, 158, 83, + 157, 156, 155, 83, 83, 83, 32, 32, 84, 45, + 154, 85, 38, 153, 32, 85, 84, 32, 84, 85, + 85, 85, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 32, 152, 151, 84, 150, 149, 148, + 84, 84, 84, 89, 147, 146, 145, 89, 68, 87, - 100, 100, 100, 103, 141, 66, 83, 103, 83, 37, - 103, 103, 103, 104, 37, 138, 137, 104, 136, 135, - 104, 104, 104, 118, 132, 129, 126, 118, 125, 66, - 118, 118, 118, 119, 83, 83, 179, 119, 97, 74, - 119, 119, 119, 122, 112, 107, 106, 122, 105, 37, - 122, 122, 122, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 31, 31, 31, 83, 31, 31, 51, 83, 51, 37, - 51, 51, 51, 51, 51, 52, 95, 52, 52, 52, + 87, 89, 89, 89, 90, 38, 38, 142, 90, 141, + 140, 139, 90, 90, 90, 91, 136, 133, 130, 91, + 129, 68, 87, 91, 91, 91, 32, 32, 87, 183, + 101, 78, 32, 116, 72, 111, 110, 32, 32, 32, + 109, 38, 64, 87, 87, 38, 64, 64, 64, 102, + 99, 98, 97, 103, 92, 87, 58, 103, 103, 103, + 104, 77, 76, 75, 104, 74, 73, 59, 104, 104, + 104, 107, 58, 31, 29, 107, 52, 51, 50, 107, + 107, 107, 108, 31, 29, 183, 108, 183, 183, 183, + 108, 108, 108, 122, 183, 183, 183, 122, 183, 183, - 52, 52, 52, 52, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 63, 94, 93, 88, 83, 63, 63, - 44, 44, 44, 82, 82, 84, 56, 73, 72, 71, - 84, 84, 101, 101, 102, 102, 120, 120, 121, 121, - 140, 140, 70, 69, 57, 56, 30, 28, 50, 49, - 48, 30, 28, 179, 5, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179 + 183, 122, 122, 122, 123, 183, 183, 183, 123, 183, + 183, 183, 123, 123, 123, 126, 183, 183, 183, 126, + 183, 183, 183, 126, 126, 126, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 32, 32, 32, 183, 32, 32, 47, + 47, 47, 183, 47, 47, 53, 183, 53, 183, 53, + 53, 53, 53, 53, 54, 183, 54, 54, 54, 54, + 54, 54, 54, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 65, 183, 183, 183, 183, 65, 65, 45, + + 45, 45, 71, 71, 71, 183, 71, 71, 86, 86, + 88, 183, 183, 183, 183, 88, 88, 105, 105, 106, + 106, 124, 124, 125, 125, 144, 144, 5, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183 } ; -static yyconst flex_int16_t yy_chk[486] = +static yyconst flex_int16_t yy_chk[560] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 4, 40, 3, 4, 7, 7, 12, 18, 18, - 40, 12, 13, 13, 13, 13, 166, 13, 13, 165, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 14, 24, 25, - 25, 39, 24, 39, 14, 14, 52, 57, 14, 57, - 52, 14, 14, 14, 16, 16, 16, 16, 164, 16, - 16, 163, 16, 16, 16, 16, 16, 16, 16, 16, + 1, 3, 4, 41, 3, 4, 7, 7, 12, 19, + 19, 41, 12, 13, 13, 13, 13, 170, 13, 13, + 169, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, + 25, 26, 26, 40, 25, 40, 14, 14, 54, 55, + 14, 74, 54, 55, 14, 14, 14, 16, 16, 16, + 16, 74, 16, 16, 168, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, - 17, 53, 59, 17, 59, 53, 17, 17, 17, 34, - 162, 34, 34, 161, 64, 34, 160, 70, 34, 34, - 34, 36, 64, 76, 76, 36, 70, 83, 36, 36, - 36, 38, 38, 38, 159, 83, 38, 38, 158, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 41, 41, 71, 75, - 41, 75, 157, 41, 41, 41, 42, 71, 105, 79, - 42, 79, 156, 42, 42, 42, 45, 105, 155, 91, - 45, 92, 94, 45, 45, 45, 58, 91, 154, 92, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 17, 17, 167, 59, 17, 59, 166, + 66, 17, 17, 17, 18, 18, 18, 61, 66, 61, + 18, 75, 18, 80, 80, 18, 18, 35, 87, 35, + 35, 75, 79, 35, 79, 109, 87, 35, 35, 35, + 37, 83, 165, 83, 37, 109, 95, 96, 37, 37, + 37, 39, 39, 39, 95, 96, 39, 39, 164, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 42, 42, 98, + 99, 42, 99, 112, 112, 42, 42, 42, 43, 98, - 58, 94, 153, 58, 58, 58, 60, 94, 60, 60, - 152, 95, 60, 95, 151, 60, 60, 60, 61, 61, - 61, 61, 150, 61, 61, 148, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 62, 62, 108, 108, 62, 110, 110, - 62, 62, 62, 65, 117, 112, 117, 65, 147, 145, - 65, 65, 65, 67, 112, 142, 141, 67, 140, 139, - 67, 67, 67, 68, 138, 137, 136, 68, 135, 134, - 68, 68, 68, 78, 133, 132, 131, 78, 130, 129, - 78, 78, 78, 81, 128, 127, 126, 81, 125, 124, + 114, 114, 43, 163, 116, 98, 43, 43, 43, 46, + 121, 162, 121, 46, 116, 161, 160, 46, 46, 46, + 47, 47, 159, 158, 157, 156, 47, 155, 47, 154, + 152, 47, 60, 151, 149, 146, 60, 145, 144, 143, + 60, 60, 60, 62, 142, 62, 62, 141, 140, 62, + 139, 138, 137, 62, 62, 62, 63, 63, 63, 63, + 136, 63, 63, 135, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 64, 64, 134, 133, 64, 132, 131, 130, + 64, 64, 64, 67, 129, 128, 127, 67, 126, 125, - 81, 81, 81, 85, 123, 122, 121, 85, 120, 119, - 85, 85, 85, 86, 118, 116, 115, 86, 114, 113, - 86, 86, 86, 98, 111, 109, 107, 98, 106, 103, - 98, 98, 98, 100, 102, 101, 99, 100, 97, 96, - 100, 100, 100, 104, 93, 90, 89, 104, 88, 87, - 104, 104, 104, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 183, 183, 183, 84, 183, 183, 184, 82, 184, 77, - 184, 184, 184, 184, 184, 185, 74, 185, 185, 185, + 124, 67, 67, 67, 69, 123, 122, 120, 69, 119, + 118, 117, 69, 69, 69, 70, 115, 113, 111, 70, + 110, 107, 106, 70, 70, 70, 71, 71, 105, 103, + 101, 100, 71, 97, 71, 94, 93, 71, 72, 72, + 92, 91, 72, 88, 86, 81, 72, 72, 72, 82, + 78, 77, 76, 82, 73, 65, 57, 82, 82, 82, + 85, 52, 51, 50, 85, 49, 48, 36, 85, 85, + 85, 89, 34, 30, 28, 89, 22, 21, 20, 89, + 89, 89, 90, 10, 9, 5, 90, 0, 0, 0, + 90, 90, 90, 102, 0, 0, 0, 102, 0, 0, + 0, 102, 102, 102, 104, 0, 0, 0, 104, 0, + 0, 0, 104, 104, 104, 108, 0, 0, 0, 108, + 0, 0, 0, 108, 108, 108, 184, 184, 184, 184, + 184, 184, 184, 184, 184, 185, 185, 185, 185, 185, 185, 185, 185, 185, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 187, 73, 72, 69, 63, 187, 187, - 188, 188, 188, 189, 189, 190, 55, 50, 49, 48, - 190, 190, 191, 191, 192, 192, 193, 193, 194, 194, - 195, 195, 47, 46, 35, 33, 29, 27, 21, 20, - 19, 10, 9, 5, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179 + 186, 186, 186, 187, 187, 187, 0, 187, 187, 188, + 188, 188, 0, 188, 188, 189, 0, 189, 0, 189, + 189, 189, 189, 189, 190, 0, 190, 190, 190, 190, + 190, 190, 190, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 192, 0, 0, 0, 0, 192, 192, 193, + + 193, 193, 194, 194, 194, 0, 194, 194, 195, 195, + 196, 0, 0, 0, 0, 196, 196, 197, 197, 198, + 198, 199, 199, 200, 200, 201, 201, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183 } ; static yy_state_type yy_last_accepting_state; @@ -669,7 +689,7 @@ orte_hostfile_value_t orte_util_hostfile_value; bool orte_util_hostfile_done = false; -#line 673 "util/hostfile/hostfile_lex.c" +#line 693 "util/hostfile/hostfile_lex.c" #define INITIAL 0 #define comment 1 @@ -826,7 +846,7 @@ YY_DECL #line 60 "hostfile_lex.l" -#line 830 "util/hostfile/hostfile_lex.c" +#line 850 "util/hostfile/hostfile_lex.c" if ( !(yy_init) ) { @@ -879,13 +899,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 180 ) + if ( yy_current_state >= 184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 455 ); + while ( yy_base[yy_current_state] != 528 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -998,7 +1018,7 @@ case 15: YY_RULE_SETUP #line 91 "hostfile_lex.l" { orte_util_hostfile_value.sval = orte_util_hostfile_text; - return ORTE_HOSTFILE_SLOT; } + return ORTE_HOSTFILE_SLOTS_MAX; } YY_BREAK case 16: YY_RULE_SETUP @@ -1068,9 +1088,9 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 115 "hostfile_lex.l" -{ orte_util_hostfile_value.sval = orte_util_hostfile_text; - return ORTE_HOSTFILE_SLOTS_MAX; } +#line 116 "hostfile_lex.l" +{ orte_util_hostfile_value.sval = orte_util_hostfile_text; + return ORTE_HOSTFILE_USERNAME; } YY_BREAK case 28: YY_RULE_SETUP @@ -1086,13 +1106,7 @@ YY_RULE_SETUP YY_BREAK case 30: YY_RULE_SETUP -#line 122 "hostfile_lex.l" -{ orte_util_hostfile_value.sval = orte_util_hostfile_text; - return ORTE_HOSTFILE_USERNAME; } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 125 "hostfile_lex.l" +#line 123 "hostfile_lex.l" { orte_util_hostfile_value.ival = atol(orte_util_hostfile_text); return ORTE_HOSTFILE_INT; } YY_BREAK @@ -1101,45 +1115,45 @@ YY_RULE_SETUP * followed by username@hostname or hostname */ -case 32: +case 31: YY_RULE_SETUP -#line 133 "hostfile_lex.l" +#line 131 "hostfile_lex.l" { orte_util_hostfile_value.sval = orte_util_hostfile_text; return ORTE_HOSTFILE_STRING; } YY_BREAK -case 33: +case 32: YY_RULE_SETUP -#line 136 "hostfile_lex.l" +#line 134 "hostfile_lex.l" { orte_util_hostfile_value.sval = orte_util_hostfile_text; return ORTE_HOSTFILE_IPV4; } YY_BREAK -case 34: +case 33: YY_RULE_SETUP -#line 140 "hostfile_lex.l" +#line 138 "hostfile_lex.l" { orte_util_hostfile_value.sval = orte_util_hostfile_text; return ORTE_HOSTFILE_IPV6; } YY_BREAK -case 35: +case 34: YY_RULE_SETUP -#line 144 "hostfile_lex.l" +#line 142 "hostfile_lex.l" { orte_util_hostfile_value.sval = orte_util_hostfile_text; return ORTE_HOSTFILE_HOSTNAME; } YY_BREAK -case 36: +case 35: YY_RULE_SETUP -#line 148 "hostfile_lex.l" +#line 146 "hostfile_lex.l" { orte_util_hostfile_value.sval = orte_util_hostfile_text; return ORTE_HOSTFILE_ERROR; } YY_BREAK -case 37: +case 36: YY_RULE_SETUP -#line 151 "hostfile_lex.l" +#line 149 "hostfile_lex.l" ECHO; YY_BREAK -#line 1143 "util/hostfile/hostfile_lex.c" +#line 1157 "util/hostfile/hostfile_lex.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(comment): yyterminate(); @@ -1424,7 +1438,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 180 ) + if ( yy_current_state >= 184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1452,11 +1466,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 180 ) + if ( yy_current_state >= 184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 179); + yy_is_jam = (yy_current_state == 183); return yy_is_jam ? 0 : yy_current_state; } @@ -2126,7 +2140,7 @@ void orte_util_hostfile_free (void * ptr ) #define YYTABLES_NAME "yytables" -#line 151 "hostfile_lex.l" +#line 149 "hostfile_lex.l" diff --git a/orte/util/hostfile/hostfile_lex.l b/orte/util/hostfile/hostfile_lex.l index da8579bbdc..7377baba67 100644 --- a/orte/util/hostfile/hostfile_lex.l +++ b/orte/util/hostfile/hostfile_lex.l @@ -88,8 +88,6 @@ count { orte_util_hostfile_value.sval = yytext; return ORTE_HOSTFILE_COUNT; } slots { orte_util_hostfile_value.sval = yytext; return ORTE_HOSTFILE_SLOTS; } -slot { orte_util_hostfile_value.sval = yytext; - return ORTE_HOSTFILE_SLOT; } "slots-max" { orte_util_hostfile_value.sval = yytext; return ORTE_HOSTFILE_SLOTS_MAX; } slots_max { orte_util_hostfile_value.sval = yytext; @@ -141,7 +139,7 @@ username { orte_util_hostfile_value.sval = yytext; orte_util_hostfile_value.sval = yytext; return ORTE_HOSTFILE_IPV6; } -([A-Za-z0-9][A-Za-z0-9_\-]*"@")?[A-Za-z][A-Za-z0-9_\-\.]* { +(\^?[A-Za-z0-9][A-Za-z0-9_\-]*"@")?[A-Za-z][A-Za-z0-9_\-\.]* { orte_util_hostfile_value.sval = yytext; return ORTE_HOSTFILE_HOSTNAME; }