const char *error;
if (pw->last_sync_time == ioloop_time)
- return hash_table_is_created(pw->users) ? 0 : -1;
+ return hash_table_is_created(pw->users) ? 1 : -1;
pw->last_sync_time = ioloop_time;
if (stat(pw->path, &st) < 0) {
/* with variables don't give hard errors, or errors about
nonexistent files */
+ int ret = -1;
+
if (errno == EACCES) {
auth_request_log_error(request, AUTH_SUBSYS_DB,
"%s", eacces_error_get("stat", pw->path));
} else if (errno == ENOENT) {
auth_request_log_info(request, "passwd-file",
"missing passwd file: %s", pw->path);
+ ret = 0;
} else {
auth_request_log_error(request, AUTH_SUBSYS_DB,
"stat(%s) failed: %m", pw->path);
if (pw->db->default_file != pw)
passwd_file_free(pw);
- return -1;
+ return ret;
}
if (st.st_mtime != pw->stamp || st.st_size != pw->size) {
return -1;
}
}
- return 0;
+ return 1;
}
static struct db_passwd_file *db_passwd_file_find(const char *path)
struct passwd_file *pw;
string_t *username, *dest;
const char *error;
+ int ret;
if (!db->vars)
pw = db->default_file;
}
}
- if (passwd_file_sync(request, pw) < 0) {
+ if ((ret = passwd_file_sync(request, pw)) <= 0) {
/* pw may be freed now */
- return -1;
+ return ret;
}
username = t_str_new(256);