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