digest 1.0.0 → 3.1.0.pre2
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 +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
|
+

|
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
|