+
+/* Adjusts FMT to be valid for a value of the given WIDTH. */
+void
+fmt_resize (struct fmt_spec *fmt, int width)
+{
+ if ((width > 0) != fmt_is_string (fmt->type))
+ {
+ /* Changed from numeric to string or vice versa. Set to
+ default format for new width. */
+ *fmt = fmt_default_for_width (width);
+ }
+ else if (width > 0)
+ {
+ /* Changed width of string. Preserve format type, adjust
+ width. */
+ fmt->w = fmt->type == FMT_AHEX ? width * 2 : width;
+ }
+ else
+ {
+ /* Still numeric. */
+ }
+}