int DBG_HASHEXT_NAME(id_casemode_hash_remove) (DBG_PARAMS id_hash_t * ht, caddr_t _qn, caddr_t _o) { id_casemode_entry_llist_t **list; list = (id_casemode_entry_llist_t **) id_hash_get (ht, (caddr_t) &_qn); if (list && *list) { id_casemode_entry_llist_t seed; id_casemode_entry_llist_t *iter = &seed; seed.next = *list; while (iter->next) { if (casemode_strhashcmp ((char *) &(iter->next->owner), (char *) &_o)) { id_casemode_entry_llist_t *to_delete = iter->next; iter->next = iter->next->next; dk_free (to_delete, sizeof (id_casemode_entry_llist_t)); *list = seed.next; return 1; } iter = iter->next; } } return 0; }
int lh_is_vtb_word__xViAny (const unichar *buf, size_t bufsize) { lenmem_t lm; char *nw; if (1 > bufsize) return 0; lm.lm_length = bufsize * sizeof(unichar); lm.lm_memblock = (/*const*/ char *)buf; nw = id_hash_get (lh_noise_words, (char *) &lm); if (NULL == nw) return 1; return 0; }
wcharset_t * sch_name_to_charset (const char *name) { if (!name || !name[0]) return default_charset; else { wcharset_t **charset = (wcharset_t **) id_hash_get (global_wide_charsets, (caddr_t) &name); if (charset) return charset[0]; else return NULL; } }
void * sch_name_to_object_sc (dbe_schema_t * sc, sc_object_type type, char *o_default, char *o, char *qn, int find_many) { id_casemode_entry_llist_t **list_ptr; id_casemode_entry_llist_t *found = NULL; int n_found = 0; if (NULL != (list_ptr = (id_casemode_entry_llist_t **) id_hash_get (sc->sc_name_to_object[type], (caddr_t) &qn)) && NULL != *list_ptr) { id_casemode_entry_llist_t *iter = *list_ptr; while (iter) { if (o[0]) { if (casemode_strhashcmp ((char *) &o, (char *) &(iter->owner))) return iter->data; else { iter = iter->next; continue; } } else if (o_default) { if (casemode_strhashcmp ((char *) &(o_default), (char *) &(iter->owner))) return iter->data; found = iter; n_found += 1; } iter = iter->next; } } if (found && o_default) { if (n_found > 1) return ((void *) -1); else return found->data; } if (sc->sc_prev) return sch_name_to_object_sc (sc->sc_prev, type, o_default, o, qn, find_many); return NULL; }
long stmt_row_bookmark (cli_stmt_t * stmt, caddr_t * row) { long *bmidp; long bmid; cli_connection_t *con = stmt->stmt_connection; caddr_t bm; int len; if (!stmt->stmt_opts->so_use_bookmarks) return 0; IN_CON (con); if (!con->con_bookmarks) con->con_bookmarks = hash_table_allocate (101); if (!stmt->stmt_bookmarks) { stmt->stmt_bookmarks = hash_table_allocate (101); stmt->stmt_bookmarks_rev = id_tree_hash_create (101); } con->con_last_bookmark++; len = BOX_ELEMENTS (row); bm = row[len - 2]; bmidp = (long *) id_hash_get (stmt->stmt_bookmarks_rev, (caddr_t) & bm); if (bmidp) { LEAVE_CON (con); return (*bmidp); } bmid = con->con_last_bookmark; bm = box_copy_tree (bm); sethash ((void *) (ptrlong) bmid, stmt->stmt_bookmarks, (void *) bm); id_hash_set (stmt->stmt_bookmarks_rev, (caddr_t) & bm, (caddr_t) & bmid); sethash ((void *) (ptrlong) bmid, con->con_bookmarks, (void *) bm); LEAVE_CON (con); return bmid; }
caddr_t id_casemode_hash_get (id_hash_t * ht, caddr_t _qn, caddr_t _o) { id_casemode_entry_llist_t **list; list = (id_casemode_entry_llist_t **) id_hash_get (ht, (caddr_t) &_qn); if (list && *list) { id_casemode_entry_llist_t *iter = *list; while (iter) { if (casemode_strhashcmp ((char *) &_o, (char *) &(iter->owner))) return (caddr_t) &(iter->data); iter = iter->next; } } return NULL; }
caddr_t DBG_HASHEXT_NAME(id_casemode_hash_set) (DBG_PARAMS id_hash_t * ht, caddr_t _qn, caddr_t _o, caddr_t data) { id_casemode_entry_llist_t **list; caddr_t ret; list = (id_casemode_entry_llist_t **) id_hash_get (ht, (caddr_t) &_qn); if (list) { id_casemode_entry_llist_t *iter = *list; while (iter) { if (casemode_strhashcmp ((char *) &(iter->owner), (char *) &_o)) { caddr_t old_value = *((caddr_t *)iter->data); iter->data = data; ret = old_value; break; } iter = iter->next; } if (!iter) { NEW_VARZ (id_casemode_entry_llist_t, new_iter); new_iter->owner = _o; new_iter->data = *((caddr_t *)data); new_iter->next = *list; *list = new_iter; ret = NULL; } } else { NEW_VARZ (id_casemode_entry_llist_t, new_iter); new_iter->owner = _o; new_iter->data = *((caddr_t *)data); DBG_HASHEXT_NAME (id_hash_set) (DBG_ARGS ht, (caddr_t)&_qn, (caddr_t) &new_iter); ret = NULL; } return ret; }
void mpschema_set_view_def (char *name, caddr_t tree) { caddr_t *old_tree = NULL; old_tree = (caddr_t *) id_hash_get (xml_global->xs_views, (caddr_t) &name); if (old_tree) { if (*old_tree) { if (*old_tree == tree) GPF_T; dk_set_push (xml_global->xs_old_views, *old_tree); } *old_tree = tree; } else { name = box_dv_short_string (name); id_hash_set (xml_global->xs_views, (caddr_t) & name, (caddr_t) & tree); } }
shuric_t *shuric_load (shuric_vtable_t *vt, caddr_t uri, caddr_t ts, caddr_t uri_text_content, shuric_t *loaded_by, struct query_instance_s *qi, void *env, caddr_t *err_ret ) { caddr_t str = NULL; shuric_t ** cached_shuric_ptr; shuric_t *new_cached_shuric = NULL, *old_cached_shuric = NULL; shuric_t * new_shuric = NULL; shuric_t * res = NULL; /* = NULL to keep compiler happy */ dk_set_t obsoletes = NULL; dbg_printf (("shuric_load started (\"%s\", \"%s\", \"%s\" @ %p)\n", vt->shuric_type_title, uri, loaded_by ? loaded_by->shuric_uri : "", loaded_by )); if (NULL != err_ret[0]) return NULL; if (NULL != uri) { if (DV_STRING != DV_TYPE_OF (uri)) { err_ret[0] = srv_make_new_error ("39000", "FA041", "A URI of a shareable XSLT/XQuery resource has invalid data type."); goto cleanup; } if (box_length (uri) > MAX_SHURIC_URI_LENGTH) { err_ret[0] = srv_make_new_error ("39000", "FA042", "An abnormally long string is passed as URI of a shareable XSLT/XQuery resource."); goto cleanup; } } if (NULL != uri) { if (NULL != loaded_by) { shuric_t *old_inc = shuric_scan_relations (loaded_by, uri, SHURIC_SCAN_INCLUDED_BY | SHURIC_SCAN_IMPORTED_BY); if (old_inc != NULL) { char impuri[300]; if (NULL != loaded_by->shuric_uri) strcpy (impuri, "(temporary resource with no URI)"); else { strcpy_ck (impuri, loaded_by->shuric_uri); } shuric_release (old_inc); err_ret[0] = srv_make_new_error ("39000", "FA048", "Cyclic references: '%.300s' refers to his ancestor '%.300s' as to child resource", impuri, uri); } } mutex_enter (shuric_mtx); cached_shuric_ptr = (shuric_t **) id_hash_get (shuric_global_hashtable, (caddr_t) &uri); old_cached_shuric = ((NULL == cached_shuric_ptr) ? NULL : cached_shuric_ptr[0]); if (NULL != old_cached_shuric) old_cached_shuric->shuric_ref_count++; /* Temporary lock to keep the pointer valid. */ mutex_leave (shuric_mtx); if ((NULL != old_cached_shuric) && (old_cached_shuric->_ != vt)) { err_ret[0] = srv_make_new_error ("39000", "FA046", "Server uses the content of URI '%.200s' as '%.30s' and can not load it as '%.30s'", uri, old_cached_shuric->_->shuric_type_title, vt->shuric_type_title ); goto cleanup; } } if (NULL == uri_text_content) { QR_RESET_CTX { str = vt->shuric_uri_to_text (uri, qi, env, err_ret); } QR_RESET_CODE { du_thread_t *self = THREAD_CURRENT_THREAD; err_ret[0] = thr_get_error_code (self); thr_set_error_code (self, NULL); } END_QR_RESET; }