diff --git a/man/curs_in_wchstr.3x b/man/curs_in_wchstr.3x
new file mode 100644
index 0000000..b04a1f5
--- /dev/null
+++ b/man/curs_in_wchstr.3x
@@ -0,0 +1,122 @@
+.\"***************************************************************************
+.\" Copyright (c) 2002-2005,2006 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            *
+.\" "Software"), to deal in the Software without restriction, including      *
+.\" without limitation the rights to use, copy, modify, merge, publish,      *
+.\" distribute, distribute with modifications, sublicense, and/or sell       *
+.\" copies of the Software, and to permit persons to whom the Software is    *
+.\" furnished to do so, subject to the following conditions:                 *
+.\"                                                                          *
+.\" The above copyright notice and this permission notice shall be included  *
+.\" in all copies or substantial portions of the Software.                   *
+.\"                                                                          *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+.\"                                                                          *
+.\" Except as contained in this notice, the name(s) of the above copyright   *
+.\" holders shall not be used in advertising or otherwise to promote the     *
+.\" sale, use or other dealings in this Software without prior written       *
+.\" authorization.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_in_wchstr.3x,v 1.6 2006/12/02 17:03:07 tom Exp $
+.TH curs_in_wchstr 3X ""
+.na
+.hy 0
+.SH NAME
+\fBin_wchstr\fR,
+\fBin_wchnstr\fR,
+\fBwin_wchstr\fR,
+\fBwin_wchnstr\fR,
+\fBmvin_wchstr\fR,
+\fBmvin_wchnstr\fR,
+\fBmvwin_wchstr\fR,
+\fBmvwin_wchnstr\fR \- get an array of complex characters and renditions from a curses window
+.ad
+.hy
+.SH SYNOPSIS
+.nf
+\fB#include <curses.h>\fR
+.sp
+\fBint in_wchstr(cchar_t *\fR\fIwchstr\fR\fB);\fR
+.br
+\fBint in_wchnstr(cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR
+.br
+\fBint win_wchstr(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwchstr\fR\fB);\fR
+.br
+\fBint win_wchnstr(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR
+.br
+\fBint mvin_wchstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwchstr\fR\fB);\fR
+.br
+\fBint mvin_wchnstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR
+.br
+\fBint mvwin_wchstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwchstr\fR\fB);\fR
+.br
+\fBint mvwin_wchnstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwchstr\fR, int \fIn\fR\fB);\fR
+.fi
+.SH DESCRIPTION
+These functions return an array of complex characters in \fIwchstr\fR,
+starting at the current cursor position in the named window.
+Attributes (rendition) are stored with the characters.
+.PP
+The
+\fBin_wchnstr\fR,
+\fBmvin_wchnstr\fR,
+\fBmvwin_wchnstr\fR
+and
+\fBwin_wchnstr\fR
+fill the array
+with at most
+\fIn\fR
+\fBcchar_t\fR
+elements.
+.br
+.SH NOTES
+Note that all routines except
+\fBwin_wchnstr\fR
+may be
+macros.
+.PP
+Reading a line that overflows the array pointed to by
+\fIwchstr\fR
+with
+\fBin_wchstr\fR,
+\fBmvin_wchstr\fR,
+\fBmvwin_wchstr\fR
+or
+\fBwin_wchstr\fR
+causes undefined results. Therefore, the use of
+\fBin_wchnstr\fR,
+\fBmvin_wchnstr\fR,
+\fBmvwin_wchnstr\fR, or
+\fBwin_wchnstr\fR
+is recommended.
+.SH RETURN VALUES
+Upon successful completion, these functions return
+\fBOK\fR.
+Otherwise, they return
+\fBERR\fR.
+.SH PORTABILITY
+The XSI Curses defines no error conditions.
+This implementation checks for null pointers,
+returning ERR in that case.
+.SH SEE ALSO
+Functions:
+\fBcurses\fR(3X),
+\fBcurs_in_wch\fR(3X),
+\fBcurs_instr\fR(3X),
+\fBcurs_inwstr\fR(3X)
+\fBcurs_inchstr\fR(3X)
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
