/*
 *  call-seq:
 *      File.get_attr(filename, attribute) -> attribute_value
 *
 *  Returns the value of the attribute <i>attribute</i>
 *
 *      File.get_attr(".", "description") => "ruby-xattr directory and files"
 *
 */

static VALUE rb_file_get_attr(obj, fname, aname)
	VALUE obj, fname, aname;
{
	char *aval;
	int *size;
	int ret;
	VALUE retval;

	Check_Type(fname, T_STRING);
	Check_Type(aname, T_STRING);

	size = malloc(sizeof(int));
	aval = malloc(16000);
	*size = 16000;

	ret = attr_get(StringValueCStr(fname), StringValueCStr(aname), aval, size, 1);
	if(ret == 0) {
		retval = rb_str_new(aval, *size);
		free(aval);
		free(size);
		return retval;
	} else {
		free(aval);
		free(size);
		if(errno != ENOATTR && errno != ENODATA) {
			rb_sys_fail(StringValueCStr(fname));
		}
		return Qnil;
	}
}