Validates the display tasks ($strobe, $display, $write, $monitor,
$debug) and the full format-specifier surface using the committed
openvaf-r and ngspice-46. The Enhancement-71 audit found two defects,
both fixed:
- Flags and width were rejected for every non-real conversion —
%5d,%-8d,%+d,%08d,% d,%#oall failed with "unexpected character": the format parser only terminated on real conversions, in both the type-checking and code-generation layers. The general[flags][width][.precision][conversion]form now works for every conversion, including dynamic%*dwidths. %bcrashed the simulator (pre-existing, latent): the print codegen built the binary string and remembered it forfree()but never passed it tosnprintf— the matching%sread a garbage pointer. Any model printing%bsegfaulted ngspice.
Pinned printf-exact: all flags (- + 0 # space), fixed and dynamic
widths, precision, all conversions (%d %h %H %o %b %c %s %e %f %g),
%%, %m (module path), escape sequences, bare-argument defaults, and
all five display kinds.
python3 verify_display.py # 18 checks