supplement 2.20 → 2.22

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: 8787714cfe43e572f3ea76d897be6f62902bef77397723210e77cc05e9da3ffe
4
- data.tar.gz: ba6d8f69cbdc98f9573bc67af364272cc69400935d94e21a058e2836b0c989f5
3
+ metadata.gz: cfe383724f7aaa07dc2be7524d3ab6e11908ede513e133251b01989572343e59
4
+ data.tar.gz: 64121897e3f8388666664d0911b74ae18a4b8c378b6c38737edc0414e5262629
5
5
  SHA512:
6
- metadata.gz: 6e0f5c4e4ff4c1e515be996e30ff7f8437c13079718b832233bd591a9418e55c4f939522dec7023b8d1eb18b6b8c446f82316a3c82bf26530e3f5db2e74a9352
7
- data.tar.gz: 6811a569b15b096aeada5c792cb0474944735be1967c02a6d0f8489e56b30f191507af03e5cede067b1b27c87f9aa243030691209ef7f5370981310c0ba40e7c
6
+ metadata.gz: '0549d67c614aad498ad70160933d2122290b864013ff73b564a57b8f80a8cceaa86c9c57dd222641be738dbf6232e0dccb78b9b3610888055fdf5706bf678f8a'
7
+ data.tar.gz: eac0f15c6799f7e096abea90146351d33c905e85d78fe0e293a83a1ce611f96b10ba5bf6bc84c3f8271ac1822a8b702794066abe9c8210a5b3dddb0a88c94849
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = supplement 2.20 -- Useful Ruby enhancements
1
+ = supplement 2.22 -- Useful Ruby enhancements
2
2
 
3
3
 
4
4
  Some simple Ruby extensions.
