include curses.h when needed

This commit is contained in:
Ailin Nemui 2025-04-08 07:42:10 +02:00
parent fca3e83e68
commit 7bac5eb762
3 changed files with 31 additions and 4 deletions

View File

@ -569,6 +569,28 @@ foreach h : headers
endif endif
endforeach endforeach
if want_textui and conf.get('HAVE_TERM_H', 0) == 1
if not cc.links('''
#include <stdio.h>
#include <term.h>
int main () {
return tputs("x", 1, putchar);
}
''', dependencies : textui_dep)
if cc.has_header('curses.h') and cc.links('''
#include <curses.h>
#include <term.h>
int main () {
return tputs("x", 1, putchar);
}
''', dependencies : textui_dep, name : 'working Curses')
conf.set('NEED_CURSES_H', 1, description : 'tputs needs curses.h')
else
error('could not link terminfo')
endif
endif
endif
conf.set('HAVE_LIBUTF8PROC', have_libutf8proc) conf.set('HAVE_LIBUTF8PROC', have_libutf8proc)
conf.set_quoted('PACKAGE_VERSION', package_version) conf.set_quoted('PACKAGE_VERSION', package_version)
conf.set_quoted('PACKAGE_TARNAME', meson.project_name()) conf.set_quoted('PACKAGE_TARNAME', meson.project_name())

View File

@ -31,6 +31,9 @@
#include <stdio.h> #include <stdio.h>
#ifdef HAVE_TERM_H #ifdef HAVE_TERM_H
#ifdef NEED_CURSES_H
#include <curses.h>
#endif
#include <term.h> #include <term.h>
#else #else
/* TODO: This needs arguments, starting with C2X. */ /* TODO: This needs arguments, starting with C2X. */
@ -40,14 +43,13 @@ int tputs();
/* returns number of characters in the beginning of the buffer being a /* returns number of characters in the beginning of the buffer being a
a single character, or -1 if more input is needed. The character will be a single character, or -1 if more input is needed. The character will be
saved in result */ saved in result */
typedef int (*TERM_INPUT_FUNC)(const unsigned char *buffer, int size, typedef int (*TERM_INPUT_FUNC)(const unsigned char *buffer, int size, unichar *result);
unichar *result);
struct _TERM_WINDOW { struct _TERM_WINDOW {
/* Terminal to use for window */ /* Terminal to use for window */
TERM_REC *term; TERM_REC *term;
/* Area for window in terminal */ /* Area for window in terminal */
int x, y; int x, y;
int width, height; int width, height;
}; };

View File

@ -13,6 +13,9 @@ inline static int term_putchar(int c)
} }
#ifdef HAVE_TERM_H #ifdef HAVE_TERM_H
#ifdef NEED_CURSES_H
#include <curses.h>
#endif
#include <term.h> #include <term.h>
#else #else
/* Don't bother including curses.h because of these - /* Don't bother including curses.h because of these -