X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/60cb2f9016f3e3eee1f2e4bbf6ff3ca1d6f60871..0e9480317dbb5b8003535a769f4a03bc720d5f5f:/loadparm.c diff --git a/loadparm.c b/loadparm.c index 0083d1e9..f71a3bec 100644 --- a/loadparm.c +++ b/loadparm.c @@ -1,6 +1,11 @@ /* This is based on loadparm.c from Samba, written by Andrew Tridgell and Karl Auer */ +/* some fixes + * + * Copyright (C) 2001 by Martin Pool + */ + /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -77,8 +82,6 @@ struct parm_struct unsigned flags; }; -static BOOL bLoaded = False; - #ifndef GLOBAL_NAME #define GLOBAL_NAME "global" #endif @@ -381,14 +384,28 @@ static void init_service(service *pservice) copy_service(pservice,&sDefault); } -static void string_set(char **s, char *v) + +/** + * Assign a copy of @p v to @p *s. Handles NULL strings. @p *v must + * be initialized when this is called, either to NULL or a malloc'd + * string. + * + * @fixme There is a small leak here in that sometimes the existing + * value will be dynamically allocated, and the old copy is lost. + * However, we can't always deallocate the old value, because in the + * case of sDefault, it points to a static string. It would be nice + * to have either all-strdup'd values, or to never need to free + * memory. + **/ +static void string_set(char **s, const char *v) { if (!v) { *s = NULL; return; } *s = strdup(v); - if (!*s) exit_cleanup(RERR_MALLOC); + if (!*s) + exit_cleanup(RERR_MALLOC); } @@ -734,8 +751,6 @@ BOOL lp_load(char *pszFname, int globals_only) iServiceIndex = -1; bRetval = pm_process(n2, globals_only?NULL:do_section, do_parameter); - bLoaded = True; - return (bRetval); }