/*
* 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;
}
}