Exemplo n.º 1
0
/** Cleanup a request.
 *
 * @request struct request_t* the request to uninitialize
 */
int ci_destroy(struct request_t* request)
{
	while(request->cleanup.size)
		fstack_pop(&request->cleanup);
	fstack_destroy(&request->cleanup);
	memset(request, 0, sizeof(struct request_t));
	return 0;
}
Exemplo n.º 2
0
void dci_destroy(struct dci_state *state)
{
	printf("clean up dci...\n");
	fflush(stdout);
	dci_init_list(state);
	
	while(state->stack->size)
		fstack_pop(state->stack);
	fstack_destroy(state->stack);
	free(state->stack);

	str_destroy(&plus);
	str_destroy(&amp);
	str_destroy(&que);
}
Exemplo n.º 3
0
int dci_init(struct dci_state *state)
{
	union func_u func;
	
	str_init_create(&plus, "+", 0);
	str_init_create(&amp, "&", 0);
	str_init_create(&que, "?", 0);
	str_init_create(&slash, "/", 0);
	
	struct stack_t *estack = (struct stack_t*)malloc(sizeof(struct stack_t));
	if(!estack)
		return 1;
	if(fstack_init(estack, 20))
		return 1;

	struct stack_t *gstack = (struct stack_t*)malloc(sizeof(struct stack_t));
	if(!gstack)
		return 1;
	if(fstack_init(gstack, 20))
		return 1;

	state->stack = estack;
	state->head = NULL;
	state->tail = NULL;
	state->callback_error = 0;
	state->num_files = 0;

	// init the socket stuff //
	if(curl_global_init(CURL_GLOBAL_SSL) != 0)
		goto init_fail;

	func.func2 = curl_global_cleanup;
	fstack_push(estack, NULL, &func, 2);

	state->curlmulti = curl_multi_init();
//	if(state->curlmulti == NULL)
//		goto init_fail;
//	func.func3 = curl_global_cleanup;
//	fstack_push(estack, state->curlmulti, &func, 3);
	
	//dci_get_file_list("/", state);
	
	goto init_success;

init_fail:
	while(estack->size)
		fstack_pop(estack);

	while(gstack->size)
		fstack_pop(gstack);

	fstack_destroy(estack);
	free(estack);
	fstack_destroy(gstack);
	free(gstack);
	return 1;

init_success:
	while(gstack->size)
		fstack_pop(gstack);

	fstack_destroy(gstack);
	free(gstack);
	return 0;
}