etc 1.2.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f5196e40206894d4fc74d486106863f351e131e89fa6017807542361a09c617
4
- data.tar.gz: 131ade148fb05d021a9956ee282722012abbc0607f87bfa15bd06a0374264a4a
3
+ metadata.gz: '08b76e02c19850983f9c765cd8f73f5353e7ea1c2295892874284056a0f33572'
4
+ data.tar.gz: 4c2bb4327bc82cdf40ba72195fed02594bb8af35888712e46139a225a58f67f0
5
5
  SHA512:
6
- metadata.gz: 210712686ace4800e20dbc1c4f97ead9a352f6d65dc794bb0033f55da286ec730bef1269f5b9479b4f600a87a55a31470f7596b83ddc705aeb5f194618646e37
7
- data.tar.gz: aa0cba8840eb405a1b80339d82c44b2c582e97b2cab1db8d7ad05f315ac1a78325c421698b94a53283302702f5ea2a669221bfbf84f0be88bf880fc863ade405
6
+ metadata.gz: b400ec775900dd0c4505e7d0ec93e3939c9f9ccd3147ec607f7e4d0347e8361492011effb196026cbcd511bdbd79d59f1ce0f0bca2534e60d3f80651d5ed2296
7
+ data.tar.gz: 99f69faaa9b2bd7de984f5056f6ca89cfa9a9e4f6e572d03c0c7239ffac6897ab3c548790b1c53a0c71d90206da977d312c618f0f6d4beaed88c0070d842bc2f
data/ChangeLog ADDED
@@ -0,0 +1,97 @@
1
+ -*- coding: utf-8 -*-
2
+
3
+ commit b3e9d9ceb0984d54c9b0d5d2e6c20e007be824fb
4
+ Author: Hiroshi SHIBATA <hsbt@ruby-lang.org>
5
+ AuthorDate: 2022-12-05 15:05:09 +0900
6
+ Commit: Hiroshi SHIBATA <hsbt@ruby-lang.org>
7
+ CommitDate: 2022-12-05 15:05:09 +0900
8
+
9
+ Bump version to 1.4.1
10
+
11
+ commit 6c9a0b4e5db79160709282bc14aae3ed6d423cee
12
+ Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
13
+ AuthorDate: 2022-06-19 10:59:03 +0900
14
+ Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
15
+ CommitDate: 2022-06-19 10:59:03 +0900
16
+
17
+ [DOC] Markup constant path names
18
+
19
+ commit a8801e07d17a3535c8e9534d7167b67096cc5282
20
+ Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
21
+ AuthorDate: 2022-06-19 10:45:11 +0900
22
+ Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
23
+ CommitDate: 2022-06-19 10:45:11 +0900
24
+
25
+ [DOC] Markup string literals
26
+
27
+ commit ea517399741f20fbea1bed65a784a38b7a1f0390
28
+ Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
29
+ AuthorDate: 2022-06-19 10:43:43 +0900
30
+ Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
31
+ CommitDate: 2022-06-19 10:44:41 +0900
32
+
33
+ [DOC] Fix reference to different module
34
+
35
+ commit e7343b4e6950d1604eb46940456920ec8beb96d5
36
+ Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
37
+ AuthorDate: 2022-06-19 10:26:21 +0900
38
+ Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
39
+ CommitDate: 2022-06-19 10:26:21 +0900
40
+
41
+ [DOC] Update
42
+
43
+ System-dependent feature macros are automatically detected by
44
+ extconf.rb, and are not used by users.
45
+
46
+ commit 8f24e74346f737ea2f9834558715aa48c2471a1c
47
+ Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
48
+ AuthorDate: 2022-04-11 04:23:17 +0000
49
+ Commit: Hiroshi SHIBATA <hsbt@ruby-lang.org>
50
+ CommitDate: 2022-04-11 13:29:46 +0900
51
+
52
+ Bump actions/upload-artifact from 2 to 3
53
+
54
+ Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
55
+ - [Release notes](https://github.com/actions/upload-artifact/releases)
56
+ - [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)
57
+
58
+ ---
59
+ updated-dependencies:
60
+ - dependency-name: actions/upload-artifact
61
+ dependency-type: direct:production
62
+ update-type: version-update:semver-major
63
+ ...
64
+
65
+ Signed-off-by: dependabot[bot] <support@github.com>
66
+
67
+ commit 9354594223de532bedf3630f053ea65b186c6cbc
68
+ Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
69
+ AuthorDate: 2022-03-25 16:54:32 +0900
70
+ Commit: GitHub <noreply@github.com>
71
+ CommitDate: 2022-03-25 16:54:32 +0900
72
+
73
+ Bump actions/checkout from 2 to 3 (#21)
74
+
75
+ Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
76
+ - [Release notes](https://github.com/actions/checkout/releases)
77
+ - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
78
+ - [Commits](https://github.com/actions/checkout/compare/v2...v3)
79
+
80
+ ---
81
+ updated-dependencies:
82
+ - dependency-name: actions/checkout
83
+ dependency-type: direct:production
84
+ update-type: version-update:semver-major
85
+ ...
86
+
87
+ Signed-off-by: dependabot[bot] <support@github.com>
88
+
89
+ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
90
+
91
+ commit d4805047a01a979a0c060436fa73e79120967e2c
92
+ Author: Hiroshi SHIBATA <hsbt@ruby-lang.org>
93
+ AuthorDate: 2022-03-25 16:47:16 +0900
94
+ Commit: GitHub <noreply@github.com>
95
+ CommitDate: 2022-03-25 16:47:16 +0900
96
+
97
+ Added dependabot (#20)
data/ext/etc/etc.c CHANGED
@@ -52,7 +52,7 @@ char *getenv();
52
52
  #endif
53
53
  char *getlogin();
54
54
 
55
- #define RUBY_ETC_VERSION "1.2.0"
55
+ #define RUBY_ETC_VERSION "1.4.1"
56
56
 
57
57
  #ifdef HAVE_RB_DEPRECATE_CONSTANT
58
58
  void rb_deprecate_constant(VALUE mod, const char *name);
@@ -62,22 +62,21 @@ void rb_deprecate_constant(VALUE mod, const char *name);
62
62
 
63
63
  #include "constdefs.h"
64
64
 
65
- #ifdef HAVE_RB_EXT_RACTOR_SAFE
66
- #include "ruby/thread_native.h"
65
+ #ifdef HAVE_RUBY_ATOMIC_H
66
+ # include "ruby/atomic.h"
67
67
  #else
68
- /* Implement rb_native_mutex_x using an int */
69
- typedef int rb_nativethread_lock_t;
70
- static int rb_native_mutex_trylock(int *mutex) {
71
- if (*mutex) {
72
- return 1;
73
- }
74
- *mutex = 1;
75
- return 0;
76
- }
77
- static void rb_native_mutex_unlock(int *mutex) {
78
- *mutex = 0;
68
+ typedef int rb_atomic_t;
69
+ # define RUBY_ATOMIC_CAS(var, oldval, newval) \
70
+ ((var) == (oldval) ? ((var) = (newval), (oldval)) : (var))
71
+ # define RUBY_ATOMIC_EXCHANGE(var, newval) \
72
+ atomic_exchange(&var, newval)
73
+ static inline rb_atomic_t
74
+ atomic_exchange(volatile rb_atomic_t *var, rb_atomic_t newval)
75
+ {
76
+ rb_atomic_t oldval = *var;
77
+ *var = newval;
78
+ return oldval;
79
79
  }
80
- #define rb_native_mutex_initialize rb_native_mutex_unlock
81
80
  #endif
82
81
 
83
82
  /* call-seq:
@@ -191,7 +190,8 @@ setup_passwd(struct passwd *pwd)
191
190
  /* call-seq:
192
191
  * getpwuid(uid) -> Passwd
193
192
  *
194
- * Returns the /etc/passwd information for the user with the given integer +uid+.
193
+ * Returns the <tt>/etc/passwd</tt> information for the user with the given
194
+ * integer +uid+.
195
195
  *
196
196
  * The information is returned as a Passwd struct.
197
197
  *
@@ -230,8 +230,8 @@ etc_getpwuid(int argc, VALUE *argv, VALUE obj)
230
230
  /* call-seq:
231
231
  * getpwnam(name) -> Passwd
232
232
  *
233
- * Returns the /etc/passwd information for the user with specified login
234
- * +name+.
233
+ * Returns the <tt>/etc/passwd</tt> information for the user with specified
234
+ * login +name+.
235
235
  *
236
236
  * The information is returned as a Passwd struct.
237
237
  *
@@ -258,12 +258,14 @@ etc_getpwnam(VALUE obj, VALUE nam)
258
258
  }
259
259
 
260
260
  #ifdef HAVE_GETPWENT
261
- static rb_nativethread_lock_t passwd_blocking;
261
+ static rb_atomic_t passwd_blocking;
262
262
  static VALUE
263
263
  passwd_ensure(VALUE _)
264
264
  {
265
265
  endpwent();
266
- rb_native_mutex_unlock(&passwd_blocking);
266
+ if (RUBY_ATOMIC_EXCHANGE(passwd_blocking, 0) != 1) {
267
+ rb_raise(rb_eRuntimeError, "unexpected passwd_blocking");
268
+ }
267
269
  return Qnil;
268
270
  }
269
271
 
@@ -282,7 +284,7 @@ passwd_iterate(VALUE _)
282
284
  static void
283
285
  each_passwd(void)
284
286
  {
285
- if (rb_native_mutex_trylock(&passwd_blocking)) {
287
+ if (RUBY_ATOMIC_CAS(passwd_blocking, 0, 1)) {
286
288
  rb_raise(rb_eRuntimeError, "parallel passwd iteration");
287
289
  }
288
290
  rb_ensure(passwd_iterate, 0, passwd_ensure, 0);
@@ -294,7 +296,7 @@ each_passwd(void)
294
296
  * Etc.passwd -> Passwd
295
297
  *
296
298
  * Provides a convenient Ruby iterator which executes a block for each entry
297
- * in the /etc/passwd file.
299
+ * in the <tt>/etc/passwd</tt> file.
298
300
  *
299
301
  * The code block is passed an Passwd struct.
300
302
  *
@@ -329,13 +331,14 @@ etc_passwd(VALUE obj)
329
331
  * Etc::Passwd.each { |struct| block } -> Passwd
330
332
  * Etc::Passwd.each -> Enumerator
331
333
  *
332
- * Iterates for each entry in the /etc/passwd file if a block is given.
334
+ * Iterates for each entry in the <tt>/etc/passwd</tt> file if a block is
335
+ * given.
333
336
  *
334
337
  * If no block is given, returns the Enumerator.
335
338
  *
336
339
  * The code block is passed an Passwd struct.
337
340
  *
338
- * See ::getpwent above for details.
341
+ * See Etc.getpwent above for details.
339
342
  *
340
343
  * Example:
341
344
  *
@@ -359,8 +362,8 @@ etc_each_passwd(VALUE obj)
359
362
  return obj;
360
363
  }
361
364
 
362
- /* Resets the process of reading the /etc/passwd file, so that the next call
363
- * to ::getpwent will return the first entry again.
365
+ /* Resets the process of reading the <tt>/etc/passwd</tt> file, so that the
366
+ * next call to ::getpwent will return the first entry again.
364
367
  */
365
368
  static VALUE
366
369
  etc_setpwent(VALUE obj)
@@ -371,8 +374,8 @@ etc_setpwent(VALUE obj)
371
374
  return Qnil;
372
375
  }
373
376
 
374
- /* Ends the process of scanning through the /etc/passwd file begun with
375
- * ::getpwent, and closes the file.
377
+ /* Ends the process of scanning through the <tt>/etc/passwd</tt> file begun
378
+ * with ::getpwent, and closes the file.
376
379
  */
377
380
  static VALUE
378
381
  etc_endpwent(VALUE obj)
@@ -383,7 +386,7 @@ etc_endpwent(VALUE obj)
383
386
  return Qnil;
384
387
  }
385
388
 
386
- /* Returns an entry from the /etc/passwd file.
389
+ /* Returns an entry from the <tt>/etc/passwd</tt> file.
387
390
  *
388
391
  * The first time it is called it opens the file and returns the first entry;
389
392
  * each successive call returns the next entry, or +nil+ if the end of the file
@@ -434,7 +437,7 @@ setup_group(struct group *grp)
434
437
  * getgrgid(group_id) -> Group
435
438
  *
436
439
  * Returns information about the group with specified integer +group_id+,
437
- * as found in /etc/group.
440
+ * as found in <tt>/etc/group</tt>.
438
441
  *
439
442
  * The information is returned as a Group struct.
440
443
  *
@@ -472,7 +475,7 @@ etc_getgrgid(int argc, VALUE *argv, VALUE obj)
472
475
  * getgrnam(name) -> Group
473
476
  *
474
477
  * Returns information about the group with specified +name+, as found in
475
- * /etc/group.
478
+ * <tt>/etc/group</tt>.
476
479
  *
477
480
  * The information is returned as a Group struct.
478
481
  *
@@ -500,12 +503,14 @@ etc_getgrnam(VALUE obj, VALUE nam)
500
503
  }
501
504
 
502
505
  #ifdef HAVE_GETGRENT
503
- static rb_nativethread_lock_t group_blocking;
506
+ static rb_atomic_t group_blocking;
504
507
  static VALUE
505
508
  group_ensure(VALUE _)
506
509
  {
507
510
  endgrent();
508
- rb_native_mutex_unlock(&group_blocking);
511
+ if (RUBY_ATOMIC_EXCHANGE(group_blocking, 0) != 1) {
512
+ rb_raise(rb_eRuntimeError, "unexpected group_blocking");
513
+ }
509
514
  return Qnil;
510
515
  }
511
516
 
@@ -525,7 +530,7 @@ group_iterate(VALUE _)
525
530
  static void
526
531
  each_group(void)
527
532
  {
528
- if (rb_native_mutex_trylock(&group_blocking)) {
533
+ if (RUBY_ATOMIC_CAS(group_blocking, 0, 1)) {
529
534
  rb_raise(rb_eRuntimeError, "parallel group iteration");
530
535
  }
531
536
  rb_ensure(group_iterate, 0, group_ensure, 0);
@@ -533,7 +538,7 @@ each_group(void)
533
538
  #endif
534
539
 
535
540
  /* Provides a convenient Ruby iterator which executes a block for each entry
536
- * in the /etc/group file.
541
+ * in the <tt>/etc/group</tt> file.
537
542
  *
538
543
  * The code block is passed an Group struct.
539
544
  *
@@ -569,7 +574,8 @@ etc_group(VALUE obj)
569
574
  * Etc::Group.each { |group| block } -> obj
570
575
  * Etc::Group.each -> Enumerator
571
576
  *
572
- * Iterates for each entry in the /etc/group file if a block is given.
577
+ * Iterates for each entry in the <tt>/etc/group</tt> file if a block is
578
+ * given.
573
579
  *
574
580
  * If no block is given, returns the Enumerator.
575
581
  *
@@ -596,8 +602,8 @@ etc_each_group(VALUE obj)
596
602
  }
597
603
  #endif
598
604
 
599
- /* Resets the process of reading the /etc/group file, so that the next call
600
- * to ::getgrent will return the first entry again.
605
+ /* Resets the process of reading the <tt>/etc/group</tt> file, so that the
606
+ * next call to ::getgrent will return the first entry again.
601
607
  */
602
608
  static VALUE
603
609
  etc_setgrent(VALUE obj)
@@ -608,8 +614,8 @@ etc_setgrent(VALUE obj)
608
614
  return Qnil;
609
615
  }
610
616
 
611
- /* Ends the process of scanning through the /etc/group file begun by
612
- * ::getgrent, and closes the file.
617
+ /* Ends the process of scanning through the <tt>/etc/group</tt> file begun
618
+ * by ::getgrent, and closes the file.
613
619
  */
614
620
  static VALUE
615
621
  etc_endgrent(VALUE obj)
@@ -620,7 +626,7 @@ etc_endgrent(VALUE obj)
620
626
  return Qnil;
621
627
  }
622
628
 
623
- /* Returns an entry from the /etc/group file.
629
+ /* Returns an entry from the <tt>/etc/group</tt> file.
624
630
  *
625
631
  * The first time it is called it opens the file and returns the first entry;
626
632
  * each successive call returns the next entry, or +nil+ if the end of the file
@@ -654,9 +660,11 @@ VALUE rb_w32_conv_from_wchar(const WCHAR *wstr, rb_encoding *enc);
654
660
  /*
655
661
  * Returns system configuration directory.
656
662
  *
657
- * This is typically "/etc", but is modified by the prefix used when Ruby was
658
- * compiled. For example, if Ruby is built and installed in /usr/local,
659
- * returns "/usr/local/etc" on other platforms than Windows.
663
+ * This is typically <code>"/etc"</code>, but is modified by the prefix used
664
+ * when Ruby was compiled. For example, if Ruby is built and installed in
665
+ * <tt>/usr/local</tt>, returns <code>"/usr/local/etc"</code> on other
666
+ * platforms than Windows.
667
+ *
660
668
  * On Windows, this always returns the directory provided by the system.
661
669
  */
662
670
  static VALUE
@@ -954,11 +962,13 @@ io_pathconf(VALUE io, VALUE arg)
954
962
  static int
955
963
  etc_nprocessors_affin(void)
956
964
  {
957
- cpu_set_t *cpuset;
965
+ cpu_set_t *cpuset, cpuset_buff[1024 / sizeof(cpu_set_t)];
958
966
  size_t size;
959
967
  int ret;
960
968
  int n;
961
969
 
970
+ CPU_ZERO_S(sizeof(cpuset_buff), cpuset_buff);
971
+
962
972
  /*
963
973
  * XXX:
964
974
  * man page says CPU_ALLOC takes number of cpus. But it is not accurate
@@ -977,13 +987,12 @@ etc_nprocessors_affin(void)
977
987
  */
978
988
  for (n=64; n <= 16384; n *= 2) {
979
989
  size = CPU_ALLOC_SIZE(n);
980
- if (size >= 1024) {
990
+ if (size >= sizeof(cpuset_buff)) {
981
991
  cpuset = xcalloc(1, size);
982
992
  if (!cpuset)
983
993
  return -1;
984
994
  } else {
985
- cpuset = alloca(size);
986
- CPU_ZERO_S(size, cpuset);
995
+ cpuset = cpuset_buff;
987
996
  }
988
997
 
989
998
  ret = sched_getaffinity(0, size, cpuset);
@@ -992,10 +1001,10 @@ etc_nprocessors_affin(void)
992
1001
  ret = CPU_COUNT_S(size, cpuset);
993
1002
  }
994
1003
 
995
- if (size >= 1024) {
1004
+ if (size >= sizeof(cpuset_buff)) {
996
1005
  xfree(cpuset);
997
1006
  }
998
- if (ret > 0) {
1007
+ if (ret > 0 || errno != EINVAL) {
999
1008
  return ret;
1000
1009
  }
1001
1010
  }
@@ -1063,11 +1072,12 @@ etc_nprocessors(VALUE obj)
1063
1072
 
1064
1073
  /*
1065
1074
  * The Etc module provides access to information typically stored in
1066
- * files in the /etc directory on Unix systems.
1075
+ * files in the <tt>/etc</tt> directory on Unix systems.
1067
1076
  *
1068
1077
  * The information accessible consists of the information found in the
1069
- * /etc/passwd and /etc/group files, plus information about the system's
1070
- * temporary directory (/tmp) and configuration directory (/etc).
1078
+ * <tt>/etc/passwd</tt> and <tt>/etc/group</tt> files, plus information
1079
+ * about the system's temporary directory (<tt>/tmp</tt>) and configuration
1080
+ * directory (<tt>/etc</tt>).
1071
1081
  *
1072
1082
  * The Etc module provides a more reliable way to access information about
1073
1083
  * the logged in user than environment variables such as +$USER+.
@@ -1092,9 +1102,9 @@ Init_etc(void)
1092
1102
  {
1093
1103
  VALUE mEtc;
1094
1104
 
1095
- #ifdef HAVE_RB_EXT_RACTOR_SAFE
1096
- RB_EXT_RACTOR_SAFE(true);
1097
- #endif
1105
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
1106
+ RB_EXT_RACTOR_SAFE(true);
1107
+ #endif
1098
1108
  mEtc = rb_define_module("Etc");
1099
1109
  rb_define_const(mEtc, "VERSION", rb_str_new_cstr(RUBY_ETC_VERSION));
1100
1110
  init_constants(mEtc);
@@ -1154,16 +1164,18 @@ Init_etc(void)
1154
1164
  #endif
1155
1165
  NULL);
1156
1166
  #if 0
1157
- /* Define-const: Passwd
1167
+ /*
1168
+ * Passwd is a placeholder Struct for user database on Unix systems.
1158
1169
  *
1159
- * Passwd is a Struct that contains the following members:
1170
+ * === The struct contains the following members
1160
1171
  *
1161
1172
  * name::
1162
1173
  * contains the short login name of the user as a String.
1163
1174
  * passwd::
1164
1175
  * contains the encrypted password of the user as a String.
1165
- * an 'x' is returned if shadow passwords are in use. An '*' is returned
1166
- * if the user cannot log in using a password.
1176
+ * an <code>'x'</code> is returned if shadow passwords are in
1177
+ * use. An <code>'*'</code> is returned if the user cannot
1178
+ * log in using a password.
1167
1179
  * uid::
1168
1180
  * contains the integer user ID (uid) of the user.
1169
1181
  * gid::
@@ -1173,37 +1185,31 @@ Init_etc(void)
1173
1185
  * shell::
1174
1186
  * contains the path to the login shell of the user as a String.
1175
1187
  *
1176
- * === The following members below are optional, and must be compiled with special flags:
1188
+ * === The following members below are system-dependent
1177
1189
  *
1178
1190
  * gecos::
1179
1191
  * contains a longer String description of the user, such as
1180
1192
  * a full name. Some Unix systems provide structured information in the
1181
1193
  * gecos field, but this is system-dependent.
1182
- * must be compiled with +HAVE_STRUCT_PASSWD_PW_GECOS+
1183
1194
  * change::
1184
- * password change time(integer) must be compiled with +HAVE_STRUCT_PASSWD_PW_CHANGE+
1195
+ * password change time(integer).
1185
1196
  * quota::
1186
- * quota value(integer) must be compiled with +HAVE_STRUCT_PASSWD_PW_QUOTA+
1197
+ * quota value(integer).
1187
1198
  * age::
1188
- * password age(integer) must be compiled with +HAVE_STRUCT_PASSWD_PW_AGE+
1199
+ * password age(integer).
1189
1200
  * class::
1190
- * user access class(string) must be compiled with +HAVE_STRUCT_PASSWD_PW_CLASS+
1201
+ * user access class(string).
1191
1202
  * comment::
1192
- * comment(string) must be compiled with +HAVE_STRUCT_PASSWD_PW_COMMENT+
1203
+ * comment(string).
1193
1204
  * expire::
1194
- * account expiration time(integer) must be compiled with +HAVE_STRUCT_PASSWD_PW_EXPIRE+
1205
+ * account expiration time(integer).
1195
1206
  */
1196
- rb_define_const(mEtc, "Passwd", sPasswd);
1207
+ sPasswd = rb_define_class_under(mEtc, "Passwd", rb_cStruct);
1197
1208
  #endif
1198
- rb_define_const(rb_cStruct, "Passwd", sPasswd); /* deprecated name */
1199
- rb_deprecate_constant(rb_cStruct, "Passwd");
1200
1209
  rb_extend_object(sPasswd, rb_mEnumerable);
1201
1210
  rb_define_singleton_method(sPasswd, "each", etc_each_passwd, 0);
1202
- #ifdef HAVE_GETPWENT
1203
- rb_native_mutex_initialize(&passwd_blocking);
1204
- #endif
1211
+
1205
1212
  #ifdef HAVE_GETGRENT
1206
- rb_native_mutex_initialize(&group_blocking);
1207
1213
  sGroup = rb_struct_define_under(mEtc, "Group", "name",
1208
1214
  #ifdef HAVE_STRUCT_GROUP_GR_PASSWD
1209
1215
  "passwd",
@@ -1211,31 +1217,27 @@ Init_etc(void)
1211
1217
  "gid", "mem", NULL);
1212
1218
 
1213
1219
  #if 0
1214
- /* Define-const: Group
1215
- *
1216
- * Group is a Struct that is only available when compiled with +HAVE_GETGRENT+.
1220
+ /*
1221
+ * Group is a placeholder Struct for user group database on Unix systems.
1217
1222
  *
1218
- * The struct contains the following members:
1223
+ * === The struct contains the following members
1219
1224
  *
1220
1225
  * name::
1221
1226
  * contains the name of the group as a String.
1222
1227
  * passwd::
1223
- * contains the encrypted password as a String. An 'x' is
1228
+ * contains the encrypted password as a String. An <code>'x'</code> is
1224
1229
  * returned if password access to the group is not available; an empty
1225
1230
  * string is returned if no password is needed to obtain membership of
1226
1231
  * the group.
1227
- *
1228
- * Must be compiled with +HAVE_STRUCT_GROUP_GR_PASSWD+.
1232
+ * This is system-dependent.
1229
1233
  * gid::
1230
1234
  * contains the group's numeric ID as an integer.
1231
1235
  * mem::
1232
1236
  * is an Array of Strings containing the short login names of the
1233
1237
  * members of the group.
1234
1238
  */
1235
- rb_define_const(mEtc, "Group", sGroup);
1239
+ sGroup = rb_define_class_under(mEtc, "Group", rb_cStruct);
1236
1240
  #endif
1237
- rb_define_const(rb_cStruct, "Group", sGroup); /* deprecated name */
1238
- rb_deprecate_constant(rb_cStruct, "Group");
1239
1241
  rb_extend_object(sGroup, rb_mEnumerable);
1240
1242
  rb_define_singleton_method(sGroup, "each", etc_each_group, 0);
1241
1243
  #endif
data/ext/etc/extconf.rb CHANGED
@@ -47,10 +47,8 @@ if !File.exist?("#{srcdir}/depend")
47
47
  %x[#{RbConfig.ruby} #{srcdir}/mkconstants.rb -o #{srcdir}/constdefs.h]
48
48
  end
49
49
 
50
- decl = [
51
- "void rb_deprecate_constant(VALUE, const char *);",
52
- ]
53
- have_func('rb_deprecate_constant(Qnil, "None")', [decl])
50
+ # TODO: remove when dropping 2.7 support, as exported since 3.0
51
+ have_func('rb_deprecate_constant(Qnil, "None")')
54
52
 
55
53
  $distcleanfiles << "constdefs.h"
56
54
 
@@ -0,0 +1,65 @@
1
+ -*- coding: utf-8 -*-
2
+
3
+ commit 3402a9366fba4d2bf2f4ea20df16c95121876bc4
4
+ Author: SHIBATA Hiroshi <hsbt@ruby-lang.org>
5
+ AuthorDate: 2017-12-13 14:31:00 +0900
6
+ Commit: SHIBATA Hiroshi <hsbt@ruby-lang.org>
7
+ CommitDate: 2017-12-13 14:31:00 +0900
8
+
9
+ Bump release date
10
+
11
+ commit be7fadb654340282ff71a500a47f88a0b4c47a1d
12
+ Author: SHIBATA Hiroshi <hsbt@ruby-lang.org>
13
+ AuthorDate: 2017-12-13 14:30:42 +0900
14
+ Commit: SHIBATA Hiroshi <hsbt@ruby-lang.org>
15
+ CommitDate: 2017-12-13 14:30:42 +0900
16
+
17
+ Added badge of Travis
18
+
19
+ commit 97aca32b82f6cd8c309ae515e36d86c4d4822e4c
20
+ Author: SHIBATA Hiroshi <hsbt@ruby-lang.org>
21
+ AuthorDate: 2017-12-13 14:23:26 +0900
22
+ Commit: SHIBATA Hiroshi <hsbt@ruby-lang.org>
23
+ CommitDate: 2017-12-13 14:23:26 +0900
24
+
25
+ prepare to release 1.0.0
26
+
27
+ commit 744646073bcd4e7c5b65ae5921cf4c1d5697e35e
28
+ Author: SHIBATA Hiroshi <hsbt@ruby-lang.org>
29
+ AuthorDate: 2017-11-28 12:17:10 +0900
30
+ Commit: SHIBATA Hiroshi <hsbt@ruby-lang.org>
31
+ CommitDate: 2017-11-28 12:20:44 +0900
32
+
33
+ Pick commits from ruby core repository.
34
+
35
+ * https://github.com/ruby/ruby/commit/0f7fed9253
36
+ * https://github.com/ruby/ruby/commit/8fc8587e05
37
+ * https://github.com/ruby/ruby/commit/1333c0f0df
38
+ * https://github.com/ruby/ruby/commit/e4ff51b05a
39
+ * https://github.com/ruby/ruby/commit/1852b4a866
40
+ * https://github.com/ruby/ruby/commit/b5b2bd86f1
41
+ * https://github.com/ruby/ruby/commit/253fd5fe6b
42
+
43
+ commit 0e8f8547412d33a35752ef4272d78fc18cf3a5ed
44
+ Author: SHIBATA Hiroshi <hsbt@ruby-lang.org>
45
+ AuthorDate: 2017-10-20 16:51:22 +0900
46
+ Commit: SHIBATA Hiroshi <hsbt@ruby-lang.org>
47
+ CommitDate: 2017-10-20 16:51:22 +0900
48
+
49
+ Update README with rdoc of Etc module
50
+
51
+ commit 86a04b45feed2bc88d44399e127ed675d5d0f41c
52
+ Author: SHIBATA Hiroshi <hsbt@ruby-lang.org>
53
+ AuthorDate: 2017-09-13 14:32:17 +0900
54
+ Commit: SHIBATA Hiroshi <hsbt@ruby-lang.org>
55
+ CommitDate: 2017-09-13 14:32:17 +0900
56
+
57
+ make frozen
58
+
59
+ commit 91ce5d0039fe10d86b35a3c114fabb9a7ae86344
60
+ Author: SHIBATA Hiroshi <hsbt@ruby-lang.org>
61
+ AuthorDate: 2017-07-18 14:38:26 +0900
62
+ Commit: SHIBATA Hiroshi <hsbt@ruby-lang.org>
63
+ CommitDate: 2017-07-18 14:38:26 +0900
64
+
65
+ fixed wrong license name