The main idea of the patch is, if you want to format the output by ref-filter, you should have an ability to work with errors by yourself if you want to. So I decided not to touch signature of show_ref_array_item(), but to move all printing (I mean errors) to it. So that we could invoke format_ref_array_item() and be sure that we cold handle errors by ourselves.
The patch is not finished, but I decided to show it to you. There are still many places where we could die in the middle of formatting process. But, if you like the general idea, I will finish and re-send it. Another question is about verify_ref_format(). Do we need to allow its users also to manage errors by themselves? I left the old scenario, printing everything in verify_ref_format() and die. If you have better ideas, please share them. Thanks a lot! Olga