X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/5e71c4446e10c27c1db0c7e7e5b71be68f3b88de..9a689986c6d416c66195d2a16f54fcb74dc7d805:/loadparm.c diff --git a/loadparm.c b/loadparm.c index 9b28c3b2..92b01488 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 @@ -44,9 +49,6 @@ */ #include "rsync.h" -#define BOOL int -#define False 0 -#define True 1 #define PTR_DIFF(p1,p2) ((ptrdiff_t)(((char *)(p1)) - (char *)(p2))) #define strequal(a,b) (strcasecmp(a,b)==0) #define BOOLSTR(b) ((b) ? "Yes" : "No") @@ -80,8 +82,6 @@ struct parm_struct unsigned flags; }; -static BOOL bLoaded = False; - #ifndef GLOBAL_NAME #define GLOBAL_NAME "global" #endif @@ -120,12 +120,14 @@ typedef struct BOOL list; BOOL use_chroot; BOOL transfer_logging; + BOOL ignore_errors; char *uid; char *gid; char *hosts_allow; char *hosts_deny; char *auth_users; char *secrets_file; + BOOL strict_modes; char *exclude; char *exclude_from; char *include; @@ -135,6 +137,7 @@ typedef struct char *dont_compress; int timeout; int max_connections; + BOOL ignore_nonreadable; } service; @@ -149,21 +152,24 @@ static service sDefault = True, /* list */ True, /* use chroot */ False, /* transfer logging */ + False, /* ignore errors */ "nobody",/* uid */ "nobody",/* gid */ NULL, /* hosts allow */ NULL, /* hosts deny */ NULL, /* auth users */ NULL, /* secrets file */ + True, /* strict modes */ NULL, /* exclude */ NULL, /* exclude from */ NULL, /* include */ NULL, /* include from */ "%o %h [%a] %m (%u) %f %l", /* log format */ NULL, /* refuse options */ - "*.gz *.tgz *.zip *.z *.rpm *.deb", /* dont compress */ + "*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz", /* dont compress */ 0, /* timeout */ - 0 /* max connections */ + 0, /* max connections */ + False /* ignore nonreadable */ }; @@ -261,17 +267,20 @@ static struct parm_struct parm_table[] = {"read only", P_BOOL, P_LOCAL, &sDefault.read_only, NULL, 0}, {"list", P_BOOL, P_LOCAL, &sDefault.list, NULL, 0}, {"use chroot", P_BOOL, P_LOCAL, &sDefault.use_chroot, NULL, 0}, + {"ignore nonreadable",P_BOOL, P_LOCAL, &sDefault.ignore_nonreadable, NULL, 0}, {"uid", P_STRING, P_LOCAL, &sDefault.uid, NULL, 0}, {"gid", P_STRING, P_LOCAL, &sDefault.gid, NULL, 0}, {"hosts allow", P_STRING, P_LOCAL, &sDefault.hosts_allow, NULL, 0}, {"hosts deny", P_STRING, P_LOCAL, &sDefault.hosts_deny, NULL, 0}, {"auth users", P_STRING, P_LOCAL, &sDefault.auth_users, NULL, 0}, {"secrets file", P_STRING, P_LOCAL, &sDefault.secrets_file,NULL, 0}, + {"strict modes", P_BOOL, P_LOCAL, &sDefault.strict_modes,NULL, 0}, {"exclude", P_STRING, P_LOCAL, &sDefault.exclude, NULL, 0}, {"exclude from", P_STRING, P_LOCAL, &sDefault.exclude_from,NULL, 0}, {"include", P_STRING, P_LOCAL, &sDefault.include, NULL, 0}, {"include from", P_STRING, P_LOCAL, &sDefault.include_from,NULL, 0}, {"transfer logging", P_BOOL, P_LOCAL, &sDefault.transfer_logging,NULL,0}, + {"ignore errors", P_BOOL, P_LOCAL, &sDefault.ignore_errors,NULL,0}, {"log format", P_STRING, P_LOCAL, &sDefault.log_format, NULL, 0}, {"refuse options", P_STRING, P_LOCAL, &sDefault.refuse_options,NULL, 0}, {"dont compress", P_STRING, P_LOCAL, &sDefault.dont_compress,NULL, 0}, @@ -336,12 +345,15 @@ FN_LOCAL_BOOL(lp_read_only, read_only) FN_LOCAL_BOOL(lp_list, list) FN_LOCAL_BOOL(lp_use_chroot, use_chroot) FN_LOCAL_BOOL(lp_transfer_logging, transfer_logging) +FN_LOCAL_BOOL(lp_ignore_errors, ignore_errors) +FN_LOCAL_BOOL(lp_ignore_nonreadable, ignore_nonreadable) FN_LOCAL_STRING(lp_uid, uid) FN_LOCAL_STRING(lp_gid, gid) FN_LOCAL_STRING(lp_hosts_allow, hosts_allow) FN_LOCAL_STRING(lp_hosts_deny, hosts_deny) FN_LOCAL_STRING(lp_auth_users, auth_users) FN_LOCAL_STRING(lp_secrets_file, secrets_file) +FN_LOCAL_BOOL(lp_strict_modes, strict_modes) FN_LOCAL_STRING(lp_exclude, exclude) FN_LOCAL_STRING(lp_exclude_from, exclude_from) FN_LOCAL_STRING(lp_include, include) @@ -372,14 +384,23 @@ 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, 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. + **/ +static void string_set(char **s, const char *v) { if (!v) { *s = NULL; return; } + if (*s) + free(*s); *s = strdup(v); - if (!*s) exit_cleanup(RERR_MALLOC); + if (!*s) + exit_cleanup(RERR_MALLOC); } @@ -725,8 +746,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); }