spv: Encode and decode AHEX format in light binary members.
[pspp] / src / output / spv / spv-writer.c
index 19ea047afab51cfbbf20a46e4f55548b0c114efa..092558d8321ce0d0ac1680b51e190ea58ff8ee47 100644 (file)
@@ -604,9 +604,11 @@ put_value (struct buf *buf, const struct pivot_value *value)
     case PIVOT_VALUE_STRING:
       put_byte (buf, 4);
       put_value_mod (buf, value, NULL);
-      put_format (buf,
-                  &(struct fmt_spec) { FMT_A, strlen (value->string.s), 0 },
-                  false);
+      size_t len = strlen (value->string.s);
+      if (value->string.hex)
+        put_format (buf, &(struct fmt_spec) { FMT_AHEX, len * 2, 0 }, false);
+      else
+        put_format (buf, &(struct fmt_spec) { FMT_A, len, 0 }, false);
       put_string (buf, value->string.value_label);
       put_string (buf, value->string.var_name);
       put_show_values (buf, value->string.show);