こんなのがあると ext libで便利かなと思うのですがどうでしょ?

util.cくらいにこそっと入れてもらえませんか?

# 毎回 copyするのが面倒になってきたとも言う…
--
      yashi

void argv2cargv(argv,cargv) VALUE argv; char **cargv; { int i, argc; argc = RARRAY(rb_argv)->len; for (i=0; i<argc; i++) { VALUE s = RARRAY(rb_argv)->ptr[i]; ID id_to_str = rb_intern("to_str"); if (rb_respond_to(s, id_to_str)) { cargv[i] = STR2CSTR(rb_funcall(s, id_to_str, 0)); } else { cargv[i] = ""; } } }
int argc, i; char **argv; argc = RARRAY(rb_argv)->len + 1; argv = ALLOCA_N(char*, argc); argv[0] = STR2CSTR(rb_argv0); argv2cargv(rb_argv, argv+1); for (i=0; i<argc; i++) { printf("%d: %s\n", i, argv[i]); }