io-console 0.7.2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea376ca7a23381cc7ad476248aa32fc95ff2fe19be07170f6eb4031b42e897ab
4
- data.tar.gz: 321d946b43b46f279bb28d08c173c48b05e9c9a087d51cbcf1715153c772cda1
3
+ metadata.gz: a8485f98825214ba70388cfaf023a5380201fc1de70b87ffddb36a9a2603115c
4
+ data.tar.gz: db5deeb27f6bc90121cdb8ad6005aca2615f5a81976f97f09f25e63caed7070e
5
5
  SHA512:
6
- metadata.gz: 88f4b33458250ec0e9039c9187d144fb9c851753c39b7e5191db26e2b8a898ce5ac6d6897330c93ae8eab1c6a4cd800a7af9f36ce83fd20b6caedfc52a12ed50
7
- data.tar.gz: 4235ecf65e5e0b81c196d62a0a95649f708a29e2c300d645e99301dd3b6a470dc30b3cad6e2151b8ebf69c15c797962f62f55d6cdb935179f0656d2e450939af
6
+ metadata.gz: fcafaead8dd6a72e82e852ad8cf57bff49fb8fd8959520b8522c3fbf79bd97f1b218dd341f1e66656500c2a5ccd34045260655af948d86031e8f01ce19887df7
7
+ data.tar.gz: f8ebf55a9fef2383adda797b62824cc7b9cc9458c98fd9025bab2945111851651df9a44469ec10549d4ea063469870ba2cc32a4a25d3e68dc57206531bce6c54
@@ -4,10 +4,10 @@ Redistribution and use in source and binary forms, with or without
4
4
  modification, are permitted provided that the following conditions
5
5
  are met:
6
6
  1. Redistributions of source code must retain the above copyright
7
- notice, this list of conditions and the following disclaimer.
7
+ notice, this list of conditions and the following disclaimer.
8
8
  2. Redistributions in binary form must reproduce the above copyright
9
- notice, this list of conditions and the following disclaimer in the
10
- documentation and/or other materials provided with the distribution.
9
+ notice, this list of conditions and the following disclaimer in the
10
+ documentation and/or other materials provided with the distribution.
11
11
 
12
12
  THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
13
13
  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
data/COPYING ADDED
@@ -0,0 +1,56 @@
1
+ Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
2
+ You can redistribute it and/or modify it under either the terms of the
3
+ 2-clause BSDL (see the file BSDL), or the conditions below:
4
+
5
+ 1. You may make and give away verbatim copies of the source form of the
6
+ software without restriction, provided that you duplicate all of the
7
+ original copyright notices and associated disclaimers.
8
+
9
+ 2. You may modify your copy of the software in any way, provided that
10
+ you do at least ONE of the following:
11
+
12
+ a. place your modifications in the Public Domain or otherwise
13
+ make them Freely Available, such as by posting said
14
+ modifications to Usenet or an equivalent medium, or by allowing
15
+ the author to include your modifications in the software.
16
+
17
+ b. use the modified software only within your corporation or
18
+ organization.
19
+
20
+ c. give non-standard binaries non-standard names, with
21
+ instructions on where to get the original software distribution.
22
+
23
+ d. make other distribution arrangements with the author.
24
+
25
+ 3. You may distribute the software in object code or binary form,
26
+ provided that you do at least ONE of the following:
27
+
28
+ a. distribute the binaries and library files of the software,
29
+ together with instructions (in the manual page or equivalent)
30
+ on where to get the original distribution.
31
+
32
+ b. accompany the distribution with the machine-readable source of
33
+ the software.
34
+
35
+ c. give non-standard binaries non-standard names, with
36
+ instructions on where to get the original software distribution.
37
+
38
+ d. make other distribution arrangements with the author.
39
+
40
+ 4. You may modify and include the part of the software into any other
41
+ software (possibly commercial). But some files in the distribution
42
+ are not written by the author, so that they are not under these terms.
43
+
44
+ For the list of those files and their copying conditions, see the
45
+ file LEGAL.
46
+
47
+ 5. The scripts and library files supplied as input to or produced as
48
+ output from the software do not automatically fall under the
49
+ copyright of the software, but belong to whomever generated them,
50
+ and may be sold commercially, and may be aggregated with this
51
+ software.
52
+
53
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
54
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
55
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
56
+ PURPOSE.
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  static const char *const
7
- IO_CONSOLE_VERSION = "0.7.2";
7
+ IO_CONSOLE_VERSION = "0.8.0";
8
8
 
9
9
  #include "ruby.h"
10
10
  #include "ruby/io.h"
@@ -81,9 +81,14 @@ getattr(int fd, conmode *t)
81
81
 
82
82
  #define CSI "\x1b\x5b"
83
83
 
84
- static ID id_getc, id_console, id_close;
84
+ static ID id_getc, id_close;
85
85
  static ID id_gets, id_flush, id_chomp_bang;
86
86
 
87
+ #ifndef HAVE_RB_INTERNED_STR_CSTR
88
+ # define rb_str_to_interned_str(str) rb_str_freeze(str)
89
+ # define rb_interned_str_cstr(str) rb_str_freeze(rb_usascii_str_new_cstr(str))
90
+ #endif
91
+
87
92
  #if defined HAVE_RUBY_FIBER_SCHEDULER_H
88
93
  # include "ruby/fiber/scheduler.h"
89
94
  #elif defined HAVE_RB_SCHEDULER_TIMEOUT
@@ -125,7 +130,14 @@ io_get_write_io_fallback(VALUE io)
125
130
  #define rb_io_get_write_io io_get_write_io_fallback
126
131
  #endif
127
132
 
128
- #define sys_fail(io) rb_sys_fail_str(rb_io_path(io))
133
+ #ifndef DHAVE_RB_SYSERR_FAIL_STR
134
+ # define rb_syserr_fail_str(e, mesg) rb_exc_raise(rb_syserr_new_str(e, mesg))
135
+ #endif
136
+
137
+ #define sys_fail(io) do { \
138
+ int err = errno; \
139
+ rb_syserr_fail_str(err, rb_io_path(io)); \
140
+ } while (0)
129
141
 
130
142
  #ifndef HAVE_RB_F_SEND
131
143
  #ifndef RB_PASS_CALLED_KEYWORDS
@@ -1071,6 +1083,9 @@ console_scroll(VALUE io, int line)
1071
1083
  return io;
1072
1084
  }
1073
1085
 
