posix-spawn 0.3.11 → 0.3.12
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 +4 -4
- data/COPYING +0 -6
- data/ext/posix-spawn.c +20 -24
- data/lib/posix/spawn/child.rb +1 -2
- data/lib/posix/spawn/version.rb +1 -1
- data/posix-spawn.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e7aaeb2727c0c2d0d4b1055fee451289ddd510b
|
4
|
+
data.tar.gz: 87bcf9d8cc5cd759a6dc985a683b2a6d44dd8152
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f94bf7abd676780045ffb4c7d010cb0cc626d1fe6bbe84fab3126c4764a14f3828266db52f5ffa1eed5827ce0cac988b53f443bf9fed2bfd37110f6b55092f5
|
7
|
+
data.tar.gz: 20f06443465c1b96e06f988ca0c9b74df329cb13bbc0cb132217fa9453d35680e539de59492bfb2fe65bdd37c5c3d2b36a970899fd5fe860a04c0a9206530a09
|
data/COPYING
CHANGED
@@ -20,9 +20,3 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
20
20
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
21
21
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
22
|
SOFTWARE.
|
23
|
-
|
24
|
-
A small portion of the environ dup'ing code in ext/posix-spawn.c
|
25
|
-
was taken from glibc <http://www.gnu.org/s/libc/> and is maybe
|
26
|
-
Copyright (c) 2011 by The Free Software Foundation or maybe
|
27
|
-
by others mentioned in the glibc LICENSES file. glibc is
|
28
|
-
distributed under the terms of the LGPL license.
|
data/ext/posix-spawn.c
CHANGED
@@ -269,27 +269,22 @@ each_env_check_i(VALUE key, VALUE val, VALUE arg)
|
|
269
269
|
static int
|
270
270
|
each_env_i(VALUE key, VALUE val, VALUE arg)
|
271
271
|
{
|
272
|
-
char *name = StringValuePtr(key);
|
273
|
-
size_t
|
272
|
+
const char *name = StringValuePtr(key);
|
273
|
+
const size_t name_len = strlen(name);
|
274
274
|
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
if (!
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
do
|
287
|
-
dp[0] = dp[1];
|
288
|
-
while (*dp++);
|
289
|
-
/* Continue the loop in case NAME appears again. */
|
275
|
+
char **envp = (char **)arg;
|
276
|
+
size_t i, j;
|
277
|
+
|
278
|
+
for (i = 0; envp[i];) {
|
279
|
+
const char *ev = envp[i];
|
280
|
+
|
281
|
+
if (strlen(ev) > name_len && !memcmp(ev, name, name_len) && ev[name_len] == '=') {
|
282
|
+
for (j = i; envp[j]; ++j)
|
283
|
+
envp[j] = envp[j + 1];
|
284
|
+
continue;
|
290
285
|
}
|
291
|
-
|
292
|
-
|
286
|
+
i++;
|
287
|
+
}
|
293
288
|
|
294
289
|
/*
|
295
290
|
* Insert the new value if we have one. We can assume there is space
|
@@ -301,15 +296,15 @@ each_env_i(VALUE key, VALUE val, VALUE arg)
|
|
301
296
|
char *cval = StringValuePtr(val);
|
302
297
|
|
303
298
|
size_t cval_len = strlen(cval);
|
304
|
-
size_t ep_len =
|
299
|
+
size_t ep_len = name_len + 1 + cval_len + 1; /* +2 for null terminator and '=' separator */
|
305
300
|
|
306
301
|
/* find the last entry */
|
307
302
|
while (*ep != NULL) ++ep;
|
308
303
|
*ep = malloc(ep_len);
|
309
304
|
|
310
|
-
strncpy(*ep, name,
|
311
|
-
(*ep)[
|
312
|
-
strncpy(*ep +
|
305
|
+
strncpy(*ep, name, name_len);
|
306
|
+
(*ep)[name_len] = '=';
|
307
|
+
strncpy(*ep + name_len + 1, cval, cval_len);
|
313
308
|
(*ep)[ep_len-1] = 0;
|
314
309
|
}
|
315
310
|
|
@@ -373,6 +368,7 @@ rb_posixspawn_pspawn(VALUE self, VALUE env, VALUE argv, VALUE options)
|
|
373
368
|
|
374
369
|
if (RHASH_SIZE(env) > 0) {
|
375
370
|
int size = 0;
|
371
|
+
char **new_env;
|
376
372
|
|
377
373
|
char **curr = environ;
|
378
374
|
if (curr) {
|
@@ -387,7 +383,7 @@ rb_posixspawn_pspawn(VALUE self, VALUE env, VALUE argv, VALUE options)
|
|
387
383
|
size = 0;
|
388
384
|
}
|
389
385
|
|
390
|
-
|
386
|
+
new_env = calloc(size+RHASH_SIZE(env)+1, sizeof(char*));
|
391
387
|
for (i = 0; i < size; i++) {
|
392
388
|
new_env[i] = strdup(environ[i]);
|
393
389
|
}
|
data/lib/posix/spawn/child.rb
CHANGED
@@ -158,7 +158,7 @@ module POSIX
|
|
158
158
|
|
159
159
|
# grab exit status
|
160
160
|
@status = waitpid(pid)
|
161
|
-
rescue Object
|
161
|
+
rescue Object
|
162
162
|
[stdin, stdout, stderr].each { |fd| fd.close rescue nil }
|
163
163
|
if @status.nil?
|
164
164
|
if !@pgroup_kill
|
@@ -197,7 +197,6 @@ module POSIX
|
|
197
197
|
def read_and_write(input, stdin, stdout, stderr, timeout=nil, max=nil)
|
198
198
|
max = nil if max && max <= 0
|
199
199
|
@out, @err = '', ''
|
200
|
-
offset = 0
|
201
200
|
|
202
201
|
# force all string and IO encodings to BINARY under 1.9 for now
|
203
202
|
if @out.respond_to?(:force_encoding) and stdin.respond_to?(:set_encoding)
|
data/lib/posix/spawn/version.rb
CHANGED
data/posix-spawn.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
|
12
12
|
s.authors = ['Ryan Tomayko', 'Aman Gupta']
|
13
13
|
s.email = ['r@tomayko.com', 'aman@tmm1.net']
|
14
|
-
s.licenses = ['MIT'
|
14
|
+
s.licenses = ['MIT']
|
15
15
|
|
16
16
|
s.add_development_dependency 'rake-compiler', '0.7.6'
|
17
17
|
s.add_development_dependency 'minitest', '>= 4'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: posix-spawn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Tomayko
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|
@@ -75,7 +75,6 @@ files:
|
|
75
75
|
homepage: https://github.com/rtomayko/posix-spawn
|
76
76
|
licenses:
|
77
77
|
- MIT
|
78
|
-
- LGPL
|
79
78
|
metadata: {}
|
80
79
|
post_install_message:
|
81
80
|
rdoc_options: []
|
@@ -93,8 +92,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
92
|
version: '0'
|
94
93
|
requirements: []
|
95
94
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.
|
95
|
+
rubygems_version: 2.4.5.1
|
97
96
|
signing_key:
|
98
97
|
specification_version: 4
|
99
98
|
summary: posix_spawnp(2) for ruby
|
100
99
|
test_files: []
|
100
|
+
has_rdoc:
|