rubysl-etc 2.0.3 → 3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +12 -9
- data/MRI_LICENSE +56 -0
- data/lib/etc.rb +179 -1
- data/lib/rubysl/etc.rb +1 -1
- data/lib/rubysl/etc/version.rb +1 -1
- data/rubysl-etc.gemspec +1 -1
- metadata +5 -8
- data/lib/rubysl/etc/etc.rb.ffi +0 -182
- data/lib/rubysl/etc/extconf.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e74ff380d65e107d956b8592edb37dedc6778d20
|
4
|
+
data.tar.gz: 87cf1a354601e303ae60ba5cff7cda4fb1da4353
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ea9386cdd73741ada84da82df12c4f2b13aec8bf8e2f1cfc5ea1a1592c05185c4175fb364ea3332c46a5f87955eb374b115f185c90c5f7ae6d5d4114c5b8e70
|
7
|
+
data.tar.gz: 1fa5be7d562a6401b63b1cf84994905c6c333cef40a50701ffba00874106ab3d40860d4e3002c13856ff156d0d507781061f6d89425807a278652d77adc7a1e2
|
data/.travis.yml
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
language: ruby
|
2
|
-
before_install:
|
3
|
-
- rvm use $RVM --install --binary --fuzzy
|
4
|
-
- gem update --system
|
5
|
-
- gem --version
|
6
|
-
- gem install rubysl-bundler
|
7
|
-
- gem install rubysl-rake
|
8
|
-
- rake
|
9
2
|
env:
|
10
|
-
-
|
11
|
-
|
3
|
+
- RUBYLIB=lib
|
4
|
+
- RUBYLIB=
|
5
|
+
script: mspec spec
|
6
|
+
rvm:
|
7
|
+
- 2.0.0
|
8
|
+
- rbx-2.2.1
|
9
|
+
matrix:
|
10
|
+
exclude:
|
11
|
+
- rvm: 2.0.0
|
12
|
+
env: RUBYLIB=lib
|
13
|
+
- rvm: rbx-2.2.1
|
14
|
+
env: RUBYLIB=
|
data/MRI_LICENSE
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.
|
data/lib/etc.rb
CHANGED
@@ -1 +1,179 @@
|
|
1
|
-
|
1
|
+
# This file is generated FFI::FileProcessor from etc.rb.ffi.
|
2
|
+
|
3
|
+
class Struct::Passwd < Rubinius::FFI::Struct
|
4
|
+
layout :pw_name, Rubinius::Config['rbx.platform.pwd.pw_name.type'].to_sym,
|
5
|
+
Rubinius::Config['rbx.platform.pwd.pw_name.offset'],
|
6
|
+
:pw_passwd, Rubinius::Config['rbx.platform.pwd.pw_passwd.type'].to_sym,
|
7
|
+
Rubinius::Config['rbx.platform.pwd.pw_passwd.offset'],
|
8
|
+
:pw_uid, Rubinius::Config['rbx.platform.pwd.pw_uid.type'].to_sym,
|
9
|
+
Rubinius::Config['rbx.platform.pwd.pw_uid.offset'],
|
10
|
+
:pw_gid, Rubinius::Config['rbx.platform.pwd.pw_gid.type'].to_sym,
|
11
|
+
Rubinius::Config['rbx.platform.pwd.pw_gid.offset'],
|
12
|
+
:pw_gecos, Rubinius::Config['rbx.platform.pwd.pw_gecos.type'].to_sym,
|
13
|
+
Rubinius::Config['rbx.platform.pwd.pw_gecos.offset'],
|
14
|
+
:pw_dir, Rubinius::Config['rbx.platform.pwd.pw_dir.type'].to_sym,
|
15
|
+
Rubinius::Config['rbx.platform.pwd.pw_dir.offset'],
|
16
|
+
:pw_shell, Rubinius::Config['rbx.platform.pwd.pw_shell.type'].to_sym,
|
17
|
+
Rubinius::Config['rbx.platform.pwd.pw_shell.offset']
|
18
|
+
|
19
|
+
def name; self[:pw_name]; end
|
20
|
+
def passwd; self[:pw_passwd]; end
|
21
|
+
def uid; self[:pw_uid]; end
|
22
|
+
def gid; self[:pw_gid]; end
|
23
|
+
def gecos; self[:pw_gecos]; end
|
24
|
+
def dir; self[:pw_dir]; end
|
25
|
+
def shell; self[:pw_shell]; end
|
26
|
+
end
|
27
|
+
|
28
|
+
class Struct::Group < Rubinius::FFI::Struct
|
29
|
+
layout :gr_name, Rubinius::Config['rbx.platform.grp.gr_name.type'].to_sym,
|
30
|
+
Rubinius::Config['rbx.platform.grp.gr_name.offset'],
|
31
|
+
:gr_passwd, Rubinius::Config['rbx.platform.grp.gr_passwd.type'].to_sym,
|
32
|
+
Rubinius::Config['rbx.platform.grp.gr_passwd.offset'],
|
33
|
+
:gr_gid, Rubinius::Config['rbx.platform.grp.gr_gid.type'].to_sym,
|
34
|
+
Rubinius::Config['rbx.platform.grp.gr_gid.offset'],
|
35
|
+
:gr_mem, Rubinius::Config['rbx.platform.grp.gr_mem.type'].to_sym,
|
36
|
+
Rubinius::Config['rbx.platform.grp.gr_mem.offset']
|
37
|
+
|
38
|
+
FFI = Rubinius::FFI
|
39
|
+
|
40
|
+
def name; self[:gr_name]; end
|
41
|
+
def gid; self[:gr_gid]; end
|
42
|
+
def passwd; self[:gr_passwd]; end
|
43
|
+
def mem
|
44
|
+
ptr = self[:gr_mem].read_pointer
|
45
|
+
|
46
|
+
ary = []
|
47
|
+
i = 1
|
48
|
+
|
49
|
+
while not ptr.null? do
|
50
|
+
ary << ptr.read_string
|
51
|
+
ptr = (self[:gr_mem] + i * FFI::Pointer.size).read_pointer
|
52
|
+
i += 1
|
53
|
+
end
|
54
|
+
|
55
|
+
ary
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
module Etc
|
60
|
+
FFI = Rubinius::FFI
|
61
|
+
|
62
|
+
const_set(:Passwd, Struct::Passwd)
|
63
|
+
const_set(:Group, Struct::Group)
|
64
|
+
|
65
|
+
def self.getlogin
|
66
|
+
getpwuid.name
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.getpwnam(name)
|
70
|
+
login = StringValue(name)
|
71
|
+
|
72
|
+
passwd_ptr = FFI::Platform::POSIX.getpwnam(name)
|
73
|
+
if passwd_ptr.nil?
|
74
|
+
raise ArgumentError, "cannot find user - #{name}"
|
75
|
+
end
|
76
|
+
|
77
|
+
Struct::Passwd.new(passwd_ptr)
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.getpwuid(uid = Process.uid)
|
81
|
+
uid = Rubinius::Type.coerce_to(uid, Integer, :to_int)
|
82
|
+
|
83
|
+
passwd_ptr = FFI::Platform::POSIX.getpwuid(uid)
|
84
|
+
if passwd_ptr.nil?
|
85
|
+
raise ArgumentError, "cannot find user - #{uid}"
|
86
|
+
end
|
87
|
+
|
88
|
+
Struct::Passwd.new(passwd_ptr)
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.setpwent
|
92
|
+
FFI::Platform::POSIX.setpwent
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.getpwent
|
96
|
+
passwd_ptr = FFI::Platform::POSIX.getpwent
|
97
|
+
return nil if passwd_ptr.nil?
|
98
|
+
|
99
|
+
Struct::Passwd.new(passwd_ptr)
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.endpwent
|
103
|
+
FFI::Platform::POSIX.endpwent
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.passwd
|
107
|
+
Rubinius.synchronize(self) do
|
108
|
+
begin
|
109
|
+
setpwent
|
110
|
+
|
111
|
+
loop do
|
112
|
+
pw = getpwent
|
113
|
+
return if pw.nil?
|
114
|
+
|
115
|
+
yield pw
|
116
|
+
end
|
117
|
+
ensure
|
118
|
+
endpwent
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def self.getgrnam(name)
|
124
|
+
name = StringValue(name)
|
125
|
+
|
126
|
+
group_ptr = FFI::Platform::POSIX.getgrnam(name)
|
127
|
+
if group_ptr.nil?
|
128
|
+
raise ArgumentError, "cannot find group - #{name}"
|
129
|
+
end
|
130
|
+
|
131
|
+
Struct::Group.new(group_ptr)
|
132
|
+
end
|
133
|
+
|
134
|
+
def self.getgrgid(gid = Process.gid)
|
135
|
+
gid = Rubinius::Type.coerce_to(gid, Integer, :to_int)
|
136
|
+
|
137
|
+
group_ptr = FFI::Platform::POSIX.getgrgid(gid)
|
138
|
+
if group_ptr.nil?
|
139
|
+
raise ArgumentError, "cannot find group - #{gid}"
|
140
|
+
end
|
141
|
+
|
142
|
+
Struct::Group.new(group_ptr)
|
143
|
+
end
|
144
|
+
|
145
|
+
def self.setgrent
|
146
|
+
FFI::Platform::POSIX.setgrent
|
147
|
+
end
|
148
|
+
|
149
|
+
def self.getgrent
|
150
|
+
group_ptr = FFI::Platform::POSIX.getgrent
|
151
|
+
return nil if group_ptr.nil?
|
152
|
+
|
153
|
+
Struct::Group.new(group_ptr)
|
154
|
+
end
|
155
|
+
|
156
|
+
def self.endgrent
|
157
|
+
FFI::Platform::POSIX.endgrent
|
158
|
+
end
|
159
|
+
|
160
|
+
def self.group
|
161
|
+
Rubinius.synchronize(self) do
|
162
|
+
begin
|
163
|
+
raise "parallel group iteration" if @parallel_iteration
|
164
|
+
@parallel_iteration = true
|
165
|
+
setgrent
|
166
|
+
|
167
|
+
loop do
|
168
|
+
gr = getgrent
|
169
|
+
return if gr.nil?
|
170
|
+
|
171
|
+
yield gr
|
172
|
+
end
|
173
|
+
ensure
|
174
|
+
endgrent
|
175
|
+
@parallel_iteration = false
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
data/lib/rubysl/etc.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require "
|
1
|
+
require "etc"
|
2
2
|
require "rubysl/etc/version"
|
data/lib/rubysl/etc/version.rb
CHANGED
data/rubysl-etc.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
|
14
14
|
spec.files = `git ls-files`.split($/)
|
15
15
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
-
spec.extensions = [
|
16
|
+
spec.extensions = []
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysl-etc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: '3.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Shirai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi2-generators
|
@@ -84,20 +84,18 @@ description: Ruby standard library etc.
|
|
84
84
|
email:
|
85
85
|
- brixen@gmail.com
|
86
86
|
executables: []
|
87
|
-
extensions:
|
88
|
-
- lib/rubysl/etc/extconf.rb
|
87
|
+
extensions: []
|
89
88
|
extra_rdoc_files: []
|
90
89
|
files:
|
91
90
|
- ".gitignore"
|
92
91
|
- ".travis.yml"
|
93
92
|
- Gemfile
|
94
93
|
- LICENSE
|
94
|
+
- MRI_LICENSE
|
95
95
|
- README.md
|
96
96
|
- Rakefile
|
97
97
|
- lib/etc.rb
|
98
98
|
- lib/rubysl/etc.rb
|
99
|
-
- lib/rubysl/etc/etc.rb.ffi
|
100
|
-
- lib/rubysl/etc/extconf.rb
|
101
99
|
- lib/rubysl/etc/version.rb
|
102
100
|
- rubysl-etc.gemspec
|
103
101
|
- spec/endgrent_spec.rb
|
@@ -136,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
134
|
version: '0'
|
137
135
|
requirements: []
|
138
136
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.
|
137
|
+
rubygems_version: 2.5.1
|
140
138
|
signing_key:
|
141
139
|
specification_version: 4
|
142
140
|
summary: Ruby standard library etc.
|
@@ -157,4 +155,3 @@ test_files:
|
|
157
155
|
- spec/shared/windows.rb
|
158
156
|
- spec/struct_group_spec.rb
|
159
157
|
- spec/struct_passwd_spec.rb
|
160
|
-
has_rdoc:
|
data/lib/rubysl/etc/etc.rb.ffi
DELETED
@@ -1,182 +0,0 @@
|
|
1
|
-
class Struct::Passwd < Rubinius::FFI::Struct
|
2
|
-
@@@
|
3
|
-
struct do |s|
|
4
|
-
s.include "sys/types.h"
|
5
|
-
s.include "pwd.h"
|
6
|
-
|
7
|
-
s.name "struct passwd"
|
8
|
-
s.field :pw_name, :string
|
9
|
-
s.field :pw_passwd, :string
|
10
|
-
s.field :pw_uid, :uid_t
|
11
|
-
s.field :pw_gid, :gid_t
|
12
|
-
s.field :pw_gecos, :string
|
13
|
-
s.field :pw_dir, :string
|
14
|
-
s.field :pw_shell, :string
|
15
|
-
end
|
16
|
-
@@@
|
17
|
-
|
18
|
-
def name; self[:pw_name]; end
|
19
|
-
def passwd; self[:pw_passwd]; end
|
20
|
-
def uid; self[:pw_uid]; end
|
21
|
-
def gid; self[:pw_gid]; end
|
22
|
-
def gecos; self[:pw_gecos]; end
|
23
|
-
def dir; self[:pw_dir]; end
|
24
|
-
def shell; self[:pw_shell]; end
|
25
|
-
end
|
26
|
-
|
27
|
-
class Struct::Group < Rubinius::FFI::Struct
|
28
|
-
@@@
|
29
|
-
struct do |s|
|
30
|
-
s.include "sys/types.h"
|
31
|
-
s.include "grp.h"
|
32
|
-
|
33
|
-
s.name "struct group"
|
34
|
-
s.field :gr_name, :string
|
35
|
-
s.field :gr_passwd, :string
|
36
|
-
s.field :gr_gid, :gid_t
|
37
|
-
s.field :gr_mem, :pointer
|
38
|
-
end
|
39
|
-
@@@
|
40
|
-
|
41
|
-
FFI = Rubinius::FFI
|
42
|
-
|
43
|
-
def name; self[:gr_name]; end
|
44
|
-
def gid; self[:gr_gid]; end
|
45
|
-
def passwd; self[:gr_passwd]; end
|
46
|
-
def mem
|
47
|
-
ptr = self[:gr_mem].read_pointer
|
48
|
-
|
49
|
-
ary = []
|
50
|
-
i = 1
|
51
|
-
|
52
|
-
while not ptr.null? do
|
53
|
-
ary << ptr.read_string
|
54
|
-
ptr = (self[:gr_mem] + i * FFI::Pointer.size).read_pointer
|
55
|
-
i += 1
|
56
|
-
end
|
57
|
-
|
58
|
-
ary
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
module Etc
|
63
|
-
FFI = Rubinius::FFI
|
64
|
-
|
65
|
-
const_set(:Passwd, Struct::Passwd)
|
66
|
-
const_set(:Group, Struct::Group)
|
67
|
-
|
68
|
-
def self.getlogin
|
69
|
-
getpwuid.name
|
70
|
-
end
|
71
|
-
|
72
|
-
def self.getpwnam(name)
|
73
|
-
login = StringValue(name)
|
74
|
-
|
75
|
-
passwd_ptr = FFI::Platform::POSIX.getpwnam(name)
|
76
|
-
if passwd_ptr.nil?
|
77
|
-
raise ArgumentError, "cannot find user - #{name}"
|
78
|
-
end
|
79
|
-
|
80
|
-
Struct::Passwd.new(passwd_ptr)
|
81
|
-
end
|
82
|
-
|
83
|
-
def self.getpwuid(uid = Process.uid)
|
84
|
-
uid = Rubinius::Type.coerce_to(uid, Integer, :to_int)
|
85
|
-
|
86
|
-
passwd_ptr = FFI::Platform::POSIX.getpwuid(uid)
|
87
|
-
if passwd_ptr.nil?
|
88
|
-
raise ArgumentError, "cannot find user - #{uid}"
|
89
|
-
end
|
90
|
-
|
91
|
-
Struct::Passwd.new(passwd_ptr)
|
92
|
-
end
|
93
|
-
|
94
|
-
def self.setpwent
|
95
|
-
FFI::Platform::POSIX.setpwent
|
96
|
-
end
|
97
|
-
|
98
|
-
def self.getpwent
|
99
|
-
passwd_ptr = FFI::Platform::POSIX.getpwent
|
100
|
-
return nil if passwd_ptr.nil?
|
101
|
-
|
102
|
-
Struct::Passwd.new(passwd_ptr)
|
103
|
-
end
|
104
|
-
|
105
|
-
def self.endpwent
|
106
|
-
FFI::Platform::POSIX.endpwent
|
107
|
-
end
|
108
|
-
|
109
|
-
def self.passwd
|
110
|
-
Rubinius.synchronize(self) do
|
111
|
-
begin
|
112
|
-
setpwent
|
113
|
-
|
114
|
-
loop do
|
115
|
-
pw = getpwent
|
116
|
-
return if pw.nil?
|
117
|
-
|
118
|
-
yield pw
|
119
|
-
end
|
120
|
-
ensure
|
121
|
-
endpwent
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
def self.getgrnam(name)
|
127
|
-
name = StringValue(name)
|
128
|
-
|
129
|
-
group_ptr = FFI::Platform::POSIX.getgrnam(name)
|
130
|
-
if group_ptr.nil?
|
131
|
-
raise ArgumentError, "cannot find group - #{name}"
|
132
|
-
end
|
133
|
-
|
134
|
-
Struct::Group.new(group_ptr)
|
135
|
-
end
|
136
|
-
|
137
|
-
def self.getgrgid(gid = Process.gid)
|
138
|
-
gid = Rubinius::Type.coerce_to(gid, Integer, :to_int)
|
139
|
-
|
140
|
-
group_ptr = FFI::Platform::POSIX.getgrgid(gid)
|
141
|
-
if group_ptr.nil?
|
142
|
-
raise ArgumentError, "cannot find group - #{gid}"
|
143
|
-
end
|
144
|
-
|
145
|
-
Struct::Group.new(group_ptr)
|
146
|
-
end
|
147
|
-
|
148
|
-
def self.setgrent
|
149
|
-
FFI::Platform::POSIX.setgrent
|
150
|
-
end
|
151
|
-
|
152
|
-
def self.getgrent
|
153
|
-
group_ptr = FFI::Platform::POSIX.getgrent
|
154
|
-
return nil if group_ptr.nil?
|
155
|
-
|
156
|
-
Struct::Group.new(group_ptr)
|
157
|
-
end
|
158
|
-
|
159
|
-
def self.endgrent
|
160
|
-
FFI::Platform::POSIX.endgrent
|
161
|
-
end
|
162
|
-
|
163
|
-
def self.group
|
164
|
-
Rubinius.synchronize(self) do
|
165
|
-
begin
|
166
|
-
raise "parallel group iteration" if @parallel_iteration
|
167
|
-
@parallel_iteration = true
|
168
|
-
setgrent
|
169
|
-
|
170
|
-
loop do
|
171
|
-
gr = getgrent
|
172
|
-
return if gr.nil?
|
173
|
-
|
174
|
-
yield gr
|
175
|
-
end
|
176
|
-
ensure
|
177
|
-
endgrent
|
178
|
-
@parallel_iteration = false
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|
data/lib/rubysl/etc/extconf.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require "ffi2/generators"
|
2
|
-
|
3
|
-
FFI::FileProcessor.new "etc.rb.ffi", "etc.rb"
|
4
|
-
|
5
|
-
# Fake out rubygem's expected build steps with extconf.rb
|
6
|
-
File.open "Makefile", "w" do |f|
|
7
|
-
f.puts <<-EOM
|
8
|
-
.PHONY: all install
|
9
|
-
|
10
|
-
all:
|
11
|
-
|
12
|
-
install:
|
13
|
-
|
14
|
-
EOM
|
15
|
-
end
|