1086
+ #define GPERF_DOWNCASE 1
1087
+ #define GPERF_CASE_STRCMP 1
1088
+ #define gperf_case_strcmp STRCASECMP
1074
1089
  #include "win32_vk.inc"
1075
1090
 
1076
1091
  /*
@@ -1535,10 +1550,8 @@ console_clear_screen(VALUE io)
1535
1550
  static VALUE
1536
1551
  io_open_descriptor_fallback(VALUE klass, int descriptor, int mode, VALUE path, VALUE timeout, void *encoding)
1537
1552
  {
1538
- rb_update_max_fd(descriptor);
1539
-
1540
1553
  VALUE arguments[2] = {
1541
- INT2NUM(descriptor),
1554
+ (rb_update_max_fd(descriptor), INT2NUM(descriptor)),
1542
1555
  INT2FIX(mode),
1543
1556
  };
1544
1557
 
@@ -1563,6 +1576,62 @@ rb_io_closed_p(VALUE io)
1563
1576
  }
1564
1577
  #endif
1565
1578
 
1579
+ #if defined(RB_EXT_RACTOR_SAFE) && defined(HAVE_RB_RACTOR_LOCAL_STORAGE_VALUE_NEWKEY)
1580
+ # define USE_RACTOR_STORAGE 1
1581
+ #else
1582
+ # define USE_RACTOR_STORAGE 0
1583
+ #endif
1584
+
1585
+ #if USE_RACTOR_STORAGE
1586
+ #include "ruby/ractor.h"
1587
+ static rb_ractor_local_key_t key_console_dev;
1588
+
1589
+ static bool
1590
+ console_dev_get(VALUE klass, VALUE *dev)
1591
+ {
1592
+ return rb_ractor_local_storage_value_lookup(key_console_dev, dev);
1593
+ }
1594
+
1595
+ static void
1596
+ console_dev_set(VALUE klass, VALUE value)
1597
+ {
1598
+ rb_ractor_local_storage_value_set(key_console_dev, value);
1599
+ }
1600
+
1601
+ static void
1602
+ console_dev_remove(VALUE klass)
1603
+ {
1604
+ console_dev_set(klass, Qnil);
1605
+ }
1606
+
1607
+ #else
1608
+
1609
+ static ID id_console;
1610
+
1611
+ static int
1612
+ console_dev_get(VALUE klass, VALUE *dev)
1613
+ {
1614
+ if (rb_const_defined(klass, id_console)) {
1615
+ *dev = rb_const_get(klass, id_console);
1616
+ return 1;
1617
+ }
1618
+ return 0;
1619
+ }
1620
+
1621
+ static void
1622
+ console_dev_set(VALUE klass, VALUE value)
1623
+ {
1624
+ rb_const_set(klass, id_console, value);
1625
+ }
1626
+
1627
+ static void
1628
+ console_dev_remove(VALUE klass)
1629
+ {
1630
+ rb_const_remove(klass, id_console);
1631
+ }
1632
+
1633
+ #endif
1634
+
1566
1635
  /*
1567
1636
  * call-seq:
1568
1637
  * IO.console -> #<File:/dev/tty>
@@ -1591,10 +1660,9 @@ console_dev(int argc, VALUE *argv, VALUE klass)
1591
1660
  // Force the class to be File.
1592
1661
  if (klass == rb_cIO) klass = rb_cFile;
1593
1662
 
1594
- if (rb_const_defined(klass, id_console)) {
1595
- con = rb_const_get(klass, id_console);
1663
+ if (console_dev_get(klass, &con)) {
1596
1664
  if (!RB_TYPE_P(con, T_FILE) || RTEST(rb_io_closed_p(con))) {
1597
- rb_const_remove(klass, id_console);
1665
+ console_dev_remove(klass);
1598
1666
  con = 0;
1599
1667
  }
1600
1668
  }
@@ -1603,7 +1671,7 @@ console_dev(int argc, VALUE *argv, VALUE klass)
1603
1671
  if (sym == ID2SYM(id_close) && argc == 1) {
1604
1672
  if (con) {
1605
1673
  rb_io_close(con);
1606
- rb_const_remove(klass, id_console);
1674
+ console_dev_remove(klass);
1607
1675
  con = 0;
1608
1676
  }
1609
1677
  return Qnil;
@@ -1623,7 +1691,6 @@ console_dev(int argc, VALUE *argv, VALUE klass)
1623
1691
  #endif
1624
1692
  #ifdef CONSOLE_DEVICE_FOR_WRITING
1625
1693
  VALUE out;
1626
- rb_io_t *ofptr;
1627
1694
  #endif
1628
1695
  int fd;
1629
1696
  VALUE path = rb_obj_freeze(rb_str_new2(CONSOLE_DEVICE));
@@ -1645,7 +1712,7 @@ console_dev(int argc, VALUE *argv, VALUE klass)
1645
1712
  #ifdef CONSOLE_DEVICE_FOR_WRITING
1646
1713
  rb_io_set_write_io(con, out);
1647
1714
  #endif
1648
- rb_const_set(klass, id_console, con);
1715
+ console_dev_set(klass, con);
1649
1716
  }
1650
1717
 
1651
1718
  if (sym) {
@@ -1756,18 +1823,81 @@ io_getpass(int argc, VALUE *argv, VALUE io)
1756
1823
  return str_chomp(str);
1757
1824
  }
1758
1825
 
1826
+ #if defined(_WIN32) || defined(HAVE_TTYNAME_R) || defined(HAVE_TTYNAME)
1827
+ /*
1828
+ * call-seq:
1829
+ * io.ttyname -> string or nil
1830
+ *
1831
+ * Returns name of associated terminal (tty) if +io+ is not a tty.
1832
+ * Returns +nil+ otherwise.
1833
+ */
1834
+ static VALUE
1835
+ console_ttyname(VALUE io)
1836
+ {
1837
+ int fd = rb_io_descriptor(io);
1838
+ if (!isatty(fd)) return Qnil;
1839
+ # if defined _WIN32
1840
+ return rb_usascii_str_new_lit("con");
1841
+ # elif defined HAVE_TTYNAME_R
1842
+ {
1843
+ char termname[1024], *tn = termname;
1844
+ size_t size = sizeof(termname);
1845
+ int e;
1846
+ if (ttyname_r(fd, tn, size) == 0)
1847
+ return rb_interned_str_cstr(tn);
1848
+ if ((e = errno) == ERANGE) {
1849
+ VALUE s = rb_str_new(0, size);
1850
+ while (1) {
1851
+ tn = RSTRING_PTR(s);
1852
+ size = rb_str_capacity(s);
1853
+ if (ttyname_r(fd, tn, size) == 0) {
1854
+ return rb_str_to_interned_str(rb_str_resize(s, strlen(tn)));
1855
+ }
1856
+ if ((e = errno) != ERANGE) break;
1857
+ if ((size *= 2) >= INT_MAX/2) break;
1858
+ rb_str_resize(s, size);
1859
+ }
1860
+ }
1861
+ rb_syserr_fail_str(e, rb_sprintf("ttyname_r(%d)", fd));
1862
+ UNREACHABLE_RETURN(Qnil);
1863
+ }
1864
+ # elif defined HAVE_TTYNAME
1865
+ {
1866
+ const char *tn = ttyname(fd);
1867
+ if (!tn) {
1868
+ int e = errno;
1869
+ rb_syserr_fail_str(e, rb_sprintf("ttyname(%d)", fd));
1870
+ }
1871
+ return rb_interned_str_cstr(tn);
1872
+ }
1873
+ # else
1874
+ # error No ttyname function
1875
+ # endif
1876
+ }
1877
+ #else
1878
+ # define console_ttyname rb_f_notimplement
1879
+ #endif
1880
+
1759
1881
  /*
1760
1882
  * IO console methods
1761
1883
  */
