Here's the end result of the discussion (plus a small coding convention fix in utils.c). I included a comment about caller responsibility for %l but given that the only usage has to do with user-supplied strings, in practice there's nothing the caller can do about it anyway. I'm also not sure the metafy()+%s change is needed in parse.c, but I put it there to keep the end behavior the same.