-/*
- * Return a pointer to some generic per-session user data.
- * (This function returns NULL if the requested symbol is not allocated.)
- *
- * NOTE: we use critical sections for allocating and de-allocating these,
- * but not for locating one.
- */
-void *CtdlGetUserData(unsigned long requested_sym)
-{
- struct CtdlSessData *ptr;
-
- for (ptr = CC->FirstSessData; ptr != NULL; ptr = ptr->next)
- if (ptr->sym_id == requested_sym)
- return(ptr->sym_data);
-
- lprintf(CTDL_ERR, "ERROR! CtdlGetUserData(%ld) symbol not allocated\n",
- requested_sym);
- return NULL;
-}
-
-
-/*
- * Allocate some generic per-session user data.
- */
-void CtdlAllocUserData(unsigned long requested_sym, size_t num_bytes)
-{
- struct CtdlSessData *ptr;
-
- lprintf(CTDL_DEBUG, "CtdlAllocUserData(%ld) called\n", requested_sym);
-
- /* Fail silently if the symbol is already registered. */
- for (ptr = CC->FirstSessData; ptr != NULL; ptr = ptr->next) {
- if (ptr->sym_id == requested_sym) {
- return;
- }
- }
-
- /* Grab us some memory! Dem's good eatin' !! */
- ptr = malloc(sizeof(struct CtdlSessData));
- ptr->sym_id = requested_sym;
- ptr->sym_data = malloc(num_bytes);
- memset(ptr->sym_data, 0, num_bytes);
-
- begin_critical_section(S_SESSION_TABLE);
- ptr->next = CC->FirstSessData;
- CC->FirstSessData = ptr;
- end_critical_section(S_SESSION_TABLE);
-
- lprintf(CTDL_DEBUG, "CtdlAllocUserData(%ld) finished\n", requested_sym);
-}
-
-
-/*
- * Change the size of a buffer allocated with CtdlAllocUserData()
- */
-void CtdlReallocUserData(unsigned long requested_sym, size_t num_bytes)
-{
- struct CtdlSessData *ptr;
-
- for (ptr = CC->FirstSessData; ptr != NULL; ptr = ptr->next) {
- if (ptr->sym_id == requested_sym) {
- ptr->sym_data = realloc(ptr->sym_data, num_bytes);
- return;
- }
- }
-
- lprintf(CTDL_ERR, "CtdlReallocUserData() ERROR: symbol %ld not found!\n",
- requested_sym);
-}
-
-
-
-
-
-