1762
1884
  void
1763
1885
  Init_console(void)
1764
1886
  {
1887
+ #if USE_RACTOR_STORAGE
1888
+ RB_EXT_RACTOR_SAFE(true);
1889
+ #endif
1890
+
1765
1891
  #undef rb_intern
1892
+ #if USE_RACTOR_STORAGE
1893
+ key_console_dev = rb_ractor_local_storage_value_newkey();
1894
+ #else
1895
+ id_console = rb_intern("console");
1896
+ #endif
1766
1897
  id_getc = rb_intern("getc");
1767
1898
  id_gets = rb_intern("gets");
1768
1899
  id_flush = rb_intern("flush");
1769
1900
  id_chomp_bang = rb_intern("chomp!");
1770
- id_console = rb_intern("console");
1771
1901
  id_close = rb_intern("close");
1772
1902
  #define init_rawmode_opt_id(name) \
1773
1903
  rawmode_opt_ids[kwd_##name] = rb_intern(#name)
@@ -1815,6 +1945,7 @@ InitVM_console(void)
1815
1945
  rb_define_method(rb_cIO, "pressed?", console_key_pressed_p, 1);
1816
1946
  rb_define_method(rb_cIO, "check_winsize_changed", console_check_winsize_changed, 0);
1817
1947
  rb_define_method(rb_cIO, "getpass", console_getpass, -1);
1948
+ rb_define_method(rb_cIO, "ttyname", console_ttyname, 0);
1818
1949
  rb_define_singleton_method(rb_cIO, "console", console_dev, -1);
1819
1950
  {
1820
1951
  /* :stopdoc: */
@@ -1826,7 +1957,7 @@ InitVM_console(void)
1826
1957
  {
1827
1958
  /* :stopdoc: */
1828
1959
  cConmode = rb_define_class_under(rb_cIO, "ConsoleMode", rb_cObject);
1829
- rb_define_const(cConmode, "VERSION", rb_str_new_cstr(IO_CONSOLE_VERSION));
1960
+ rb_define_const(cConmode, "VERSION", rb_obj_freeze(rb_str_new_cstr(IO_CONSOLE_VERSION)));
1830
1961
  rb_define_alloc_func(cConmode, conmode_alloc);
1831
1962
  rb_undef_method(cConmode, "initialize");
1832
1963
  rb_define_method(cConmode, "initialize_copy", conmode_init_copy, 1);
@@ -1,13 +1,30 @@
1
1
  # frozen_string_literal: false
2
2
  require 'mkmf'
3
3
 
4
+ # `--target-rbconfig` compatibility for Ruby 3.3 or earlier
5
+ # See https://bugs.ruby-lang.org/issues/20345
6
+ MakeMakefile::RbConfig ||= ::RbConfig
7
+
8
+ have_func("rb_syserr_fail_str(0, Qnil)") or
9
+ have_func("rb_syserr_new_str(0, Qnil)") or
10
+ abort
11
+
12
+ have_func("rb_interned_str_cstr")
4
13
  have_func("rb_io_path")
5
14
  have_func("rb_io_descriptor")
6
15
  have_func("rb_io_get_write_io")
7
16
  have_func("rb_io_closed_p")
8
17
  have_func("rb_io_open_descriptor")
18
+ have_func("rb_ractor_local_storage_value_newkey")
9
19
 
10
- ok = true if RUBY_ENGINE == "ruby" || RUBY_ENGINE == "truffleruby"
20
+ is_wasi = /wasi/ =~ MakeMakefile::RbConfig::CONFIG["platform"]
21
+ # `ok` can be `true`, `false`, or `nil`:
22
+ # * `true` : Required headers and functions available, proceed regular build.
23
+ # * `false`: Required headers or functions not available, abort build.
24
+ # * `nil` : Unsupported compilation target, generate dummy Makefile.
25
+ #
26
+ # Skip building io/console on WASI, as it does not support termios.h.
27
+ ok = true if (RUBY_ENGINE == "ruby" && !is_wasi) || RUBY_ENGINE == "truffleruby"
11
28
  hdr = nil
12
29
  case
13
30
  when macro_defined?("_WIN32", "")
@@ -35,6 +52,7 @@ when true
35
52
  elsif have_func("rb_scheduler_timeout") # 3.0
36
53
  have_func("rb_io_wait")
37
54
  end
55
+ have_func("ttyname_r") or have_func("ttyname")
38
56
  create_makefile("io/console") {|conf|
39
57
  conf << "\n""VK_HEADER = #{vk_header}\n"
40
58
  }
@@ -480,7 +480,7 @@
480
480
  # define VK_OEM_CLEAR UNDEFINED_VK
481
481
  #endif
482
482
  /* ANSI-C code produced by gperf version 3.1 */
483
- /* Command-line: gperf --ignore-case -E -C -P -p -j1 -i 1 -g -o -t -K ofs -N console_win32_vk -k'*' win32_vk.list */
483
+ /* Command-line: gperf --ignore-case -L ANSI-C -E -C -P -p -j1 -i 1 -g -o -t -K ofs -N console_win32_vk -k'*' win32_vk.list */
484
484
 
485
485
  #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
486
486
  && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
@@ -509,11 +509,10 @@
509
509
  #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
510
510
  #endif
511
511
 
512
- #define gperf_offsetof(s, n) (short)offsetof(struct s##_t, s##_str##n)
513
512
  #line 1 "win32_vk.list"
514
513
 
515
514
  struct vktable {short ofs; unsigned short vk;};
516
- static const struct vktable *console_win32_vk(/*const char *, unsigned int*/);
515
+ static const struct vktable *console_win32_vk(const char *, size_t);
517
516
  #line 5 "win32_vk.list"
518
517
  struct vktable;
519
518
  /* maximum key range = 245, duplicates = 0 */
@@ -1007,368 +1006,368 @@ console_win32_vk (register const char *str, register size_t len)
1007
1006
  {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
1008
1007
  {-1}, {-1}, {-1},
1009
1008
  #line 40 "win32_vk.list"
1010
- {gperf_offsetof(stringpool, 12), VK_UP},
1009
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str12, VK_UP},
1011
1010
  #line 52 "win32_vk.list"
1012
- {gperf_offsetof(stringpool, 13), VK_APPS},
1011
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str13, VK_APPS},
1013
1012
  #line 159 "win32_vk.list"
1014
- {gperf_offsetof(stringpool, 14), VK_CRSEL},
1013
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str14, VK_CRSEL},
1015
1014
  #line 34 "win32_vk.list"
1016
- {gperf_offsetof(stringpool, 15), VK_SPACE},
1015
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str15, VK_SPACE},
1017
1016
  #line 95 "win32_vk.list"
1018
- {gperf_offsetof(stringpool, 16), VK_SCROLL},
1017
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str16, VK_SCROLL},
1019
1018
  #line 29 "win32_vk.list"
