wcwidth.c (102134) | wcwidth.c (102137) |
---|---|
1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 26 unchanged lines hidden (view full) --- 35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 39 * SUCH DAMAGE. 40 */ 41 42#include <sys/cdefs.h> | 1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 26 unchanged lines hidden (view full) --- 35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 39 * SUCH DAMAGE. 40 */ 41 42#include <sys/cdefs.h> |
43__FBSDID("$FreeBSD: head/lib/libc/locale/wcwidth.c 102134 2002-08-19 20:12:38Z ache $"); | 43__FBSDID("$FreeBSD: head/lib/libc/locale/wcwidth.c 102137 2002-08-19 20:32:27Z ache $"); |
44 45#include <wchar.h> 46#include <wctype.h> 47 48#define _CTYPE_SWM 0xe0000000L /* Mask to get screen width data */ 49#define _CTYPE_SWS 30 /* Bits to shift to get width */ 50 51int | 44 45#include <wchar.h> 46#include <wctype.h> 47 48#define _CTYPE_SWM 0xe0000000L /* Mask to get screen width data */ 49#define _CTYPE_SWS 30 /* Bits to shift to get width */ 50 51int |
52wcwidth(wc) 53 wchar_t wc; | 52wcwidth(wchar_t wc) |
54{ 55 int width; 56 57 if (wc == L'\0') 58 return (0); 59 60 width = __maskrune(wc, _CTYPE_SWM); 61 62 /* 0 is autowidth (default) */ 63 return (width ? (int)((unsigned)width >> _CTYPE_SWS) 64 : (iswprint(wc) ? 1 : -1)); 65} 66 | 53{ 54 int width; 55 56 if (wc == L'\0') 57 return (0); 58 59 width = __maskrune(wc, _CTYPE_SWM); 60 61 /* 0 is autowidth (default) */ 62 return (width ? (int)((unsigned)width >> _CTYPE_SWS) 63 : (iswprint(wc) ? 1 : -1)); 64} 65 |