diff options
| author | Franklin Wei <git@fwei.tk> | 2016-01-17 21:50:36 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-01-17 21:50:36 -0500 |
| commit | 17ca1e8e354572f68f0e369431fcfcf3249b93ae (patch) | |
| tree | 263507309fa4bff8f34902d2600bcaa64fbb53b3 /src/userdb.c | |
| parent | e9d88b79ada4a5d544a36a28cc68a1254ca0a97b (diff) | |
| download | netcosm-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.c | 16 |
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); |