ruby-magic 0.0.1 → 0.2.0

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.
@@ -3,7 +3,7 @@
3
3
  /*
4
4
  * ruby-magic.c
5
5
  *
6
- * Copyright 2013-2014 Krzysztof Wilczynski
6
+ * Copyright 2013-2015 Krzysztof Wilczynski
7
7
  *
8
8
  * Licensed under the Apache License, Version 2.0 (the "License");
9
9
  * you may not use this file except in compliance with the License.
@@ -18,6 +18,10 @@
18
18
  * limitations under the License.
19
19
  */
20
20
 
21
+ #if defined(__cplusplus)
22
+ extern "C" {
23
+ #endif
24
+
21
25
  #include "ruby-magic.h"
22
26
 
23
27
  ID id_at_flags, id_at_path, id_at_mutex;
@@ -76,7 +80,7 @@ static VALUE magic_return(VALUE value, void *data);
76
80
  * magic = Magic.new #=> #<Magic:0x007f8fdc012e58>
77
81
  *
78
82
  * Will raise <i>Magic::LibraryError</i> exception if, or
79
- * <i>Magic::MagicError</i> exception if, or
83
+ * <i>Magic::MagicError</i> exception if
80
84
  *
81
85
  * See also: Magic::open, Magic::mime, Magic::type, Magic::encoding, Magic::compile and Magic::check
82
86
  */
@@ -241,7 +245,7 @@ rb_mgc_get_flags(VALUE object)
241
245
  * magic.flags = Magic::MIME_TYPE #=> 16
242
246
  *
243
247
  * Will raise <i>Magic::FlagsError</i> exception if, or
244
- * <i>Magic::LibraryError</i> exception if, or
248
+ * <i>Magic::LibraryError</i> exception if, or
245
249
  * <i>Magic::NotImplementedError</i> exception if, or
246
250
  */
247
251
  VALUE
@@ -289,7 +293,9 @@ rb_mgc_set_flags(VALUE object, VALUE value)
289
293
  * magic.load("/usr/share/misc/magic", "/etc/magic") #=> ["/usr/share/misc/magic", "/etc/magic"]
290
294
  * magic.load #=> ["/etc/magic", "/usr/share/misc/magic"]
291
295
  *
292
- * Will raise <i>Magic::LibraryError</i> exception if, or
296
+ * Will raise <i>Magic::LibraryError</i> exception if, or
297
+ *
298
+ * See also: Magic#check, Magic#compile, Magic::check and Magic::compile
293
299
  */
294
300
  VALUE
295
301
  rb_mgc_load(VALUE object, VALUE arguments)
@@ -329,9 +335,9 @@ rb_mgc_load(VALUE object, VALUE arguments)
329
335
  *
330
336
  * magic = Magic.new #=> #<Magic:0x007f8fdc012e58>
331
337
  *
332
- * See also: Magic#check, Magic::check and Magic::compile
333
- *
334
338
  * Will raise <i>Magic::LibraryError</i> exception if, or
339
+ *
340
+ * See also: Magic#check, Magic::check and Magic::compile
335
341
  */
336
342
  VALUE
337
343
  rb_mgc_compile(VALUE object, VALUE arguments)
@@ -369,9 +375,9 @@ rb_mgc_compile(VALUE object, VALUE arguments)
369
375
  *
370
376
  * magic = Magic.new #=> #<Magic:0x007f8fdc012e58>
371
377
  *
372
- * See also: Magic#compile, Magic::compile and Magic::check
378
+ * Will raise <i>Magic::LibraryError</i> exception if, or
373
379
  *
374
- * Will raise <i>Magic::LibraryError</i> exception if, or
380
+ * See also: Magic#compile, Magic::compile and Magic::check
375
381
  */
376
382
  VALUE
377
383
  rb_mgc_check(VALUE object, VALUE arguments)
@@ -409,7 +415,7 @@ rb_mgc_check(VALUE object, VALUE arguments)
409
415
  *
410
416
  * magic = Magic.new #=> #<Magic:0x007f8fdc012e58>
411
417
  *
412
- * Will raise <i>Magic::LibraryError</i> exception if, or
418
+ * Will raise <i>Magic::LibraryError</i> exception if, or
413
419
  *
414
420
  * See also: Magic#buffer and Magic#descriptor
415
421
  */
@@ -459,7 +465,7 @@ rb_mgc_file(VALUE object, VALUE value)
459
465
  *
460
466
  * magic = Magic.new #=> #<Magic:0x007f8fdc012e58>
461
467
  *
462
- * Will raise <i>Magic::LibraryError</i> exception if, or
468
+ * Will raise <i>Magic::LibraryError</i> exception if, or
463
469
  *
464
470
  * See also: Magic#file and Magic#descriptor
465
471
  */
@@ -497,7 +503,7 @@ rb_mgc_buffer(VALUE object, VALUE value)
497
503
  *
498
504
  * magic = Magic.new #=> #<Magic:0x007f8fdc012e58>
499
505
  *
500
- * Will raise <i>Magic::LibraryError</i> exception if, or
506
+ * Will raise <i>Magic::LibraryError</i> exception if, or
501
507
  *
502
508
  * See also: Magic#file and Magic#buffer
503
509
  */
@@ -556,7 +562,7 @@ rb_mgc_version(VALUE object)
556
562
  return INT2NUM(rv);
557
563
  }
