/****************************************************************************
- * Copyright (c) 2001-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2014,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include <curses.priv.h>
-MODULE_ID("$Id: lib_cchar.c,v 1.26 2012/03/24 18:37:17 tom Exp $")
+MODULE_ID("$Id: lib_cchar.c,v 1.28 2016/05/28 23:36:34 tom Exp $")
/*
* The SuSv2 description leaves some room for interpretation. We'll assume wch
setcchar(cchar_t *wcval,
const wchar_t *wch,
const attr_t attrs,
- short color_pair,
+ NCURSES_PAIRS_T color_pair,
const void *opts)
{
- unsigned i;
unsigned len;
int code = OK;
TR(TRACE_CCALLS, (T_CALLED("setcchar(%p,%s,%lu,%d,%p)"),
(void *) wcval, _nc_viswbuf(wch),
- (unsigned long) attrs, color_pair, opts));
+ (unsigned long) attrs, (int) color_pair, opts));
if (opts != NULL
|| wch == NULL
|| ((len = (unsigned) wcslen(wch)) > 1 && wcwidth(wch[0]) < 0)) {
code = ERR;
} else {
+ unsigned i;
+
if (len > CCHARW_MAX)
len = CCHARW_MAX;
getcchar(const cchar_t *wcval,
wchar_t *wch,
attr_t *attrs,
- short *color_pair,
+ NCURSES_PAIRS_T *color_pair,
void *opts)
{
- wchar_t *wp;
- int len;
int code = ERR;
TR(TRACE_CCALLS, (T_CALLED("getcchar(%p,%p,%p,%p,%p)"),
opts));
if (opts == NULL && wcval != NULL) {
+ wchar_t *wp;
+ int len;
+
len = ((wp = wmemchr(wcval->chars, L'\0', (size_t) CCHARW_MAX))
? (int) (wp - wcval->chars)
: CCHARW_MAX);
code = ERR;
} else if (len >= 0) {
*attrs = AttrOf(*wcval) & A_ATTRIBUTES;
- *color_pair = (short) GetPair(*wcval);
+ *color_pair = (NCURSES_PAIRS_T) GetPair(*wcval);
wmemcpy(wch, wcval->chars, (size_t) len);
wch[len] = L'\0';
code = OK;