mirror of
https://github.com/octoleo/lsyncd.git
synced 2025-01-07 17:14:03 +00:00
Proper cleanup
This commit is contained in:
parent
4efa89d951
commit
e3f7401be4
59
lsyncd.c
59
lsyncd.c
@ -766,6 +766,23 @@ realdir(const struct log *log, const char *dir)
|
|||||||
* Options.
|
* Options.
|
||||||
*--------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cleans up the memory used by a CO_EOL terminated array of call options
|
||||||
|
*
|
||||||
|
* @param call_options the array to free.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
free_options(struct call_option *options) {
|
||||||
|
struct call_option *co = options;
|
||||||
|
while (co->kind != CO_EOL) {
|
||||||
|
if (co->text) {
|
||||||
|
s_free(co->text);
|
||||||
|
}
|
||||||
|
co++;
|
||||||
|
}
|
||||||
|
s_free(options);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* (Re)sets global options to default values.
|
* (Re)sets global options to default values.
|
||||||
*
|
*
|
||||||
@ -806,10 +823,44 @@ reset_options(struct global_options *opts) {
|
|||||||
opts->default_exclude_file = NULL;
|
opts->default_exclude_file = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO free callopts
|
if (opts->default_callopts != standard_callopts) {
|
||||||
opts->default_callopts = standard_callopts;
|
if (opts->default_callopts) {
|
||||||
|
free_options(opts->default_callopts);
|
||||||
|
}
|
||||||
|
opts->default_callopts = standard_callopts;
|
||||||
|
}
|
||||||
|
|
||||||
opts->delay = 5;
|
opts->delay = 5;
|
||||||
opts->dir_confs = NULL;
|
|
||||||
|
if (opts->dir_confs) {
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < opts->dir_conf_n; i++) {
|
||||||
|
struct dir_conf *dc = opts->dir_confs + i;
|
||||||
|
if (dc->source) {
|
||||||
|
s_free(dc->source);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
char **t = dc->targets;
|
||||||
|
while (*t) {
|
||||||
|
s_free(*t);
|
||||||
|
t++;
|
||||||
|
}
|
||||||
|
s_free(dc->targets);
|
||||||
|
}
|
||||||
|
if (dc->binary) {
|
||||||
|
s_free(dc->binary);
|
||||||
|
}
|
||||||
|
if (dc->callopts) {
|
||||||
|
free_options(dc->callopts);
|
||||||
|
dc->callopts = NULL;
|
||||||
|
}
|
||||||
|
if (dc->exclude_file) {
|
||||||
|
s_free(dc->exclude_file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s_free(opts->dir_confs);
|
||||||
|
opts->dir_confs = NULL;
|
||||||
|
}
|
||||||
opts->dir_conf_n = 0;
|
opts->dir_conf_n = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -842,7 +893,7 @@ new_dir_conf(struct global_options *opts) {
|
|||||||
} else {
|
} else {
|
||||||
// create the memory.
|
// create the memory.
|
||||||
opts->dir_conf_n = 1;
|
opts->dir_conf_n = 1;
|
||||||
opts->dir_confs = s_calloc(log, opts->dir_conf_n, sizeof(struct dir_conf), "dir_conf");
|
opts->dir_confs = s_calloc(log, opts->dir_conf_n, sizeof(struct dir_conf), "dir_confs");
|
||||||
// creates targets NULL terminator (no targets yet)
|
// creates targets NULL terminator (no targets yet)
|
||||||
opts->dir_confs[0].targets = s_calloc(log, 1, sizeof(char *), "dir_conf-target");
|
opts->dir_confs[0].targets = s_calloc(log, 1, sizeof(char *), "dir_conf-target");
|
||||||
return opts->dir_confs;
|
return opts->dir_confs;
|
||||||
|
Loading…
Reference in New Issue
Block a user