@@ -74,7 +74,15 @@ module Reline::Terminfo
7474 #extern 'char *tparm(const char *str, ...)'
7575 @tiparm = Fiddle ::Function . new ( curses_dl [ 'tparm' ] , [ Fiddle ::TYPE_VOIDP , Fiddle ::TYPE_VARIADIC ] , Fiddle ::TYPE_VOIDP )
7676 end
77- # TODO: add int tigetflag(char *capname) and int tigetnum(char *capname)
77+ begin
78+ #extern 'char *tigetflag(const char *str, ...)'
79+ @tigetflag = Fiddle ::Function . new ( curses_dl [ 'tigetflag' ] , [ Fiddle ::TYPE_VOIDP ] , Fiddle ::TYPE_INT )
80+ rescue Fiddle ::DLError
81+ # OpenBSD lacks tigetflag
82+ #extern 'char *tgetflag(const char *str, ...)'
83+ @tigetflag = Fiddle ::Function . new ( curses_dl [ 'tgetflag' ] , [ Fiddle ::TYPE_VOIDP ] , Fiddle ::TYPE_INT )
84+ end
85+ # TODO: add int tigetnum(char *capname)
7886
7987 def self . setupterm ( term , fildes )
8088 errret_int = String . new ( "\x00 " * 8 , encoding : 'ASCII-8BIT' )
@@ -122,6 +130,17 @@ def self.tiparm(str, *args)
122130 @tiparm . ( str , *new_args ) . to_s
123131 end
124132
133+ def self . tigetflag ( capname )
134+ flag = @tigetflag . ( capname ) . to_i
135+ case flag
136+ when -1
137+ raise TerminfoError , "not boolean capability: #{ capname } "
138+ when 0
139+ raise TerminfoError , "can't find capability: #{ capname } "
140+ end
141+ flag
142+ end
143+
125144 def self . enabled?
126145 true
127146 end
0 commit comments