X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/1179355dab021be45e57c675b2ef1ecaa0d9c805..ad301e487c1b50120d7ca1a9c7cc5fe80f50b944:/loadparm.c diff --git a/loadparm.c b/loadparm.c index f71a3bec..20326621 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 */ @@ -468,11 +479,12 @@ static int strwicmp(char *psz1, char *psz2) /* sync the strings on first non-whitespace */ while (1) { - while (isspace(*psz1)) + while (isspace(* (unsigned char *) psz1)) psz1++; - while (isspace(*psz2)) + while (isspace(* (unsigned char *) psz2)) psz2++; - if (toupper(*psz1) != toupper(*psz2) || *psz1 == '\0' || *psz2 == '\0') + if (toupper(* (unsigned char *) psz1) != toupper(* (unsigned char *) psz2) + || *psz1 == '\0' || *psz2 == '\0') break; psz1++; psz2++; @@ -736,6 +748,9 @@ False on failure. ***************************************************************************/ BOOL lp_load(char *pszFname, int globals_only) { + extern int am_server; + extern int am_daemon; + extern int am_root; pstring n2; BOOL bRetval; @@ -745,7 +760,12 @@ BOOL lp_load(char *pszFname, int globals_only) init_globals(); - pstrcpy(n2,pszFname); + if (pszFname) + pstrcpy(n2,pszFname); + else if (am_server && am_daemon && !am_root) + pstrcpy(n2,RSYNCD_USERCONF); + else + pstrcpy(n2,RSYNCD_SYSCONF); /* We get sections first, so have to start 'behind' to make up */ iServiceIndex = -1;