diff options
Diffstat (limited to 'gl/btowc.c')
| -rw-r--r-- | gl/btowc.c | 10 |
1 files changed, 9 insertions, 1 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* Convert unibyte character to wide character. | 1 | /* Convert unibyte character to wide character. |
| 2 | Copyright (C) 2008, 2010-2023 Free Software Foundation, Inc. | 2 | Copyright (C) 2008, 2010-2024 Free Software Foundation, Inc. |
| 3 | Written by Bruno Haible <bruno@clisp.org>, 2008. | 3 | Written by Bruno Haible <bruno@clisp.org>, 2008. |
| 4 | 4 | ||
| 5 | This file is free software: you can redistribute it and/or modify | 5 | This file is free software: you can redistribute it and/or modify |
| @@ -22,6 +22,7 @@ | |||
| 22 | 22 | ||
| 23 | #include <stdio.h> | 23 | #include <stdio.h> |
| 24 | #include <stdlib.h> | 24 | #include <stdlib.h> |
| 25 | #include <string.h> | ||
| 25 | 26 | ||
| 26 | wint_t | 27 | wint_t |
| 27 | btowc (int c) | 28 | btowc (int c) |
| @@ -32,7 +33,14 @@ btowc (int c) | |||
| 32 | wchar_t wc; | 33 | wchar_t wc; |
| 33 | 34 | ||
| 34 | buf[0] = c; | 35 | buf[0] = c; |
| 36 | #if HAVE_MBRTOWC | ||
| 37 | mbstate_t state; | ||
| 38 | mbszero (&state); | ||
| 39 | size_t ret = mbrtowc (&wc, buf, 1, &state); | ||
| 40 | if (!(ret == (size_t)(-1) || ret == (size_t)(-2))) | ||
| 41 | #else | ||
| 35 | if (mbtowc (&wc, buf, 1) >= 0) | 42 | if (mbtowc (&wc, buf, 1) >= 0) |
| 43 | #endif | ||
| 36 | return wc; | 44 | return wc; |
| 37 | } | 45 | } |
| 38 | return WEOF; | 46 | return WEOF; |
