diff options
| author | Berke Güzel <berke.guzel@gdh.digital> | 2026-10-15 12:29:25 +0300 |
|---|---|---|
| committer | Berke Güzel <berke.guzel@gdh.digital> | 2026-10-15 12:29:25 +0300 |
| commit | 57ebf3b3238a165c1973ecdf96ba79f95d650fc9 (patch) | |
| tree | 6c6ee6ee17a32d392d068ded61f7a5483ef73e7a /src/screen.c | |
| parent | 5f03033b0e211f9ed13e7a1351f9a8f9011ab665 (diff) | |
Add soversion, version macros, and reserved term_options words
The shared library now carries its major version in the SONAME
(libterm.so.0), so an ABI break gets a new file name. The header
gains TERM_VERSION, TERM_VERSION_MAJOR/MINOR/PATCH and
TERM_VERSION_CODE, and term_version() returns the code the library was
built with. A test checks the macros against meson.build's project
version and against the runtime value.
term_options ends with uint32_t reserved[8]. term_new() returns NULL if
a word is nonzero, so later versions can give those words a meaning
without misreading a caller's leftover data. All-zero options stay
valid.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Diffstat (limited to 'src/screen.c')
| -rw-r--r-- | src/screen.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/screen.c b/src/screen.c index 87d6f2c..c41234f 100644 --- a/src/screen.c +++ b/src/screen.c @@ -847,6 +847,9 @@ struct term *term_new(const struct term_options *opt) static const struct term_options defaults; if (!opt) opt = &defaults; + for (size_t i = 0; i < sizeof(opt->reserved) / sizeof(opt->reserved[0]); i++) + if (opt->reserved[i]) + return NULL; int cols = opt->size.x < 1 ? 80 : opt->size.x; int rows = opt->size.y < 1 ? 24 : opt->size.y; if (cols > TERM_MAX_COLS) |
