1 /* wcswidth.c - compute display width of wide character string */ 2 3 /* Copyright (C) 2010 Free Software Foundation, Inc. 4 5 This file is part of GNU Bash, the Bourne Again SHell. 6 7 Bash is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or 10 (at your option) any later version. 11 12 Bash is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Bash. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #include <config.h> 22 23 #if defined (HANDLE_MULTIBYTE) && !defined (HAVE_WCSWIDTH) 24 25 #include <stdc.h> 26 #include <wchar.h> 27 #include <bashansi.h> 28 29 int wcswidth(pwcs,n)30wcswidth(pwcs, n) 31 const wchar_t *pwcs; 32 size_t n; 33 { 34 wchar_t wc; 35 int len, l; 36 37 len = 0; 38 while (n-- > 0 && (wc = *pwcs++) != L'\0') 39 { 40 if ((l = wcwidth(wc)) < 0) 41 return (-1); 42 len += l; 43 } 44 return (len); 45 } 46 #endif 47