tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

recent terminfo changes


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
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.



Home | Main Index | Thread Index | Old Index