/****************************************************************************
- * Copyright (c) 2001-2005,2007 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2008,2009 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.12 2007/05/12 19:03:06 tom Exp $")
+MODULE_ID("$Id: lib_cchar.c,v 1.16 2009/10/24 23:21:31 tom Exp $")
/*
* The SuSv2 description leaves some room for interpretation. We'll assume wch
short color_pair,
const void *opts)
{
- int i;
- int len;
+ unsigned i;
+ unsigned len;
int code = OK;
TR(TRACE_CCALLS, (T_CALLED("setcchar(%p,%s,%lu,%d,%p)"),
- wcval, _nc_viswbuf(wch),
+ (void *) wcval, _nc_viswbuf(wch),
(unsigned long) attrs, color_pair, opts));
len = wcslen(wch);
int code = ERR;
TR(TRACE_CCALLS, (T_CALLED("getcchar(%p,%p,%p,%p,%p)"),
- wcval, wch, attrs, color_pair, opts));
+ (const void *) wcval,
+ (void *) wch,
+ (void *) attrs,
+ (void *) color_pair,
+ opts));
if (opts == NULL) {
len = (wp = wmemchr(wcval->chars, L'\0', CCHARW_MAX))
: CCHARW_MAX;
if (wch == NULL) {
- code = len;
+ /*
+ * If the value is a null, set the length to 1.
+ * If the value is not a null, return the length plus 1 for null.
+ */
+ code = (len < CCHARW_MAX) ? (len + 1) : CCHARW_MAX;
} else if (attrs == 0 || color_pair == 0) {
code = ERR;
} else if (len >= 0) {