i18n: New function recode_byte().
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 13 Feb 2011 19:36:27 +0000 (11:36 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 20 Feb 2011 00:56:48 +0000 (16:56 -0800)
src/language/data-io/print.c
src/libpspp/i18n.c
src/libpspp/i18n.h

index 1bcd047763f25cdba3d6f6509216b0ec0adc5ffa..ada59c3071f1bf6b2f10952e8773beb6144c6d57 100644 (file)
@@ -454,7 +454,7 @@ print_trns_proc (void *trns_, struct ccase **c, casenumber case_num UNUSED)
 {
   struct print_trns *trns = trns_;
   bool eject = trns->eject;
-  char encoded_space = legacy_from_native (trns->encoding, ' ');
+  char encoded_space = recode_byte (trns->encoding, LEGACY_NATIVE, ' ');
   int record = 1;
   struct prt_out_spec *spec;
 
@@ -518,7 +518,7 @@ flush_records (struct print_trns *trns, int target_record,
           else
             leader = '1';
         }
-      line[0] = legacy_from_native (trns->encoding, leader);
+      line[0] = recode_byte (trns->encoding, LEGACY_NATIVE, leader);
 
       if (trns->writer == NULL)
         tab_output_text (TAB_FIX, &line[1]);
index 59665bee63b6a44ba6910eea288d3ca8b1ae7b12..cb155723b3e8bc9867c848bc12a9ab8c85fb42c3 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2006, 2009, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -85,6 +85,20 @@ create_iconv (const char* tocode, const char* fromcode)
   return converter->conv;
 }
 
+/* Converts the single byte C from encoding FROM to TO, returning the first
+   byte of the result.
+
+   This function probably shouldn't be used at all, but some code still does
+   use it. */
+char
+recode_byte (const char *to, const char *from, char c)
+{
+  char x;
+  char *s = recode_string (to, from, &c, 1);
+  x = s[0];
+  free (s);
+  return x;
+}
 
 /* Similar to recode_string_pool, but allocates the returned value on the heap
    instead of in a pool.  It is the caller's responsibility to free the
index 37bd94406564e13a9282a8fd4d8e76a5e319a3bf..f1d4d4a25aeebcefbffede949bef6dab0d0b9276 100644 (file)
@@ -26,6 +26,8 @@ void  i18n_init (void);
 
 struct pool;
 
+char recode_byte (const char *to, const char *from, char);
+
 char *recode_string (const char *to, const char *from,
                      const char *text, int len);
 char *recode_string_pool (const char *to, const char *from,