diff --git a/src/scancel/scancel.c b/src/scancel/scancel.c index d21597fe17943fd3b1d93fa0dd7ae79f39cae34f..d9695fcc0a9e0ee62dd7126698c75a2c7916c456 100644 --- a/src/scancel/scancel.c +++ b/src/scancel/scancel.c @@ -55,9 +55,9 @@ static void _cancel_jobs (void); static void _cancel_job_id (uint32_t job_id, uint16_t signal); static void _cancel_step_id (uint32_t job_id, uint32_t step_id, uint16_t signal); -static int confirmation (int i); -static void filter_job_records (void); -static void load_job_records (void); +static int _confirmation (int i, uint32_t step_id); +static void _filter_job_records (void); +static void _load_job_records (void); static job_info_msg_t * job_buffer_ptr = NULL; @@ -78,8 +78,8 @@ main (int argc, char *argv[]) (opt.partition) || (opt.state != JOB_END) || (opt.user_name)) { - load_job_records (); - filter_job_records (); + _load_job_records (); + _filter_job_records (); } _cancel_jobs (); @@ -88,9 +88,9 @@ main (int argc, char *argv[]) } -/* load_job_records - load all job information for filtering and verification */ +/* _load_job_records - load all job information for filtering and verification */ static void -load_job_records (void) +_load_job_records (void) { int error_code; @@ -103,9 +103,9 @@ load_job_records (void) } -/* filter_job_records - filtering job information per user specification */ +/* _filter_job_records - filtering job information per user specification */ static void -filter_job_records (void) +_filter_job_records (void) { int i, j; job_info_t *job_ptr = NULL; @@ -166,13 +166,14 @@ _cancel_jobs (void) int i, j; job_info_t *job_ptr = NULL; - if (opt.job_cnt && opt.interactive) { /* delete jobs with interactive */ + if (opt.job_cnt && opt.interactive) { /* confirm cancel */ job_ptr = job_buffer_ptr->job_array ; for (j = 0; j < opt.job_cnt; j++ ) { for (i = 0; i < job_buffer_ptr->record_count; i++) { if (job_ptr[i].job_id != opt.job_id[j]) continue; - if (opt.interactive && (confirmation(i) == 0)) + if (opt.interactive && + (_confirmation(i, opt.step_id[j]) == 0)) break; if (opt.step_id[j] == NO_VAL) _cancel_job_id (opt.job_id[j], @@ -204,7 +205,8 @@ _cancel_jobs (void) for (i = 0; i < job_buffer_ptr->record_count; i++) { if (job_ptr[i].job_id == 0) continue; - if (opt.interactive && (confirmation(i) == 0)) + if (opt.interactive && + (_confirmation(i, NO_VAL) == 0)) continue; _cancel_job_id (job_ptr[i].job_id, opt.signal); } @@ -251,18 +253,24 @@ _cancel_step_id (uint32_t job_id, uint32_t step_id, uint16_t signal) } } -/* confirmation - Confirm job cancel request interactively */ +/* _confirmation - Confirm job cancel request interactively */ static int -confirmation (int i) +_confirmation (int i, uint32_t step_id) { char in_line[128]; job_info_t *job_ptr = NULL; job_ptr = job_buffer_ptr->job_array ; while (1) { - printf ("Cancel job_id=%u name=%s partition=%s [y/n]? ", - job_ptr[i].job_id, job_ptr[i].name, - job_ptr[i].partition); + if (step_id == NO_VAL) { + printf ("Cancel job_id=%u name=%s partition=%s [y/n]? ", + job_ptr[i].job_id, job_ptr[i].name, + job_ptr[i].partition); + } else { + printf ("Cancel step_id=%u.%u name=%s partition=%s [y/n]? ", + job_ptr[i].job_id, step_id, job_ptr[i].name, + job_ptr[i].partition); + } fgets (in_line, sizeof (in_line), stdin); if ((in_line[0] == 'y') || (in_line[0] == 'Y'))