diff --git a/menu/llib-lmenutw b/menu/llib-lmenutw
index 0cd559e..0a0d059 100644
--- a/menu/llib-lmenutw
+++ b/menu/llib-lmenutw
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 2010 Free Software Foundation, Inc.                        *
+ * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2010,2015 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            *
@@ -27,7 +28,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *  Author: Thomas E. Dickey                    2010                        *
+ *  Author: Thomas E. Dickey       2010-on                                  *
  ****************************************************************************/
 /* LINTLIBRARY */
 
@@ -37,7 +38,7 @@
 
 #undef set_menu_fore
 int	set_menu_fore(
-		MENU	*menu, 
+		MENU	*menu,
 		chtype	attr)
 		{ return(*(int *)0); }
 
@@ -48,7 +49,7 @@
 
 #undef set_menu_back
 int	set_menu_back(
-		MENU	*menu, 
+		MENU	*menu,
 		chtype	attr)
 		{ return(*(int *)0); }
 
@@ -59,7 +60,7 @@
 
 #undef set_menu_grey
 int	set_menu_grey(
-		MENU	*menu, 
+		MENU	*menu,
 		chtype	attr)
 		{ return(*(int *)0); }
 
@@ -72,9 +73,9 @@
 
 #undef _nc_menu_cursor_pos
 int	_nc_menu_cursor_pos(
-		const MENU *menu, 
-		const ITEM *item, 
-		int	*pY, 
+		const MENU *menu,
+		const ITEM *item,
+		int	*pY,
 		int	*pX)
 		{ return(*(int *)0); }
 
@@ -87,14 +88,14 @@
 
 #undef _nc_Match_Next_Character_In_Item_Name
 int	_nc_Match_Next_Character_In_Item_Name(
-		MENU	*menu, 
-		int	ch, 
+		MENU	*menu,
+		int	ch,
 		ITEM	**item)
 		{ return(*(int *)0); }
 
 #undef menu_driver
 int	menu_driver(
-		MENU	*menu, 
+		MENU	*menu,
 		int	c)
 		{ return(*(int *)0); }
 
@@ -102,15 +103,15 @@
 
 #undef set_menu_format
 int	set_menu_format(
-		MENU	*menu, 
-		int	rows, 
+		MENU	*menu,
+		int	rows,
 		int	cols)
 		{ return(*(int *)0); }
 
 #undef menu_format
 void	menu_format(
-		const MENU *menu, 
-		int	*rows, 
+		const MENU *menu,
+		int	*rows,
 		int	*cols)
 		{ /* void */ }
 
@@ -123,7 +124,7 @@
 
 #undef _nc_Connect_Items
 NCURSES_BOOL _nc_Connect_Items(
-		MENU	*menu, 
+		MENU	*menu,
 		ITEM	**items)
 		{ return(*(NCURSES_BOOL *)0); }
 
@@ -154,8 +155,8 @@
 
 #undef _nc_New_TopRow_and_CurrentItem
 void	_nc_New_TopRow_and_CurrentItem(
-		MENU	*menu, 
-		int	new_toprow, 
+		MENU	*menu,
+		int	new_toprow,
 		ITEM	*new_current_item)
 		{ /* void */ }
 
@@ -163,7 +164,7 @@
 
 #undef set_menu_init
 int	set_menu_init(
-		MENU	*menu, 
+		MENU	*menu,
 		Menu_Hook func)
 		{ return(*(int *)0); }
 
@@ -174,7 +175,7 @@
 
 #undef set_menu_term
 int	set_menu_term(
-		MENU	*menu, 
+		MENU	*menu,
 		Menu_Hook func)
 		{ return(*(int *)0); }
 
@@ -185,7 +186,7 @@
 
 #undef set_item_init
 int	set_item_init(
-		MENU	*menu, 
+		MENU	*menu,
 		Menu_Hook func)
 		{ return(*(int *)0); }
 
@@ -196,7 +197,7 @@
 
 #undef set_item_term
 int	set_item_term(
-		MENU	*menu, 
+		MENU	*menu,
 		Menu_Hook func)
 		{ return(*(int *)0); }
 
@@ -209,7 +210,7 @@
 
 #undef set_current_item
 int	set_current_item(
-		MENU	*menu, 
+		MENU	*menu,
 		ITEM	*item)
 		{ return(*(int *)0); }
 
@@ -237,11 +238,9 @@
 
 /* ./m_item_new.c */
 
-#include <wctype.h>
-
 #undef new_item
 ITEM	*new_item(
-		const char *name, 
+		const char *name,
 		const char *description)
 		{ return(*(ITEM **)0); }
 
@@ -252,7 +251,7 @@
 
 #undef set_menu_mark
 int	set_menu_mark(
-		MENU	*menu, 
+		MENU	*menu,
 		const char *mark)
 		{ return(*(int *)0); }
 
