digest 1.0.0 → 3.1.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/digest/bubblebabble/extconf.rb +0 -2
- data/ext/digest/digest.c +4 -0
- data/ext/digest/digest.h +8 -0
- data/ext/digest/lib/digest/loader.rb +3 -0
- data/ext/digest/lib/digest/sha2/loader.rb +3 -0
- data/ext/digest/md5/extconf.rb +0 -2
- data/ext/digest/md5/md5init.c +1 -4
- data/ext/digest/rmd160/extconf.rb +3 -1
- data/ext/digest/rmd160/rmd160init.c +1 -4
- data/ext/digest/sha1/extconf.rb +0 -2
- data/ext/digest/sha1/sha1init.c +1 -4
- data/ext/digest/sha2/extconf.rb +0 -2
- data/ext/digest/sha2/sha2.c +7 -7
- data/ext/digest/sha2/sha2init.c +1 -3
- data/{ext/digest/sha2/lib → lib/digest}/sha2.rb +1 -1
- data/lib/digest.rb +3 -2
- metadata +11 -59
- data/.gitignore +0 -12
- data/.travis.yml +0 -8
- data/Gemfile +0 -6
- data/Rakefile +0 -15
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/digest.gemspec +0 -45
- data/ext/openssl/deprecation.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9e055404c669016e5396b100ec0f300762ee25382705476e541c146c722c359
|
4
|
+
data.tar.gz: 78502d4308b80141cf0adc91097a3f742ba0a26030f7bdddfefd41d0c344eb11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e064d1ce651832f2c8bc528292983c045274c089a5179a3b20750dfa2ba0d4d3d4d97be187ae89eafcd61e86c43cfae7ebf7a61d367430dc378a1ac668c8d32
|
7
|
+
data.tar.gz: 31e7e2d7ad75b0e2bfe429d818ac310ceba62329168eba5916a8fcfd52733976a496c9de340679dabe88032d7e9169068f6abd7945794bcd10e1e285fc4559b4
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Digest
|
2
2
|
|
3
|
-
|
3
|
+
![CI](https://github.com/ruby/digest/workflows/CI/badge.svg?branch=master&event=push)
|
4
4
|
|
5
5
|
This module provides a framework for message digest libraries.
|
6
6
|
|
data/ext/digest/digest.c
CHANGED
@@ -765,6 +765,10 @@ InitVM_digest(void)
|
|
765
765
|
*/
|
766
766
|
rb_mDigest = rb_define_module("Digest");
|
767
767
|
|
768
|
+
#ifdef HAVE_RB_EXT_RACTOR_SAFE
|
769
|
+
rb_ext_ractor_safe(true);
|
770
|
+
#endif
|
771
|
+
|
768
772
|
/* module functions */
|
769
773
|
rb_define_module_function(rb_mDigest, "hexencode", rb_digest_s_hexencode, 1);
|
770
774
|
|
data/ext/digest/digest.h
CHANGED
@@ -62,3 +62,11 @@ rb_id_metadata(void)
|
|
62
62
|
{
|
63
63
|
return rb_intern_const("metadata");
|
64
64
|
}
|
65
|
+
|
66
|
+
static inline VALUE
|
67
|
+
rb_digest_make_metadata(const rb_digest_metadata_t *meta)
|
68
|
+
{
|
69
|
+
#undef RUBY_UNTYPED_DATA_WARNING
|
70
|
+
#define RUBY_UNTYPED_DATA_WARNING 0
|
71
|
+
return rb_obj_freeze(Data_Wrap_Struct(0, 0, 0, (void *)meta));
|
72
|
+
}
|
data/ext/digest/md5/extconf.rb
CHANGED
data/ext/digest/md5/md5init.c
CHANGED
@@ -57,8 +57,5 @@ Init_md5(void)
|
|
57
57
|
|
58
58
|
cDigest_MD5 = rb_define_class_under(mDigest, "MD5", cDigest_Base);
|
59
59
|
|
60
|
-
|
61
|
-
#define RUBY_UNTYPED_DATA_WARNING 0
|
62
|
-
rb_iv_set(cDigest_MD5, "metadata",
|
63
|
-
Data_Wrap_Struct(0, 0, 0, (void *)&md5));
|
60
|
+
rb_iv_set(cDigest_MD5, "metadata", rb_digest_make_metadata(&md5));
|
64
61
|
}
|
@@ -6,7 +6,9 @@
|
|
6
6
|
require "mkmf"
|
7
7
|
require File.expand_path("../../digest_conf", __FILE__)
|
8
8
|
|
9
|
-
|
9
|
+
if try_static_assert("RUBY_API_VERSION_MAJOR < 3", "ruby/version.h")
|
10
|
+
$defs << "-DNDEBUG"
|
11
|
+
end
|
10
12
|
|
11
13
|
$objs = [ "rmd160init.#{$OBJEXT}" ]
|
12
14
|
|
@@ -53,8 +53,5 @@ Init_rmd160(void)
|
|
53
53
|
|
54
54
|
cDigest_RMD160 = rb_define_class_under(mDigest, "RMD160", cDigest_Base);
|
55
55
|
|
56
|
-
|
57
|
-
#define RUBY_UNTYPED_DATA_WARNING 0
|
58
|
-
rb_iv_set(cDigest_RMD160, "metadata",
|
59
|
-
Data_Wrap_Struct(0, 0, 0, (void *)&rmd160));
|
56
|
+
rb_iv_set(cDigest_RMD160, "metadata", rb_digest_make_metadata(&rmd160));
|
60
57
|
}
|
data/ext/digest/sha1/extconf.rb
CHANGED
data/ext/digest/sha1/sha1init.c
CHANGED
@@ -59,8 +59,5 @@ Init_sha1(void)
|
|
59
59
|
|
60
60
|
cDigest_SHA1 = rb_define_class_under(mDigest, "SHA1", cDigest_Base);
|
61
61
|
|
62
|
-
|
63
|
-
#define RUBY_UNTYPED_DATA_WARNING 0
|
64
|
-
rb_iv_set(cDigest_SHA1, "metadata",
|
65
|
-
Data_Wrap_Struct(0, 0, 0, (void *)&sha1));
|
62
|
+
rb_iv_set(cDigest_SHA1, "metadata", rb_digest_make_metadata(&sha1));
|
66
63
|
}
|
data/ext/digest/sha2/extconf.rb
CHANGED
data/ext/digest/sha2/sha2.c
CHANGED
@@ -94,7 +94,7 @@
|
|
94
94
|
|
95
95
|
/*
|
96
96
|
* Define the followingsha2_* types to types of the correct length on
|
97
|
-
* the native
|
97
|
+
* the native architecture. Most BSD systems and Linux define u_intXX_t
|
98
98
|
* types. Machines with very recent ANSI C headers, can use the
|
99
99
|
* uintXX_t definintions from inttypes.h by defining SHA2_USE_INTTYPES_H
|
100
100
|
* during compile or in the sha.h header file.
|
@@ -575,7 +575,7 @@ void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) {
|
|
575
575
|
usedspace = freespace = 0;
|
576
576
|
}
|
577
577
|
|
578
|
-
int SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
|
578
|
+
int SHA256_Final(sha2_byte digest[SHA256_DIGEST_LENGTH], SHA256_CTX* context) {
|
579
579
|
sha2_word32 *d = (sha2_word32*)digest;
|
580
580
|
unsigned int usedspace;
|
581
581
|
|
@@ -640,7 +640,7 @@ int SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
|
|
640
640
|
return 1;
|
641
641
|
}
|
642
642
|
|
643
|
-
char *SHA256_End(SHA256_CTX* context, char buffer[]) {
|
643
|
+
char *SHA256_End(SHA256_CTX* context, char buffer[SHA256_DIGEST_STRING_LENGTH]) {
|
644
644
|
sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest;
|
645
645
|
int i;
|
646
646
|
|
@@ -943,7 +943,7 @@ void SHA512_Last(SHA512_CTX* context) {
|
|
943
943
|
SHA512_Transform(context, (sha2_word64*)context->buffer);
|
944
944
|
}
|
945
945
|
|
946
|
-
int SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
|
946
|
+
int SHA512_Final(sha2_byte digest[SHA512_DIGEST_LENGTH], SHA512_CTX* context) {
|
947
947
|
sha2_word64 *d = (sha2_word64*)digest;
|
948
948
|
|
949
949
|
/* Sanity check: */
|
@@ -973,7 +973,7 @@ int SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
|
|
973
973
|
return 1;
|
974
974
|
}
|
975
975
|
|
976
|
-
char *SHA512_End(SHA512_CTX* context, char buffer[]) {
|
976
|
+
char *SHA512_End(SHA512_CTX* context, char buffer[SHA512_DIGEST_STRING_LENGTH]) {
|
977
977
|
sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest;
|
978
978
|
int i;
|
979
979
|
|
@@ -1019,7 +1019,7 @@ void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) {
|
|
1019
1019
|
SHA512_Update((SHA512_CTX*)context, data, len);
|
1020
1020
|
}
|
1021
1021
|
|
1022
|
-
int SHA384_Final(sha2_byte digest[], SHA384_CTX* context) {
|
1022
|
+
int SHA384_Final(sha2_byte digest[SHA384_DIGEST_LENGTH], SHA384_CTX* context) {
|
1023
1023
|
sha2_word64 *d = (sha2_word64*)digest;
|
1024
1024
|
|
1025
1025
|
/* Sanity check: */
|
@@ -1049,7 +1049,7 @@ int SHA384_Final(sha2_byte digest[], SHA384_CTX* context) {
|
|
1049
1049
|
return 1;
|
1050
1050
|
}
|
1051
1051
|
|
1052
|
-
char *SHA384_End(SHA384_CTX* context, char buffer[]) {
|
1052
|
+
char *SHA384_End(SHA384_CTX* context, char buffer[SHA384_DIGEST_STRING_LENGTH]) {
|
1053
1053
|
sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest;
|
1054
1054
|
int i;
|
1055
1055
|
|
data/ext/digest/sha2/sha2init.c
CHANGED
@@ -47,9 +47,7 @@ Init_sha2(void)
|
|
47
47
|
cDigest_SHA##bitlen = rb_define_class_under(mDigest, "SHA" #bitlen, cDigest_Base); \
|
48
48
|
\
|
49
49
|
rb_ivar_set(cDigest_SHA##bitlen, id_metadata, \
|
50
|
-
|
50
|
+
rb_digest_make_metadata(&sha##bitlen));
|
51
51
|
|
52
|
-
#undef RUBY_UNTYPED_DATA_WARNING
|
53
|
-
#define RUBY_UNTYPED_DATA_WARNING 0
|
54
52
|
FOREACH_BITLEN(DEFINE_ALGO_CLASS)
|
55
53
|
}
|
data/lib/digest.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
|
-
|
2
|
+
|
3
|
+
require 'digest/loader'
|
3
4
|
|
4
5
|
module Digest
|
5
6
|
# A mutex for Digest().
|
@@ -8,7 +9,7 @@ module Digest
|
|
8
9
|
def self.const_missing(name) # :nodoc:
|
9
10
|
case name
|
10
11
|
when :SHA256, :SHA384, :SHA512
|
11
|
-
lib = 'digest/sha2
|
12
|
+
lib = 'digest/sha2'
|
12
13
|
else
|
13
14
|
lib = File.join('digest', name.to_s.downcase)
|
14
15
|
end
|
metadata
CHANGED
@@ -1,79 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: digest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 3.1.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akinori MUSHA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
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
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake-compiler
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
11
|
+
date: 2021-09-30 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
55
13
|
description: Provides a framework for message digest libraries.
|
56
14
|
email:
|
57
15
|
- knu@idaemons.org
|
58
16
|
executables: []
|
59
17
|
extensions:
|
60
|
-
- ext/digest/extconf.rb
|
61
18
|
- ext/digest/bubblebabble/extconf.rb
|
19
|
+
- ext/digest/extconf.rb
|
62
20
|
- ext/digest/md5/extconf.rb
|
63
21
|
- ext/digest/rmd160/extconf.rb
|
64
22
|
- ext/digest/sha1/extconf.rb
|
65
23
|
- ext/digest/sha2/extconf.rb
|
66
24
|
extra_rdoc_files: []
|
67
25
|
files:
|
68
|
-
- ".gitignore"
|
69
|
-
- ".travis.yml"
|
70
|
-
- Gemfile
|
71
26
|
- LICENSE.txt
|
72
27
|
- README.md
|
73
|
-
- Rakefile
|
74
|
-
- bin/console
|
75
|
-
- bin/setup
|
76
|
-
- digest.gemspec
|
77
28
|
- ext/digest/bubblebabble/bubblebabble.c
|
78
29
|
- ext/digest/bubblebabble/extconf.rb
|
79
30
|
- ext/digest/defs.h
|
@@ -81,6 +32,8 @@ files:
|
|
81
32
|
- ext/digest/digest.h
|
82
33
|
- ext/digest/digest_conf.rb
|
83
34
|
- ext/digest/extconf.rb
|
35
|
+
- ext/digest/lib/digest/loader.rb
|
36
|
+
- ext/digest/lib/digest/sha2/loader.rb
|
84
37
|
- ext/digest/md5/extconf.rb
|
85
38
|
- ext/digest/md5/md5.c
|
86
39
|
- ext/digest/md5/md5.h
|
@@ -96,14 +49,13 @@ files:
|
|
96
49
|
- ext/digest/sha1/sha1cc.h
|
97
50
|
- ext/digest/sha1/sha1init.c
|
98
51
|
- ext/digest/sha2/extconf.rb
|
99
|
-
- ext/digest/sha2/lib/sha2.rb
|
100
52
|
- ext/digest/sha2/sha2.c
|
101
53
|
- ext/digest/sha2/sha2.h
|
102
54
|
- ext/digest/sha2/sha2cc.h
|
103
55
|
- ext/digest/sha2/sha2init.c
|
104
56
|
- ext/digest/test.sh
|
105
|
-
- ext/openssl/deprecation.rb
|
106
57
|
- lib/digest.rb
|
58
|
+
- lib/digest/sha2.rb
|
107
59
|
homepage: https://github.com/ruby/digest
|
108
60
|
licenses:
|
109
61
|
- Ruby
|
@@ -118,14 +70,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
70
|
requirements:
|
119
71
|
- - ">="
|
120
72
|
- !ruby/object:Gem::Version
|
121
|
-
version: 2.
|
73
|
+
version: 2.5.0
|
122
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
75
|
requirements:
|
124
|
-
- - "
|
76
|
+
- - ">"
|
125
77
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
78
|
+
version: 1.3.1
|
127
79
|
requirements: []
|
128
|
-
rubygems_version: 3.2.
|
80
|
+
rubygems_version: 3.2.22
|
129
81
|
signing_key:
|
130
82
|
specification_version: 4
|
131
83
|
summary: Provides a framework for message digest libraries.
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require "rake/testtask"
|
3
|
-
|
4
|
-
Rake::TestTask.new(:test) do |t|
|
5
|
-
t.libs << "test" << "test/lib"
|
6
|
-
t.libs << "lib"
|
7
|
-
t.test_files = FileList["test/**/test_*.rb"]
|
8
|
-
end
|
9
|
-
|
10
|
-
require 'rake/extensiontask'
|
11
|
-
%w(bubblebabble md5 rmd160 sha1 sha2).each do |ext|
|
12
|
-
Rake::ExtensionTask.new("digest/#{ext}")
|
13
|
-
end
|
14
|
-
|
15
|
-
task :default => :test
|
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "digest"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
data/bin/setup
DELETED
data/digest.gemspec
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
Gem::Specification.new do |spec|
|
5
|
-
spec.name = "digest"
|
6
|
-
spec.version = "1.0.0"
|
7
|
-
spec.authors = ["Akinori MUSHA"]
|
8
|
-
spec.email = ["knu@idaemons.org"]
|
9
|
-
|
10
|
-
spec.summary = %q{Provides a framework for message digest libraries.}
|
11
|
-
spec.description = %q{Provides a framework for message digest libraries.}
|
12
|
-
spec.homepage = "https://github.com/ruby/digest"
|
13
|
-
spec.licenses = ["Ruby", "BSD-2-Clause"]
|
14
|
-
|
15
|
-
spec.files = [
|
16
|
-
".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup",
|
17
|
-
"digest.gemspec", "ext/digest/bubblebabble/bubblebabble.c", "ext/digest/bubblebabble/extconf.rb", "ext/digest/defs.h",
|
18
|
-
"ext/digest/digest.c", "ext/digest/digest.h", "ext/digest/digest_conf.rb", "ext/digest/extconf.rb",
|
19
|
-
"ext/digest/md5/extconf.rb", "ext/digest/md5/md5.c", "ext/digest/md5/md5.h", "ext/digest/md5/md5cc.h",
|
20
|
-
"ext/digest/md5/md5init.c", "ext/digest/rmd160/extconf.rb", "ext/digest/rmd160/rmd160.c",
|
21
|
-
"ext/digest/rmd160/rmd160.h", "ext/digest/rmd160/rmd160init.c",
|
22
|
-
"ext/digest/sha1/extconf.rb", "ext/digest/sha1/sha1.c", "ext/digest/sha1/sha1.h", "ext/digest/sha1/sha1cc.h",
|
23
|
-
"ext/digest/sha1/sha1init.c", "ext/digest/sha2/extconf.rb", "ext/digest/sha2/lib/sha2.rb",
|
24
|
-
"ext/digest/sha2/sha2.c", "ext/digest/sha2/sha2.h", "ext/digest/sha2/sha2cc.h", "ext/digest/sha2/sha2init.c",
|
25
|
-
"ext/digest/test.sh", "ext/openssl/deprecation.rb", "lib/digest.rb"
|
26
|
-
]
|
27
|
-
spec.required_ruby_version = ">= 2.3.0"
|
28
|
-
|
29
|
-
spec.bindir = "exe"
|
30
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
-
spec.require_paths = ["lib"]
|
32
|
-
spec.extensions = %w[
|
33
|
-
ext/digest/extconf.rb
|
34
|
-
ext/digest/bubblebabble/extconf.rb
|
35
|
-
ext/digest/md5/extconf.rb
|
36
|
-
ext/digest/rmd160/extconf.rb
|
37
|
-
ext/digest/sha1/extconf.rb
|
38
|
-
ext/digest/sha2/extconf.rb
|
39
|
-
]
|
40
|
-
spec.metadata["msys2_mingw_dependencies"] = "openssl"
|
41
|
-
|
42
|
-
spec.add_development_dependency "bundler"
|
43
|
-
spec.add_development_dependency "rake"
|
44
|
-
spec.add_development_dependency "rake-compiler"
|
45
|
-
end
|
data/ext/openssl/deprecation.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: false
|
2
|
-
module OpenSSL
|
3
|
-
def self.deprecated_warning_flag
|
4
|
-
unless flag = (@deprecated_warning_flag ||= nil)
|
5
|
-
if try_compile("", flag = "-Werror=deprecated-declarations")
|
6
|
-
$warnflags << " #{flag}"
|
7
|
-
else
|
8
|
-
flag = ""
|
9
|
-
end
|
10
|
-
@deprecated_warning_flag = flag
|
11
|
-
end
|
12
|
-
flag
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.check_func(func, header)
|
16
|
-
have_func(func, header, deprecated_warning_flag)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.check_func_or_macro(func, header)
|
20
|
-
check_func(func, header) or
|
21
|
-
have_macro(func, header) && $defs.push("-DHAVE_#{func.upcase}")
|
22
|
-
end
|
23
|
-
end
|