1a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Convert unibyte character to wide character.
2a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   Copyright (C) 2008 Free Software Foundation, Inc.
3a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   Written by Bruno Haible <bruno@clisp.org>, 2008.
4a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
5a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   This program is free software: you can redistribute it and/or modify
6a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   it under the terms of the GNU General Public License as published by
7a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   the Free Software Foundation; either version 3 of the License, or
8a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   (at your option) any later version.
9a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
10a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   This program is distributed in the hope that it will be useful,
11a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   but WITHOUT ANY WARRANTY; without even the implied warranty of
12a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   GNU General Public License for more details.
14a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
15a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   You should have received a copy of the GNU General Public License
16a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
18a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#include <config.h>
19a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
20a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Specification.  */
21a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#include <wchar.h>
22a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
23a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#include <stdio.h>
24a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
25a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerwint_t
26a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerbtowc (int c)
27a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner{
28a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner  if (c != EOF)
29a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner    {
30a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner      char buf[1];
31a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner      wchar_t wc;
32a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
33a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner      buf[0] = c;
34a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner      if (mbtowc (&wc, buf, 1) >= 0)
35a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner	return wc;
36a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner    }
37a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner  return WEOF;
38a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner}
39