@@ -265,19 +264,19 @@
 
 #undef set_item_opts
 int	set_item_opts(
-		ITEM	*item, 
+		ITEM	*item,
 		Item_Options opts)
 		{ return(*(int *)0); }
 
 #undef item_opts_off
 int	item_opts_off(
-		ITEM	*item, 
+		ITEM	*item,
 		Item_Options opts)
 		{ return(*(int *)0); }
 
 #undef item_opts_on
 int	item_opts_on(
-		ITEM	*item, 
+		ITEM	*item,
 		Item_Options opts)
 		{ return(*(int *)0); }
 
@@ -290,7 +289,7 @@
 
 #undef set_top_row
 int	set_top_row(
-		MENU	*menu, 
+		MENU	*menu,
 		int	row)
 		{ return(*(int *)0); }
 
@@ -303,7 +302,7 @@
 
 #undef set_item_userptr
 int	set_item_userptr(
-		ITEM	*item, 
+		ITEM	*item,
 		void	*userptr)
 		{ return(*(int *)0); }
 
@@ -316,7 +315,7 @@
 
 #undef set_item_value
 int	set_item_value(
-		ITEM	*item, 
+		ITEM	*item,
 		NCURSES_BOOL value)
 		{ return(*(int *)0); }
 
@@ -336,7 +335,7 @@
 
 #undef set_menu_items
 int	set_menu_items(
-		MENU	*menu, 
+		MENU	*menu,
 		ITEM	**items)
 		{ return(*(int *)0); }
 
@@ -354,7 +353,7 @@
 
 #undef new_menu_sp
 MENU	*new_menu_sp(
-		SCREEN	*sp, 
+		SCREEN	*sp,
 		ITEM	**items)
 		{ return(*(MENU **)0); }
 
@@ -372,19 +371,19 @@
 
 #undef set_menu_opts
 int	set_menu_opts(
-		MENU	*menu, 
+		MENU	*menu,
 		Menu_Options opts)
 		{ return(*(int *)0); }
 
 #undef menu_opts_off
 int	menu_opts_off(
-		MENU	*menu, 
+		MENU	*menu,
 		Menu_Options opts)
 		{ return(*(int *)0); }
 
 #undef menu_opts_on
 int	menu_opts_on(
-		MENU	*menu, 
+		MENU	*menu,
 		Menu_Options opts)
 		{ return(*(int *)0); }
 
@@ -397,7 +396,7 @@
 
 #undef set_menu_pad
 int	set_menu_pad(
-		MENU	*menu, 
+		MENU	*menu,
 		int	pad)
 		{ return(*(int *)0); }
 
@@ -415,7 +414,7 @@
 
 #undef set_menu_pattern
 int	set_menu_pattern(
-		MENU	*menu, 
+		MENU	*menu,
 		const char *p)
 		{ return(*(int *)0); }
 
@@ -423,7 +422,7 @@
 
 #undef _nc_Post_Item
 void	_nc_Post_Item(
-		const MENU *menu, 
+		const MENU *menu,
 		const ITEM *item)
 		{ /* void */ }
 
@@ -458,8 +457,8 @@
 
 #undef scale_menu
 int	scale_menu(
-		const MENU *menu, 
-		int	*rows, 
+		const MENU *menu,
+		int	*rows,
 		int	*cols)
 		{ return(*(int *)0); }
 
@@ -467,17 +466,17 @@
 
 #undef set_menu_spacing
 int	set_menu_spacing(
-		MENU	*menu, 
-		int	s_desc, 
-		int	s_row, 
+		MENU	*menu,
+		int	s_desc,
+		int	s_row,
 		int	s_col)
 		{ return(*(int *)0); }
 
 #undef menu_spacing
 int	menu_spacing(
-		const MENU *menu, 
-		int	*s_desc, 
-		int	*s_row, 
+		const MENU *menu,
+		int	*s_desc,
+		int	*s_row,
 		int	*s_col)
 		{ return(*(int *)0); }
 
@@ -485,7 +484,7 @@
 
 #undef set_menu_sub
 int	set_menu_sub(
-		MENU	*menu, 
+		MENU	*menu,
 		WINDOW	*win)
 		{ return(*(int *)0); }
 
@@ -530,7 +529,7 @@
 
 #undef set_menu_userptr
 int	set_menu_userptr(
-		MENU	*menu, 
+		MENU	*menu,
 		void	*userptr)
 		{ return(*(int *)0); }
 
@@ -543,7 +542,7 @@
 
 #undef set_menu_win
 int	set_menu_win(
-		MENU	*menu, 
+		MENU	*menu,
 		WINDOW	*win)
 		{ return(*(int *)0); }
 
