ffi-xattr 0.0.4 → 0.0.5
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 +7 -0
- data/.travis.yml +1 -1
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/lib/ffi-xattr.rb +3 -1
- data/lib/ffi-xattr/darwin_lib.rb +1 -1
- data/lib/ffi-xattr/error.rb +1 -1
- data/lib/ffi-xattr/linux_lib.rb +1 -1
- data/lib/ffi-xattr/version.rb +1 -1
- data/lib/ffi-xattr/windows_lib.rb +45 -0
- data/spec/xattr_spec.rb +20 -0
- metadata +60 -81
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5181ad35070fb0035bf81d417c9ccae80f533384
|
4
|
+
data.tar.gz: d2ac366fbc7441c2a20f97e2d00de292db189273
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d79f9cf983ca89e0f53aabaac1b4c32b3f72b47815f58ddd80a6a7cf35e7278876fb85d7253eae3d3d4929958fcfac9af55f774a09f0b59f559e0cca258dab77
|
7
|
+
data.tar.gz: a443c8fd63b32eb20924c9e3d5841d2e89aae52530cef42e16cb50fddce9bba7b3b9fa64525ad79e3030d58875fba2bc24fa6113cf537884f721eeaceffa44f4
|
data/.travis.yml
CHANGED
data/LICENSE
CHANGED
@@ -186,7 +186,7 @@ APPENDIX: How to apply the Apache License to your work.
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
187
187
|
identification within third-party archives.
|
188
188
|
|
189
|
-
Copyright 2011 Jari Bakken
|
189
|
+
Copyright 2011-2012 Jari Bakken
|
190
190
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
192
192
|
you may not use this file except in compliance with the License.
|
data/README.md
CHANGED
@@ -33,7 +33,7 @@ Note on Patches/Pull Requests
|
|
33
33
|
Copyright
|
34
34
|
---------
|
35
35
|
|
36
|
-
Copyright 2011 Jari Bakken
|
36
|
+
Copyright 2011-2012 Jari Bakken
|
37
37
|
|
38
38
|
Licensed under the Apache License, Version 2.0 (the "License");
|
39
39
|
you may not use this file except in compliance with the License.
|
data/lib/ffi-xattr.rb
CHANGED
@@ -7,6 +7,8 @@ when /linux/
|
|
7
7
|
require 'ffi-xattr/linux_lib'
|
8
8
|
when /darwin|bsd/
|
9
9
|
require 'ffi-xattr/darwin_lib'
|
10
|
+
when /mingw/
|
11
|
+
require 'ffi-xattr/windows_lib'
|
10
12
|
else
|
11
13
|
raise NotImplementedError, "ffi-xattr not supported on #{RUBY_PLATFORM}"
|
12
14
|
end
|
@@ -18,7 +20,7 @@ class Xattr
|
|
18
20
|
# Use <tt>:no_follow => true</tt> in options to work on symlink itself instead of following it.
|
19
21
|
def initialize(path, options = {})
|
20
22
|
raise Errno::ENOENT, path unless File.exist?(path)
|
21
|
-
@path = path
|
23
|
+
@path = path.to_str
|
22
24
|
@no_follow = !!options[:no_follow]
|
23
25
|
end
|
24
26
|
|
data/lib/ffi-xattr/darwin_lib.rb
CHANGED
data/lib/ffi-xattr/error.rb
CHANGED
data/lib/ffi-xattr/linux_lib.rb
CHANGED
data/lib/ffi-xattr/version.rb
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'ffi-xattr'
|
3
|
+
|
4
|
+
class Xattr # :nodoc: all
|
5
|
+
module Lib
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def list(path, no_follow)
|
9
|
+
lines = `dir /r "#{path}"`.split("\n")
|
10
|
+
|
11
|
+
xattrs = []
|
12
|
+
lines.each { |line|
|
13
|
+
if line =~ /\:\$DATA$/
|
14
|
+
size = line.split(' ')[0].gsub(/[^0-9]/,'').to_i
|
15
|
+
|
16
|
+
if size > 0
|
17
|
+
xattrs << line.split(':')[1]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
}
|
21
|
+
xattrs
|
22
|
+
end
|
23
|
+
|
24
|
+
def get(path, no_follow, key)
|
25
|
+
fp = "#{path}:#{key}"
|
26
|
+
if File.exists?(fp)
|
27
|
+
File.binread(fp)
|
28
|
+
else
|
29
|
+
raise "No such key. #{key.inspect} #{path.inspect}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def set(path, no_follow, key, value)
|
34
|
+
File.open("#{path}:#{key}",'wb') { |io| io << value }
|
35
|
+
end
|
36
|
+
|
37
|
+
def remove(path, no_follow, key)
|
38
|
+
# done this way because Windows have no function to remove Alternate Data Stream
|
39
|
+
# quickest way is to set the value to 0 byte length instead of trying to create another file then apply the attributes, especially when dealing with a big file
|
40
|
+
self.set(path, false, key, '')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
data/spec/xattr_spec.rb
CHANGED
@@ -75,6 +75,26 @@ describe Xattr do
|
|
75
75
|
lambda { Xattr.new("no-such-file") }.should raise_error(Errno::ENOENT)
|
76
76
|
end
|
77
77
|
|
78
|
+
it "should raise type error if initialized with object that can not be directly converted to string" do
|
79
|
+
lambda{ Xattr.new(1) }.should raise_error(TypeError)
|
80
|
+
end
|
81
|
+
|
82
|
+
class SuperPath
|
83
|
+
def initialize(path)
|
84
|
+
@path = path
|
85
|
+
end
|
86
|
+
|
87
|
+
def to_str
|
88
|
+
@path.dup
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should work with object that can be directly converted to string" do
|
93
|
+
super_path = SuperPath.new(path)
|
94
|
+
Xattr.new(super_path).set('user.foo', 'bar')
|
95
|
+
Xattr.new(super_path).get('user.foo').should == 'bar'
|
96
|
+
end
|
97
|
+
|
78
98
|
describe "respecting :no_follow option" do
|
79
99
|
let(:link) { "link.txt" }
|
80
100
|
let(:xattr_f) { Xattr.new(link, :no_follow => false) }
|
metadata
CHANGED
@@ -1,77 +1,64 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-xattr
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 4
|
10
|
-
version: 0.0.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Jari Bakken
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
type: :runtime
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 3
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
version: "0"
|
31
|
-
prerelease: false
|
11
|
+
date: 2013-12-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
32
14
|
name: ffi
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
hash: 9
|
42
|
-
segments:
|
43
|
-
- 2
|
44
|
-
- 5
|
45
|
-
version: "2.5"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
46
21
|
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
47
28
|
name: rspec
|
48
|
-
|
49
|
-
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.5'
|
50
34
|
type: :development
|
51
|
-
|
52
|
-
|
53
|
-
requirements:
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
54
38
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
61
47
|
version: 0.9.2
|
48
|
+
type: :development
|
62
49
|
prerelease: false
|
63
|
-
|
64
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.9.2
|
65
55
|
description: Manipulate extended file attributes
|
66
|
-
email:
|
56
|
+
email:
|
67
57
|
- jari.bakken@gmail.com
|
68
58
|
executables: []
|
69
|
-
|
70
59
|
extensions: []
|
71
|
-
|
72
60
|
extra_rdoc_files: []
|
73
|
-
|
74
|
-
files:
|
61
|
+
files:
|
75
62
|
- .gitignore
|
76
63
|
- .travis.yml
|
77
64
|
- Gemfile
|
@@ -84,39 +71,31 @@ files:
|
|
84
71
|
- lib/ffi-xattr/error.rb
|
85
72
|
- lib/ffi-xattr/linux_lib.rb
|
86
73
|
- lib/ffi-xattr/version.rb
|
74
|
+
- lib/ffi-xattr/windows_lib.rb
|
87
75
|
- spec/xattr_spec.rb
|
88
76
|
homepage: http://github.com/jarib/ffi-xattr
|
89
77
|
licenses: []
|
90
|
-
|
78
|
+
metadata: {}
|
91
79
|
post_install_message:
|
92
80
|
rdoc_options: []
|
93
|
-
|
94
|
-
require_paths:
|
81
|
+
require_paths:
|
95
82
|
- lib
|
96
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
none: false
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
hash: 3
|
111
|
-
segments:
|
112
|
-
- 0
|
113
|
-
version: "0"
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
114
93
|
requirements: []
|
115
|
-
|
116
94
|
rubyforge_project: ffi-xattr
|
117
|
-
rubygems_version: 1.
|
95
|
+
rubygems_version: 2.1.10
|
118
96
|
signing_key:
|
119
|
-
specification_version:
|
97
|
+
specification_version: 4
|
120
98
|
summary: Manipulate extended file attributes
|
121
|
-
test_files:
|
99
|
+
test_files:
|
122
100
|
- spec/xattr_spec.rb
|
101
|
+
has_rdoc:
|