userdb-passwd-file.c revision e052c2247f6febbe559a593948ed8ef9f2118435
/* Copyright (c) 2002-2016 Dovecot authors, see the included COPYING file */
#include "auth-common.h"
#include "userdb.h"
#ifdef USERDB_PASSWD_FILE
#include "istream.h"
#include "str.h"
#include "auth-cache.h"
#include "db-passwd-file.h"
#include <unistd.h>
#include <fcntl.h>
struct passwd_file_userdb_iterate_context {
struct userdb_iterate_context ctx;
char *path;
bool skip_passdb_entries;
};
struct passwd_file_userdb_module {
struct userdb_module module;
struct db_passwd_file *pwf;
const char *username_format;
};
{
struct passwd_file_userdb_module *module =
(struct passwd_file_userdb_module *)_module;
struct passwd_user *pu;
const struct var_expand_table *table;
char **p;
return;
}
}
}
continue;
key = *p + 7;
str_truncate(str, 0);
} else {
value = "";
}
}
}
}
static struct userdb_iterate_context *
{
struct passwd_file_userdb_module *module =
(struct passwd_file_userdb_module *)_module;
struct passwd_file_userdb_iterate_context *ctx;
int fd;
i_error("passwd-file: User iteration isn't currently supported "
"with %%variable paths");
}
/* for now we support only a single passwd-file */
if (fd == -1) {
} else {
}
}
{
struct passwd_file_userdb_iterate_context *ctx =
(struct passwd_file_userdb_iterate_context *)_ctx;
const char *line, *p;
else {
continue; /* no username or comment */
if (ctx->skip_passdb_entries &&
/* only passdb info */
continue;
}
break;
}
}
}
else T_BEGIN {
} T_END;
}
{
struct passwd_file_userdb_iterate_context *ctx =
(struct passwd_file_userdb_iterate_context *)_ctx;
return ret;
}
static struct userdb_module *
{
struct passwd_file_userdb_module *module;
const char *format = PASSWD_FILE_DEFAULT_USERNAME_FORMAT;
const char *p;
args += 16;
if (p == NULL) {
args = "";
} else {
args = p + 1;
}
}
if (*args == '\0')
i_fatal("userdb passwd-file: Missing args");
}
{
struct passwd_file_userdb_module *module =
(struct passwd_file_userdb_module *)_module;
}
{
struct passwd_file_userdb_module *module =
(struct passwd_file_userdb_module *)_module;
}
struct userdb_module_interface userdb_passwd_file = {
"passwd-file",
};
#else
struct userdb_module_interface userdb_passwd_file = {
.name = "passwd-file"
};
#endif