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