diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2011-05-04 23:39:43 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2011-05-04 23:39:43 +0300 |
commit | 1387c9a6046ba3a3e9ce8343daac42e1086efa6b (patch) | |
tree | d203a0f14aae778c0e907f1fca66c12fee3346e1 /eval.c | |
parent | f2b825c82aa6b0b2eabed734244148206f3c01a5 (diff) | |
download | egawk-1387c9a6046ba3a3e9ce8343daac42e1086efa6b.tar.gz egawk-1387c9a6046ba3a3e9ce8343daac42e1086efa6b.tar.bz2 egawk-1387c9a6046ba3a3e9ce8343daac42e1086efa6b.zip |
Revamp array sorting.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -2182,6 +2182,7 @@ post: NODE *array, *sort_str; size_t num_elems = 0; static NODE *sorted_in = NULL; + const char *how_to_sort = "@unsorted"; /* get the array */ array = POP_ARRAY(); @@ -2200,7 +2201,13 @@ post: if (PROCINFO_node != NULL) sort_str = in_array(PROCINFO_node, sorted_in); - list = assoc_list(array, sort_str, SORTED_IN); + if (sort_str != NULL) { + sort_str = force_string(sort_str); + if (sort_str->stlen > 0) + how_to_sort = sort_str->stptr; + } + + list = assoc_list(array, how_to_sort, SORTED_IN); list[num_elems] = array; /* actual array for use in * lint warning in Op_arrayfor_incr |