X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/3d2e458a4d66ad09932cc350359e5f273de072eb..3e8369b6dc77c2b14e9d744b4ed9cb6109bbe3c0:/loadparm.c diff --git a/loadparm.c b/loadparm.c index 92b01488..7bd4483c 100644 --- a/loadparm.c +++ b/loadparm.c @@ -3,7 +3,7 @@ /* some fixes * - * Copyright (C) 2001 by Martin Pool + * Copyright (C) 2001, 2002 by Martin Pool */ /* @@ -48,6 +48,8 @@ * */ +/* TODO: Parameter to set debug level on server. */ + #include "rsync.h" #define PTR_DIFF(p1,p2) ((ptrdiff_t)(((char *)(p1)) - (char *)(p2))) #define strequal(a,b) (strcasecmp(a,b)==0) @@ -154,7 +156,16 @@ static service sDefault = False, /* transfer logging */ False, /* ignore errors */ "nobody",/* uid */ + + /* TODO: This causes problems on Debian, where it is called + * "nogroup". Debian patch this in their version of the + * package, but it would be nice to be consistent. Possibly + * other systems are different again. + * + * What is the best behaviour? Perhaps always using (gid_t) + * -2? */ "nobody",/* gid */ + NULL, /* hosts allow */ NULL, /* hosts deny */ NULL, /* auth users */ @@ -386,9 +397,16 @@ static void init_service(service *pservice) /** - * Assign a copy of @p v to @p *s, freeing any existing values and - * handling NULL strings. @p *v must be initialized when this is - * called, either to NULL or a malloc'd string. + * 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) { @@ -396,8 +414,6 @@ static void string_set(char **s, const char *v) *s = NULL; return; } - if (*s) - free(*s); *s = strdup(v); if (!*s) exit_cleanup(RERR_MALLOC); @@ -463,11 +479,12 @@ static int strwicmp(char *psz1, char *psz2) /* sync the strings on first non-whitespace */ while (1) { - while (isspace(*psz1)) + while (isspace((int) *psz1)) psz1++; - while (isspace(*psz2)) + while (isspace((int) *psz2)) psz2++; - if (toupper(*psz1) != toupper(*psz2) || *psz1 == '\0' || *psz2 == '\0') + if (toupper((int) *psz1) != toupper((int) *psz2) + || *psz1 == '\0' || *psz2 == '\0') break; psz1++; psz2++;