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