.TH LC_GETERRNO 3 "25 Oct 04" "@PACKAGE_STRING@"
.SH NAME
lc_cleanup \- Clean up internal structures after processing data.

.SH SYNOPSIS
.B #include <libconfig.h>
.sp
.BI "void lc_cleanup(void);"

.SH DESCRIPTION
The
.BR lc_cleanup (3)
function cleans up the internal structures created by calling
.BR lc_register_var (3)
or
.BR lc_register_callback (3)
and returns the memory to the application.  It is not strictly required, however memory concious programmers will still want to call this after finishing processing configuration files.

After you call
.BR lc_cleanup (3)
calling
.BR lc_process (3)
or
.BR lc_process_file (3)
will generally cause errors since the registered variables and callbacks have been unregistered.

.SH EXAMPLE
.nf
#include <libconfig.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv) {
	int lc_p_ret, lc_rv_ret;
	char *filename = NULL;

	lc_rv_ret = lc_register_var("File", LC_VAR_STRING,
	                            &filename, 'f');

	if (lc_rv_ret != 0) {
		fprintf(stderr, "Error registering variable: %i.\\n",
		        lc_geterrno());
		return(EXIT_FAILURE);
	}

	lc_p_ret = lc_process(argc, argv, "example", LC_CONF_APACHE,
	                      NULL);

	lc_cleanup();

	if (lc_p_ret != 0) {
		fprintf(stderr, "Error processing configuration: \\
		        %s\\n", lc_geterrstr());
		return(EXIT_FAILURE);
	}

	if (filename != NULL) {
		printf("File specified was: %s\\n", filename);
	} else {
		printf("No filename specified.\\n");
	}

	return(EXIT_SUCCESS);
}
.fi

.SH "SEE ALSO"
.BR libconfig (3),
.BR lc_register_var (3),
.BR lc_register_callback (3),
.BR lc_seterrstr (3),
.BR lc_geterrstr (3),
.BR lc_geterrno (3),
.BR lc_process_file (3),
.BR lc_process (3)
