25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'ext/rpm/file.c', line 25
static VALUE
file_initialize(VALUE file, VALUE path, VALUE md5sum, VALUE link_to,
VALUE size, VALUE mtime, VALUE owner, VALUE group,
VALUE rdev, VALUE mode, VALUE attr, VALUE state)
{
if (TYPE(path) != T_STRING
|| TYPE(md5sum) != T_STRING
|| (!NIL_P(link_to) && TYPE(link_to) != T_STRING)
|| (!NIL_P(owner) && TYPE(owner) != T_STRING)
|| (!NIL_P(group) && TYPE(group) != T_STRING)) {
rb_raise(rb_eTypeError, "illegal argument type");
}
rb_ivar_set(file, id_path, path);
rb_ivar_set(file, id_md5sum, md5sum);
rb_ivar_set(file, id_link_to, (!NIL_P(link_to) && RSTRING_LEN(link_to)) ? link_to : Qnil);
rb_ivar_set(file, id_size, rb_Integer(size));
if (rb_obj_is_kind_of(mtime, rb_cTime) == Qfalse) {
mtime = rb_time_new(NUM2INT(rb_Integer(mtime)), (time_t)0);
}
rb_ivar_set(file, id_mtime, mtime);
rb_ivar_set(file, id_owner, owner);
rb_ivar_set(file, id_group, group);
rb_ivar_set(file, id_rdev, rb_Integer(rdev));
rb_ivar_set(file, id_mode, UINT2NUM(NUM2UINT(rb_Integer(mode))&0777));
rb_ivar_set(file, id_attr, rb_Integer(attr));
rb_ivar_set(file, id_state, rb_Integer(state));
return file;
}
|