X-Git-Url: http://git.code-monkey.de/?p=ruby-eet.git;a=blobdiff_plain;f=ext%2Fext.c;h=485bfc6062b9da6106912f5a98b612c5883b0e5e;hp=94df85d4e8ff2d601c580ca91531228201331326;hb=802b343606893c51ec568679c13b5e2bcb3c5d31;hpb=c2f066281c7c4b2bff662aab05d934bff2155223 diff --git a/ext/ext.c b/ext/ext.c index 94df85d..485bfc6 100644 --- a/ext/ext.c +++ b/ext/ext.c @@ -1,5 +1,5 @@ /* - * $Id: ext.c 28 2005-04-11 20:58:23Z tilman $ + * $Id: ext.c 29 2005-04-12 17:07:48Z tilman $ * * Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de) * @@ -33,6 +33,10 @@ 1, INT2FIX (0)) == Qtrue) \ rb_raise (rb_eArgError, "key must not contain binary zeroes"); +#define CHECK_CLOSED(ef) \ + if (!*(ef)) \ + rb_raise (rb_eIOError, "closed stream"); + static VALUE c_close (VALUE self); static void @@ -152,15 +156,12 @@ c_close (VALUE self) Eet_File **ef = NULL; Data_Get_Struct (self, Eet_File *, ef); + CHECK_CLOSED (ef); - if (!*ef) - rb_raise (rb_eIOError, "closed stream"); - else { - eet_close (*ef); - *ef = NULL; + eet_close (*ef); + *ef = NULL; - eet_shutdown (); - } + eet_shutdown (); return self; } @@ -181,9 +182,7 @@ c_list (int argc, VALUE *argv, VALUE self) int i, count = 0; Data_Get_Struct (self, Eet_File *, ef); - - if (!*ef) - rb_raise (rb_eIOError, "closed stream"); + CHECK_CLOSED (ef); switch (eet_mode_get (*ef)) { case EET_FILE_MODE_READ: @@ -225,9 +224,7 @@ c_delete (VALUE self, VALUE key) char *tmp; Data_Get_Struct (self, Eet_File *, ef); - - if (!*ef) - rb_raise (rb_eIOError, "closed stream"); + CHECK_CLOSED (ef); CHECK_KEY (key); @@ -256,9 +253,7 @@ c_read (VALUE self, VALUE key) int size = 0; Data_Get_Struct (self, Eet_File *, ef); - - if (!*ef) - rb_raise (rb_eIOError, "closed stream"); + CHECK_CLOSED (ef); CHECK_KEY (key); @@ -291,9 +286,7 @@ c_write (int argc, VALUE *argv, VALUE self) int n; Data_Get_Struct (self, Eet_File *, ef); - - if (!*ef) - rb_raise (rb_eIOError, "closed stream"); + CHECK_CLOSED (ef); rb_scan_args (argc, argv, "21", &key, &buf, &comp); @@ -333,9 +326,7 @@ c_read_image (VALUE self, VALUE key) int w = 0, h = 0, has_alpha = 0, level = 0, quality = 0, lossy = 0; Data_Get_Struct (self, Eet_File *, ef); - - if (!*ef) - rb_raise (rb_eIOError, "closed stream"); + CHECK_CLOSED (ef); CHECK_KEY (key); @@ -383,9 +374,7 @@ c_write_image (int argc, VALUE *argv, VALUE self) int n, lossy = 0, level = 9, quality = 100; Data_Get_Struct (self, Eet_File *, ef); - - if (!*ef) - rb_raise (rb_eIOError, "closed stream"); + CHECK_CLOSED (ef); rb_scan_args (argc, argv, "42", &key, &buf, &w, &h, &has_alpha, &comp);