From 28bebf0851bac332b55cdc03e55165dcc8e713c2 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 13 Feb 2011 11:36:27 -0800 Subject: [PATCH] i18n: New function recode_byte(). --- src/language/data-io/print.c | 4 ++-- src/libpspp/i18n.c | 16 +++++++++++++++- src/libpspp/i18n.h | 2 ++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/language/data-io/print.c b/src/language/data-io/print.c index 1bcd0477..ada59c30 100644 --- a/src/language/data-io/print.c +++ b/src/language/data-io/print.c @@ -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]); diff --git a/src/libpspp/i18n.c b/src/libpspp/i18n.c index 59665bee..cb155723 100644 --- a/src/libpspp/i18n.c +++ b/src/libpspp/i18n.c @@ -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 diff --git a/src/libpspp/i18n.h b/src/libpspp/i18n.h index 37bd9440..f1d4d4a2 100644 --- a/src/libpspp/i18n.h +++ b/src/libpspp/i18n.h @@ -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, -- 2.30.2