Hello, The recent terminfo ABI change to widen numeric constants from 16 bits to 32 bits was done in the following way:
1. Create a new terminfo2 database and rely on the fact that old programs will use the old filename and new ones will use the new filename. 2. Add compatibility code so that the new library can read the old terminfo database. This approach has issues. Aside from the visible effect to have a new file, it causes us to have to carry an old terminfo file around to keep old binaries working because we don't have a way to build the old terminfo file anymore. With a little more effort all this can be avoided: We can modify the writing code to only write entries in the new format for the terminal descriptions that require it. We can store those descriptions under a different name <name>@v2 for example, while storing a "compatible" description with the original name with the values that don't fit in 16 bits clamped. The code can try to find <name>@v2 first and if that fails, attempt to find the original name. This way we can store all the data in the same file (no need to create terminfo2 anymore), and have both old programs keep working, and new programs be able to use the wide fields. Please correct me where I am wrong. Best, christos