diff --git a/src/sacct/print.c b/src/sacct/print.c index 9f21bb3b1e1a071f4de5027e43b1f3d704160c36..f552619d344b5be370eba7035e1133df2018b7dd 100644 --- a/src/sacct/print.c +++ b/src/sacct/print.c @@ -215,6 +215,36 @@ static void _xlate_task_str(slurmdb_job_rec_t *job_ptr) job_ptr->array_task_str = out_buf; } +static void +print_reservation(slurmdb_job_rec_t *job) +{ + char *temp = slurm_get_cluster_name(); + char *tmp_char; + int tmp_int; + slurmdb_reservation_cond_t *reservation_cond; + List resv_list = NULL; + + tmp_int = job->resvid; + tmp_char = job->account; + + reservation_cond = xmalloc(sizeof(slurmdb_reservation_cond_t)); + + reservation_cond->with_usage = 1; + reservation_cond->cluster_list = list_create(slurm_destroy_char); + list_append(reservation_cond->cluster_list, temp); + reservation_cond->name_list = list_create(slurm_destroy_char); + reservation_cond->id_list = list_create(slurm_destroy_char); + + sprintf(tmp_char, "%d", tmp_int); + slurm_addto_char_list(reservation_cond->id_list, + tmp_char); + resv_list = slurmdb_reservations_get(acct_db_conn, reservation_cond); + tmp_char = _find_reservation_name_from_list(resv_list, + tmp_int); + if (resv_list) + list_destroy(resv_list); +} + void print_fields(type_t type, void *object) { if (!object) { @@ -1508,29 +1538,11 @@ void print_fields(type_t type, void *object) case PRINT_RESERVATION: switch(type) { case JOB: - if (job->resvid) - { - char *temp = slurm_get_cluster_name(); - tmp_int = job->resvid; - tmp_char = job->account; - slurmdb_reservation_cond_t *reservation_cond = xmalloc(sizeof(slurmdb_reservation_cond_t)); - List resv_list = NULL; - reservation_cond->with_usage = 1; - reservation_cond->cluster_list = list_create(slurm_destroy_char); - if (temp) - list_append(reservation_cond->cluster_list, temp); - reservation_cond->name_list = list_create(slurm_destroy_char); - reservation_cond->id_list=list_create(slurm_destroy_char); - sprintf(tmp_char,"%d", tmp_int); - slurm_addto_char_list(reservation_cond->id_list, tmp_char); - resv_list = slurmdb_reservations_get( - acct_db_conn, reservation_cond); - tmp_char = _find_reservation_name_from_list(resv_list, - tmp_int); - if (resv_list) list_destroy(resv_list); - } - else + if (job->resvid) { + print_reservation(job); + } else { tmp_char = NULL; + } break; case JOBSTEP: tmp_char = NULL;