From d123470555c2e5696e1fc7de6f0ef33cdef42edc Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 12 Nov 2008 12:29:05 +0100 Subject: [PATCH] Don't duplicate a function defined elsewhere in gnulib. --- ChangeLog | 6 ++++++ lib/unicodeio.c | 44 +++----------------------------------------- lib/unicodeio.h | 6 +++--- modules/unicodeio | 1 + 4 files changed, 13 insertions(+), 44 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb5194d270..b4198cc997 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-11-12 Bruno Haible + + * lib/unicodeio.c: Include unistr.h. + (utf8_wctomb): Remove function. + (unicode_to_mb): Use utf8_uctomb instead of utf8_wctomb. + 2008-11-12 Simon Josefsson * m4/warnings.m4 (gl_WARN_INIT): Remove, suggested by Ralf diff --git a/lib/unicodeio.c b/lib/unicodeio.c index 31201d38bd..bfe7483a48 100644 --- a/lib/unicodeio.c +++ b/lib/unicodeio.c @@ -1,6 +1,6 @@ /* Unicode character output to streams with locale dependent encoding. - Copyright (C) 2000-2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2000-2003, 2006, 2008 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 @@ -17,9 +17,6 @@ /* Written by Bruno Haible . */ -/* Note: This file requires the locale_charset() function. See in - libiconv-1.8/libcharset/INTEGRATE for how to obtain it. */ - #include /* Specification. */ @@ -40,6 +37,7 @@ #define N_(msgid) msgid #include "localcharset.h" +#include "unistr.h" /* When we pass a Unicode character to iconv(), we must pass it in a suitable encoding. The standardized Unicode encodings are @@ -53,42 +51,6 @@ So we use UTF-8. It supports characters up to \U7FFFFFFF and is unambiguously defined. */ -/* Stores the UTF-8 representation of the Unicode character wc in r[0..5]. - Returns the number of bytes stored, or -1 if wc is out of range. */ -static int -utf8_wctomb (unsigned char *r, unsigned int wc) -{ - int count; - - if (wc < 0x80) - count = 1; - else if (wc < 0x800) - count = 2; - else if (wc < 0x10000) - count = 3; - else if (wc < 0x200000) - count = 4; - else if (wc < 0x4000000) - count = 5; - else if (wc <= 0x7fffffff) - count = 6; - else - return -1; - - switch (count) - { - /* Note: code falls through cases! */ - case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000; - case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000; - case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000; - case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800; - case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0; - case 1: r[0] = wc; - } - - return count; -} - /* Luckily, the encoding's name is platform independent. */ #define UTF8_NAME "UTF-8" @@ -144,7 +106,7 @@ unicode_to_mb (unsigned int code, } /* Convert the character to UTF-8. */ - count = utf8_wctomb ((unsigned char *) inbuf, code); + count = utf8_uctomb ((unsigned char *) inbuf, code, sizeof (inbuf)); if (count < 0) return failure (code, N_("character out of range"), callback_arg); diff --git a/lib/unicodeio.h b/lib/unicodeio.h index c797c4abc2..5a3400ddf0 100644 --- a/lib/unicodeio.h +++ b/lib/unicodeio.h @@ -1,6 +1,6 @@ /* Unicode character output to streams with locale dependent encoding. - Copyright (C) 2000-2003, 2005 Free Software Foundation, Inc. + Copyright (C) 2000-2003, 2005, 2008 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 @@ -38,11 +38,11 @@ extern long unicode_to_mb (unsigned int code, Upon failure, exit if exit_on_error is true, otherwise output a fallback notation. */ extern void print_unicode_char (FILE *stream, unsigned int code, - int exit_on_error); + int exit_on_error); /* Simple success callback that outputs the converted string. The STREAM is passed as callback_arg. */ extern long fwrite_success_callback (const char *buf, size_t buflen, - void *callback_arg); + void *callback_arg); #endif diff --git a/modules/unicodeio b/modules/unicodeio index 9186606403..45be9fd9ff 100644 --- a/modules/unicodeio +++ b/modules/unicodeio @@ -7,6 +7,7 @@ lib/unicodeio.c m4/unicodeio.m4 Depends-on: +unistr/u8-uctomb iconv iconv_open gettext-h -- 2.30.2