ruby-filemagic 0.6.2-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c352cd6752cd76eca05d8cf4c494447b51b52039
4
+ data.tar.gz: f7557c4306551c7babfb1b127eb83eb144ab13e6
5
+ SHA512:
6
+ metadata.gz: 7756d9057d58af13f90da30213934e1c50d1f1ca03caedfc14ae5334d3d9b588160fd695b3ee6a9f3beff343f6b89e18fe7e1f5317f9e253e7906a0378c8f6d5
7
+ data.tar.gz: 4c933189b14be01d19379c87b940338b5bb8839a319a09608d6abcf47f542ea31e722592ae90f7db07d62eda2960a735dbd50d783c60888dafc86bf1ebc0b2ce
data/ChangeLog ADDED
@@ -0,0 +1,92 @@
1
+ # markup: rd
2
+
3
+ = Revision history for ruby-filemagic
4
+
5
+ == 0.6.2 [2015-02-06]
6
+
7
+ * Improved Windows support (issue #10 by Matt Hoyle).
8
+ * Fixed FileMagic.path to account for missing magic file.
9
+
10
+ == 0.6.1 [2014-08-19]
11
+
12
+ * Account for options passed to FileMagic.fm (issue #7 by Adam Wróbel).
13
+
14
+ == 0.6.0 [2014-05-16]
15
+
16
+ * Required Ruby version >= 1.9.3.
17
+ * New method FileMagic#list (+magic_list+).
18
+ * New method FileMagic#load (+magic_load+).
19
+ * New method FileMagic.path (+magic_getpath+).
20
+ * New method FileMagic.magic_version.
21
+ * New method FileMagic.flags.
22
+ * New flag +no_check_builtin+.
23
+ * Tests print libmagic version and path.
24
+ * Internal refactoring.
25
+
26
+ == 0.5.2 [2014-04-24]
27
+
28
+ * Use MAGIC_VERSION if available.
29
+ * Made tests more robust.
30
+
31
+ == 0.5.1 [2014-04-15]
32
+
33
+ * New method FileMagic#io.
34
+ * Housekeeping.
35
+
36
+ == 0.5.0 [2013-12-19]
37
+
38
+ * Removed usage of +RARRAY_PTR+ (cf. Ruby bug
39
+ {#8399}[https://bugs.ruby-lang.org/issues/8399]).
40
+ * Housekeeping.
41
+
42
+ == 0.4.2 [2010-09-16]
43
+
44
+ * Not all versions/distributions have file/patchlevel.h
45
+
46
+ == 0.4.1 [2010-09-15]
47
+
48
+ * Added MAGIC_VERSION
49
+ * Fixed example script
50
+
51
+ == 0.4.0 [2010-09-14]
52
+
53
+ * Brushed up C layer
54
+ * Moved most of the Ruby stuff to C
55
+ * No longer expose internal state (@closed, @flags)
56
+ * No longer expose internal C methods (fm_*)
57
+ * Updated for magic(4) version 5.04
58
+
59
+ == 0.3.0 [2010-09-10]
60
+
61
+ * Ruby 1.9.2 compatibility (Martin Carpenter)
62
+ * Exposed flags as symbols (Martin Carpenter)
63
+
64
+ == 0.2.2 [2010-03-02]
65
+
66
+ * Allow '.' when abbreviating mime types (Eric Schwartz)
67
+ * Cleanup and project file fixes
68
+
69
+ == 0.2.1 [2008-09-18]
70
+
71
+ * Added mahoro source file and tests for reference and inspiration
72
+ * We have a Rubyforge project now! :-)
73
+
74
+ == 0.2.0 [2008-09-12]
75
+
76
+ * Modified C API
77
+ * Uniform C function prefix rb_magic_ (instead of magick_)
78
+ * Uniform Ruby method prefix fm_ (instead of none)
79
+ * More magic(4) constants (if available)
80
+ * Added Ruby wrapper for more rubyish interface
81
+ * Added extensions for File and String core classes
82
+ * Added/updated project files
83
+ * Now available as a Rubygem!
84
+
85
+ == 0.1.1 [2003-07-30]
86
+
87
+ * Added manual close method
88
+ * Added unit test suite
89
+
90
+ == 0.1.0 [2003-07-28]
91
+
92
+ * Initial release.
data/README ADDED
@@ -0,0 +1,101 @@
1
+ = FileMagic Library Binding
2
+
3
+ == VERSION
4
+
5
+ This documentation refers to filemagic version 0.6.2
6
+
7
+
8
+ == DESCRIPTION
9
+
10
+ FileMagic extension module. See also libmagic(3), file(1) and magic(4).
11
+
12
+ === Constants
13
+
14
+ <tt>MAGIC_NONE</tt>:: No flags
15
+ <tt>MAGIC_DEBUG</tt>:: Turn on debugging
16
+ <tt>MAGIC_SYMLINK</tt>:: Follow symlinks
17
+ <tt>MAGIC_COMPRESS</tt>:: Check inside compressed files
18
+ <tt>MAGIC_DEVICES</tt>:: Look at the contents of devices
19
+ <tt>MAGIC_MIME</tt>:: Return a mime string
20
+ <tt>MAGIC_CONTINUE</tt>:: Return all matches, not just the first
21
+ <tt>MAGIC_CHECK</tt>:: Print warnings to stderr
22
+
23
+ === Methods
24
+
25
+ <tt>file(filename)</tt>:: Returns a textual description of the contents
26
+ of the filename argument
27
+ <tt>buffer(string)</tt>:: Returns a textual description of the contents
28
+ of the string argument
29
+ <tt>check(filename)</tt>:: Checks the validity of entries in the database
30
+ file passed in as filename
31
+ <tt>compile(filename)</tt>:: Compiles the database file passed in as filename
32
+ <tt>close()</tt>:: Closes the magic database and frees any memory
33
+ allocated
34
+
35
+ === Synospis
36
+
37
+ require 'filemagic'
38
+
39
+ p FileMagic::VERSION
40
+ p FileMagic::MAGIC_VERSION
41
+
42
+ p FileMagic.new.flags
43
+
44
+ FileMagic.open(:mime) { |fm|
45
+ p fm.flags
46
+ p fm.file(__FILE__)
47
+ p fm.file(__FILE__, true)
48
+
49
+ fm.flags = [:raw, :continue]
50
+ p fm.flags
51
+ }
52
+
53
+ fm = FileMagic.new
54
+ p fm.flags
55
+
56
+ mime = FileMagic.mime
57
+ p mime.flags
58
+
59
+ === Installation
60
+
61
+ Install the gem:
62
+
63
+ sudo gem install ruby-filemagic
64
+
65
+ The file(1) library and headers are required.
66
+
67
+
68
+ == LINKS
69
+
70
+ Homepage:: http://www.darwinsys.com/file/
71
+ Documentation:: https://blackwinter.github.com/ruby-filemagic
72
+ Source code:: https://github.com/blackwinter/ruby-filemagic
73
+ RubyGem:: https://rubygems.org/gems/ruby-filemagic
74
+ Travis CI:: https://travis-ci.org/blackwinter/ruby-filemagic
75
+
76
+
77
+ == AUTHORS
78
+
79
+ * Travis Whitton <mailto:tinymountain@gmail.com> (Original author)
80
+ * Jens Wille <mailto:jens.wille@gmail.com>
81
+
82
+
83
+ == CREDITS
84
+
85
+ * Martin Carpenter <mailto:mcarpenter@free.fr> for Ruby 1.9.2 compatibility
86
+ and other improvements.
87
+
88
+
89
+ == COPYING
90
+
91
+ The filemagic extension library is copywrited free software by Travis Whitton
92
+ <tinymountain@gmail.com>. You can redistribute it under the terms specified in
93
+ the COPYING file of the Ruby distribution.
94
+
95
+
96
+ == WARRANTY
97
+
98
+ THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
99
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
100
+ WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
101
+ PURPOSE.
data/Rakefile ADDED
@@ -0,0 +1,34 @@
1
+ require_relative 'lib/filemagic/version'
2
+
3
+ begin
4
+ require 'hen'
5
+
6
+ file mgc = 'lib/filemagic/magic.mgc' do
7
+ dir = ENV['WITH_CROSS_MAGIC']
8
+
9
+ dir && File.exist?(src = File.join(dir, 'magic', File.basename(mgc))) ?
10
+ cp(src, mgc) : File.binwrite(mgc, "\x1C\x04\x1E\xF1\x0C".ljust(248, "\0"))
11
+ end
12
+
13
+ Hen.lay! {{
14
+ gem: {
15
+ name: %q{ruby-filemagic},
16
+ version: FileMagic::VERSION,
17
+ summary: 'Ruby bindings to the magic(4) library',
18
+ authors: ['Travis Whitton', 'Jens Wille'],
19
+ email: 'jens.wille@gmail.com',
20
+ license: %q{Ruby},
21
+ homepage: :blackwinter,
22
+ local_files: [mgc],
23
+ extension: {
24
+ with_cross_gnurx: lambda { |dir| [dir] },
25
+ with_cross_magic: lambda { |dir| [src =
26
+ File.join(dir, 'src'), File.join(src, '.libs')] }
27
+ },
28
+
29
+ required_ruby_version: '>= 1.9.3'
30
+ }
31
+ }}
32
+ rescue LoadError => err
33
+ warn "Please install the `hen' gem. (#{err})"
34
+ end
data/TODO ADDED
@@ -0,0 +1,7 @@
1
+ * Find a better way to handle magic_load than just defaulting to NULL
2
+ * Find a way to make magic_check work on NULL
3
+ * Refactor code into initialize instead of new
4
+
5
+ * Properly document C methods
6
+ * Convert tests to RSpec
7
+ * Add Rake tasks
@@ -0,0 +1,16 @@
1
+ require 'mkmf'
2
+
3
+ $CFLAGS << ' -Wall' if ENV['WALL']
4
+ $LDFLAGS << ' -static-libgcc'
5
+
6
+ dir_config('magic')
7
+ dir_config('gnurx')
8
+
9
+ have_library('gnurx')
10
+
11
+ if have_library('magic', 'magic_open') && have_header('magic.h')
12
+ have_header('file/patchlevel.h')
13
+ create_makefile('filemagic/ruby_filemagic')
14
+ else
15
+ abort '*** ERROR: missing required library to compile this module'
16
+ end
@@ -0,0 +1,310 @@
1
+ #include "filemagic.h"
2
+
3
+ /* Returns the magic path */
4
+ static VALUE
5
+ rb_magic_getpath(VALUE klass) {
6
+ const char *path = magic_getpath(NULL, 0);
7
+ return path != NULL ? rb_str_new2(path) : Qnil;
8
+ }
9
+
10
+ /* Converts flags to integer */
11
+ static VALUE
12
+ rb_magic_flags(VALUE klass, VALUE flags) {
13
+ VALUE map = rb_const_get(cFileMagic, rb_intern("FLAGS_BY_SYM")), f, g;
14
+ int i = MAGIC_NONE, j;
15
+
16
+ if (TYPE(flags) != T_ARRAY) {
17
+ rb_raise(rb_eTypeError,
18
+ "wrong argument type %s (expected Array)",
19
+ rb_obj_classname(flags));
20
+ }
21
+
22
+ for (j = 0; j < RARRAY_LEN(flags); j++) {
23
+ f = rb_ary_entry(flags, j);
24
+
25
+ switch (TYPE(f)) {
26
+ case T_SYMBOL:
27
+ if (RTEST(g = rb_hash_aref(map, f))) {
28
+ f = g;
29
+ /* fall through */
30
+ }
31
+ else {
32
+ f = rb_funcall(f, rb_intern("inspect"), 0);
33
+ rb_raise(rb_eArgError, "%s: %s",
34
+ NIL_P(g) ? "no such flag" : "flag not available",
35
+ StringValueCStr(f));
36
+
37
+ break;
38
+ }
39
+ case T_FIXNUM:
40
+ i |= NUM2INT(f);
41
+ break;
42
+ default:
43
+ rb_raise(rb_eTypeError,
44
+ "wrong argument type %s (expected Fixnum or Symbol)",
45
+ rb_obj_classname(f));
46
+ }
47
+ }
48
+
49
+ return INT2FIX(i);
50
+ }
51
+
52
+ /* FileMagic.new */
53
+ static VALUE
54
+ rb_magic_new(int argc, VALUE *argv, VALUE klass) {
55
+ VALUE obj, args[2];
56
+ magic_t ms;
57
+
58
+ if (rb_block_given_p()) {
59
+ rb_warn(
60
+ "FileMagic.new() does not take a block; use FileMagic.open() instead");
61
+ }
62
+
63
+ if (argc > 0 && TYPE(args[1] = argv[argc - 1]) == T_HASH) {
64
+ argc--;
65
+ }
66
+ else {
67
+ args[1] = rb_hash_new();
68
+ }
69
+
70
+ args[0] = rb_magic_flags(klass, rb_ary_new4(argc, argv));
71
+
72
+ if ((ms = magic_open(NUM2INT(args[0]))) == NULL) {
73
+ rb_raise(rb_FileMagicError,
74
+ "failed to initialize magic cookie (%d)", errno || -1);
75
+ }
76
+
77
+ if (magic_load(ms, NULL) == -1) {
78
+ rb_raise(rb_FileMagicError,
79
+ "failed to load database: %s", magic_error(ms));
80
+ }
81
+
82
+ obj = Data_Wrap_Struct(klass, 0, rb_magic_free, ms);
83
+ rb_obj_call_init(obj, 2, args);
84
+
85
+ return obj;
86
+ }
87
+
88
+ static void
89
+ rb_magic_free(magic_t ms) {
90
+ magic_close(ms);
91
+ }
92
+
93
+ static VALUE
94
+ rb_magic_init(int argc, VALUE *argv, VALUE self) {
95
+ VALUE flags, options, keys, k, m;
96
+ ID mid;
97
+ int i;
98
+
99
+ if (rb_scan_args(argc, argv, "11", &flags, &options) == 1) {
100
+ options = rb_hash_new();
101
+ }
102
+
103
+ rb_iv_set(self, "iflags", flags);
104
+ rb_iv_set(self, "closed", Qfalse);
105
+
106
+ keys = rb_funcall(options, rb_intern("keys"), 0);
107
+
108
+ for (i = 0; i < RARRAY_LEN(keys); i++) {
109
+ k = rb_ary_entry(keys, i);
110
+ m = rb_str_plus(rb_obj_as_string(k), rb_str_new2("="));
111
+
112
+ if (rb_respond_to(self, mid = rb_intern(StringValueCStr(m)))) {
113
+ rb_funcall(self, mid, 1, rb_hash_aref(options, k));
114
+ }
115
+ else {
116
+ k = rb_funcall(k, rb_intern("inspect"), 0);
117
+ rb_raise(rb_eArgError, "illegal option: %s", StringValueCStr(k));
118
+ }
119
+ }
120
+
121
+ return Qnil;
122
+ }
123
+
124
+ /* Frees resources allocated */
125
+ static VALUE
126
+ rb_magic_close(VALUE self) {
127
+ magic_t ms;
128
+
129
+ if (RTEST(rb_magic_closed_p(self))) {
130
+ return Qnil;
131
+ }
132
+
133
+ GetMagicSet(self, ms);
134
+ rb_magic_free(ms);
135
+
136
+ /* This keeps rb_magic_free from trying to free closed objects */
137
+ DATA_PTR(self) = NULL;
138
+
139
+ rb_iv_set(self, "closed", Qtrue);
140
+
141
+ return Qnil;
142
+ }
143
+
144
+ static VALUE
145
+ rb_magic_closed_p(VALUE self) {
146
+ return rb_attr_get(self, rb_intern("closed"));
147
+ }
148
+
149
+ /* Return a string describing file */
150
+ RB_MAGIC_TYPE(file, FILE)
151
+
152
+ /* Return a string describing the string buffer */
153
+ RB_MAGIC_TYPE(buffer, BUFFER)
154
+
155
+ /* Get the flags as array of symbols */
156
+ static VALUE
157
+ rb_magic_getflags(VALUE self) {
158
+ VALUE ary = rb_ary_new();
159
+ VALUE map = rb_const_get(cFileMagic, rb_intern("FLAGS_BY_INT"));
160
+ int i = NUM2INT(rb_attr_get(self, rb_intern("iflags"))), j = 0;
161
+
162
+ while ((i -= j) > 0) {
163
+ j = pow(2, (int)(log(i) / log(2)));
164
+ rb_ary_unshift(ary, rb_hash_aref(map, INT2FIX(j)));
165
+ }
166
+
167
+ return ary;
168
+ }
169
+
170
+ /* Set flags on the ms object */
171
+ static VALUE
172
+ rb_magic_setflags(VALUE self, VALUE flags) {
173
+ magic_t ms;
174
+
175
+ GetMagicSet(self, ms);
176
+
177
+ rb_iv_set(self, "iflags",
178
+ flags = rb_magic_flags(CLASS_OF(self), rb_Array(flags)));
179
+
180
+ return INT2FIX(magic_setflags(ms, NUM2INT(flags)));
181
+ }
182
+
183
+ /* Lists a magic database file */
184
+ RB_MAGIC_APPRENTICE(list)
185
+
186
+ /* Loads a magic database file */
187
+ RB_MAGIC_APPRENTICE(load)
188
+
189
+ /* Checks validity of a magic database file */
190
+ RB_MAGIC_APPRENTICE(check)
191
+
192
+ /* Compiles a magic database file */
193
+ RB_MAGIC_APPRENTICE(compile)
194
+
195
+ void
196
+ Init_ruby_filemagic() {
197
+ char version[8] = "0";
198
+ cFileMagic = rb_define_class("FileMagic", rb_cObject);
199
+
200
+ #if defined(FILE_VERSION_MAJOR)
201
+ RB_MAGIC_SET_VERSION(FILE_VERSION_MAJOR, patchlevel)
202
+ #elif defined(MAGIC_VERSION)
203
+ RB_MAGIC_SET_VERSION(MAGIC_VERSION / 100, MAGIC_VERSION % 100)
204
+ #endif
205
+
206
+ rb_define_const(cFileMagic, "MAGIC_VERSION", rb_str_new2(version));
207
+
208
+ rb_define_singleton_method(cFileMagic, "path", rb_magic_getpath, 0);
209
+ rb_define_singleton_method(cFileMagic, "flags", rb_magic_flags, 1);
210
+ rb_define_singleton_method(cFileMagic, "new", rb_magic_new, -1);
211
+
212
+ rb_define_method(cFileMagic, "initialize", rb_magic_init, -1);
213
+ rb_define_method(cFileMagic, "close", rb_magic_close, 0);
214
+ rb_define_method(cFileMagic, "closed?", rb_magic_closed_p, 0);
215
+ rb_define_method(cFileMagic, "file", rb_magic_file, -1);
216
+ rb_define_method(cFileMagic, "buffer", rb_magic_buffer, -1);
217
+ rb_define_method(cFileMagic, "flags", rb_magic_getflags, 0);
218
+ rb_define_method(cFileMagic, "flags=", rb_magic_setflags, 1);
219
+ rb_define_method(cFileMagic, "list", rb_magic_list, -1);
220
+ rb_define_method(cFileMagic, "load", rb_magic_load, -1);
221
+ rb_define_method(cFileMagic, "check", rb_magic_check, -1);
222
+ rb_define_method(cFileMagic, "compile", rb_magic_compile, -1);
223
+
224
+ rb_alias(cFileMagic, rb_intern("valid?"), rb_intern("check"));
225
+
226
+ rb_FileMagicError = rb_define_class_under(cFileMagic, "FileMagicError", rb_eStandardError);
227
+
228
+ #ifdef MAGIC_NONE
229
+ rb_define_const(cFileMagic, "MAGIC_NONE", INT2FIX(MAGIC_NONE));
230
+ #endif
231
+ #ifdef MAGIC_DEBUG
232
+ rb_define_const(cFileMagic, "MAGIC_DEBUG", INT2FIX(MAGIC_DEBUG));
233
+ #endif
234
+ #ifdef MAGIC_SYMLINK
235
+ rb_define_const(cFileMagic, "MAGIC_SYMLINK", INT2FIX(MAGIC_SYMLINK));
236
+ #endif
237
+ #ifdef MAGIC_COMPRESS
238
+ rb_define_const(cFileMagic, "MAGIC_COMPRESS", INT2FIX(MAGIC_COMPRESS));
239
+ #endif
240
+ #ifdef MAGIC_DEVICES
241
+ rb_define_const(cFileMagic, "MAGIC_DEVICES", INT2FIX(MAGIC_DEVICES));
242
+ #endif
243
+ #ifdef MAGIC_MIME_TYPE
244
+ rb_define_const(cFileMagic, "MAGIC_MIME_TYPE", INT2FIX(MAGIC_MIME_TYPE));
245
+ #endif
246
+ #ifdef MAGIC_CONTINUE
247
+ rb_define_const(cFileMagic, "MAGIC_CONTINUE", INT2FIX(MAGIC_CONTINUE));
248
+ #endif
249
+ #ifdef MAGIC_CHECK
250
+ rb_define_const(cFileMagic, "MAGIC_CHECK", INT2FIX(MAGIC_CHECK));
251
+ #endif
252
+ #ifdef MAGIC_PRESERVE_ATIME
253
+ rb_define_const(cFileMagic, "MAGIC_PRESERVE_ATIME", INT2FIX(MAGIC_PRESERVE_ATIME));
254
+ #endif
255
+ #ifdef MAGIC_RAW
256
+ rb_define_const(cFileMagic, "MAGIC_RAW", INT2FIX(MAGIC_RAW));
257
+ #endif
258
+ #ifdef MAGIC_ERROR
259
+ rb_define_const(cFileMagic, "MAGIC_ERROR", INT2FIX(MAGIC_ERROR));
260
+ #endif
261
+ #ifdef MAGIC_MIME_ENCODING
262
+ rb_define_const(cFileMagic, "MAGIC_MIME_ENCODING", INT2FIX(MAGIC_MIME_ENCODING));
263
+ #endif
264
+ #ifdef MAGIC_MIME
265
+ rb_define_const(cFileMagic, "MAGIC_MIME", INT2FIX(MAGIC_MIME));
266
+ #endif
267
+ #ifdef MAGIC_APPLE
268
+ rb_define_const(cFileMagic, "MAGIC_APPLE", INT2FIX(MAGIC_APPLE));
269
+ #endif
270
+ #ifdef MAGIC_NO_CHECK_COMPRESS
271
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_COMPRESS", INT2FIX(MAGIC_NO_CHECK_COMPRESS));
272
+ #endif
273
+ #ifdef MAGIC_NO_CHECK_TAR
274
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_TAR", INT2FIX(MAGIC_NO_CHECK_TAR));
275
+ #endif
276
+ #ifdef MAGIC_NO_CHECK_SOFT
277
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_SOFT", INT2FIX(MAGIC_NO_CHECK_SOFT));
278
+ #endif
279
+ #ifdef MAGIC_NO_CHECK_APPTYPE
280
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_APPTYPE", INT2FIX(MAGIC_NO_CHECK_APPTYPE));
281
+ #endif
282
+ #ifdef MAGIC_NO_CHECK_ELF
283
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_ELF", INT2FIX(MAGIC_NO_CHECK_ELF));
284
+ #endif
285
+ #ifdef MAGIC_NO_CHECK_TEXT
286
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_TEXT", INT2FIX(MAGIC_NO_CHECK_TEXT));
287
+ #endif
288
+ #ifdef MAGIC_NO_CHECK_CDF
289
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_CDF", INT2FIX(MAGIC_NO_CHECK_CDF));
290
+ #endif
291
+ #ifdef MAGIC_NO_CHECK_TOKENS
292
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_TOKENS", INT2FIX(MAGIC_NO_CHECK_TOKENS));
293
+ #endif
294
+ #ifdef MAGIC_NO_CHECK_ENCODING
295
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_ENCODING", INT2FIX(MAGIC_NO_CHECK_ENCODING));
296
+ #endif
297
+ #if defined(MAGIC_NO_CHECK_BUILTIN) && MAGIC_VERSION > 514
298
+ /* defined in b5be901 (2010-01-28, 5.05), but broken until 38e0136 (2013-08-15, 5.15) */
299
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_BUILTIN", INT2FIX(MAGIC_NO_CHECK_BUILTIN));
300
+ #endif
301
+ #ifdef MAGIC_NO_CHECK_ASCII
302
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_ASCII", INT2FIX(MAGIC_NO_CHECK_ASCII));
303
+ #endif
304
+ #ifdef MAGIC_NO_CHECK_FORTRAN
305
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_FORTRAN", INT2FIX(MAGIC_NO_CHECK_FORTRAN));
306
+ #endif
307
+ #ifdef MAGIC_NO_CHECK_TROFF
308
+ rb_define_const(cFileMagic, "MAGIC_NO_CHECK_TROFF", INT2FIX(MAGIC_NO_CHECK_TROFF));
309
+ #endif
310
+ }