https://invisible-island.net/ncurses/man/
menu_new(3x) Library calls menu_new(3x)
new_menu, free_menu - create and destroy menus
#include <menu.h> MENU *new_menu(ITEM **items); int free_menu(MENU *menu);
The function new_menu creates a new menu connected to a specified item pointer array (which must be NULL-terminated). The function free_menu disconnects menu from its item array and frees the storage allocated for the menu.
The function new_menu returns NULL on error. It sets errno according to the function's failure: E_NOT_CONNECTED No items are connected to the menu. E_SYSTEM_ERROR System error occurred, e.g., malloc failure. The function free_menu returns one of the following: E_OK The routine succeeded. E_SYSTEM_ERROR System error occurred (see errno(3)). E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. E_POSTED The menu has already been posted.
These routines emulate the System V menu library. They were not supported on Version 7 or BSD versions.
Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. Raymond.
curses(3x), menu(3x) ncurses 6.5 2024-03-16 menu_new(3x)