extattr 0.2 → 0.4
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 +5 -5
- data/HISTORY.ja.md +49 -0
- data/LICENSE.md +4 -1
- data/QUICKREF.ja.md +112 -0
- data/README.md +55 -132
- data/Rakefile +193 -86
- data/ext/extattr-extattr.h +18 -18
- data/ext/extattr-windows.h +5 -5
- data/ext/extattr-xattr.h +6 -6
- data/ext/extattr.c +279 -217
- data/ext/extconf.rb +6 -7
- data/gemstub.rb +22 -0
- data/lib/extattr.rb +249 -32
- data/test/test_extattr.rb +75 -0
- metadata +34 -24
- data/spec/extattr_spec.rb +0 -62
data/Rakefile
CHANGED
@@ -1,105 +1,212 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
EXTFILES = FileList["ext/{*.h,*.c,*.cc}"]
|
30
|
-
LIBFILES = FileList["lib/**/*.rb"]
|
31
|
-
SOFILES_SET = RUBY_VERSIONS.map { |(ver, ruby)| ["lib/#{ver}/#{PACKAGE}.so", ruby] }
|
32
|
-
SOFILES = SOFILES_SET.map { |(lib, ruby)| lib }
|
33
|
-
EXTCONF = FileList["ext/extconf.rb"]
|
34
|
-
|
35
|
-
SPECSTUB = Gem::Specification.new do |s|
|
36
|
-
s.name = PACKAGE
|
37
|
-
s.version = VERSION
|
38
|
-
s.summary = SUMMARY
|
39
|
-
s.description = DESCRIPTION
|
40
|
-
s.homepage = WEBSITE
|
41
|
-
s.license = LICENSE
|
42
|
-
s.author = AUTHOR
|
43
|
-
s.email = EMAIL
|
44
|
-
s.executables = BINFILES.map { |n| File.basename n }
|
45
|
-
s.files = %w(LICENSE.md README.md Rakefile) + FileList["spec/*.rb"] + BINFILES + EXTCONF + EXTFILES + LIBFILES
|
46
|
-
s.rdoc_options = %w(--charset UTF-8 --main README.md)
|
47
|
-
#s.rdoc_options = %w(--charset UTF-8 --locale ja --main README.md)
|
48
|
-
s.has_rdoc = false
|
49
|
-
s.required_ruby_version = ">= 1.9.3"
|
50
|
-
s.add_development_dependency "rspec", "~> 2.14"
|
51
|
-
s.add_development_dependency "rake", "~> 10.0"
|
1
|
+
|
2
|
+
require "pathname"
|
3
|
+
require "rake/clean"
|
4
|
+
|
5
|
+
docnames = "{README,LICENSE,CHANGELOG,Changelog,HISTORY}"
|
6
|
+
doctypes = "{,.txt,.rd,.rdoc,.md,.markdown}"
|
7
|
+
cexttypes = "{c,C,cc,cxx,cpp,h,H,hh}"
|
8
|
+
|
9
|
+
DOC = FileList["#{docnames}{,.ja}#{doctypes}"] +
|
10
|
+
FileList["{contrib,ext}/**/#{docnames}{,.ja}#{doctypes}"] +
|
11
|
+
FileList["ext/**/*.#{cexttypes}"]
|
12
|
+
EXT = FileList["ext/**/*"]
|
13
|
+
BIN = FileList["bin/*"]
|
14
|
+
LIB = FileList["lib/**/*.rb"]
|
15
|
+
SPEC = FileList["spec/**/*"]
|
16
|
+
TEST = FileList["test/**/*"]
|
17
|
+
EXAMPLE = FileList["examples/**/*"]
|
18
|
+
GEMSTUB_SRC = "gemstub.rb"
|
19
|
+
RAKEFILE = [File.basename(__FILE__), GEMSTUB_SRC]
|
20
|
+
EXTRA = []
|
21
|
+
EXTCONF = FileList["ext/**/extconf.rb"]
|
22
|
+
EXTCONF.reject! { |n| !File.file?(n) }
|
23
|
+
EXTMAP = {}
|
24
|
+
|
25
|
+
load GEMSTUB_SRC
|
26
|
+
|
27
|
+
EXTMAP.dup.each_pair do |dir, name|
|
28
|
+
EXTMAP[Pathname.new(dir).cleanpath.to_s] = Pathname.new(name).cleanpath.to_s
|
52
29
|
end
|
53
30
|
|
31
|
+
GEMSTUB.extensions += EXTCONF
|
32
|
+
GEMSTUB.executables += FileList["bin/*"].map { |n| File.basename n }
|
33
|
+
GEMSTUB.executables.sort!
|
54
34
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
task :gemspec_native => GEMSPEC_NATIVE
|
59
|
-
task :gemfile => GEMFILE
|
60
|
-
task :gemfile_native => GEMFILE_NATIVE
|
35
|
+
PACKAGENAME = "#{GEMSTUB.name}-#{GEMSTUB.version}"
|
36
|
+
GEMFILE = "#{PACKAGENAME}.gem"
|
37
|
+
GEMSPEC = "#{PACKAGENAME}.gemspec"
|
61
38
|
|
62
|
-
|
63
|
-
|
39
|
+
GEMSTUB.files += DOC + EXT + EXTCONF + BIN + LIB + SPEC + TEST + EXAMPLE + RAKEFILE + EXTRA
|
40
|
+
GEMSTUB.files.sort!
|
41
|
+
if GEMSTUB.rdoc_options.nil? || GEMSTUB.rdoc_options.empty?
|
42
|
+
readme = %W(.md .markdown .rd .rdoc .txt #{""}).map { |ext| "README#{ext}" }.find { |m| DOC.find { |n| n == m } }
|
43
|
+
GEMSTUB.rdoc_options = %w(--charset UTF-8) + (readme ? %W(-m #{readme}) : [])
|
44
|
+
end
|
45
|
+
GEMSTUB.extra_rdoc_files += DOC + LIB + EXT.reject { |n| n.include?("/externals/") || !%w(.h .hh .c .cc .cpp .cxx).include?(File.extname(n)) }
|
46
|
+
GEMSTUB.extra_rdoc_files.sort!
|
47
|
+
|
48
|
+
GEMSTUB_TRYOUT = GEMSTUB.dup
|
49
|
+
GEMSTUB_TRYOUT.version = "#{GEMSTUB.version}#{Time.now.strftime(".TRYOUT.%Y%m%d.%H%M%S")}"
|
50
|
+
PACKAGENAME_TRYOUT = "#{GEMSTUB.name}-#{GEMSTUB_TRYOUT.version}"
|
51
|
+
GEMFILE_TRYOUT = "#{PACKAGENAME_TRYOUT}.gem"
|
52
|
+
GEMSPEC_TRYOUT = "#{PACKAGENAME_TRYOUT}.gemspec"
|
53
|
+
|
54
|
+
CLEAN << GEMSPEC << GEMSPEC_TRYOUT
|
55
|
+
CLOBBER << GEMFILE
|
56
|
+
|
57
|
+
task :default => :tryout do
|
58
|
+
$stderr.puts <<-EOS
|
59
|
+
#{__FILE__}:#{__LINE__}:
|
60
|
+
\ttype ``rake release'' to build release package.
|
61
|
+
EOS
|
64
62
|
end
|
65
63
|
|
64
|
+
desc "build tryout package"
|
65
|
+
task :tryout
|
66
|
+
|
67
|
+
desc "build release package"
|
68
|
+
task :release => :all
|
69
|
+
|
70
|
+
unless EXTCONF.empty?
|
71
|
+
RUBYSET ||= (ENV["RUBYSET"] || "").split(",")
|
72
|
+
|
73
|
+
if RUBYSET.nil? || RUBYSET.empty?
|
74
|
+
$stderr.puts <<-EOS
|
75
|
+
#{__FILE__}:
|
76
|
+
|
|
77
|
+
| If you want binary gem package, launch rake with ``RUBYSET`` enviroment
|
78
|
+
| variable for set ruby interpreters by comma separated.
|
79
|
+
|
|
80
|
+
| e.g.) $ rake RUBYSET=ruby
|
81
|
+
| or) $ rake RUBYSET=ruby21,ruby22,ruby23
|
82
|
+
|
|
83
|
+
EOS
|
84
|
+
else
|
85
|
+
platforms = RUBYSET.map { |ruby| `#{ruby} --disable-gems -e "puts RUBY_PLATFORM"`.chomp }
|
86
|
+
platforms1 = platforms.uniq
|
87
|
+
unless platforms1.size == 1 && !platforms1[0].empty?
|
88
|
+
abort <<-EOS
|
89
|
+
#{__FILE__}:#{__LINE__}: different platforms:
|
90
|
+
#{RUBYSET.zip(platforms).map { |ruby, platform| "%24s => %s" % [ruby, platform] }.join("\n")}
|
91
|
+
ABORTED.
|
92
|
+
EOS
|
93
|
+
end
|
94
|
+
PLATFORM = platforms1[0]
|
66
95
|
|
67
|
-
|
68
|
-
|
96
|
+
RUBY_VERSIONS = RUBYSET.map do |ruby|
|
97
|
+
ver = `#{ruby} --disable-gems -e "puts RUBY_VERSION"`.slice(/\d+\.\d+/)
|
98
|
+
raise "failed ruby checking - ``#{ruby}''" unless $?.success?
|
99
|
+
[ver, ruby]
|
100
|
+
end
|
101
|
+
|
102
|
+
SOFILES_SET = RUBY_VERSIONS.map { |(ver, ruby)|
|
103
|
+
EXTCONF.map { |extconf|
|
104
|
+
extdir = Pathname.new(extconf).cleanpath.dirname.to_s
|
105
|
+
case
|
106
|
+
when soname = EXTMAP[extdir.sub(/^ext\//i, "")]
|
107
|
+
soname = soname.sub(/\.so$/i, "")
|
108
|
+
when extdir == "ext" || extdir == "."
|
109
|
+
soname = GEMSTUB.name
|
110
|
+
else
|
111
|
+
soname = File.basename(extdir)
|
112
|
+
end
|
113
|
+
|
114
|
+
[ruby, File.join("lib", "#{soname.sub(/(?<=\/)|^(?!.*\/)/, "#{ver}/")}.so"), extconf]
|
115
|
+
}
|
116
|
+
}.flatten(1)
|
117
|
+
SOFILES = SOFILES_SET.map { |(ruby, sopath, extconf)| sopath }
|
118
|
+
|
119
|
+
GEMSTUB_NATIVE = GEMSTUB.dup
|
120
|
+
GEMSTUB_NATIVE.files += SOFILES
|
121
|
+
GEMSTUB_NATIVE.platform = Gem::Platform.new(PLATFORM).to_s
|
122
|
+
GEMSTUB_NATIVE.extensions.clear
|
123
|
+
GEMFILE_NATIVE = "#{GEMSTUB_NATIVE.name}-#{GEMSTUB_NATIVE.version}-#{GEMSTUB_NATIVE.platform}.gem"
|
124
|
+
GEMSPEC_NATIVE = "#{GEMSTUB_NATIVE.name}-#{GEMSTUB_NATIVE.platform}.gemspec"
|
125
|
+
|
126
|
+
task :all => ["native-gem", GEMFILE]
|
127
|
+
|
128
|
+
desc "build binary gem package"
|
129
|
+
task "native-gem" => GEMFILE_NATIVE
|
130
|
+
|
131
|
+
desc "generate binary gemspec"
|
132
|
+
task "native-gemspec" => GEMSPEC_NATIVE
|
133
|
+
|
134
|
+
file GEMFILE_NATIVE => DOC + EXT + EXTCONF + BIN + LIB + SPEC + TEST + EXAMPLE + SOFILES + RAKEFILE + [GEMSPEC_NATIVE] do
|
135
|
+
sh "gem build #{GEMSPEC_NATIVE}"
|
136
|
+
end
|
137
|
+
|
138
|
+
file GEMSPEC_NATIVE => RAKEFILE do
|
139
|
+
File.write(GEMSPEC_NATIVE, GEMSTUB_NATIVE.to_ruby, mode: "wb")
|
140
|
+
end
|
141
|
+
|
142
|
+
desc "build c-extension libraries"
|
143
|
+
task "sofiles" => SOFILES
|
144
|
+
|
145
|
+
SOFILES_SET.each do |(ruby, soname, extconf)|
|
146
|
+
sodir = File.dirname(soname)
|
147
|
+
makefile = File.join(sodir, "Makefile")
|
148
|
+
|
149
|
+
CLEAN << GEMSPEC_NATIVE << sodir
|
150
|
+
CLOBBER << GEMFILE_NATIVE
|
151
|
+
|
152
|
+
directory sodir
|
153
|
+
|
154
|
+
desc "generate Makefile for binary extension library"
|
155
|
+
file makefile => [sodir, extconf] do
|
156
|
+
rel_extconf = Pathname.new(extconf).relative_path_from(Pathname.new(sodir)).to_s
|
157
|
+
cd sodir do
|
158
|
+
sh *%W"#{ruby} #{rel_extconf} --ruby=#{ruby} #{ENV["EXTCONF"]}"
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
desc "build binary extension library"
|
163
|
+
file soname => [makefile] + EXT do
|
164
|
+
cd sodir do
|
165
|
+
sh "make"
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
69
170
|
end
|
70
171
|
|
71
|
-
|
72
|
-
|
172
|
+
|
173
|
+
task :all => GEMFILE
|
174
|
+
task :tryout => GEMFILE_TRYOUT
|
175
|
+
|
176
|
+
desc "generate local rdoc"
|
177
|
+
task :rdoc => DOC + LIB do
|
178
|
+
sh *(%w(rdoc) + GEMSTUB.rdoc_options + DOC + LIB)
|
73
179
|
end
|
74
180
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
File.write(GEMSPEC, s.to_ruby, mode: "wb")
|
181
|
+
desc "launch rspec"
|
182
|
+
task rspec: :all do
|
183
|
+
sh "rspec"
|
79
184
|
end
|
80
185
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
186
|
+
desc "build gem package"
|
187
|
+
task gem: GEMFILE
|
188
|
+
|
189
|
+
desc "generate gemspec"
|
190
|
+
task gemspec: GEMSPEC
|
191
|
+
|
192
|
+
desc "print package name"
|
193
|
+
task "package-name" do
|
194
|
+
puts PACKAGENAME
|
86
195
|
end
|
87
196
|
|
88
|
-
|
89
|
-
|
90
|
-
|
197
|
+
file GEMFILE => DOC + EXT + EXTCONF + BIN + LIB + SPEC + TEST + EXAMPLE + RAKEFILE + [GEMSPEC] do
|
198
|
+
sh "gem build #{GEMSPEC}"
|
199
|
+
end
|
91
200
|
|
92
|
-
|
201
|
+
file GEMFILE_TRYOUT => DOC + EXT + EXTCONF + BIN + LIB + SPEC + TEST + EXAMPLE + RAKEFILE + [GEMSPEC_TRYOUT] do
|
202
|
+
#file GEMFILE_TRYOUT do
|
203
|
+
sh "gem build #{GEMSPEC_TRYOUT}"
|
204
|
+
end
|
93
205
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
end
|
98
|
-
end
|
206
|
+
file GEMSPEC => RAKEFILE do
|
207
|
+
File.write(GEMSPEC, GEMSTUB.to_ruby, mode: "wb")
|
208
|
+
end
|
99
209
|
|
100
|
-
|
101
|
-
|
102
|
-
sh "#{ruby} ../../ext/extconf.rb"
|
103
|
-
end
|
104
|
-
end
|
210
|
+
file GEMSPEC_TRYOUT => RAKEFILE do
|
211
|
+
File.write(GEMSPEC_TRYOUT, GEMSTUB_TRYOUT.to_ruby, mode: "wb")
|
105
212
|
end
|
data/ext/extattr-extattr.h
CHANGED
@@ -22,31 +22,31 @@ extattr_list_name(const char list[], size_t size, VALUE infection_source, void (
|
|
22
22
|
}
|
23
23
|
|
24
24
|
static int
|
25
|
-
get_extattr_list_size(
|
25
|
+
get_extattr_list_size(ssize_t (*extattr_list)(), intptr_t d, VALUE filesrc, int namespace1)
|
26
26
|
{
|
27
27
|
int size = extattr_list(d, namespace1, NULL, 0);
|
28
|
-
if (size < 0) {
|
28
|
+
if (size < 0) { aux_sys_fail(filesrc, "extattr_list"); }
|
29
29
|
return size;
|
30
30
|
}
|
31
31
|
|
32
32
|
static VALUE
|
33
|
-
extattr_list_common(
|
33
|
+
extattr_list_common(ssize_t (*extattr_list)(), intptr_t d, VALUE filesrc, int namespace1)
|
34
34
|
{
|
35
|
-
size_t size = get_extattr_list_size(extattr_list, d, namespace1);
|
35
|
+
size_t size = get_extattr_list_size(extattr_list, d, filesrc, namespace1);
|
36
36
|
VALUE buf;
|
37
37
|
char *ptr = ALLOCV(buf, size);
|
38
38
|
|
39
39
|
ssize_t size1 = extattr_list(d, namespace1, ptr, size);
|
40
|
-
if (size1 < 0) {
|
40
|
+
if (size1 < 0) { aux_sys_fail(filesrc, "extattr_list"); }
|
41
41
|
|
42
42
|
VALUE list = Qnil;
|
43
43
|
if (rb_block_given_p()) {
|
44
|
-
extattr_list_name(ptr, size1,
|
44
|
+
extattr_list_name(ptr, size1, filesrc,
|
45
45
|
(void (*)(void *, VALUE))rb_yield_values, (void *)(1));
|
46
46
|
} else {
|
47
47
|
list = rb_ary_new();
|
48
|
-
OBJ_INFECT(list,
|
49
|
-
extattr_list_name(ptr, size1,
|
48
|
+
OBJ_INFECT(list, filesrc);
|
49
|
+
extattr_list_name(ptr, size1, filesrc,
|
50
50
|
(void (*)(void *, VALUE))rb_ary_push, (void *)list);
|
51
51
|
}
|
52
52
|
ALLOCV_END(buf);
|
@@ -74,9 +74,9 @@ file_s_extattr_list_link_main(VALUE path, int namespace1)
|
|
74
74
|
|
75
75
|
|
76
76
|
static VALUE
|
77
|
-
extattr_size_common(
|
77
|
+
extattr_size_common(ssize_t (*extattr_get)(), intptr_t d, int namespace1, VALUE name)
|
78
78
|
{
|
79
|
-
ssize_t size = extattr_get(d, namespace1,
|
79
|
+
ssize_t size = extattr_get(d, namespace1, StringValueCStr(name), NULL, 0);
|
80
80
|
if (size < 0) { rb_sys_fail("extattr_get call error"); }
|
81
81
|
return SIZET2NUM(size);
|
82
82
|
}
|
@@ -101,12 +101,12 @@ file_s_extattr_size_link_main(VALUE path, int namespace1, VALUE name)
|
|
101
101
|
|
102
102
|
|
103
103
|
static VALUE
|
104
|
-
extattr_get_common(
|
104
|
+
extattr_get_common(ssize_t (*extattr_get)(), intptr_t d, VALUE path, int namespace1, VALUE name)
|
105
105
|
{
|
106
|
-
ssize_t size = extattr_get(d, namespace1,
|
106
|
+
ssize_t size = extattr_get(d, namespace1, StringValueCStr(name), NULL, 0);
|
107
107
|
if (size < 0) { rb_sys_fail(StringValueCStr(path)); }
|
108
108
|
VALUE buf = rb_str_buf_new(size);
|
109
|
-
size = extattr_get(d, namespace1,
|
109
|
+
size = extattr_get(d, namespace1, StringValueCStr(name), StringValueCStr(buf), size);
|
110
110
|
if (size < 0) { rb_sys_fail(StringValueCStr(path)); }
|
111
111
|
rb_str_set_len(buf, size);
|
112
112
|
return buf;
|
@@ -132,9 +132,9 @@ file_s_extattr_get_link_main(VALUE path, int namespace1, VALUE name)
|
|
132
132
|
|
133
133
|
|
134
134
|
static VALUE
|
135
|
-
extattr_set_common(
|
135
|
+
extattr_set_common(ssize_t (*extattr_set)(), intptr_t d, int namespace1, VALUE name, VALUE data)
|
136
136
|
{
|
137
|
-
int status = extattr_set(d, namespace1,
|
137
|
+
int status = extattr_set(d, namespace1, StringValueCStr(name), StringValueCStr(data), RSTRING_LEN(data));
|
138
138
|
if (status < 0) { rb_sys_fail("extattr_set call error"); }
|
139
139
|
return Qnil;
|
140
140
|
}
|
@@ -161,7 +161,7 @@ file_s_extattr_set_link_main(VALUE path, int namespace1, VALUE name, VALUE data)
|
|
161
161
|
static VALUE
|
162
162
|
extattr_delete_common(int (*extattr_delete)(), intptr_t d, int namespace1, VALUE name)
|
163
163
|
{
|
164
|
-
int status = extattr_delete(d, namespace1,
|
164
|
+
int status = extattr_delete(d, namespace1, StringValueCStr(name), NULL, 0);
|
165
165
|
if (status < 0) { rb_sys_fail("extattr_delete call error"); }
|
166
166
|
return Qnil;
|
167
167
|
}
|
@@ -186,7 +186,7 @@ file_s_extattr_delete_link_main(VALUE path, int namespace1, VALUE name)
|
|
186
186
|
|
187
187
|
|
188
188
|
static void
|
189
|
-
|
189
|
+
extattr_init_implement(void)
|
190
190
|
{
|
191
|
-
rb_define_const(
|
191
|
+
rb_define_const(mExtAttr, "IMPLEMENT", rb_str_freeze(rb_str_new_cstr("extattr")));
|
192
192
|
}
|
data/ext/extattr-windows.h
CHANGED
@@ -19,8 +19,8 @@
|
|
19
19
|
*/
|
20
20
|
|
21
21
|
enum {
|
22
|
-
EXTATTR_NAMESPACE_USER =
|
23
|
-
EXTATTR_NAMESPACE_SYSTEM =
|
22
|
+
EXTATTR_NAMESPACE_USER = 1,
|
23
|
+
EXTATTR_NAMESPACE_SYSTEM = 2,
|
24
24
|
|
25
25
|
/*
|
26
26
|
* ADS は普通のファイルのように扱えるから、extattr とみなして扱う場合は容量の制限を設けることにする。
|
@@ -91,7 +91,7 @@ wpath2str(const wchar_t path[], size_t size)
|
|
91
91
|
}
|
92
92
|
|
93
93
|
/*
|
94
|
-
* ADS 名の先端のコロン『:』と、終端の『:$DATA』を除去して
|
94
|
+
* ADS 名の先端のコロン『:』と、終端の『:$DATA』を除去して Ruby の文字列を返す。
|
95
95
|
*/
|
96
96
|
static VALUE
|
97
97
|
adsname2str(const wchar_t name[], size_t size)
|
@@ -710,7 +710,7 @@ file_s_extattr_delete_link_main(VALUE path, int namespace1, VALUE name)
|
|
710
710
|
|
711
711
|
|
712
712
|
static void
|
713
|
-
|
713
|
+
extattr_init_implement(void)
|
714
714
|
{
|
715
715
|
ENCutf8p = rb_enc_find("UTF-8");
|
716
716
|
ENCutf8 = rb_enc_from_encoding(ENCutf8p);
|
@@ -720,5 +720,5 @@ ext_init_implement(void)
|
|
720
720
|
ENCutf16le = rb_enc_from_encoding(ENCutf16lep);
|
721
721
|
rb_gc_register_address(&ENCutf16le);
|
722
722
|
|
723
|
-
rb_define_const(
|
723
|
+
rb_define_const(mExtAttr, "IMPLEMENT", rb_str_freeze(rb_str_new_cstr("windows")));
|
724
724
|
}
|
data/ext/extattr-xattr.h
CHANGED
@@ -6,10 +6,10 @@
|
|
6
6
|
#endif
|
7
7
|
|
8
8
|
enum {
|
9
|
-
EXTATTR_NAMESPACE_USER,
|
10
|
-
EXTATTR_NAMESPACE_SYSTEM,
|
11
|
-
EXTATTR_NAMESPACE_TRUSTED,
|
12
|
-
EXTATTR_NAMESPACE_SECURITY,
|
9
|
+
EXTATTR_NAMESPACE_USER = 1,
|
10
|
+
EXTATTR_NAMESPACE_SYSTEM = 2,
|
11
|
+
EXTATTR_NAMESPACE_TRUSTED = 3,
|
12
|
+
EXTATTR_NAMESPACE_SECURITY = 4,
|
13
13
|
};
|
14
14
|
|
15
15
|
|
@@ -217,7 +217,7 @@ file_s_extattr_delete_link_main(VALUE path, int namespace1, VALUE name)
|
|
217
217
|
|
218
218
|
|
219
219
|
static void
|
220
|
-
|
220
|
+
extattr_init_implement(void)
|
221
221
|
{
|
222
222
|
NAMESPACE_USER_PREFIX = rb_str_new_cstr("user.");
|
223
223
|
NAMESPACE_SYSTEM_PREFIX = rb_str_new_cstr("system.");
|
@@ -225,5 +225,5 @@ ext_init_implement(void)
|
|
225
225
|
rb_gc_register_mark_object(NAMESPACE_USER_PREFIX);
|
226
226
|
rb_gc_register_mark_object(NAMESPACE_SYSTEM_PREFIX);
|
227
227
|
|
228
|
-
rb_define_const(
|
228
|
+
rb_define_const(mExtAttr, "IMPLEMENT", rb_str_freeze(rb_str_new_cstr("xattr")));
|
229
229
|
}
|