Skip to content

Commit a0d28ce

Browse files
committed
job-list: move convenience function to util file
Problem: In the new future the array_to_results_bitmask() will be needed in multiple files. Move it from match.c to match_util.c.
1 parent 0015f2b commit a0d28ce

File tree

3 files changed

+41
-39
lines changed

3 files changed

+41
-39
lines changed

src/modules/job-list/match.c

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -379,45 +379,6 @@ static int match_results (struct list_constraint *c,
379379
return ((*results) & job->result) ? 1 : 0;
380380
}
381381

382-
static int array_to_results_bitmask (json_t *values, flux_error_t *errp)
383-
{
384-
int results = 0;
385-
json_t *entry;
386-
size_t index;
387-
int valid_results = (FLUX_JOB_RESULT_COMPLETED
388-
| FLUX_JOB_RESULT_FAILED
389-
| FLUX_JOB_RESULT_CANCELED
390-
| FLUX_JOB_RESULT_TIMEOUT);
391-
392-
json_array_foreach (values, index, entry) {
393-
flux_job_result_t result;
394-
if (json_is_string (entry)) {
395-
const char *resultstr = json_string_value (entry);
396-
if (flux_job_strtoresult (resultstr, &result) < 0) {
397-
errprintf (errp,
398-
"invalid results value '%s' specified",
399-
resultstr);
400-
return -1;
401-
}
402-
}
403-
else if (json_is_integer (entry)) {
404-
result = json_integer_value (entry);
405-
if (result & ~valid_results) {
406-
errprintf (errp,
407-
"invalid results value '%Xh' specified",
408-
result);
409-
return -1;
410-
}
411-
}
412-
else {
413-
errprintf (errp, "results value invalid type");
414-
return -1;
415-
}
416-
results |= result;
417-
}
418-
return results;
419-
}
420-
421382
static struct list_constraint *create_results_constraint (struct match_ctx *mctx,
422383
json_t *values,
423384
flux_error_t *errp)

src/modules/job-list/match_util.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,44 @@ int array_to_states_bitmask (json_t *values, flux_error_t *errp)
6060
return states;
6161
}
6262

63+
int array_to_results_bitmask (json_t *values, flux_error_t *errp)
64+
{
65+
int results = 0;
66+
json_t *entry;
67+
size_t index;
68+
int valid_results = (FLUX_JOB_RESULT_COMPLETED
69+
| FLUX_JOB_RESULT_FAILED
70+
| FLUX_JOB_RESULT_CANCELED
71+
| FLUX_JOB_RESULT_TIMEOUT);
72+
73+
json_array_foreach (values, index, entry) {
74+
flux_job_result_t result;
75+
if (json_is_string (entry)) {
76+
const char *resultstr = json_string_value (entry);
77+
if (flux_job_strtoresult (resultstr, &result) < 0) {
78+
errprintf (errp,
79+
"invalid results value '%s' specified",
80+
resultstr);
81+
return -1;
82+
}
83+
}
84+
else if (json_is_integer (entry)) {
85+
result = json_integer_value (entry);
86+
if (result & ~valid_results) {
87+
errprintf (errp,
88+
"invalid results value '%Xh' specified",
89+
result);
90+
return -1;
91+
}
92+
}
93+
else {
94+
errprintf (errp, "results value invalid type");
95+
return -1;
96+
}
97+
results |= result;
98+
}
99+
return results;
100+
}
101+
63102
/* vi: ts=4 sw=4 expandtab
64103
*/

src/modules/job-list/match_util.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,6 @@ typedef int (*array_to_bitmask_f) (json_t *, flux_error_t *);
2626

2727
int array_to_states_bitmask (json_t *values, flux_error_t *errp);
2828

29+
int array_to_results_bitmask (json_t *values, flux_error_t *errp);
30+
2931
#endif /* !HAVE_JOB_LIST_MATCH_UTIL_H */

0 commit comments

Comments
 (0)