ISTM that you can remove "force_column_header" and just set "tuple_only" to what you need, that is you do not need to change anything in function "print_unaligned_text".
Last point is not possible - I would not to break original tuple only mode.
Hmmm... I do not understand. I can see only one use of force_column_header in the function:
- if (!opt_tuples_only) + if (!opt_tuples_only || opt_force_column_header)
So I would basically suggest to do:
my_popt.topt.tuples_only = !pset.g_raw_header;
in the driver. Looking at the detailed code in that function, probably you need to set start_table to on when headers are needed and stop_table to off for the raw mode anyway?
Maybe I'm missing something, but it looks that it could be made to work without adding another boolean.
The tuples only cannot be disabled, because then other parts print number of rows
postgres=# \pset format unaligned Output format is unaligned.
postgres=# select 10 as a, 20 as b; a|b 10|20 (1 row) ----<<<<<