558
564
 
559
- /* :enddoc: */
565
+ /* :stopdoc: */
560
566
 
561
567
  static inline void*
562
568
  nogvl_magic_load(void *data)
@@ -654,7 +660,7 @@ magic_allocate(VALUE klass)
654
660
 
655
661
  cookie = magic_open(MAGIC_NONE);
656
662
  if (!cookie) {
657
- MAGIC_GENERIC_ERROR(rb_mgc_eLibraryError, EPERM,
663
+ MAGIC_GENERIC_ERROR(rb_mgc_eLibraryError, ENOMEM,
658
664
  error(E_MAGIC_LIBRARY_INITIALIZE));
659
665
  }
660
666
 
@@ -761,13 +767,15 @@ magic_return(VALUE value, void *data)
761
767
  VALUE array = Qnil;
762
768
 
763
769
  if (ma->flags & MAGIC_CONTINUE) {
764
- array = magic_split(value, CSTR2RVAL("\\012\055\040"));
770
+ array = magic_split(value, CSTR2RVAL("\x5c\x30\x31\x32\x2d\x20"));
765
771
  return (NUM2INT(magic_size(array)) > 1) ? array : magic_shift(array);
766
772
  }
767
773
 
768
774
  return value;
769
775
  }
770
776
 
777
+ /* :startdoc: */
778
+
771
779
  void
772
780
  Init_magic(void)
773
781
  {
@@ -970,4 +978,10 @@ Init_magic(void)
970
978
  rb_define_const(rb_cMagic, "NO_CHECK_TROFF", INT2NUM(MAGIC_NO_CHECK_TROFF));
971
979
  }
972
980
 
981
+ /* :enddoc: */
982
+
983
+ #if defined(__cplusplus)
984
+ }
985
+ #endif
986
+
973
987
  /* vim: set ts=8 sw=4 sts=2 et : */
