diff --git a/src/api/job_info.c b/src/api/job_info.c index dca7b0b79a8f5563a0724abe719cc6447f1d5fa9..8acd9ed16bc8cd86c8cb3ca994efcf9957ce64d7 100644 --- a/src/api/job_info.c +++ b/src/api/job_info.c @@ -75,28 +75,34 @@ static void _fname_format(char *buf, int buf_size, job_info_t * job_ptr, char *ptr, *tmp, *tmp2 = NULL, *user; tmp = xstrdup(fname); - while ((ptr = strstr(tmp, "%A"))) { + while ((ptr = strstr(tmp, "%A"))) { /* Array job ID */ ptr[0] = '\0'; - xstrfmtcat(tmp2, "%s%u%s", tmp, job_ptr->array_job_id, ptr+2); + if (job_ptr->array_task_id == (uint16_t) NO_VAL) { + /* Not a job array */ + xstrfmtcat(tmp2, "%s%u%s", tmp, job_ptr->job_id, ptr+2); + } else { + xstrfmtcat(tmp2, "%s%u%s", tmp, job_ptr->array_job_id, + ptr+2); + } xfree(tmp); /* transfer the results */ tmp = tmp2; tmp2 = NULL; } - while ((ptr = strstr(tmp, "%a"))) { + while ((ptr = strstr(tmp, "%a"))) { /* Array task ID */ ptr[0] = '\0'; xstrfmtcat(tmp2, "%s%u%s", tmp, job_ptr->array_task_id, ptr+2); xfree(tmp); /* transfer the results */ tmp = tmp2; tmp2 = NULL; } - while ((ptr = strstr(tmp, "%j"))) { + while ((ptr = strstr(tmp, "%j"))) { /* Job ID */ ptr[0] = '\0'; xstrfmtcat(tmp2, "%s%u%s", tmp, job_ptr->job_id, ptr+2); xfree(tmp); /* transfer the results */ tmp = tmp2; tmp2 = NULL; } - while ((ptr = strstr(tmp, "%u"))) { + while ((ptr = strstr(tmp, "%u"))) { /* User name */ ptr[0] = '\0'; user = uid_to_string((uid_t) job_ptr->user_id); xstrfmtcat(tmp2, "%s%s%s", tmp, user, ptr+2); diff --git a/src/slurmd/slurmstepd/fname.c b/src/slurmd/slurmstepd/fname.c index c606c2b4c681ad7b1786341a8b38c674b05fafc3..f2801acbb796207d51a158e9dd3599dc8b469a20 100644 --- a/src/slurmd/slurmstepd/fname.c +++ b/src/slurmd/slurmstepd/fname.c @@ -107,8 +107,13 @@ fname_create(stepd_step_rec_t *job, const char *format, int taskid) break; case 'A': /* '%A' => array master job id */ xmemcat(name, q, p - 1); - xstrfmtcat(name, "%0*d", wid, - job->array_job_id); + if (job->array_task_id == (uint16_t) NO_VAL) { + xstrfmtcat(name, "%0*d", wid, + job->jobid); + } else { + xstrfmtcat(name, "%0*d", wid, + job->array_job_id); + } q = ++p; break; case 's': /* '%s' => step id */