/*
* TermInfo#tparm(str, ...) => str
*
* TermInfo#tparm expands parameters in str returned by tigetstr.
*/
static VALUE
rt_tparm(int argc, VALUE *argv, VALUE self)
{
char *capname, *ret;
setup(self);
VALUE v_capname, v1, v2, v3, v4, v5, v6, v7, v8, v9;
long p1, p2, p3, p4, p5, p6, p7, p8, p9;
setup(self);
if (rb_scan_args(argc, argv, "19", &v_capname, &v1, &v2, &v3, &v4, &v5, &v6, &v7, &v8, &v9) == 0) {
rb_raise(rb_eArgError, "capname required");
}
capname = StringValueCStr(v_capname);
#define conv(p, v) do { if (v == Qnil) p = 0; else p = NUM2LONG(v); } while(0)
conv(p1, v1);
conv(p2, v2);
conv(p3, v3);
conv(p4, v4);
conv(p5, v5);
conv(p6, v6);
conv(p7, v7);
conv(p8, v8);
conv(p9, v9);
ret = tparm(capname, p1, p2, p3, p4, p5, p6, p7, p8, p9);
if (ret == NULL) { rb_raise(eTermInfoError, "tparm failed"); }
return rb_str_new2(ret);
}