- config->next_retry = time_msec() + 60 * 1000;
- free(config->file_name);
- config->file_name = xstrdup(file_name);
+ /* If the file name hasn't changed and neither has the file contents, stop
+ * here. */
+ get_mtime(file_name, &mtime);
+ if (config->file_name
+ && !strcmp(config->file_name, file_name)
+ && mtime.tv_sec == config->mtime.tv_sec
+ && mtime.tv_nsec == config->mtime.tv_nsec) {
+ return false;
+ }
+
+ /* Update 'config'. */
+ config->mtime = mtime;
+ if (file_name != config->file_name) {
+ free(config->file_name);
+ config->file_name = xstrdup(file_name);
+ }