diff options
author | aycabta <aycabta@gmail.com> | 2022-01-02 10:17:33 +0900 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2022-01-02 10:27:09 +0900 |
commit | 85f304b9315815f00c54db682a5bb3188c3fa2e8 (patch) | |
tree | 16c6bd4d1b51b98c3e21926166665c0a07fb1544 /lib/reline | |
parent | 071653ecd79287661c795400797a5402c4322129 (diff) | |
download | ruby-85f304b9315815f00c54db682a5bb3188c3fa2e8.tar.gz |
[ruby/reline] Implement Reline::Terminfo.tigetnum
https://github.com/ruby/reline/commit/695212d5d2
Diffstat (limited to 'lib/reline')
-rw-r--r-- | lib/reline/terminfo.rb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/reline/terminfo.rb b/lib/reline/terminfo.rb index 8b3105ceea..95ff082172 100644 --- a/lib/reline/terminfo.rb +++ b/lib/reline/terminfo.rb @@ -82,7 +82,14 @@ module Reline::Terminfo #extern 'int tgetflag(char *str)' @tigetflag = Fiddle::Function.new(curses_dl['tgetflag'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT) end - # TODO: add int tigetnum(char *capname) + begin + #extern 'int tigetnum(char *str)' + @tigetnum = Fiddle::Function.new(curses_dl['tigetnum'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT) + rescue Fiddle::DLError + # OpenBSD lacks tigetnum + #extern 'int tgetnum(char *str)' + @tigetnum = Fiddle::Function.new(curses_dl['tgetnum'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT) + end def self.setupterm(term, fildes) errret_int = String.new("\x00" * 8, encoding: 'ASCII-8BIT') @@ -141,6 +148,17 @@ module Reline::Terminfo flag end + def self.tigetnum(capname) + num = @tigetnum.(capname).to_i + case num + when -2 + raise TerminfoError, "not numeric capability: #{capname}" + when -1 + raise TerminfoError, "can't find capability: #{capname}" + end + num + end + def self.enabled? true end |