etc 1.2.0 → 1.4.1

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: 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