diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-05-24 16:00:54 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-05-24 16:00:54 +0000 |
commit | d6e985ad0b6d47a914cc9c2f86a14e08fff4c267 (patch) | |
tree | d592e2434d8fb50efdc4ad6adc2f068b103adf9b /ext/md5/md5init.c | |
parent | dcd6223c648d1c6834873b69b9293e5b53258d5b (diff) | |
download | ruby-d6e985ad0b6d47a914cc9c2f86a14e08fff4c267.tar.gz |
* ext/sha1/sha1-ruby.c (md5i_new): separate initialize() from
new().
* ext/md5/md5init.c (sha1_new): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/md5/md5init.c')
-rw-r--r-- | ext/md5/md5init.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/ext/md5/md5init.c b/ext/md5/md5init.c index d6a4a55535..f491b65a27 100644 --- a/ext/md5/md5init.c +++ b/ext/md5/md5init.c @@ -76,20 +76,32 @@ md5i_clone(obj) } static VALUE +md5i_init(argc, argv, self) + int argc; + VALUE* argv; + VALUE self; +{ + VALUE str; + + rb_scan_args(argc, argv, "01", &str); + + if (!NIL_P(str)) md5i_update(self, str); + + return self; +} + +static VALUE md5i_new(argc, argv, class) int argc; VALUE* argv; VALUE class; { - VALUE obj, str; + VALUE obj; md5_state_t *md5; obj = Data_Make_Struct(class, md5_state_t, 0, free, md5); md5_init(md5); - rb_scan_args(argc, argv, "01", &str); - if (argc == 1) { - md5i_update(obj, str); - } + rb_obj_call_init(obj, argc, argv); return obj; } @@ -102,6 +114,7 @@ Init_md5() rb_define_singleton_method(cMD5, "new", md5i_new, -1); rb_define_singleton_method(cMD5, "md5", md5i_new, -1); + rb_define_method(cMD5, "initialize", md5i_init, -1); rb_define_method(cMD5, "update", md5i_update, 1); rb_define_method(cMD5, "<<", md5i_update, 1); rb_define_method(cMD5, "digest", md5i_digest, 0); |