mkdtemp 1.0 → 1.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.
- data/ext/mkdtemp.c +20 -4
- data/lib/mkdtemp/version.rb +2 -2
- metadata +7 -6
data/ext/mkdtemp.c
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
/*
|
2
|
-
Copyright 2007-
|
1
|
+
/*
|
2
|
+
Copyright 2007-2009 Wincent Colaiuta
|
3
3
|
This program is free software: you can redistribute it and/or modify
|
4
4
|
it under the terms of the GNU General Public License as published by
|
5
5
|
the Free Software Foundation, either version 3 of the License, or
|
@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
#include <ruby.h>
|
18
18
|
#include <errno.h>
|
19
19
|
#include <unistd.h>
|
20
|
+
#include "ruby_compat.h"
|
20
21
|
|
21
22
|
/*
|
22
23
|
|
@@ -35,16 +36,31 @@ Enterprise Linux it states that the template suffix "must be XXXXXX".
|
|
35
36
|
static VALUE dir_mkdtemp_m(int argc, VALUE *argv, VALUE self)
|
36
37
|
{
|
37
38
|
VALUE template;
|
39
|
+
char *c_template;
|
38
40
|
char *path;
|
41
|
+
|
42
|
+
/* process argument */
|
39
43
|
if (rb_scan_args(argc, argv, "01", &template) == 0) /* check for 0 mandatory arguments, 1 optional argument */
|
40
44
|
template = Qnil; /* default to nil if no argument passed */
|
41
45
|
if (NIL_P(template))
|
42
46
|
template = rb_str_new2("/tmp/temp.XXXXXX"); /* fallback to this template if passed nil */
|
43
47
|
SafeStringValue(template); /* raises if template is tainted and SAFE level > 0 */
|
44
48
|
template = StringValue(template); /* duck typing support */
|
45
|
-
|
49
|
+
|
50
|
+
/* create temporary storage */
|
51
|
+
c_template = malloc(RSTRING_LEN(template) + 1);
|
52
|
+
if (!c_template)
|
53
|
+
rb_raise(rb_eNoMemError, "failed to allocate %ld bytes of template storage", RSTRING_LEN(template) + 1);
|
54
|
+
strncpy(c_template, RSTRING_PTR(template), RSTRING_LEN(template));
|
55
|
+
c_template[RSTRING_LEN(template)] = 0; /* NUL-terminate */
|
56
|
+
|
57
|
+
/* fill out template */
|
58
|
+
path = mkdtemp(c_template);
|
59
|
+
if (path)
|
60
|
+
template = rb_str_new2(path);
|
61
|
+
free(c_template);
|
46
62
|
if (path == NULL)
|
47
|
-
rb_raise(rb_eSystemCallError, "mkdtemp failed (error: %
|
63
|
+
rb_raise(rb_eSystemCallError, "mkdtemp failed (error #%d: %s)", errno, strerror(errno));
|
48
64
|
return template;
|
49
65
|
}
|
50
66
|
|
data/lib/mkdtemp/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2008 Wincent Colaiuta
|
1
|
+
# Copyright 2008-2009 Wincent Colaiuta
|
2
2
|
# This program is free software: you can redistribute it and/or modify
|
3
3
|
# it under the terms of the GNU General Public License as published by
|
4
4
|
# the Free Software Foundation, either version 3 of the License, or
|
@@ -14,6 +14,6 @@
|
|
14
14
|
|
15
15
|
class Dir
|
16
16
|
module Mkdtemp
|
17
|
-
VERSION = '1.
|
17
|
+
VERSION = '1.1'
|
18
18
|
end # module Mkdtemp
|
19
19
|
end # class Dir
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mkdtemp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "1.
|
4
|
+
version: "1.1"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wincent Colaiuta
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-06 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
16
|
-
description: mkdtemp is a C extension that wraps the Standard C Library function
|
16
|
+
description: " mkdtemp is a C extension that wraps the Standard C Library function\n of the same name to make secure creation of temporary directories\n easily available from within Ruby.\n"
|
17
17
|
email: win@wincent.com
|
18
18
|
executables: []
|
19
19
|
|
@@ -22,7 +22,6 @@ extensions:
|
|
22
22
|
extra_rdoc_files: []
|
23
23
|
|
24
24
|
files:
|
25
|
-
- lib/mkdtemp
|
26
25
|
- lib/mkdtemp/version.rb
|
27
26
|
- spec/mkdtemp_spec.rb
|
28
27
|
- spec/spec_helper.rb
|
@@ -30,6 +29,8 @@ files:
|
|
30
29
|
- ext/extconf.rb
|
31
30
|
has_rdoc: true
|
32
31
|
homepage: http://mkdtemp.rubyforge.org/
|
32
|
+
licenses: []
|
33
|
+
|
33
34
|
post_install_message:
|
34
35
|
rdoc_options: []
|
35
36
|
|
@@ -51,9 +52,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
52
|
requirements: []
|
52
53
|
|
53
54
|
rubyforge_project: mkdtemp
|
54
|
-
rubygems_version: 1.3.
|
55
|
+
rubygems_version: 1.3.5
|
55
56
|
signing_key:
|
56
|
-
specification_version:
|
57
|
+
specification_version: 3
|
57
58
|
summary: Secure creation of temporary directories
|
58
59
|
test_files: []
|
59
60
|
|