/* * _build_state_list - build a list of node states * IN str - comma separated list of job states * RET List of enum job_states values */ static List _build_state_list (char *state_str) { List state_ids; char *orig, *str, *state; if (state_str == NULL) return NULL; if (strcasecmp (state_str, "all") == 0 ) return _build_all_states_list (); orig = str = xstrdup (state_str); state_ids = list_create (NULL); while ((state = _next_tok (",", &str))) { int *id = xmalloc (sizeof (*id)); if ((*id = _node_state_id (state)) < 0) { error ("Bad state string: \"%s\"", state); return (NULL); } list_append (state_ids, id); } xfree (orig); return (state_ids); }
/* * _build_state_list - build a list of job states * IN str - comma separated list of job states * RET List of enum job_states values */ static List _build_state_list( char* str ) { List my_list; char *state = NULL, *tmp_char = NULL, *my_state_list = NULL; uint16_t *state_id = NULL; if ( str == NULL) return NULL; if ( strcasecmp( str, "all" ) == 0 ) return _build_all_states_list (); my_list = list_create( NULL ); my_state_list = xstrdup( str ); state = strtok_r( my_state_list, ",", &tmp_char ); while (state) { state_id = xmalloc( sizeof( uint16_t ) ); if ( _parse_state( state, state_id ) != SLURM_SUCCESS ) exit( 1 ); list_append( my_list, state_id ); state = strtok_r( NULL, ",", &tmp_char ); } return my_list; }