/*
- * $Id: ext.c 76 2006-05-14 13:51:45Z tilman $
- *
- * Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
+ * Copyright (c) 2005-2007 Tilman Sauerbeck (tilman at code-monkey de)
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
#include <st.h>
#include <locale.h>
-#define CHECK_KEY(key) \
+#define CHECK_NO_BIN0(key) \
if (rb_funcall (key, id_include, 1, INT2FIX (0)) == Qtrue) \
- rb_raise (rb_eArgError, "key must not contain binary zeroes");
+ rb_raise (rb_eArgError, #key " must not contain binary zeroes");
#define CHECK_CLOSED(ef) \
if (!*(ef)) \
}
static VALUE
-get_keys (Eet_File *ef, char *glob)
+get_keys (Eet_File *ef, const char *glob)
{
VALUE ret;
char **keys;
CHECK_CLOSED (ef);
ckey = StringValuePtr (key);
- CHECK_KEY (key);
+ CHECK_NO_BIN0 (key);
if (!eet_delete (*ef, ckey))
rb_raise (rb_eIOError, "cannot delete entry - %s", ckey);
CHECK_CLOSED (ef);
ckey = StringValuePtr (key);
- CHECK_KEY (key);
+ CHECK_NO_BIN0 (key);
data = eet_read (*ef, ckey, &size);
if (!data)
comp = Qtrue;
ckey = StringValuePtr (key);
- CHECK_KEY (key);
+ CHECK_NO_BIN0 (key);
cbuf = StringValuePtr (buf);
n = eet_write (*ef, ckey,
CHECK_CLOSED (ef);
ckey = StringValuePtr (key);
- CHECK_KEY (key);
+ CHECK_NO_BIN0 (key);
data = eet_data_image_read (*ef, ckey, &w, &h,
&has_alpha, &level, &quality,
has_alpha = Qfalse;
ckey = StringValuePtr (key);
- CHECK_KEY (key);
+ CHECK_NO_BIN0 (key);
cbuf = StringValuePtr (buf);
Check_Type (w, T_FIXNUM);
Check_Type (h, T_FIXNUM);
StringValue (tag);
StringValue (data);
- if (rb_funcall (tag, id_include, 1, INT2FIX (0)) == Qtrue)
- rb_raise (rb_eArgError, "tag must not contain binary zeroes");
+ CHECK_NO_BIN0 (tag);
/* libeet uses a signed 32bit integer to store the
* chunk size, so make sure we don't overflow it
long i;
#endif
- props = rb_funcall (self, id_to_eet_properties, 0);
+ props = rb_funcall2 (self, id_to_eet_properties, 0, NULL);
if (rb_obj_is_kind_of (props, rb_cHash) == Qfalse ||
!RHASH (props)->tbl->num_entries)
rb_raise (ePropError, "invalid EET properties");
- name = rb_funcall (self, id_to_eet_name, 0);
+ name = rb_funcall2 (self, id_to_eet_name, 0, NULL);
StringValue (name);
if (!RSTRING (name)->len ||
#ifdef HAVE_RB_HASH_FOREACH
rb_hash_foreach (props, for_each_prop, stream);
#else
- keys = RARRAY (rb_funcall (props, id_keys, 0));
+ keys = RARRAY (rb_funcall2 (props, id_keys, 0, NULL));
for (i = 0; i < keys->len; i++)
for_each_prop (keys->ptr[i],
chunk = rb_class_new_instance (2, args, cChunk);
- return rb_funcall (chunk, id_to_s, 0);
+ return rb_funcall2 (chunk, id_to_s, 0, NULL);
}
static VALUE
int_to_eet_chunks (int argc, VALUE *argv, VALUE self)
{
VALUE tag, type = Qnil, ary, args[2], chunk;
- char *cfmt = "V";
+ const char *cfmt = "V";
rb_scan_args (argc, argv, "11", &tag, &type);
- ary = rb_ary_new3 (1, self);
+ ary = rb_ary_new4 (1, &self);
if (type == sym_char)
cfmt = "c";
args[1] = rb_funcall (ary, id_pack, 1, rb_str_new2 (cfmt));
chunk = rb_class_new_instance (2, args, cChunk);
- return rb_ary_new3 (1, chunk);
+ return rb_ary_new4 (1, &chunk);
}
static VALUE
args[1] = rb_str_new (buf, len);
chunk = rb_class_new_instance (2, args, cChunk);
- return rb_ary_new3 (1, chunk);
+ return rb_ary_new4 (1, &chunk);
}
void