File tree Expand file tree Collapse file tree 3 files changed +41
-39
lines changed
Expand file tree Collapse file tree 3 files changed +41
-39
lines changed Original file line number Diff line number Diff 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-
421382static struct list_constraint * create_results_constraint (struct match_ctx * mctx ,
422383 json_t * values ,
423384 flux_error_t * errp )
Original file line number Diff line number Diff 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 */
Original file line number Diff line number Diff line change @@ -26,4 +26,6 @@ typedef int (*array_to_bitmask_f) (json_t *, flux_error_t *);
2626
2727int 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 */
You can’t perform that action at this time.
0 commit comments