- sprintf(key_buf, "%d", code_point);
- chise_format_char_id (cid, val_buf, 8);
- return chise_put_attribute_table (table->db, key_buf, val_buf);
+ xzero (keydatum);
+ xzero (valdatum);
+
+ status = table->db->cursor (table->db, NULL, &dbcp, 0);
+ for (status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_FIRST);
+ status == 0;
+ status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_NEXT))
+ {
+ unsigned char *key_str = (unsigned char *)keydatum.data;
+ int key_len = strnlen (key_str, keydatum.size);
+ CHISE_Char_ID key = chise_char_id_parse_c_string (key_str, key_len);
+ int ret;
+
+ if (ret = func (table, key, &valdatum))
+ break;
+ }
+ dbcp->c_close (dbcp);