diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ext/md5/md5init.c | 23 | ||||
-rw-r--r-- | ext/sha1/sha1-ruby.c | 25 |
3 files changed, 43 insertions, 12 deletions
@@ -1,3 +1,10 @@ +Fri May 25 00:57:25 2001 Akinori MUSHA <knu@iDaemons.org> + + * ext/sha1/sha1-ruby.c (md5i_new): separate initialize() from + new(). + + * ext/md5/md5init.c (sha1_new): ditto. + Fri May 25 00:53:41 2001 Akinori MUSHA <knu@iDaemons.org> * ext/dbm/extconf.rb: fix support for *BSD and set $CFLAGS 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); diff --git a/ext/sha1/sha1-ruby.c b/ext/sha1/sha1-ruby.c index 760ce0f2b0..75b3826407 100644 --- a/ext/sha1/sha1-ruby.c +++ b/ext/sha1/sha1-ruby.c @@ -64,22 +64,32 @@ sha1_clone(obj) } static VALUE +sha1_init(argc, argv, self) + int argc; + VALUE* argv; + VALUE self; +{ + VALUE arg; + + rb_scan_args(argc, argv, "01", &arg); + + if (!NIL_P(arg)) sha1_update(self, arg); + + return self; +} + +static VALUE sha1_new(argc, argv, class) int argc; VALUE* argv; VALUE class; { - VALUE arg, obj; + VALUE obj; SHA1_CTX *sha1; - rb_scan_args(argc, argv, "01", &arg); - if (!NIL_P(arg)) Check_Type(arg, T_STRING); - obj = Data_Make_Struct(class, SHA1_CTX, 0, free, sha1); SHA1Init(sha1); - if (!NIL_P(arg)) { - sha1_update(obj, arg); - } + rb_obj_call_init(obj, argc, argv); return obj; } @@ -93,6 +103,7 @@ Init_sha1() rb_define_singleton_method(cSHA1, "sha1", sha1_new, -1); rb_define_method(cSHA1, "update", sha1_update, 1); + rb_define_method(cSHA1, "initialize", sha1_init, -1); rb_define_method(cSHA1, "<<", sha1_update, 1); rb_define_method(cSHA1, "digest", sha1_digest, 0); rb_define_method(cSHA1, "hexdigest", sha1_hexdigest, 0); |