@@ -3,7 +3,7 @@
3
3
  /*
4
4
  * ruby-magic.h
5
5
  *
6
- * Copyright 2013-2014 Krzysztof Wilczynski
6
+ * Copyright 2013-2015 Krzysztof Wilczynski
7
7
  *
8
8
  * Licensed under the Apache License, Version 2.0 (the "License");
9
9
  * you may not use this file except in compliance with the License.
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # magic.rb
7
7
  #
8
- # Copyright 2013-2014 Krzysztof Wilczynski
8
+ # Copyright 2013-2015 Krzysztof Wilczynski
9
9
  #
10
10
  # Licensed under the Apache License, Version 2.0 (the "License");
11
11
  # you may not use this file except in compliance with the License.
@@ -20,10 +20,10 @@
20
20
  # limitations under the License.
21
21
  #
22
22
 
23
- require 'magic/magic'
24
- require 'magic/version'
25
- require 'magic/core/file'
26
- require 'magic/core/string'
23
+ require_relative 'magic/magic'
24
+ require_relative 'magic/version'
25
+ require_relative 'magic/core/file'
26
+ require_relative 'magic/core/string'
27
27
 
28
28
  # :startdoc:
29
29
 
@@ -61,14 +61,12 @@ class Magic
61
61
  # See also: Magic#flags
62
62
  #
63
63
  def flags_to_a(names = false)
64
- raise LibraryError, "Magic library is not open" if closed?
64
+ raise LibraryError, 'Magic library is not open' if closed?
65
+ return [names ? 'NONE' : 0] if @flags.zero?
65
66
 
66
67
  n, i = 0, @flags
67
-
68
68
  flags = []
69
69
 
70
- return [names ? 'NONE' : 0] if @flags.zero?
71
-
72
70
  @@flags_map ||= flags_as_map if names
73
71
 
74
72
  while i > 0
@@ -90,6 +88,8 @@ class Magic
90
88
  #
91
89
  # Example:
92
90
  #
91
+ # Will raise <i></i>
92
+ #
93
93
  # See also: Magic::mime, Magic::type, Magic::encoding, Magic::compile and Magic::check
94
94
  #
95
95
  def open(flags = Magic::NONE)
@@ -116,6 +116,8 @@ class Magic
116
116
  #
117
117
  # Example:
118
118
  #
119
+ # Will raise <i></i>
120
+ #
119
121
  # See also: Magic::open, Magic::type, Magic::encoding, Magic::compile and Magic::check
120
122
  #
121
123
  def mime(&block)
@@ -131,6 +133,8 @@ class Magic
131
133
  #
132
134
  # Example:
133
135
  #
136
+ # Will raise <i></i>
137
+ #
134
138
  # See also: Magic::open, Magic::mime, Magic::encoding, Magic::compile and Magic::check
135
139
  #
136
140
  def type(&block)
@@ -146,6 +150,8 @@ class Magic
146
150
  #
147
151
  # Example:
148
152
  #
153
+ # Will raise <i></i>
154
+ #
149
155
  # See also: Magic::open, Magic::mime, Magic::type, Magic::compile and Magic::check
150
156
  #
151
157
  def encoding(&block)
@@ -161,6 +167,8 @@ class Magic
161
167
  #
162
168
  # Example:
163
169
  #
170
+ # Will raise <i></i>
171
+ #
164
172
  # See also: Magic::open, Magic::mime, Magic::type, Magic::encoding, and Magic::check
165
173
  #
166
174
  def compile(path)
@@ -176,6 +184,8 @@ class Magic
176
184
  #
177
185
  # Example:
178
186
  #
187
+ # Will raise <i></i>
188
+ #
179
189
  # See also: Magic::open, Magic::mime, Magic::type, Magic::encoding and Magic::compile
180
190
  #
181
191
  def check(path)
@@ -189,7 +199,7 @@ class Magic
189
199
 
190
200
  def flags_as_map
191
201
  self.class.constants.inject({}) do |flags,constant|
192
- value = self.class.const_get(constant)
202
+ value = self.class.const_get(constant)
193
203
  flags[value] = constant.to_s if value.is_a?(Fixnum)
194
204
  flags
195
205
  end
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # core/file.rb
7
7
  #
8
- # Copyright 2013-2014 Krzysztof Wilczynski
8
+ # Copyright 2013-2015 Krzysztof Wilczynski
9
9
  #
10
10
  # Licensed under the Apache License, Version 2.0 (the "License");
11
11
  # you may not use this file except in compliance with the License.
@@ -29,7 +29,7 @@ class File
29
29
  class << self
30
30
  #
31
31
  # call-seq:
32
- # File.magic( path ) -> string, array or nil
32
+ # File.magic( path ) -> string or array
33
33
  #
34
34
  # Returns
35
35
  #
@@ -42,13 +42,12 @@ class File
42
42
  path ||= path.to_path if path.respond_to?(:to_path)
43
43
  path ||= path.to_s
44
44
 
45
- Magic.open(flags) {|mgc| mgc.file(path) }
46
- rescue Magic::Error
45
+ Magic.open(flags | Magic::ERROR) {|mgc| mgc.file(path) }
47
46
  end
48
47
 
49
48
  #
50
49
  # call-seq:
51
- # File.mime( path ) -> string, array or nil
50
+ # File.mime( path ) -> string or array
52
51
  #
53
52
  # Returns
54
53
  #
@@ -62,7 +61,7 @@ class File
62
61
 
63
62
  #
64
63
  # call-seq:
65
- # File.type( path ) -> string, array or nil
64
+ # File.type( path ) -> string or array
66
65
  #
67
66
  # Returns
68
67
  #
@@ -77,7 +76,7 @@ class File
77
76
 
78
77
  #
79
78
  # call-seq:
80
- # File.magic( path ) -> string, array or nil
79
+ # File.magic( path ) -> string or array
81
80
  #
82
81
  # Returns
83
82
  #
@@ -91,7 +90,7 @@ class File
91
90
 
92
91
  #
93
92
  # call-seq:
94
- # File.mime( path ) -> string, array or nil
93
+ # File.mime( path ) -> string or array
95
94
  #
96
95
  # Returns
97
96
  #
@@ -105,7 +104,7 @@ class File
105
104
 
106
105
  #
107
106
  # call-seq:
108
- # File.type( path ) -> string, array or nil
107
+ # File.type( path ) -> string or array
109
108
  #
110
109
  # Returns
111
110
  #
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # core/string.rb
7
7
  #
8
- # Copyright 2013-2014 Krzysztof Wilczynski
8
+ # Copyright 2013-2015 Krzysztof Wilczynski
9
9
  #
10
10
  # Licensed under the Apache License, Version 2.0 (the "License");
11
11
  # you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@
28
28
  class String
29
29
  #
30
30
  # call-seq:
31
- # string.magic -> string, array or nil
31
+ # string.magic -> string or array
32
32
  #
33
33
  # Returns
34
34
  #
@@ -38,12 +38,11 @@ class String
38
38
  #
39
39
  def magic(flags = Magic::NONE)
40
40
  Magic.open(flags) {|mgc| mgc.buffer(self) }
41
- rescue Magic::Error
42
41
  end
43
42
 
44
43
  #
45
44
  # call-seq:
46
- # string.mime -> string, array or nil
45
+ # string.mime -> string or array
47
46
  #
48
47
  # Returns
49
48
  #
@@ -57,7 +56,7 @@ class String
57
56
 
58
57
  #
59
58
  # call-seq:
60
- # string.type -> string, array or nil
59
+ # string.type -> string or array
61
60
  #
62
61
  # Returns
63
62
  #
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # version.rb
7
7
  #
8
- # Copyright 2013-2014 Krzysztof Wilczynski
8
+ # Copyright 2013-2015 Krzysztof Wilczynski
9
9
  #
10
10
  # Licensed under the Apache License, Version 2.0 (the "License");
11
11
  # you may not use this file except in compliance with the License.
@@ -26,7 +26,7 @@ class Magic
26
26
  #
27
27
  # Current version of _Magic_.
28
28
  #
29
- VERSION = '0.0.1'
29
+ VERSION = '0.2.0'.freeze
30
30
 
31
31
  class << self
32
32
  #
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # ruby-magic.gemspec
7
7
  #
8
- # Copyright 2013-2014 Krzysztof Wilczynski
8
+ # Copyright 2013-2015 Krzysztof Wilczynski
9
9
  #
10
10
  # Licensed under the Apache License, Version 2.0 (the "License");
11
11
  # you may not use this file except in compliance with the License.
@@ -23,7 +23,8 @@
23
23
  signing_key = File.expand_path('~/.gem/kwilczynski-private.pem')
24
24
 
25
25
  Gem::Specification.new do |s|
26
- s.name = 'ruby-magic'
26
+ s.name = 'ruby-magic'
27
+ s.summary = 'File Magic in Ruby'
27
28
 
28
29
  s.description = <<-EOS
29
30
  File Magic in Ruby.
@@ -37,12 +38,10 @@ Simple interface to libmagic for Ruby Programming Language.
37
38
  s.author = 'Krzysztof Wilczynski'
38
39
  s.email = 'krzysztof.wilczynski@linux.com'
39
40
  s.homepage = 'http://about.me/kwilczynski'
41
+ s.has_rdoc = true
40
42
 
41
- s.rubyforge_project = 'ruby-magic'
42
- s.rubygems_version = '~> 2.2.0'
43
- s.has_rdoc = true
44
-
45
- s.summary = 'File Magic in Ruby'
43
+ s.required_ruby_version = '>= 1.9.2'
44
+ s.rubygems_version = '~> 2.2.0'
46
45
 
47
46
  s.files = Dir['ext/**/*.{c,h,rb}'] +
