/* * 現在のレコードのキーを返す * * === Return * String */ static VALUE records_curr_key(VALUE obj) { sen_records *recs; int keylen; char keybuf[256]; char *bufp; VALUE key; Data_Get_Struct(obj, sen_records, recs); keylen = sen_records_curr_key(recs, NULL, 0); if (keylen == 0) return Qnil; if (keylen <= sizeof(keybuf)) { key = rb_str_new(keybuf, keylen-1); } else { bufp = xmalloc(keylen+1); sen_records_curr_key(recs, bufp, keylen+1); key = rb_str_new(bufp, keylen-1); xfree(bufp); } return key; }