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