/*
 *  call-seq:
 *      file.get_attr(attribute) -> attribute_value
 *
 *  Returns the value of <i>attribute</i> for the file
 *
 *      File.new(__FILE__).get_attr("description") # => "test script"
 *
 */

VALUE rb_file_get_attrf(fobj, aname)
        VALUE fobj, aname;
{
        char *aval;
        int *size;
        int ret;
        VALUE retval;
        OpenFile *fptr;
        FILE *f;

        GetOpenFile(fobj, fptr);
        f = GetReadFile(fptr);

        Check_Type(fobj, T_FILE);
        Check_Type(aname, T_STRING);

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

        ret = attr_getf(fileno(f), 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(ret != ENODATA && ret != ENOATTR) {
                        rb_sys_fail("");
                }
                return Qnil;
        }
}