MCPcopy Create free account
hub / github.com/NetHack/NetHack / curses_create_nhmenu

Function curses_create_nhmenu

win/curses/cursdial.c:524–586  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

522/* Initialize a menu from given NetHack winid */
523
524void
525curses_create_nhmenu(winid wid, unsigned long mbehavior)
526{
527 nhmenu *new_menu = NULL;
528 nhmenu *menuptr = nhmenus;
529 nhmenu_item *menu_item_ptr = NULL;
530 nhmenu_item *tmp_menu_item = NULL;
531
532 new_menu = get_menu(wid);
533
534 if (new_menu != NULL) {
535 /* Reuse existing menu, clearing out current entries */
536 menu_item_ptr = new_menu->entries;
537
538 if (menu_item_ptr != NULL) {
539 while (menu_item_ptr->next_item != NULL) {
540 tmp_menu_item = menu_item_ptr->next_item;
541 free((genericptr_t) menu_item_ptr->str);
542 free((genericptr_t) menu_item_ptr);
543 menu_item_ptr = tmp_menu_item;
544 }
545 free((genericptr_t) menu_item_ptr->str);
546 free((genericptr_t) menu_item_ptr); /* Last entry */
547 new_menu->entries = NULL;
548 }
549 if (new_menu->prompt != NULL) { /* Reusing existing menu */
550 free((genericptr_t) new_menu->prompt);
551 new_menu->prompt = NULL;
552 }
553 new_menu->num_pages = 0;
554 new_menu->height = 0;
555 new_menu->width = 0;
556 new_menu->mbehavior = mbehavior;
557 new_menu->reuse_accels = FALSE;
558 new_menu->bottom_heavy = FALSE;
559 new_menu->show_obj_syms = FALSE;
560 return;
561 }
562
563 new_menu = (nhmenu *) alloc((signed) sizeof (nhmenu));
564 new_menu->wid = wid;
565 new_menu->prompt = NULL;
566 new_menu->entries = NULL;
567 new_menu->num_pages = 0;
568 new_menu->height = 0;
569 new_menu->width = 0;
570 new_menu->mbehavior = mbehavior;
571 new_menu->reuse_accels = FALSE;
572 new_menu->bottom_heavy = FALSE;
573 new_menu->show_obj_syms = FALSE;
574 new_menu->next_menu = NULL;
575
576 if (nhmenus == NULL) { /* no menus in memory yet */
577 new_menu->prev_menu = NULL;
578 nhmenus = new_menu;
579 } else {
580 while (menuptr->next_menu != NULL) {
581 menuptr = menuptr->next_menu;

Callers 3

curses_prev_mesgFunction · 0.85
curses_start_menuFunction · 0.85
curses_view_fileFunction · 0.85

Calls 2

get_menuFunction · 0.85
allocFunction · 0.50

Tested by

no test coverage detected