From f5a6b2a8c93a4f30e32f59280d91c7495b6879ef Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 5 Sep 2007 16:16:15 +0000 Subject: users/11818: allow non-numeric keys for job status parameters --- Src/Modules/parameter.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'Src/Modules/parameter.c') diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c index 3c7264a09..efb22fafd 100644 --- a/Src/Modules/parameter.c +++ b/Src/Modules/parameter.c @@ -1007,13 +1007,18 @@ getpmjobtext(UNUSED(HashTable ht), const char *name) { Param pm = NULL; int job; + char *pend; pm = (Param) hcalloc(sizeof(struct param)); pm->node.nam = dupstring(name); pm->node.flags = PM_SCALAR | PM_READONLY; pm->gsu.s = &nullsetscalar_gsu; - if ((job = atoi(name)) >= 1 && job <= maxjob && + job = strtod(name, &pend); + /* Non-numeric keys are looked up by job name */ + if (*pend) + job = getjob(name, NULL); + if (job >= 1 && job <= maxjob && jobtab[job].stat && jobtab[job].procs && !(jobtab[job].stat & STAT_NOPRINT)) pm->u.str = pmjobtext(job); @@ -1104,13 +1109,17 @@ getpmjobstate(UNUSED(HashTable ht), const char *name) { Param pm = NULL; int job; + char *pend; pm = (Param) hcalloc(sizeof(struct param)); pm->node.nam = dupstring(name); pm->node.flags = PM_SCALAR | PM_READONLY; pm->gsu.s = &nullsetscalar_gsu; - if ((job = atoi(name)) >= 1 && job <= maxjob && + job = strtod(name, &pend); + if (*pend) + job = getjob(name, NULL); + if (job >= 1 && job <= maxjob && jobtab[job].stat && jobtab[job].procs && !(jobtab[job].stat & STAT_NOPRINT)) pm->u.str = pmjobstate(job); @@ -1166,13 +1175,17 @@ getpmjobdir(UNUSED(HashTable ht), const char *name) { Param pm = NULL; int job; + char *pend; pm = (Param) hcalloc(sizeof(struct param)); pm->node.nam = dupstring(name); pm->node.flags = PM_SCALAR | PM_READONLY; pm->gsu.s = &nullsetscalar_gsu; - if ((job = atoi(name)) >= 1 && job <= maxjob && + job = strtod(name, &pend); + if (*pend) + job = getjob(name, NULL); + if (job >= 1 && job <= maxjob && jobtab[job].stat && jobtab[job].procs && !(jobtab[job].stat & STAT_NOPRINT)) pm->u.str = pmjobdir(job); -- cgit 1.4.1