aboutsummaryrefslogtreecommitdiffstats
path: root/lib/reline
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2022-01-02 10:17:33 +0900
committergit <svn-admin@ruby-lang.org>2022-01-02 10:27:09 +0900
commit85f304b9315815f00c54db682a5bb3188c3fa2e8 (patch)
tree16c6bd4d1b51b98c3e21926166665c0a07fb1544 /lib/reline
parent071653ecd79287661c795400797a5402c4322129 (diff)
downloadruby-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.rb20
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