else if (strcasecmp(val, "xlateupper") == 0)
volume->v_casefold = AFPVOL_ULOWERMUPPER;
}
+ if (getoption_bool(obj->iniconfig, section, "case sensitive", preset, 1))
+ volume->v_casefold |= AFPVOL_CASESENS;
if (getoption_bool(obj->iniconfig, section, "read only", preset, 0))
volume->v_flags |= AFPVOL_RO;
/* ----------------------
*/
-static int volfile_changed(struct afp_options *p)
+static int volfile_changed(AFPObj *obj)
{
struct stat st;
+ struct afp_options *p = &obj->options;
+ int result;
+ const char *includefile;
- if (!stat(p->configfile, &st) && st.st_mtime > p->volfile.mtime) {
+ result = stat(p->configfile, &st);
+ if (result != 0) {
+ LOG(log_debug, logtype_afpd, "where is the config file %s ?",
+ p->configfile);
+ /*
+ * We return 1 which means "config file changed". The caller
+ * will re-read config and fail too which is what we want.
+ */
+ return 1;
+ }
+
+ if (st.st_mtime > p->volfile.mtime) {
p->volfile.mtime = st.st_mtime;
return 1;
}
+
+ includefile = atalk_iniparser_getstring(obj->iniconfig, INISEC_GLOBAL,
+ "include", NULL);
+ if (includefile) {
+ result = stat(includefile, &st);
+ if (result != 0) {
+ LOG(log_debug, logtype_afpd, "where is the include file %s ?",
+ includefile);
+ return 1;
+ }
+
+ if (st.st_mtime > p->includefile.mtime) {
+ p->includefile.mtime = st.st_mtime;
+ return 1;
+ }
+ }
+
return 0;
}
struct stat st;
int retries = 0;
struct vol *vol;
+ char *includefile;
LOG(log_debug, logtype_afpd, "load_volumes: BEGIN");
}
if (Volumes) {
- if (!volfile_changed(&obj->options))
+ if (!volfile_changed(obj))
goto EC_CLEANUP;
have_uservol = 0;
for (vol = Volumes; vol; vol = vol->v_next) {
LOG(log_debug, logtype_afpd, "load_volumes: no volumes yet");
EC_ZERO_LOG( lstat(obj->options.configfile, &st) );
obj->options.volfile.mtime = st.st_mtime;
+
+ includefile = atalk_iniparser_getstring(obj->iniconfig, INISEC_GLOBAL,
+ "include", NULL);
+ if (includefile) {
+ EC_ZERO_LOG( stat(includefile, &st) );
+ obj->options.includefile.mtime = st.st_mtime;
+ }
}
/* try putting a read lock on the volume file twice, sleep 1 second if first attempt fails */
options->configfile = AFPObj->cmdlineconfigfile ? strdup(AFPObj->cmdlineconfigfile) : strdup(_PATH_CONFDIR "afp.conf");
options->sigconffile = strdup(_PATH_STATEDIR "afp_signature.conf");
options->uuidconf = strdup(_PATH_STATEDIR "afp_voluuid.conf");
-#ifdef HAVE_TRACKER_SPARQL
- options->slmod_path = strdup(_PATH_AFPDUAMPATH "slmod_sparql.so");
-#endif
options->flags = OPTION_UUID | AFPObj->cmdlineflags;
if ((config = atalk_iniparser_load(AFPObj->options.configfile)) == NULL)
CONFIG_ARG_FREE(obj->options.fqdn);
if (obj->options.ignored_attr)
CONFIG_ARG_FREE(obj->options.ignored_attr);
- if (obj->options.slmod_path)
- CONFIG_ARG_FREE(obj->options.slmod_path);
-
if (obj->options.unixcodepage)
CONFIG_ARG_FREE(obj->options.unixcodepage);
if (obj->options.maccodepage)