Subject: Re: CVS commit: basesrc
To: Jason Thorpe <thorpej@nas.nasa.gov>
From: Simon Burge <simonb@NetBSD.ORG>
List: source-changes
Date: 08/06/1999 09:22:56
[[ xposted to tech-userlevel, with reply-to set to there ]]
On source-changes, there's been a short discussion on the problems of
<curses.h> using strlen(), and the XCURSES spec saying that <curses.h>
including <string.h> isn't the right thing to do.
Jason Thorpe wrote:
> On Thu, 05 Aug 1999 19:18:58 +1000
> Simon Burge <simonb@NetBSD.ORG> wrote:
>
> > Since (I think) all the calls to strlen are in addstr() type functions,
> > and a negative string length in addstr() by definition means "the whole
> > string", maybe it's better to make __waddbytes() handle a negative
> > length the same way?
>
> that would probabably work, too :-)
I think the following is better. waddnstr is never a macro, and it
doesn't change the semantics of __waddbytes(). Look good? This also
shouldn't require bumping the libcurses minor either, should it?
Simon.
--
Index: curses.h
===================================================================
RCS file: /cvsroot/basesrc/lib/libcurses/curses.h,v
retrieving revision 1.24
diff -p -u -r1.24 curses.h
--- curses.h 1999/06/28 13:32:43 1.24
+++ curses.h 1999/08/05 23:22:31
@@ -307,7 +307,7 @@ extern char *ttytype; /* Full name of c
#define addbytes(s, n) __waddbytes(stdscr, s, n, 0)
#define addch(ch) waddch(stdscr, ch)
#define addnstr(s, n) waddnstr(stdscr, s, n)
-#define addstr(s) __waddbytes(stdscr, s, strlen(s), 0)
+#define addstr(s) waddnstr(stdscr, s, -1);
#define clear() wclear(stdscr)
#define clrtobot() wclrtobot(stdscr)
#define clrtoeol() wclrtoeol(stdscr)
@@ -330,7 +330,7 @@ extern char *ttytype; /* Full name of c
#define attroff(attr) wattroff(stdscr, attr)
#define attrset(attr) wattrset(stdscr, attr)
#define waddbytes(w, s, n) __waddbytes(w, s, n, 0)
-#define waddstr(w, s) __waddbytes(w, s, strlen(s), 0)
+#define waddstr(w, s) waddnstr(win, s, -1);
/* Attributes */
#define A_NORMAL __NORMAL
@@ -361,7 +361,7 @@ extern char *ttytype; /* Full name of c
#define mvwaddnstr(w, y, x, s, n) \
(wmove(w, y, x) == ERR ? ERR : waddnstr(w, s, n))
#define mvwaddstr(w, y, x, s) \
- (wmove(w, y, x) == ERR ? ERR : __waddbytes(w, s, strlen(s), 0))
+ (wmove(w, y, x) == ERR ? ERR : waddnstr(w, s, -1))
#define mvwdelch(w, y, x) \
(wmove(w, y, x) == ERR ? ERR : wdelch(w))
#define mvwgetch(w, y, x) \