Lines Matching refs:ctx

131 static int prop_init(struct propctx *ctx, unsigned estimate)  in prop_init()  argument
135 ctx->mem_base = alloc_proppool(VALUES_SIZE + estimate); in prop_init()
136 if(!ctx->mem_base) return SASL_NOMEM; in prop_init()
138 ctx->mem_cur = ctx->mem_base; in prop_init()
140 ctx->values = (struct propval *)ctx->mem_base->data; in prop_init()
141 ctx->mem_base->unused = ctx->mem_base->size - VALUES_SIZE; in prop_init()
142 ctx->allocated_values = PROP_DEFAULT; in prop_init()
143 ctx->used_values = 0; in prop_init()
145 ctx->data_end = ctx->mem_base->data + ctx->mem_base->size; in prop_init()
146 ctx->list_end = (char **)(ctx->mem_base->data + VALUES_SIZE); in prop_init()
148 ctx->prev_val = NULL; in prop_init()
235 void prop_dispose(struct propctx **ctx) in prop_dispose() argument
239 if(!ctx || !*ctx) return; in prop_dispose()
241 while((*ctx)->mem_base) { in prop_dispose()
242 tmp = (*ctx)->mem_base; in prop_dispose()
243 (*ctx)->mem_base = tmp->next; in prop_dispose()
252 sasl_sun_FREE(*ctx); in prop_dispose()
254 sasl_FREE(*ctx); in prop_dispose()
256 *ctx = NULL; in prop_dispose()
269 int prop_request(struct propctx *ctx, const char **names) in prop_request() argument
273 if(!ctx || !names) return SASL_BADPARAM; in prop_request()
282 total_values = new_values + ctx->used_values + 1; in prop_request()
285 if(total_values > ctx->allocated_values) { in prop_request()
289 max_in_pool = ctx->mem_base->size / sizeof(struct propval); in prop_request()
294 ctx->allocated_values = total_values; in prop_request()
295 ctx->mem_base->unused = in prop_request()
296 ctx->mem_base->size - (sizeof(struct propval) in prop_request()
297 * ctx->allocated_values); in prop_request()
303 new_alloc_length = 2 * ctx->allocated_values; in prop_request()
309 ctx->mem_base = resize_proppool(ctx->mem_base, new_size); in prop_request()
311 if(!ctx->mem_base) { in prop_request()
312 ctx->values = NULL; in prop_request()
313 ctx->allocated_values = ctx->used_values = 0; in prop_request()
318 ctx->values = (struct propval *)ctx->mem_base->data; in prop_request()
319 ctx->allocated_values = new_alloc_length; in prop_request()
320 ctx->mem_base->unused = ctx->mem_base->size in prop_request()
321 - sizeof(struct propval) * ctx->allocated_values; in prop_request()
325 memset(&(ctx->values[ctx->used_values]), 0, in prop_request()
326 sizeof(struct propval) * (ctx->allocated_values - ctx->used_values)); in prop_request()
331 ctx->list_end = (char **)(ctx->values + total_values); in prop_request()
341 for(j=0;j<ctx->used_values;j++) { in prop_request()
342 if(!strcmp(ctx->values[j].name, names[i])) { in prop_request()
351 ctx->values[ctx->used_values++].name = names[i]; in prop_request()
354 prop_clear(ctx, 0); in prop_request()
363 const struct propval *prop_get(struct propctx *ctx) in prop_get() argument
365 if(!ctx) return NULL; in prop_get()
367 return ctx->values; in prop_get()
378 int prop_getnames(struct propctx *ctx, const char **names, in prop_getnames() argument
386 if(!ctx || !names || !vals) return SASL_BADPARAM; in prop_getnames()
390 for(val = ctx->values; val->name; val++) { in prop_getnames()
413 void prop_clear(struct propctx *ctx, int requests) in prop_clear() argument
419 if(!ctx) return; in prop_clear()
423 new_pool = alloc_proppool(ctx->mem_base->size + in prop_clear()
424 (ctx->used_values+1) * sizeof(struct propval)); in prop_clear()
428 ctx->used_values = 0; in prop_clear()
432 for(i=0; i<ctx->used_values; i++) { in prop_clear()
433 new_values[i].name = ctx->values[i].name; in prop_clear()
437 while(ctx->mem_base) { in prop_clear()
438 tmp = ctx->mem_base; in prop_clear()
439 ctx->mem_base = tmp->next; in prop_clear()
448 ctx->allocated_values = ctx->used_values+1; in prop_clear()
450 new_pool->size - (ctx->allocated_values * sizeof(struct propval)); in prop_clear()
453 ctx->values = (struct propval *)new_pool->data; in prop_clear()
454 ctx->prev_val = NULL; in prop_clear()
457 ctx->mem_base = ctx->mem_cur = new_pool; in prop_clear()
460 ctx->list_end = in prop_clear()
461 (char **)((char *)ctx->mem_base->data + ctx->allocated_values * sizeof(struct propval)); in prop_clear()
462 ctx->data_end = (char *)ctx->mem_base->data + ctx->mem_base->size; in prop_clear()
470 void prop_erase(struct propctx *ctx, const char *name) in prop_erase() argument
475 if(!ctx || !name) return; in prop_erase()
477 for(val = ctx->values; val->name; val++) { in prop_erase()
512 int prop_format(struct propctx *ctx, const char *sep, int seplen, in prop_format() argument
518 if(!ctx || !outbuf) return SASL_BADPARAM; in prop_format()
523 needed = seplen * (ctx->used_values - 1); in prop_format()
524 for(val = ctx->values; val->name; val++) { in prop_format()
536 for(val = ctx->values; val->name; val++) { in prop_format()
556 int prop_set(struct propctx *ctx, const char *name, in prop_set() argument
561 if(!ctx) return SASL_BADPARAM; in prop_set()
562 if(!name && !ctx->prev_val) return SASL_BADPARAM; in prop_set()
567 ctx->prev_val = NULL; in prop_set()
569 for(val = ctx->values; val->name; val++) { in prop_set()
571 ctx->prev_val = val; in prop_set()
577 if(!ctx->prev_val) return SASL_BADPARAM; in prop_set()
580 cur = ctx->prev_val; in prop_set()
610 if(size > ctx->mem_cur->unused) { in prop_set()
613 for(needed = ctx->mem_cur->size * 2; needed < size; needed *= 2); in prop_set()
616 ctx->mem_cur->next = alloc_proppool(needed); in prop_set()
617 if(!ctx->mem_cur->next) return SASL_NOMEM; in prop_set()
619 ctx->mem_cur = ctx->mem_cur->next; in prop_set()
621 ctx->list_end = (char **)ctx->mem_cur->data; in prop_set()
622 ctx->data_end = ctx->mem_cur->data + needed; in prop_set()
626 ctx->mem_cur->unused -= size; in prop_set()
627 cur->values = (const char **)ctx->list_end; in prop_set()
631 ctx->list_end = (char **)(cur->values + nvalues); in prop_set()
653 if(size > ctx->mem_cur->unused) { in prop_set()
656 needed = ctx->mem_cur->size * 2; in prop_set()
663 ctx->mem_cur->next = alloc_proppool(needed); in prop_set()
664 if(!ctx->mem_cur->next) return SASL_NOMEM; in prop_set()
666 ctx->mem_cur = ctx->mem_cur->next; in prop_set()
667 ctx->list_end = (char **)ctx->mem_cur->data; in prop_set()
668 ctx->data_end = ctx->mem_cur->data + needed; in prop_set()
672 ctx->data_end -= size; in prop_set()
673 ctx->mem_cur->unused -= size; in prop_set()
676 memcpy(ctx->data_end, value, size-1); in prop_set()
677 ctx->data_end[size - 1] = '\0'; in prop_set()
678 cur->values[nvalues - 2] = ctx->data_end; in prop_set()
692 if(size > ctx->mem_cur->unused && in prop_set()
693 (void *)cur->values > (void *)(ctx->mem_cur->data) && in prop_set()
694 (void *)cur->values < (void *)(ctx->mem_cur->data + ctx->mem_cur->size)) { in prop_set()
696 return prop_set(ctx, cur->name, value, vallen); in prop_set()
703 ctx->mem_cur->unused -= size; in prop_set()
704 ctx->list_end++; in prop_set()
706 *(ctx->list_end - 1) = NULL; in prop_set()
707 tmp = (ctx->list_end - 2); in prop_set()
715 if(size > ctx->mem_cur->unused) { in prop_set()
718 needed = ctx->mem_cur->size * 2; in prop_set()
725 ctx->mem_cur->next = alloc_proppool(needed); in prop_set()
726 if(!ctx->mem_cur->next) return SASL_NOMEM; in prop_set()
728 ctx->mem_cur = ctx->mem_cur->next; in prop_set()
729 ctx->list_end = (char **)ctx->mem_cur->data; in prop_set()
730 ctx->data_end = ctx->mem_cur->data + needed; in prop_set()
734 ctx->data_end -= size; in prop_set()
735 ctx->mem_cur->unused -= size; in prop_set()
738 memcpy(ctx->data_end, value, size-1); in prop_set()
739 ctx->data_end[size - 1] = '\0'; in prop_set()
740 *tmp = ctx->data_end; in prop_set()
757 int prop_setvals(struct propctx *ctx, const char *name, in prop_setvals() argument
763 if(!ctx) return SASL_BADPARAM; in prop_setvals()
770 result = prop_set(ctx, name, *val, 0); in prop_setvals()
776 result = prop_set(ctx, NULL, *val,0); in prop_setvals()
844 int _sasl_auxprop_add_plugin(void *ctx, in _sasl_auxprop_add_plugin() argument
856 _sasl_global_context_t *gctx = ctx == NULL ? _sasl_gbl_ctx() : ctx; in _sasl_auxprop_add_plugin()