perl-module: Use new var_get_encoding() function.
[pspp-builds.git] / perl-module / PSPP.xs
index 36300cc806daa17d022c71d49473108f0834b5f2..bc7961e6e7fcf717457e4afca000894bd1486625 100644 (file)
    02110-1301, USA. */
 
 
+#include <config.h>
+
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
 
-#include <config.h>
-
 #include "ppport.h"
 
 #include "minmax.h"
@@ -164,7 +164,11 @@ void
 onBoot (ver)
  const char *ver
 CODE:
- assert (0 == strcmp (ver, bare_version));
+ /* Check that the version is correct up to the length of 'ver'.
+    This allows PSPP autobuilders to add a "-build#" suffix to the
+    PSPP version without causing failures here. */
+ assert (0 == strncmp (ver, bare_version, strlen (ver)));
+
  i18n_init ();
  msg_init (NULL, message_handler);
  settings_init (0, 0);
@@ -177,11 +181,10 @@ format_value (val, var)
 CODE:
  SV *ret;
  const struct fmt_spec *fmt = var_get_print_format (var);
- const struct dictionary *dict = var_get_vardict (var)->dict;
  union value uv;
  char *s;
  make_value_from_scalar (&uv, val, var);
- s = data_out (&uv, dict_get_encoding (dict), fmt);
+ s = data_out (&uv, var_get_encoding (var), fmt);
  value_destroy (&uv, var_get_width (var));
  ret = newSVpv (s, fmt->w);
  free (s);
@@ -580,6 +583,7 @@ CODE:
  struct file_handle *fh =
   fh_create_file (NULL, name, fh_default_properties () );
  struct sysfile_info *sfi = xmalloc (sizeof (*sfi));
+ dict_set_encoding (dict, "UTF-8");
  sfi->writer = sfm_open_writer (fh, dict, opts);
  sfi->dict = dict;
  sfi->opened = true;