48
47
  Dir['lib/**/*.rb'] +
@@ -56,11 +55,6 @@ Simple interface to libmagic for Ruby Programming Language.
56
55
  s.require_paths << 'lib'
57
56
  s.extensions << 'ext/magic/extconf.rb'
58
57
 
59
- s.add_development_dependency 'rake', '~> 10.1', '>= 10.1.1'
60
- s.add_development_dependency 'rdoc', '~> 4.1', '>= 4.1.1'
61
- s.add_development_dependency 'test-unit', '~> 2.5', '>= 2.5.5'
62
- s.add_development_dependency 'rake-compiler', '~> 0.9', '>= 0.9.2'
63
-
64
58
  s.signing_key = signing_key if File.exists?(signing_key)
65
59
  end
66
60
 
@@ -0,0 +1,35 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ # :enddoc:
4
+
5
+ #
6
+ # helpers.rb
7
+ #
8
+ # Copyright 2013-2015 Krzysztof Wilczynski
9
+ #
10
+ # Licensed under the Apache License, Version 2.0 (the "License");
11
+ # you may not use this file except in compliance with the License.
12
+ # You may obtain a copy of the License at
13
+ #
14
+ # http://www.apache.org/licenses/LICENSE-2.0
15
+ #
16
+ # Unless required by applicable law or agreed to in writing, software
17
+ # distributed under the License is distributed on an "AS IS" BASIS,
18
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ # See the License for the specific language governing permissions and
20
+ # limitations under the License.
21
+ #
22
+
23
+ require 'stringio'
24
+
25
+ module MagicTestHelpers
26
+ def capture_stderr
27
+ saved_stderr, $stderr = $stderr, StringIO.new
28
+ [yield, $stderr.string]
29
+ ensure
30
+ $stderr = saved_stderr
31
+ end
32
+ end
33
+
34
+ # vim: set ts=2 sw=2 sts=2 et :
35
+ # encoding: utf-8