aboutsummaryrefslogtreecommitdiff
path: root/src/userdb.c
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2016-01-17 21:50:36 -0500
committerFranklin Wei <git@fwei.tk>2016-01-17 21:50:36 -0500
commit17ca1e8e354572f68f0e369431fcfcf3249b93ae (patch)
tree263507309fa4bff8f34902d2600bcaa64fbb53b3 /src/userdb.c
parente9d88b79ada4a5d544a36a28cc68a1254ca0a97b (diff)
downloadnetcosm-17ca1e8e354572f68f0e369431fcfcf3249b93ae.zip
netcosm-17ca1e8e354572f68f0e369431fcfcf3249b93ae.tar.gz
netcosm-17ca1e8e354572f68f0e369431fcfcf3249b93ae.tar.bz2
netcosm-17ca1e8e354572f68f0e369431fcfcf3249b93ae.tar.xz
remember last login
Diffstat (limited to 'src/userdb.c')
-rw-r--r--src/userdb.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/userdb.c b/src/userdb.c
index 9c7343a..79ba1f2 100644
--- a/src/userdb.c
+++ b/src/userdb.c
@@ -42,7 +42,7 @@ void userdb_init(const char *file)
hash_setfreedata_cb(map, free);
char *format;
- asprintf(&format, "%%%d[a-z0-9 ]:%%%d[A-Z]:%%%ds:%%d\n",
+ asprintf(&format, "%%%d[a-z0-9 ]:%%%d[A-Z]:%%%ds:%%d:%%ld\n",
MAX_NAME_LEN, SALT_LEN, AUTH_HASHLEN * 2);
if(f)
@@ -55,9 +55,10 @@ void userdb_init(const char *file)
data->username,
data->salt,
data->passhash,
- &data->priv);
+ &data->priv,
+ &data->last_login);
- if(ret != 4)
+ if(ret != 5)
{
free(data);
break;
@@ -82,11 +83,12 @@ void userdb_write(const char *file)
ptr = NULL;
if(!user)
break;
- dprintf(fd, "%s:%*s:%*s:%d\n",
+ dprintf(fd, "%s:%*s:%*s:%d:%ld\n",
user->username,
SALT_LEN, user->salt,
AUTH_HASHLEN*2, user->passhash,
- user->priv);
+ user->priv,
+ user->last_login);
}
close(fd);
}
@@ -115,7 +117,7 @@ struct userdata_t *userdb_add(struct userdata_t *data)
struct userdata_t *ret;
- if((ret = hash_insert(map, new->username, new))) /* failure */
+ if((ret = hash_insert(map, new->username, new))) /* already exists */
{
hash_remove(map, new->username);
ret = hash_insert(map, new->username, new);
@@ -128,6 +130,8 @@ struct userdata_t *userdb_add(struct userdata_t *data)
void userdb_shutdown(void)
{
+ if(map && db_file)
+ userdb_write(db_file);
if(map)
{
hash_free(map);