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