io-console 0.5.9 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/io/console/console.c +37 -13
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de02d043306e16f29960fa17d759837467ccefd601846e609b4885ea0daa78ff
|
4
|
+
data.tar.gz: c856d4c462e9c1ed04c22863b441fc0b2e0802ad9aae0a2a9307d92d3018dd45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1bc386a15fc15532d8c673a3769284f629a44c10402d5a8b9807ab142d1288eb3158ba6dc485f41e4fa9ead0081c180285fad1bc1f27cf6882e41b44ebdbcf0
|
7
|
+
data.tar.gz: 6476a4e36be5c0f49ec6ebddbfefb902e15d55fc09f726416bdfb9b781a2c7746504ce06c606fe1573af2cfe0fdb10338a78f1088cc43fcae3b71a133c0e87e9
|
data/ext/io/console/console.c
CHANGED
@@ -75,7 +75,7 @@ getattr(int fd, conmode *t)
|
|
75
75
|
#define SET_LAST_ERROR (0)
|
76
76
|
#endif
|
77
77
|
|
78
|
-
static ID id_getc, id_console, id_close
|
78
|
+
static ID id_getc, id_console, id_close;
|
79
79
|
#if ENABLE_IO_GETPASS
|
80
80
|
static ID id_gets, id_chomp_bang;
|
81
81
|
#endif
|
@@ -90,6 +90,10 @@ extern VALUE rb_scheduler_timeout(struct timeval *timeout);
|
|
90
90
|
#define sys_fail_fptr(fptr) rb_sys_fail_str((fptr)->pathv)
|
91
91
|
|
92
92
|
#ifndef HAVE_RB_F_SEND
|
93
|
+
#ifndef RB_PASS_CALLED_KEYWORDS
|
94
|
+
# define rb_funcallv_kw(recv, mid, arg, argv, kw_splat) rb_funcallv(recv, mid, arg, argv)
|
95
|
+
#endif
|
96
|
+
|
93
97
|
static ID id___send__;
|
94
98
|
|
95
99
|
static VALUE
|
@@ -104,22 +108,38 @@ rb_f_send(int argc, VALUE *argv, VALUE recv)
|
|
104
108
|
else {
|
105
109
|
vid = id___send__;
|
106
110
|
}
|
107
|
-
return
|
111
|
+
return rb_funcallv_kw(recv, vid, argc, argv, RB_PASS_CALLED_KEYWORDS);
|
108
112
|
}
|
109
113
|
#endif
|
110
114
|
|
115
|
+
enum rawmode_opt_ids {
|
116
|
+
kwd_min,
|
117
|
+
kwd_time,
|
118
|
+
kwd_intr,
|
119
|
+
rawmode_opt_id_count
|
120
|
+
};
|
121
|
+
static ID rawmode_opt_ids[rawmode_opt_id_count];
|
122
|
+
|
111
123
|
typedef struct {
|
112
124
|
int vmin;
|
113
125
|
int vtime;
|
114
126
|
int intr;
|
115
127
|
} rawmode_arg_t;
|
116
128
|
|
129
|
+
#ifndef UNDEF_P
|
130
|
+
# define UNDEF_P(obj) ((obj) == Qundef)
|
131
|
+
#endif
|
132
|
+
#ifndef NIL_OR_UNDEF_P
|
133
|
+
# define NIL_OR_UNDEF_P(obj) (NIL_P(obj) || UNDEF_P(obj))
|
134
|
+
#endif
|
135
|
+
|
117
136
|
static rawmode_arg_t *
|
118
137
|
rawmode_opt(int *argcp, VALUE *argv, int min_argc, int max_argc, rawmode_arg_t *opts)
|
119
138
|
{
|
120
139
|
int argc = *argcp;
|
121
140
|
rawmode_arg_t *optp = NULL;
|
122
141
|
VALUE vopts = Qnil;
|
142
|
+
VALUE optvals[rawmode_opt_id_count];
|
123
143
|
#ifdef RB_SCAN_ARGS_PASS_CALLED_KEYWORDS
|
124
144
|
argc = rb_scan_args(argc, argv, "*:", NULL, &vopts);
|
125
145
|
#else
|
@@ -134,19 +154,20 @@ rawmode_opt(int *argcp, VALUE *argv, int min_argc, int max_argc, rawmode_arg_t *
|
|
134
154
|
}
|
135
155
|
#endif
|
136
156
|
rb_check_arity(argc, min_argc, max_argc);
|
137
|
-
if (
|
138
|
-
|
139
|
-
VALUE
|
140
|
-
VALUE
|
157
|
+
if (rb_get_kwargs(vopts, rawmode_opt_ids,
|
158
|
+
0, rawmode_opt_id_count, optvals)) {
|
159
|
+
VALUE vmin = optvals[kwd_min];
|
160
|
+
VALUE vtime = optvals[kwd_time];
|
161
|
+
VALUE intr = optvals[kwd_intr];
|
141
162
|
/* default values by `stty raw` */
|
142
163
|
opts->vmin = 1;
|
143
164
|
opts->vtime = 0;
|
144
165
|
opts->intr = 0;
|
145
|
-
if (!
|
166
|
+
if (!NIL_OR_UNDEF_P(vmin)) {
|
146
167
|
opts->vmin = NUM2INT(vmin);
|
147
168
|
optp = opts;
|
148
169
|
}
|
149
|
-
if (!
|
170
|
+
if (!NIL_OR_UNDEF_P(vtime)) {
|
150
171
|
VALUE v10 = INT2FIX(10);
|
151
172
|
vtime = rb_funcall3(vtime, '*', 1, &v10);
|
152
173
|
opts->vtime = NUM2INT(vtime);
|
@@ -161,6 +182,7 @@ rawmode_opt(int *argcp, VALUE *argv, int min_argc, int max_argc, rawmode_arg_t *
|
|
161
182
|
opts->intr = 0;
|
162
183
|
optp = opts;
|
163
184
|
break;
|
185
|
+
case Qundef:
|
164
186
|
case Qnil:
|
165
187
|
break;
|
166
188
|
default:
|
@@ -555,8 +577,8 @@ console_getch(int argc, VALUE *argv, VALUE io)
|
|
555
577
|
if (w < 0) rb_eof_error();
|
556
578
|
if (!(w & RB_WAITFD_IN)) return Qnil;
|
557
579
|
# else
|
558
|
-
VALUE result = rb_io_wait(io, RUBY_IO_READABLE, timeout);
|
559
|
-
if (result
|
580
|
+
VALUE result = rb_io_wait(io, RB_INT2NUM(RUBY_IO_READABLE), timeout);
|
581
|
+
if (!RTEST(result)) return Qnil;
|
560
582
|
# endif
|
561
583
|
}
|
562
584
|
else if (optp->vtime) {
|
@@ -1629,9 +1651,11 @@ Init_console(void)
|
|
1629
1651
|
#endif
|
1630
1652
|
id_console = rb_intern("console");
|
1631
1653
|
id_close = rb_intern("close");
|
1632
|
-
|
1633
|
-
|
1634
|
-
|
1654
|
+
#define init_rawmode_opt_id(name) \
|
1655
|
+
rawmode_opt_ids[kwd_##name] = rb_intern(#name)
|
1656
|
+
init_rawmode_opt_id(min);
|
1657
|
+
init_rawmode_opt_id(time);
|
1658
|
+
init_rawmode_opt_id(intr);
|
1635
1659
|
#ifndef HAVE_RB_F_SEND
|
1636
1660
|
id___send__ = rb_intern("__send__");
|
1637
1661
|
#endif
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: io-console
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nobu Nakada
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: add console capabilities to IO instances.
|
14
14
|
email: nobu@ruby-lang.org
|
@@ -37,14 +37,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: 2.6.0
|
41
41
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
42
|
requirements:
|
43
43
|
- - ">="
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
requirements: []
|
47
|
-
rubygems_version: 3.
|
47
|
+
rubygems_version: 3.4.0.dev
|
48
48
|
signing_key:
|
49
49
|
specification_version: 4
|
50
50
|
summary: Console interface
|