Method: RPM::File#initialize

Defined in:
ext/rpm/file.c

#initialize(path, md5sum, link_to, size, mtime, owner, group, rdev, mode, attr, state) ⇒ Object



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