ps:  Fully truncate caption to zero before write

Don't ftruncate to the new output size -- this is bad.  It's bad because
(a) there's no advantage to extending the string in advance -- i.e. it's
not like an additional reallocation would be required otherwise, whereas
size() is relatively expensive; (b) truncating to zero instead avoids an
absolutely useless UTF-8 -> MacRoman conversion; and (c) said conversion
could (and did) fail and throw an exception if a multibyte character got
severed.  (This was behind the curious case of psmon spontaneously dying
during builds.)