Deleted Added
full compact
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