I see you (Patrice) implemented a C version of a change I'd made to a Perl function:
2025-08-10 Patrice Dumas <[email protected]> detailmenu generation in C * tta/C/structuring_transfo/structuring.c (print_down_menus): implement change in detailmenu generation: check for presence of a 'menu_entry_name' element in a menu, and if found, do not use it to make a detailmenu. Update test result. I'd been pretty sure that there was no C function that also had to be updated. However, it seems I was wrong: 2025-08-06 Gavin Smith <[email protected]> detailmenu generation * tta/perl/Texinfo/Structuring.pm (_print_down_menus): Check for presence of a 'menu_entry_name' element in a menu, and if found, do not use it to make a detailmenu. (NB no XS override exists for this function.) * tta/perl/t/10menu.t (missing_detailmenu_menu_entry_names): new test. How was I supposed to know that the C function existed? I checked at the start of Texinfo/Structuring.pm, and while there are some XS overrides there, there weren't any for _print_down_menus, or for the function that calls it, new_detailmenu, or for the function that calls _it_, new_complete_menu_master_menu. Now, I've searched all the .xs files, and again found no mention of these functions. The only explanation I have is that these C functions are used directly by C versions of the conversion code, but they are not available from Perl code as XSUBs. As you can tell, I have a limited understanding of how all the Perl, XS, and non-XS C code fits together. Is it correct that these functions are not available as XSUBs? If so, what's the difference between the Perl functions that have XSUB versions and those that do not? And how is somebody working on the Perl source code supposed to know when there is a C version they should be updating too?
