int ft_minishell(t_env *e) { int len; prompt(e); while ((len = read(e->fd, e->buf, READ_SIZE)) > 0) { //printf("%d %d %d %d %d %d %d %d\n", e->buf[0], e->buf[1], e->buf[2], e->buf[3], e->buf[4], e->buf[5], e->buf[6], e->buf[7]); if (KEYPAD(e) || K_SUPPR(e) || CTRL_C(e)) keypad_command(e); else if (COPY_KEY(e)) copy_command(e); else if (CTRL_D(e)) { if (*e->hist->cmd == '\0') break ; } else read_command(len, e->buf, e); if (!SHFT_KEY(e) && !CT_SH_KEY(e) && e->cpy.cpy != 0) rewrite_command(e); ft_memset(e->buf, 0, len); } return (len); }
iconv_t iconv_helper_get(iconv_helper *in_helper, const char *in_to_coding, const char *in_from_coding) { int i; MAKE_KEY(key, in_to_coding, in_from_coding); iconv_t_list it_list = (iconv_t_list)g_hash_table_lookup(in_helper->convs, key); /* Make sure list exists */ if (it_list == NULL) { it_list = create_iconv_t_list(); g_hash_table_insert (in_helper->convs, COPY_KEY(key), it_list); } else { RELEASE_KEY(key); } /* Search for available */ for (i = 0; i < it_list->len; i++) { struct iconv_t_wrapper* w = (struct iconv_t_wrapper*)g_ptr_array_index(it_list, i); if (!w->used) { w->used = TRUE; /* rra_debug("Returning iconv_t: %p", w->it); */ return w->it; } } /* no unused available */ struct iconv_t_wrapper* itw = g_new(struct iconv_t_wrapper, 1); itw->used = TRUE; itw->it = iconv_open(in_to_coding, in_from_coding); if (itw->it == (iconv_t)-1) { rra_warning(N_("Got invalid iconv_t from iconv_open")); return (iconv_t)-1; } g_ptr_array_add(it_list, itw); /* rra_debug("Returning iconv_t: %p", itw->it); */ return itw->it; }
static int merge_output(Bucket *r, SetIteration *i, int mapping) { if (r->len >= r->size && Bucket_grow(r, -1, !mapping) < 0) return -1; COPY_KEY(r->keys[r->len], i->key); INCREF_KEY(r->keys[r->len]); if (mapping) { COPY_VALUE(r->values[r->len], i->value); INCREF_VALUE(r->values[r->len]); } r->len++; return 0; }
boolean_t gvcst_queryget(mval *val) { bool found, is_hidden, is_dummy = FALSE, sn_tpwrapped; boolean_t est_first_pass; char save_currkey[SIZEOF(gv_key) + DBKEYSIZE(MAX_KEY_SZ)]; gv_key *save_gv_currkey; int save_dollar_tlevel; DEBUG_ONLY(save_dollar_tlevel = dollar_tlevel); found = gvcst_queryget2(val, NULL); # ifdef UNIX assert(save_dollar_tlevel == dollar_tlevel); CHECK_HIDDEN_SUBSCRIPT(gv_altkey, is_hidden); if (found && IS_SN_DUMMY(val->str.len, val->str.addr)) is_dummy = TRUE; if (!found || (!is_dummy && !is_hidden)) return found; IF_SN_DISALLOWED_AND_NO_SPAN_IN_DB(return found); SAVE_GV_CURRKEY; if (!dollar_tlevel) { sn_tpwrapped = TRUE; op_tstart((IMPLICIT_TSTART), TRUE, &literal_batch, 0); ESTABLISH_NORET(gvcst_queryget_ch, est_first_pass); GVCST_ROOT_SEARCH_AND_PREP(est_first_pass); } else sn_tpwrapped = FALSE; found = gvcst_query(); COPY_KEY(gv_currkey, gv_altkey); /* set gv_currkey to gv_altkey */ found = gvcst_get(val); INCR_GVSTATS_COUNTER(cs_addrs, cs_addrs->nl, n_get, (gtm_uint64_t) -1); /* only counted externally as one get */ INCR_GVSTATS_COUNTER(cs_addrs, cs_addrs->nl, n_query, (gtm_uint64_t) -1); if (sn_tpwrapped) { op_tcommit(); REVERT; /* remove our condition handler */ } RESTORE_GV_CURRKEY; assert(save_dollar_tlevel == dollar_tlevel); # endif return found; }
static int nextBTreeItems(SetIteration *i) { if (i->position >= 0) { if (i->position) { DECREF_KEY(i->key); DECREF_VALUE(i->value); } if (BTreeItems_seek(ITEMS(i->set), i->position) >= 0) { Bucket *currentbucket; currentbucket = BUCKET(ITEMS(i->set)->currentbucket); UNLESS(PER_USE(currentbucket)) { /* Mark iteration terminated, so that finiSetIteration doesn't * try to redundantly decref the key and value */ i->position = -1; return -1; } COPY_KEY(i->key, currentbucket->keys[ITEMS(i->set)->currentoffset]); INCREF_KEY(i->key); COPY_VALUE(i->value, currentbucket->values[ITEMS(i->set)->currentoffset]); INCREF_VALUE(i->value); i->position ++; PER_UNUSE(currentbucket); } else {