/* * parse_format - Take the user's format specification and use it to build * build the format specifications (internalize it to print.c data * structures) * IN format - user's format specification * RET zero or error code */ extern int parse_format( char* format ) { int field_size; bool right_justify; char *prefix = NULL, *suffix = NULL, *token = NULL; char *tmp_char = NULL, *tmp_format = NULL; char field[1]; if (format == NULL) { error ("Format option lacks specification."); exit( 1 ); } params.format_list = list_create( NULL ); if ((prefix = _get_prefix(format))) { job_format_add_prefix( params.format_list, 0, 0, prefix); } field_size = strlen( format ); tmp_format = xmalloc( field_size + 1 ); strcpy( tmp_format, format ); token = strtok_r( tmp_format, "%", &tmp_char); if (token && (format[0] != '%')) /* toss header */ token = strtok_r( NULL, "%", &tmp_char ); while (token) { _parse_token( token, field, &field_size, &right_justify, &suffix); if (field[0] == 'a') job_format_add_age_priority_normalized(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'A') job_format_add_age_priority_weighted(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'f') job_format_add_fs_priority_normalized(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'F') job_format_add_fs_priority_weighted(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'i') job_format_add_job_id(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'j') job_format_add_js_priority_normalized(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'J') job_format_add_js_priority_weighted(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'N') job_format_add_job_nice(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'p') job_format_add_part_priority_normalized(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'P') job_format_add_part_priority_weighted(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'q') job_format_add_qos_priority_normalized(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'Q') job_format_add_qos_priority_weighted(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'u') job_format_add_user_name(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'y') job_format_add_job_priority_normalized(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'Y') job_format_add_job_priority_weighted(params.format_list, field_size, right_justify, suffix ); else if (field[0] == 't') job_format_add_tres_normalized(params.format_list, field_size, right_justify, suffix); else if (field[0] == 'T') job_format_add_tres_weighted(params.format_list, field_size, right_justify, suffix); else error( "Invalid job format specification: %c", field[0] ); token = strtok_r( NULL, "%", &tmp_char); } xfree( tmp_format ); return SLURM_SUCCESS; }
/* * parse_format - Take the user's format specification and use it to build * build the format specifications (internalize it to print.c data * structures) * IN format - user's format specification * RET zero or error code */ extern int parse_format( char* format ) { int field_size; bool right_justify; char *prefix = NULL, *suffix = NULL, *token = NULL; char *tmp_char = NULL, *tmp_format = NULL; char field[1]; if (format == NULL) { error ("Format option lacks specification."); exit( 1 ); } params.format_list = list_create( NULL ); if ((prefix = _get_prefix(format))) { if (params.step_flag) step_format_add_prefix( params.format_list, 0, 0, prefix); else job_format_add_prefix( params.format_list, 0, 0, prefix); } field_size = strlen( format ); tmp_format = xmalloc( field_size + 1 ); strcpy( tmp_format, format ); token = strtok_r( tmp_format, "%", &tmp_char); if (token && (format[0] != '%')) /* toss header */ token = strtok_r( NULL, "%", &tmp_char ); while (token) { _parse_token( token, field, &field_size, &right_justify, &suffix); if (params.step_flag) { if (field[0] == 'A') step_format_add_num_tasks( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'b') step_format_add_gres( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'i') step_format_add_id( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'j') step_format_add_name( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'l') step_format_add_time_limit( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'M') step_format_add_time_used( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'N') step_format_add_nodes( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'P') step_format_add_partition( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'S') step_format_add_time_start( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'U') step_format_add_user_id( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'u') step_format_add_user_name( params.format_list, field_size, right_justify, suffix ); else { prefix = xstrdup("%"); xstrcat(prefix, token); xfree(suffix); suffix = prefix; step_format_add_invalid( params.format_list, field_size, right_justify, suffix ); error ( "Invalid job step format " "specification: %c", field[0] ); } } else { if (field[0] == 'a') job_format_add_account( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'b') job_format_add_gres( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'B') job_format_add_batch_host( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'c') job_format_add_min_cpus( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'C') job_format_add_num_cpus( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'd') job_format_add_min_tmp_disk( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'D') job_format_add_num_nodes( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'e') job_format_add_time_end( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'E') job_format_add_dependency( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'f') job_format_add_features( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'g') job_format_add_group_name( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'G') job_format_add_group_id( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'h') job_format_add_shared( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'H') job_format_add_sockets( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'i') job_format_add_job_id( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'I') job_format_add_cores( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'j') job_format_add_name( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'J') job_format_add_threads( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'k') job_format_add_comment( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'l') job_format_add_time_limit( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'L') job_format_add_time_left( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'm') job_format_add_min_memory( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'M') job_format_add_time_used( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'n') job_format_add_req_nodes( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'N') job_format_add_nodes( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'O') job_format_add_contiguous( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'p') job_format_add_priority( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'P') job_format_add_partition( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'q') job_format_add_qos( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'Q') job_format_add_priority_long( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'r') job_format_add_reason( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'R') job_format_add_reason_list( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 's') job_format_add_select_jobinfo( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'S') job_format_add_time_start( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 't') job_format_add_job_state_compact( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'T') job_format_add_job_state( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'U') job_format_add_user_id( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'u') job_format_add_user_name( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'v') job_format_add_reservation( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'w') job_format_add_wckey( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'W') job_format_add_licenses( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'x') job_format_add_exc_nodes( params.format_list, field_size, right_justify, suffix ); else if (field[0] == 'z') job_format_add_num_sct( params.format_list, field_size, right_justify, suffix ); else { prefix = xstrdup("%"); xstrcat(prefix, token); xfree(suffix); suffix = prefix; job_format_add_invalid( params.format_list, field_size, right_justify, suffix ); error( "Invalid job format specification: %c", field[0] ); } } token = strtok_r( NULL, "%", &tmp_char); } xfree( tmp_format ); return SLURM_SUCCESS; }