1020
- {gperf_offsetof(stringpool, 17), VK_ESCAPE},
1019
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str17, VK_ESCAPE},
1021
1020
  #line 9 "win32_vk.list"
1022
- {gperf_offsetof(stringpool, 18), VK_CANCEL},
1021
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str18, VK_CANCEL},
1023
1022
  #line 32 "win32_vk.list"
1024
- {gperf_offsetof(stringpool, 19), VK_ACCEPT},
1023
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str19, VK_ACCEPT},
1025
1024
  #line 66 "win32_vk.list"
1026
- {gperf_offsetof(stringpool, 20), VK_SEPARATOR},
1025
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str20, VK_SEPARATOR},
1027
1026
  #line 43 "win32_vk.list"
1028
- {gperf_offsetof(stringpool, 21), VK_SELECT},
1027
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, VK_SELECT},
1029
1028
  #line 18 "win32_vk.list"
1030
- {gperf_offsetof(stringpool, 22), VK_CONTROL},
1029
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, VK_CONTROL},
1031
1030
  #line 166 "win32_vk.list"
1032
- {gperf_offsetof(stringpool, 23), VK_OEM_CLEAR},
1031
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str23, VK_OEM_CLEAR},
1033
1032
  #line 145 "win32_vk.list"
1034
- {gperf_offsetof(stringpool, 24), VK_OEM_RESET},
1033
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str24, VK_OEM_RESET},
1035
1034
  #line 155 "win32_vk.list"
1036
- {gperf_offsetof(stringpool, 25), VK_OEM_AUTO},
1035
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str25, VK_OEM_AUTO},
1037
1036
  #line 151 "win32_vk.list"
1038
- {gperf_offsetof(stringpool, 26), VK_OEM_CUSEL},
1037
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str26, VK_OEM_CUSEL},
1039
1038
  {-1},
1040
1039
  #line 22 "win32_vk.list"
1041
- {gperf_offsetof(stringpool, 28), VK_KANA},
1040
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, VK_KANA},
1042
1041
  #line 127 "win32_vk.list"
1043
- {gperf_offsetof(stringpool, 29), VK_OEM_PLUS},
1042
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str29, VK_OEM_PLUS},
1044
1043
  #line 35 "win32_vk.list"
1045
- {gperf_offsetof(stringpool, 30), VK_PRIOR},
1044
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str30, VK_PRIOR},
1046
1045
  #line 152 "win32_vk.list"
1047
- {gperf_offsetof(stringpool, 31), VK_OEM_ATTN},
1046
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str31, VK_OEM_ATTN},
1048
1047
  #line 20 "win32_vk.list"
1049
- {gperf_offsetof(stringpool, 32), VK_PAUSE},
1048
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str32, VK_PAUSE},
1050
1049
  #line 13 "win32_vk.list"
1051
- {gperf_offsetof(stringpool, 33), VK_BACK},
1050
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str33, VK_BACK},
1052
1051
  #line 144 "win32_vk.list"
1053
- {gperf_offsetof(stringpool, 34), VK_PACKET},
1052
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str34, VK_PACKET},
1054
1053
  #line 105 "win32_vk.list"
1055
- {gperf_offsetof(stringpool, 35), VK_RCONTROL},
1054
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str35, VK_RCONTROL},
1056
1055
  #line 104 "win32_vk.list"
1057
- {gperf_offsetof(stringpool, 36), VK_LCONTROL},
1056
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str36, VK_LCONTROL},
1058
1057
  #line 37 "win32_vk.list"
1059
- {gperf_offsetof(stringpool, 37), VK_END},
1058
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str37, VK_END},
1060
1059
  #line 38 "win32_vk.list"
1061
- {gperf_offsetof(stringpool, 38), VK_HOME},
1060
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, VK_HOME},
1062
1061
  #line 44 "win32_vk.list"
1063
- {gperf_offsetof(stringpool, 39), VK_PRINT},
1062
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str39, VK_PRINT},
1064
1063
  #line 94 "win32_vk.list"
1065
- {gperf_offsetof(stringpool, 40), VK_NUMLOCK},
1064
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str40, VK_NUMLOCK},
1066
1065
  #line 39 "win32_vk.list"
1067
- {gperf_offsetof(stringpool, 41), VK_LEFT},
1066
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str41, VK_LEFT},
1068
1067
  #line 25 "win32_vk.list"
1069
- {gperf_offsetof(stringpool, 42), VK_JUNJA},
1068
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str42, VK_JUNJA},
1070
1069
  #line 19 "win32_vk.list"
1071
- {gperf_offsetof(stringpool, 43), VK_MENU},
1070
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str43, VK_MENU},
1072
1071
  #line 150 "win32_vk.list"
1073
- {gperf_offsetof(stringpool, 44), VK_OEM_WSCTRL},
1072
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, VK_OEM_WSCTRL},
1074
1073
  #line 156 "win32_vk.list"
1075
- {gperf_offsetof(stringpool, 45), VK_OEM_ENLW},
1074
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, VK_OEM_ENLW},
1076
1075
  #line 36 "win32_vk.list"
1077
- {gperf_offsetof(stringpool, 46), VK_NEXT},
1076
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str46, VK_NEXT},
1078
1077
  #line 51 "win32_vk.list"
1079
- {gperf_offsetof(stringpool, 47), VK_RWIN},
1078
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str47, VK_RWIN},
1080
1079
  #line 50 "win32_vk.list"
1081
- {gperf_offsetof(stringpool, 48), VK_LWIN},
1080
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, VK_LWIN},
1082
1081
  #line 21 "win32_vk.list"
1083
- {gperf_offsetof(stringpool, 49), VK_CAPITAL},
1082
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, VK_CAPITAL},
1084
1083
  #line 49 "win32_vk.list"
1085
- {gperf_offsetof(stringpool, 50), VK_HELP},
1084
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, VK_HELP},
1086
1085
  #line 164 "win32_vk.list"
1087
- {gperf_offsetof(stringpool, 51), VK_NONAME},
1086
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str51, VK_NONAME},
1088
1087
  #line 8 "win32_vk.list"
1089
- {gperf_offsetof(stringpool, 52), VK_RBUTTON},
1088
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str52, VK_RBUTTON},
1090
1089
  #line 7 "win32_vk.list"
1091
- {gperf_offsetof(stringpool, 53), VK_LBUTTON},
1090
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str53, VK_LBUTTON},
1092
1091
  #line 96 "win32_vk.list"
1093
- {gperf_offsetof(stringpool, 54), VK_OEM_NEC_EQUAL},
1092
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, VK_OEM_NEC_EQUAL},
1094
1093
  {-1},
1095
1094
  #line 47 "win32_vk.list"
1096
- {gperf_offsetof(stringpool, 56), VK_INSERT},
1095
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str56, VK_INSERT},
1097
1096
  #line 27 "win32_vk.list"
1098
- {gperf_offsetof(stringpool, 57), VK_HANJA},
1097
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, VK_HANJA},
1099
1098
  {-1}, {-1},
1100
1099
  #line 46 "win32_vk.list"
1101
- {gperf_offsetof(stringpool, 60), VK_SNAPSHOT},
1100
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str60, VK_SNAPSHOT},
1102
1101
  #line 158 "win32_vk.list"
1103
- {gperf_offsetof(stringpool, 61), VK_ATTN},
1102
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str61, VK_ATTN},
1104
1103
  #line 14 "win32_vk.list"
1105
- {gperf_offsetof(stringpool, 62), VK_TAB},
1104
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str62, VK_TAB},
1106
1105
  #line 157 "win32_vk.list"
1107
- {gperf_offsetof(stringpool, 63), VK_OEM_BACKTAB},
1106
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str63, VK_OEM_BACKTAB},
1108
1107
  #line 143 "win32_vk.list"
1109
- {gperf_offsetof(stringpool, 64), VK_ICO_CLEAR},
1108
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str64, VK_ICO_CLEAR},
1110
1109
  #line 30 "win32_vk.list"
1111
- {gperf_offsetof(stringpool, 65), VK_CONVERT},
1110
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, VK_CONVERT},
1112
1111
  #line 16 "win32_vk.list"
1113
- {gperf_offsetof(stringpool, 66), VK_RETURN},
1112
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, VK_RETURN},
1114
1113
  #line 146 "win32_vk.list"
1115
- {gperf_offsetof(stringpool, 67), VK_OEM_JUMP},
1114
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str67, VK_OEM_JUMP},
1116
1115
  {-1}, {-1}, {-1},
1117
1116
  #line 111 "win32_vk.list"
1118
- {gperf_offsetof(stringpool, 71), VK_BROWSER_STOP},
1117
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, VK_BROWSER_STOP},
1119
1118
  #line 26 "win32_vk.list"
1120
- {gperf_offsetof(stringpool, 72), VK_FINAL},
1119
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str72, VK_FINAL},
1121
1120
  #line 163 "win32_vk.list"
1122
- {gperf_offsetof(stringpool, 73), VK_ZOOM},
1121
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, VK_ZOOM},
1123
1122
  #line 28 "win32_vk.list"
1124
- {gperf_offsetof(stringpool, 74), VK_KANJI},
1123
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str74, VK_KANJI},
1125
1124
  #line 48 "win32_vk.list"
1126
- {gperf_offsetof(stringpool, 75), VK_DELETE},
1125
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, VK_DELETE},
1127
1126
  #line 128 "win32_vk.list"
1128
- {gperf_offsetof(stringpool, 76), VK_OEM_COMMA},
1127
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, VK_OEM_COMMA},
1129
1128
  #line 67 "win32_vk.list"
1130
- {gperf_offsetof(stringpool, 77), VK_SUBTRACT},
1129
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str77, VK_SUBTRACT},
1131
1130
  {-1},
1132
1131
  #line 10 "win32_vk.list"
1133
- {gperf_offsetof(stringpool, 79), VK_MBUTTON},
1132
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str79, VK_MBUTTON},
1134
1133
  #line 78 "win32_vk.list"
1135
- {gperf_offsetof(stringpool, 80), VK_F9},
1134
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str80, VK_F9},
1136
1135
  #line 17 "win32_vk.list"
1137
- {gperf_offsetof(stringpool, 81), VK_SHIFT},
1136
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str81, VK_SHIFT},
1138
1137
  #line 103 "win32_vk.list"
1139
- {gperf_offsetof(stringpool, 82), VK_RSHIFT},
1138
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str82, VK_RSHIFT},
1140
1139
  #line 102 "win32_vk.list"
1141
- {gperf_offsetof(stringpool, 83), VK_LSHIFT},
1140
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str83, VK_LSHIFT},
1142
1141
  #line 65 "win32_vk.list"
1143
- {gperf_offsetof(stringpool, 84), VK_ADD},
1142
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str84, VK_ADD},
1144
1143
  #line 31 "win32_vk.list"
1145
- {gperf_offsetof(stringpool, 85), VK_NONCONVERT},
1144
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str85, VK_NONCONVERT},
1146
1145
  #line 160 "win32_vk.list"
1147
- {gperf_offsetof(stringpool, 86), VK_EXSEL},
1146
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str86, VK_EXSEL},
1148
1147
  #line 126 "win32_vk.list"
1149
- {gperf_offsetof(stringpool, 87), VK_OEM_1},
1148
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str87, VK_OEM_1},
1150
1149
  #line 138 "win32_vk.list"
1151
- {gperf_offsetof(stringpool, 88), VK_OEM_AX},
1150
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str88, VK_OEM_AX},
1152
1151
  #line 108 "win32_vk.list"
1153
- {gperf_offsetof(stringpool, 89), VK_BROWSER_BACK},
1152
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str89, VK_BROWSER_BACK},
1154
1153
  #line 137 "win32_vk.list"
1155
- {gperf_offsetof(stringpool, 90), VK_OEM_8},
1154
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str90, VK_OEM_8},
1156
1155
  #line 129 "win32_vk.list"
1157
- {gperf_offsetof(stringpool, 91), VK_OEM_MINUS},
1156
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str91, VK_OEM_MINUS},
1158
1157
  #line 162 "win32_vk.list"
1159
- {gperf_offsetof(stringpool, 92), VK_PLAY},
1158
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, VK_PLAY},
1160
1159
  #line 131 "win32_vk.list"
1161
- {gperf_offsetof(stringpool, 93), VK_OEM_2},
1160
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, VK_OEM_2},
1162
1161
  #line 15 "win32_vk.list"
1163
- {gperf_offsetof(stringpool, 94), VK_CLEAR},
1162
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str94, VK_CLEAR},
1164
1163
  #line 99 "win32_vk.list"
1165
- {gperf_offsetof(stringpool, 95), VK_OEM_FJ_TOUROKU},
1164
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, VK_OEM_FJ_TOUROKU},
1166
1165
  #line 147 "win32_vk.list"
1167
- {gperf_offsetof(stringpool, 96), VK_OEM_PA1},
1166
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str96, VK_OEM_PA1},
1168
1167
  #line 140 "win32_vk.list"
1169
- {gperf_offsetof(stringpool, 97), VK_ICO_HELP},
1168
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str97, VK_ICO_HELP},
1170
1169
  #line 112 "win32_vk.list"
1171
- {gperf_offsetof(stringpool, 98), VK_BROWSER_SEARCH},
1170
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str98, VK_BROWSER_SEARCH},
1172
1171
  #line 53 "win32_vk.list"
1173
- {gperf_offsetof(stringpool, 99), VK_SLEEP},
1172
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str99, VK_SLEEP},
1174
1173
  {-1},
1175
1174
  #line 70 "win32_vk.list"
1176
- {gperf_offsetof(stringpool, 101), VK_F1},
1175
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str101, VK_F1},
1177
1176
  #line 148 "win32_vk.list"
1178
- {gperf_offsetof(stringpool, 102), VK_OEM_PA2},
1177
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, VK_OEM_PA2},
1179
1178
  #line 154 "win32_vk.list"
1180
- {gperf_offsetof(stringpool, 103), VK_OEM_COPY},
1179
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, VK_OEM_COPY},
1181
1180
  #line 77 "win32_vk.list"
1182
- {gperf_offsetof(stringpool, 104), VK_F8},
1181
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str104, VK_F8},
1183
1182
  #line 88 "win32_vk.list"
1184
- {gperf_offsetof(stringpool, 105), VK_F19},
1183
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, VK_F19},
1185
1184
  #line 41 "win32_vk.list"
1186
- {gperf_offsetof(stringpool, 106), VK_RIGHT},
1185
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, VK_RIGHT},
1187
1186
  #line 71 "win32_vk.list"
1188
- {gperf_offsetof(stringpool, 107), VK_F2},
1187
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str107, VK_F2},
1189
1188
  #line 135 "win32_vk.list"
1190
- {gperf_offsetof(stringpool, 108), VK_OEM_6},
1189
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, VK_OEM_6},
1191
1190
  #line 87 "win32_vk.list"
1192
- {gperf_offsetof(stringpool, 109), VK_F18},
1191
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str109, VK_F18},
1193
1192
  {-1},
1194
1193
  #line 117 "win32_vk.list"
1195
- {gperf_offsetof(stringpool, 111), VK_VOLUME_UP},
1194
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str111, VK_VOLUME_UP},
1196
1195
  {-1}, {-1},
1197
1196
  #line 120 "win32_vk.list"
1198
- {gperf_offsetof(stringpool, 114), VK_MEDIA_STOP},
1197
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str114, VK_MEDIA_STOP},
1199
1198
  #line 130 "win32_vk.list"
1200
- {gperf_offsetof(stringpool, 115), VK_OEM_PERIOD},
1199
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str115, VK_OEM_PERIOD},
1201
1200
  {-1},
1202
1201
  #line 161 "win32_vk.list"
1203
- {gperf_offsetof(stringpool, 117), VK_EREOF},
1202
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str117, VK_EREOF},
1204
1203
  {-1}, {-1}, {-1},
1205
1204
  #line 114 "win32_vk.list"
1206
- {gperf_offsetof(stringpool, 121), VK_BROWSER_HOME},
1205
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str121, VK_BROWSER_HOME},
1207
1206
  #line 75 "win32_vk.list"
1208
- {gperf_offsetof(stringpool, 122), VK_F6},
1207
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str122, VK_F6},
1209
1208
  {-1},
1210
1209
  #line 110 "win32_vk.list"
1211
- {gperf_offsetof(stringpool, 124), VK_BROWSER_REFRESH},
1210
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, VK_BROWSER_REFRESH},
1212
1211
  {-1},
1213
1212
  #line 165 "win32_vk.list"
1214
- {gperf_offsetof(stringpool, 126), VK_PA1},
1213
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, VK_PA1},
1215
1214
  #line 142 "win32_vk.list"
1216
- {gperf_offsetof(stringpool, 127), VK_PROCESSKEY},
1215
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str127, VK_PROCESSKEY},
1217
1216
  #line 68 "win32_vk.list"
1218
- {gperf_offsetof(stringpool, 128), VK_DECIMAL},
1217
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str128, VK_DECIMAL},
1219
1218
  #line 132 "win32_vk.list"
1220
- {gperf_offsetof(stringpool, 129), VK_OEM_3},
1219
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str129, VK_OEM_3},
1221
1220
  #line 107 "win32_vk.list"
1222
- {gperf_offsetof(stringpool, 130), VK_RMENU},
1221
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, VK_RMENU},
1223
1222
  #line 106 "win32_vk.list"
1224
- {gperf_offsetof(stringpool, 131), VK_LMENU},
1223
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, VK_LMENU},
1225
1224
  #line 98 "win32_vk.list"
1226
- {gperf_offsetof(stringpool, 132), VK_OEM_FJ_MASSHOU},
1225
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, VK_OEM_FJ_MASSHOU},
1227
1226
  #line 54 "win32_vk.list"
1228
- {gperf_offsetof(stringpool, 133), VK_NUMPAD0},
1227
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, VK_NUMPAD0},
1229
1228
  #line 24 "win32_vk.list"
1230
- {gperf_offsetof(stringpool, 134), VK_HANGUL},
1229
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str134, VK_HANGUL},
1231
1230
  #line 63 "win32_vk.list"
1232
- {gperf_offsetof(stringpool, 135), VK_NUMPAD9},
1231
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str135, VK_NUMPAD9},
1233
1232
  #line 23 "win32_vk.list"
1234
- {gperf_offsetof(stringpool, 136), VK_HANGEUL},
1233
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str136, VK_HANGEUL},
1235
1234
  #line 134 "win32_vk.list"
1236
- {gperf_offsetof(stringpool, 137), VK_OEM_5},
1235
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str137, VK_OEM_5},
1237
1236
  #line 149 "win32_vk.list"
1238
- {gperf_offsetof(stringpool, 138), VK_OEM_PA3},
1237
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str138, VK_OEM_PA3},
1239
1238
  #line 115 "win32_vk.list"
1240
- {gperf_offsetof(stringpool, 139), VK_VOLUME_MUTE},
1239
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str139, VK_VOLUME_MUTE},
1241
1240
  #line 133 "win32_vk.list"
1242
- {gperf_offsetof(stringpool, 140), VK_OEM_4},
1241
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str140, VK_OEM_4},
1243
1242
  #line 122 "win32_vk.list"
1244
- {gperf_offsetof(stringpool, 141), VK_LAUNCH_MAIL},
1243
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str141, VK_LAUNCH_MAIL},
1245
1244
  #line 97 "win32_vk.list"
1246
- {gperf_offsetof(stringpool, 142), VK_OEM_FJ_JISHO},
1245
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str142, VK_OEM_FJ_JISHO},
1247
1246
  #line 72 "win32_vk.list"
1248
- {gperf_offsetof(stringpool, 143), VK_F3},
1247
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, VK_F3},
1249
1248
  #line 101 "win32_vk.list"
1250
- {gperf_offsetof(stringpool, 144), VK_OEM_FJ_ROYA},
1249
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str144, VK_OEM_FJ_ROYA},
1251
1250
  #line 100 "win32_vk.list"
1252
- {gperf_offsetof(stringpool, 145), VK_OEM_FJ_LOYA},
1251
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str145, VK_OEM_FJ_LOYA},
1253
1252
  {-1},
1254
1253
  #line 42 "win32_vk.list"
1255
- {gperf_offsetof(stringpool, 147), VK_DOWN},
1254
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str147, VK_DOWN},
1256
1255
  {-1},
1257
1256
  #line 153 "win32_vk.list"
1258
- {gperf_offsetof(stringpool, 149), VK_OEM_FINISH},
1257
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str149, VK_OEM_FINISH},
1259
1258
  {-1},
1260
1259
  #line 74 "win32_vk.list"
1261
- {gperf_offsetof(stringpool, 151), VK_F5},
1260
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, VK_F5},
1262
1261
  {-1},
1263
1262
  #line 136 "win32_vk.list"
1264
- {gperf_offsetof(stringpool, 153), VK_OEM_7},
1263
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, VK_OEM_7},
1265
1264
  #line 73 "win32_vk.list"
1266
- {gperf_offsetof(stringpool, 154), VK_F4},
1265
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, VK_F4},
1267
1266
  #line 86 "win32_vk.list"
1268
- {gperf_offsetof(stringpool, 155), VK_F17},
1267
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, VK_F17},
1269
1268
  #line 55 "win32_vk.list"
1270
- {gperf_offsetof(stringpool, 156), VK_NUMPAD1},
1269
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, VK_NUMPAD1},
1271
1270
  #line 141 "win32_vk.list"
1272
- {gperf_offsetof(stringpool, 157), VK_ICO_00},
1271
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str157, VK_ICO_00},
1273
1272
  {-1},
1274
1273
  #line 62 "win32_vk.list"
1275
- {gperf_offsetof(stringpool, 159), VK_NUMPAD8},
1274
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, VK_NUMPAD8},
1276
1275
  {-1}, {-1},
1277
1276
  #line 56 "win32_vk.list"
1278
- {gperf_offsetof(stringpool, 162), VK_NUMPAD2},
1277
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, VK_NUMPAD2},
1279
1278
  {-1},
1280
1279
  #line 124 "win32_vk.list"
1281
- {gperf_offsetof(stringpool, 164), VK_LAUNCH_APP1},
1280
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str164, VK_LAUNCH_APP1},
1282
1281
  #line 109 "win32_vk.list"
1283
- {gperf_offsetof(stringpool, 165), VK_BROWSER_FORWARD},
1282
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, VK_BROWSER_FORWARD},
1284
1283
  {-1},
1285
1284
  #line 76 "win32_vk.list"
1286
- {gperf_offsetof(stringpool, 167), VK_F7},
1285
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, VK_F7},
1287
1286
  {-1}, {-1},
1288
1287
  #line 125 "win32_vk.list"
1289
- {gperf_offsetof(stringpool, 170), VK_LAUNCH_APP2},
1288
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str170, VK_LAUNCH_APP2},
1290
1289
  #line 64 "win32_vk.list"
1291
- {gperf_offsetof(stringpool, 171), VK_MULTIPLY},
1290
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str171, VK_MULTIPLY},
1292
1291
  {-1}, {-1},
1293
1292
  #line 45 "win32_vk.list"
1294
- {gperf_offsetof(stringpool, 174), VK_EXECUTE},
1293
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str174, VK_EXECUTE},
1295
1294
  {-1},
1296
1295
  #line 113 "win32_vk.list"
1297
- {gperf_offsetof(stringpool, 176), VK_BROWSER_FAVORITES},
1296
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str176, VK_BROWSER_FAVORITES},
1298
1297
  #line 60 "win32_vk.list"
1299
- {gperf_offsetof(stringpool, 177), VK_NUMPAD6},
1298
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str177, VK_NUMPAD6},
1300
1299
  {-1},
1301
1300
  #line 85 "win32_vk.list"
1302
- {gperf_offsetof(stringpool, 179), VK_F16},
1301
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, VK_F16},
1303
1302
  {-1}, {-1},
1304
1303
  #line 79 "win32_vk.list"
1305
- {gperf_offsetof(stringpool, 182), VK_F10},
1304
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str182, VK_F10},
1306
1305
  {-1}, {-1},
1307
1306
  #line 116 "win32_vk.list"
1308
- {gperf_offsetof(stringpool, 185), VK_VOLUME_DOWN},
1307
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str185, VK_VOLUME_DOWN},
1309
1308
  {-1}, {-1},
1310
1309
  #line 89 "win32_vk.list"
1311
- {gperf_offsetof(stringpool, 188), VK_F20},
1310
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, VK_F20},
1312
1311
  #line 119 "win32_vk.list"
1313
- {gperf_offsetof(stringpool, 189), VK_MEDIA_PREV_TRACK},
1312
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, VK_MEDIA_PREV_TRACK},
1314
1313
  {-1},
1315
1314
  #line 33 "win32_vk.list"
1316
- {gperf_offsetof(stringpool, 191), VK_MODECHANGE},
1315
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str191, VK_MODECHANGE},
1317
1316
  {-1}, {-1}, {-1}, {-1}, {-1},
1318
1317
  #line 83 "win32_vk.list"
1319
- {gperf_offsetof(stringpool, 197), VK_F14},
1318
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, VK_F14},
1320
1319
  #line 57 "win32_vk.list"
1321
- {gperf_offsetof(stringpool, 198), VK_NUMPAD3},
1320
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, VK_NUMPAD3},
1322
1321
  #line 11 "win32_vk.list"
1323
- {gperf_offsetof(stringpool, 199), VK_XBUTTON1},
1322
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, VK_XBUTTON1},
1324
1323
  {-1}, {-1}, {-1},
1325
1324
  #line 93 "win32_vk.list"
1326
- {gperf_offsetof(stringpool, 203), VK_F24},
1325
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, VK_F24},
1327
1326
  {-1},
1328
1327
  #line 12 "win32_vk.list"
1329
- {gperf_offsetof(stringpool, 205), VK_XBUTTON2},
1328
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str205, VK_XBUTTON2},
1330
1329
  #line 59 "win32_vk.list"
1331
- {gperf_offsetof(stringpool, 206), VK_NUMPAD5},
1330
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str206, VK_NUMPAD5},
1332
1331
  {-1}, {-1},
1333
1332
  #line 58 "win32_vk.list"
1334
- {gperf_offsetof(stringpool, 209), VK_NUMPAD4},
1333
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, VK_NUMPAD4},
1335
1334
  {-1}, {-1}, {-1}, {-1}, {-1},
1336
1335
  #line 121 "win32_vk.list"
1337
- {gperf_offsetof(stringpool, 215), VK_MEDIA_PLAY_PAUSE},
1336
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str215, VK_MEDIA_PLAY_PAUSE},
1338
1337
  {-1},
1339
1338
  #line 123 "win32_vk.list"
1340
- {gperf_offsetof(stringpool, 217), VK_LAUNCH_MEDIA_SELECT},
1339
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, VK_LAUNCH_MEDIA_SELECT},
1341
1340
  #line 80 "win32_vk.list"
1342
- {gperf_offsetof(stringpool, 218), VK_F11},
1341
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str218, VK_F11},
1343
1342
  {-1},
1344
1343
  #line 139 "win32_vk.list"
1345
- {gperf_offsetof(stringpool, 220), VK_OEM_102},
1344
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str220, VK_OEM_102},
1346
1345
  #line 118 "win32_vk.list"
1347
- {gperf_offsetof(stringpool, 221), VK_MEDIA_NEXT_TRACK},
1346
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, VK_MEDIA_NEXT_TRACK},
1348
1347
  #line 61 "win32_vk.list"
1349
- {gperf_offsetof(stringpool, 222), VK_NUMPAD7},
1348
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str222, VK_NUMPAD7},
1350
1349
  {-1},
1351
1350
  #line 90 "win32_vk.list"
1352
- {gperf_offsetof(stringpool, 224), VK_F21},
1351
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str224, VK_F21},
1353
1352
  {-1},
1354
1353
  #line 82 "win32_vk.list"
1355
- {gperf_offsetof(stringpool, 226), VK_F13},
1354
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str226, VK_F13},
1356
1355
  {-1}, {-1},
1357
1356
  #line 81 "win32_vk.list"
1358
- {gperf_offsetof(stringpool, 229), VK_F12},
1357
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str229, VK_F12},
1359
1358
  {-1}, {-1},
1360
1359
  #line 92 "win32_vk.list"
1361
- {gperf_offsetof(stringpool, 232), VK_F23},
1360
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, VK_F23},
1362
1361
  {-1}, {-1},
1363
1362
  #line 91 "win32_vk.list"
1364
- {gperf_offsetof(stringpool, 235), VK_F22},
1363
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str235, VK_F22},
1365
1364
  {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
1366
1365
  #line 84 "win32_vk.list"
1367
- {gperf_offsetof(stringpool, 242), VK_F15},
1366
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str242, VK_F15},
1368
1367
  {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
1369
1368
  {-1}, {-1}, {-1}, {-1},
1370
1369
  #line 69 "win32_vk.list"
1371
- {gperf_offsetof(stringpool, 256), VK_DIVIDE}
1370
+ {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, VK_DIVIDE}
1372
1371
  };
1373
1372
 
1374
1373
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
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.7.2
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nobu Nakada
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-18 00:00:00.000000000 Z
11
+ date: 2024-12-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: add console capabilities to IO instances.
14
14
  email: nobu@ruby-lang.org
@@ -18,7 +18,8 @@ extensions:
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - ".document"
21
- - LICENSE.txt
21
+ - BSDL
22
+ - COPYING
22
23
  - README.md
23
24
  - ext/io/console/console.c
24
25
  - ext/io/console/extconf.rb
@@ -31,7 +32,7 @@ licenses:
31
32
  metadata:
32
33
  source_code_url: https://github.com/ruby/io-console
33
34
  changelog_uri: https://github.com/ruby/io-console/releases
34
- post_install_message:
35
+ post_install_message:
35
36
  rdoc_options: []
36
37
  require_paths:
37
38
  - lib
@@ -46,8 +47,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
47
  - !ruby/object:Gem::Version
47
48
  version: '0'
48
49
  requirements: []
49
- rubygems_version: 3.6.0.dev
50
- signing_key:
50
+ rubygems_version: 3.5.11
51
+ signing_key:
51
52
  specification_version: 4
52
53
  summary: Console interface
53
54
  test_files: []