data/lib/mkrf_conf CHANGED
@@ -10,12 +10,15 @@ Autorake.configure {
10
10
 
11
11
  extending_ruby
12
12
 
13
- if RUBY_VERSION < "2.7" then
14
- if RUBY_VERSION < "2.6" then
15
- enable :dir_children
13
+ if RUBY_VERSION < "3.3" then
14
+ if RUBY_VERSION < "2.7" then
15
+ if RUBY_VERSION < "2.6" then
16
+ enable :dir_children
17
+ end
18
+ else
19
+ enable :super_kwargs
16
20
  end
17
- else
18
- enable :super_kwargs
21
+ enable :old_io_functions
19
22
  end
20
23
 
21
24
  have_header "ruby/ruby.h"
@@ -72,55 +72,5 @@ class Date
72
72
  end
73
73
  end
74
74
 
75
- def months_forward n
76
- res = self
77
- n.times { res = res.next_month }
78
- res
79
- end
80
-
81
- def months_backward n
82
- res = self
83
- n.times { res = res.prev_month }
84
- res
85
- end
86
-
87
- end
88
-
89
-
90
- unless DateTime.method_defined? :to_time then
91
-
92
- class Time
93
- def to_time ; self ; end
94
- def to_date
95
- jd = Date.civil_to_jd year, mon, mday, Date::ITALY
96
- hd = Date.jd_to_ajd jd, 0, 0
97
- Date.new! hd, 0, Date::ITALY
98
- end
99
- def to_datetime
100
- jd = DateTime.civil_to_jd year, mon, mday, DateTime::ITALY
101
- fr = DateTime.time_to_day_fraction hour, min, [sec, 59].min
102
- fr += (Rational usec, 86400*1000000000)
103
- of = (Rational utc_offset, 86400)
104
- hd = DateTime.jd_to_ajd jd, fr, of
105
- DateTime.new! hd, of, DateTime::ITALY
106
- end
107
- end
108
-
109
- class Date
110
- def to_time ; Time.local year, mon, mday ; end
111
- def to_date ; self ; end
112
- def to_datetime ; DateTime.new! Date.jd_to_ajd(jd,0,0), @of, @sg ; end
113
- end
114
-
115
- class DateTime
116
- def to_time
117
- (new_offset 0).instance_eval do
118
- Time.utc year, mon, mday, hour, min, sec + sec_fraction
119
- end.getlocal
120
- end
121
- def to_date ; Date.new! Date.jd_to_ajd(jd,0,0), 0, @sg ; end
122
- def to_datetime ; self ; end
123
- end
124
-
125
75
  end
126
76
 
@@ -28,20 +28,35 @@
28
28
  VALUE
29
29
  rb_locked_init( int argc, VALUE *argv, VALUE self)
30
30
  {
31
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
32
+ rb_io_t *fptr;
33
+ #endif
31
34
  #ifdef HAVE_FUNC_RB_THREAD_WAIT_FOR
32
35
  struct timeval time;
33
36
  #endif
34
37
  int op;
35
38
 
39
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
40
+ GetOpenFile( self, fptr);
41
+ #endif
42
+
36
43
  #ifdef FEATURE_SUPER_KWARGS
37
44
  rb_call_super_kw(argc, argv, RB_PASS_CALLED_KEYWORDS);
38
45
  #else
39
46
  rb_call_super( argc, argv);
40
47
  #endif
41
48
 
49
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
50
+ op = fptr->mode & FMODE_WRITABLE ? LOCK_EX : LOCK_SH;
51
+ #else
42
52
  op = rb_io_mode( self) & FMODE_WRITABLE ? LOCK_EX : LOCK_SH;
53
+ #endif
43
54
  op |= LOCK_NB;
55
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
56
+ while (flock( fptr->fd, op) < 0) {
57
+ #else
44
58
  while (flock( rb_io_descriptor( self), op) < 0) {
59
+ #endif
45
60
  static ID id_lock_failed = 0;
46
61
 
47
62
  switch (errno) {
@@ -67,7 +82,11 @@ rb_locked_init( int argc, VALUE *argv, VALUE self)
67
82
  }
68
83
  break;
69
84
  default:
85
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
86
+ rb_sys_fail_str( fptr->pathv);
87
+ #else
70
88
  rb_sys_fail_str( rb_io_path( self));
89
+ #endif
71
90
  break;
72
91
  }
73
92
  }
@@ -13,7 +13,13 @@ static VALUE io_unget( VALUE);
13
13
  static VALUE io_reset( VALUE);
14
14
 
15
15
 
16
- #define RB_SYS_FAIL( io) rb_sys_fail_str( rb_io_path( io));
16
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
17
+ #define RB_FAIL_PATH( io, fptr) ((fptr)->pathv)
18
+ #define RB_IO_VAR( io, fptr) fptr
19
+ #else
20
+ #define RB_FAIL_PATH( io, fptr) rb_io_path( io)
21
+ #define RB_IO_VAR( io, fptr) io
22
+ #endif
17
23
 
18
24
  /*
19
25
  * call-seq:
@@ -27,20 +33,28 @@ static VALUE io_reset( VALUE);
27
33
  VALUE
28
34
  rb_io_unget( int argc, VALUE *argv, VALUE io)
29
35
  {
36
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
37
+ rb_io_t *fptr;
38
+ #endif
30
39
  int fd;
31
40
  struct termios oldtio, newtio;
32
41
  void *v[5];
33
42
 
43
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
44
+ GetOpenFile( io, fptr);
45
+ fd = fptr->fd;
46
+ #else
34
47
  fd = rb_io_descriptor( io);
48
+ #endif
35
49
 
36
50
  if (tcgetattr( fd, &oldtio) < 0)
37
- RB_SYS_FAIL( io);
51
+ rb_sys_fail_str( RB_FAIL_PATH( io, fptr));
38
52
  newtio = oldtio;
39
53
  newtio.c_iflag &= ~ICRNL;
40
54
  if (tcsetattr( fd, TCSANOW, &newtio) < 0)
41
- RB_SYS_FAIL( io);
55
+ rb_sys_fail_str( RB_FAIL_PATH( io, fptr));
42
56
 
43
- v[0] = &fd, v[1] = (void *) io, v[2] = &oldtio,
57
+ v[0] = &fd, v[1] = (void *) RB_IO_VAR( io, fptr), v[2] = &oldtio,
44
58
  v[3] = &argc, v[4] = (void *) argv;
45
59
  return rb_ensure( io_unget, (VALUE) v, io_reset, (VALUE) v);
46
60
  }
@@ -62,7 +76,7 @@ io_unget( VALUE v)
62
76
  p = RSTRING_PTR(str);
63
77
  for (i = RSTRING_LEN(str); i; --i, ++p)
64
78
  if (ioctl( *(int *) vp[0], TIOCSTI, p) < 0)
65
- RB_SYS_FAIL( (VALUE) vp[1]);
79
+ rb_sys_fail_str( RB_FAIL_PATH( (VALUE) vp[1], (rb_io_t *) vp[1]));
66
80
  }
67
81
  return Qnil;
68
82
  }
@@ -73,7 +87,7 @@ io_reset( VALUE v)
73
87
  void **vp = (void **) v;
74
88
 
75
89
  if (tcsetattr( *(int *) vp[0], TCSANOW, (struct termios *) vp[2]) < 0)
76
- RB_SYS_FAIL( (VALUE) vp[1]);
90
+ rb_sys_fail_str( RB_FAIL_PATH( (VALUE) vp[1], (rb_io_t *) vp[1]));
77
91
 
78
92
  return Qnil;
79
93
  }
@@ -91,14 +105,22 @@ io_reset( VALUE v)
91
105
  VALUE
92
106
  rb_io_wingeom( VALUE self)
93
107
  {
108
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
109
+ rb_io_t *fptr;
110
+ #endif
94
111
  int fd;
95
112
  struct winsize w;
96
113
  VALUE r;
97
114
 
115
+ #ifdef FEATURE_OLD_IO_FUNCTIONS
116
+ GetOpenFile( self, fptr);
117
+ fd = fptr->fd;
118
+ #else
98
119
  fd = rb_io_descriptor( self);
120
+ #endif
99
121
 
100
122
  if (ioctl( fd, TIOCGWINSZ, &w) < 0)
101
- RB_SYS_FAIL( self);
123
+ rb_sys_fail_str( RB_FAIL_PATH( self, fptr));
102
124
  r = rb_ary_new2( 4);
103
125
  rb_ary_store( r, 0, INT2NUM( w.ws_col));
104
126
  rb_ary_store( r, 1, INT2NUM( w.ws_row));
data/lib/supplement.c CHANGED
@@ -508,8 +508,6 @@ rb_str_starts_with_p( VALUE str, VALUE oth)
508
508
  char *s, *o;
509
509
  VALUE ost;
510
510
 
511
- if (!rb_str_comparable( str, oth))
512
- return Qnil;
513
511
  ost = rb_string_value( &oth);
514
512
  i = RSTRING_LEN( ost);
515
513
  if (i > RSTRING_LEN( str))
@@ -544,8 +542,6 @@ rb_str_ends_with_p( VALUE str, VALUE oth)
544
542
  char *s, *o;
545
543
  VALUE ost;
546
544
 
547
- if (!rb_str_comparable( str, oth))
548
- return Qnil;
549
545
  ost = rb_string_value( &oth);
550
546
  i = RSTRING_LEN( ost);
551
547
  if (i > RSTRING_LEN( str))
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supplement
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.20'
4
+ version: '2.22'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-07-22 00:00:00.000000000 Z
10
+ date: 2025-01-04 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rake
@@ -38,9 +37,9 @@ dependencies:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
39
  version: '2.18'
41
- description: 'Simple methods that didn''t manage to become part of standard Ruby.
42
-
43
- '
40
+ description: |
41
+ Simple methods that didn't manage to become
42
+ part of standard Ruby.
44
43
  email: "<software@bertram-scharpf.de>"
45
44
  executables: []
46
45
  extensions:
@@ -71,14 +70,11 @@ files:
71
70
  - lib/supplement/socket.h
72
71
  - lib/supplement/terminal.c
73
72
  - lib/supplement/terminal.h
74
- homepage: http://www.bertram-scharpf.de/software/supplement
73
+ homepage: https://github.com/BertramScharpf/ruby-supplement
75
74
  licenses:
76
75
  - BSD-2-Clause
77
76
  metadata: {}
78
- post_install_message:
79
77
  rdoc_options:
80
- - "--charset"
81
- - utf-8
82
78
  - "--main"
83
79
  - README
84
80
  require_paths:
@@ -95,8 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
91
  version: '0'
96
92
  requirements:
97
93
  - Ruby and the autorake gem
98
- rubygems_version: 3.5.14
99
- signing_key:
94
+ rubygems_version: 3.6.2
100
95
  specification_version: 4
101
96
  summary: Simple Ruby extensions
102
97
  test_files: []