/*
- * $Id: ext.c 74 2006-05-13 10:34:36Z 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,
Eet_File **ef = NULL;
void *data;
char *ckey;
- int w = 0, h = 0, has_alpha = 0, level = 0, quality = 0, lossy = 0;
+ unsigned int w = 0, h = 0;
+ int has_alpha = 0, level = 0, quality = 0, lossy = 0;
Data_Get_Struct (self, Eet_File *, ef);
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
buf_len = 9 + tag->len + data->len;
ret = rb_str_buf_new (buf_len);
- buf = RSTRING (ret)->ptr;
+ buf = (unsigned char *) RSTRING (ret)->ptr;
RSTRING (ret)->len = buf_len;
memcpy (buf, "CHnK", 4);
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);