Skip to content
Snippets Groups Projects
Commit f816a1a6 authored by Brian Christiansen's avatar Brian Christiansen
Browse files

Add slurm_char_list_to_xstr() func

parent e1a6db89
No related branches found
No related tags found
No related merge requests found
...@@ -453,9 +453,7 @@ extern void print_fields_time_from_secs(print_field_t *field, ...@@ -453,9 +453,7 @@ extern void print_fields_time_from_secs(print_field_t *field,
extern void print_fields_char_list(print_field_t *field, List value, int last) extern void print_fields_char_list(print_field_t *field, List value, int last)
{ {
int abs_len = abs(field->len); int abs_len = abs(field->len);
ListIterator itr = NULL;
char *print_this = NULL; char *print_this = NULL;
char *object = NULL;
if (!value || !list_count(value)) { if (!value || !list_count(value)) {
if (print_fields_parsable_print) if (print_fields_parsable_print)
...@@ -463,15 +461,7 @@ extern void print_fields_char_list(print_field_t *field, List value, int last) ...@@ -463,15 +461,7 @@ extern void print_fields_char_list(print_field_t *field, List value, int last)
else else
print_this = xstrdup(" "); print_this = xstrdup(" ");
} else { } else {
list_sort(value, (ListCmpF)slurm_sort_char_list_asc); print_this = slurm_char_list_to_xstr(value);
itr = list_iterator_create(value);
while ((object = list_next(itr))) {
if (print_this)
xstrfmtcat(print_this, ",%s", object);
else
print_this = xstrdup(object);
}
list_iterator_destroy(itr);
} }
if (print_fields_parsable_print == PRINT_FIELDS_PARSABLE_NO_ENDING if (print_fields_parsable_print == PRINT_FIELDS_PARSABLE_NO_ENDING
......
...@@ -193,6 +193,32 @@ extern int slurm_find_char_in_list(void *x, void *key) ...@@ -193,6 +193,32 @@ extern int slurm_find_char_in_list(void *x, void *key)
return 0; return 0;
} }
static int _char_list_append_str(void *x, void *arg)
{
char *char_item = (char *)x;
char **out_str = (char **)arg;
xassert(char_item);
xassert(out_str);
xstrfmtcat(*out_str, "%s%s", *out_str ? "," : "", char_item);
return SLURM_SUCCESS;
}
extern char *slurm_char_list_to_xstr(List char_list)
{
char *out = NULL;
if (!char_list)
return NULL;
list_sort(char_list, (ListCmpF)slurm_sort_char_list_asc);
list_for_each(char_list, _char_list_append_str, &out);
return out;
}
/* returns number of objects added to list */ /* returns number of objects added to list */
extern int slurm_addto_char_list(List char_list, char *names) extern int slurm_addto_char_list(List char_list, char *names)
{ {
......
...@@ -1292,6 +1292,7 @@ extern List slurm_copy_char_list(List char_list); ...@@ -1292,6 +1292,7 @@ extern List slurm_copy_char_list(List char_list);
extern int slurm_addto_char_list(List char_list, char *names); extern int slurm_addto_char_list(List char_list, char *names);
extern int slurm_addto_mode_char_list(List char_list, char *names, int mode); extern int slurm_addto_mode_char_list(List char_list, char *names, int mode);
extern int slurm_addto_step_list(List step_list, char *names); extern int slurm_addto_step_list(List step_list, char *names);
extern char *slurm_char_list_to_xstr(List char_list);
extern int slurm_find_char_in_list(void *x, void *key); extern int slurm_find_char_in_list(void *x, void *key);
extern int slurm_sort_char_list_asc(void *, void *); extern int slurm_sort_char_list_asc(void *, void *);
extern int slurm_sort_char_list_desc(void *, void *); extern int slurm_sort_char_list_desc(void *, void *);
......
...@@ -2213,7 +2213,6 @@ extern char *get_qos_complete_str_bitstr(List qos_list, bitstr_t *valid_qos) ...@@ -2213,7 +2213,6 @@ extern char *get_qos_complete_str_bitstr(List qos_list, bitstr_t *valid_qos)
List temp_list = NULL; List temp_list = NULL;
char *temp_char = NULL; char *temp_char = NULL;
char *print_this = NULL; char *print_this = NULL;
ListIterator itr = NULL;
int i = 0; int i = 0;
if (!qos_list || !list_count(qos_list) if (!qos_list || !list_count(qos_list)
...@@ -2228,15 +2227,7 @@ extern char *get_qos_complete_str_bitstr(List qos_list, bitstr_t *valid_qos) ...@@ -2228,15 +2227,7 @@ extern char *get_qos_complete_str_bitstr(List qos_list, bitstr_t *valid_qos)
if ((temp_char = slurmdb_qos_str(qos_list, i))) if ((temp_char = slurmdb_qos_str(qos_list, i)))
list_append(temp_list, temp_char); list_append(temp_list, temp_char);
} }
list_sort(temp_list, (ListCmpF)slurm_sort_char_list_asc); print_this = slurm_char_list_to_xstr(temp_list);
itr = list_iterator_create(temp_list);
while((temp_char = list_next(itr))) {
if (print_this)
xstrfmtcat(print_this, ",%s", temp_char);
else
print_this = xstrdup(temp_char);
}
list_iterator_destroy(itr);
FREE_NULL_LIST(temp_list); FREE_NULL_LIST(temp_list);
if (!print_this) if (!print_this)
...@@ -2276,15 +2267,8 @@ extern char *get_qos_complete_str(List qos_list, List num_qos_list) ...@@ -2276,15 +2267,8 @@ extern char *get_qos_complete_str(List qos_list, List num_qos_list)
} }
} }
list_iterator_destroy(itr); list_iterator_destroy(itr);
list_sort(temp_list, (ListCmpF)slurm_sort_char_list_asc);
itr = list_iterator_create(temp_list); print_this = slurm_char_list_to_xstr(temp_list);
while((temp_char = list_next(itr))) {
if (print_this)
xstrfmtcat(print_this, ",%s", temp_char);
else
print_this = xstrdup(temp_char);
}
list_iterator_destroy(itr);
FREE_NULL_LIST(temp_list); FREE_NULL_LIST(temp_list);
if (!print_this) if (!print_this)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment