Blame gettext-tools/gnulib-tests/wctob.c

Packit Bot 06c835
/* Convert wide character to unibyte character.
Packit Bot 06c835
   Copyright (C) 2008, 2010-2015 Free Software Foundation, Inc.
Packit Bot 06c835
   Written by Bruno Haible <bruno@clisp.org>, 2008.
Packit Bot 06c835
Packit Bot 06c835
   This program is free software: you can redistribute it and/or modify
Packit Bot 06c835
   it under the terms of the GNU General Public License as published by
Packit Bot 06c835
   the Free Software Foundation; either version 3 of the License, or
Packit Bot 06c835
   (at your option) any later version.
Packit Bot 06c835
Packit Bot 06c835
   This program is distributed in the hope that it will be useful,
Packit Bot 06c835
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Bot 06c835
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Bot 06c835
   GNU General Public License for more details.
Packit Bot 06c835
Packit Bot 06c835
   You should have received a copy of the GNU General Public License
Packit Bot 06c835
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit Bot 06c835
Packit Bot 06c835
#include <config.h>
Packit Bot 06c835
Packit Bot 06c835
/* Specification.  */
Packit Bot 06c835
#include <wchar.h>
Packit Bot 06c835
Packit Bot 06c835
#include <stdio.h>
Packit Bot 06c835
#include <stdlib.h>
Packit Bot 06c835
Packit Bot 06c835
int
Packit Bot 06c835
wctob (wint_t wc)
Packit Bot 06c835
{
Packit Bot 06c835
  char buf[64];
Packit Bot 06c835
Packit Bot 06c835
  if (!(MB_CUR_MAX <= sizeof (buf)))
Packit Bot 06c835
    abort ();
Packit Bot 06c835
  /* Handle the case where WEOF is a value that does not fit in a wchar_t.  */
Packit Bot 06c835
  if (wc == (wchar_t)wc)
Packit Bot 06c835
    if (wctomb (buf, (wchar_t)wc) == 1)
Packit Bot 06c835
      return (unsigned char) buf[0];
Packit Bot 06c835
  return EOF;
Packit Bot 06c835
}