DEFINE_ERRLIST;
-#define DATABASE_DIR "/tmp/adu"
-#define UID_LIST DATABASE_DIR "/" "uid_list"
-
/** Command line and config file options. */
static struct gengetopt_args_info conf;
.num_columns = NUM_DT_COLUMNS,
.flags = 0,
.column_descriptions = dir_table_cols,
- .dir = DATABASE_DIR
};
/** The columns of the id table. */
ui->desc->num_columns = NUM_UT_COLUMNS;
ui->desc->flags = 0;
ui->desc->column_descriptions = user_table_cols;
- ui->desc->dir = para_strdup(DATABASE_DIR);
+ ui->desc->dir = para_strdup(conf.database_dir_arg);
ui->desc->name = make_message("%u", (unsigned)ui->uid);
num_uids++;
INFO_LOG(".............................uid #%u: %u\n",
{
int ret;
+ dir_table_desc.dir = para_strdup(conf.database_dir_arg);
ret = osl_create_table(&dir_table_desc);
if (ret < 0)
return ret;
return 1;
}
+static char *get_uid_list_name(void)
+{
+ return make_message("%s/uid_list", conf.database_dir_arg);
+}
+
static int write_uid_list(void)
{
- char *buf;
+ char *buf, *filename;
uint32_t count = 0;
struct user_info *ui;
size_t size = num_uids * sizeof(uint32_t);
continue;
write_u32(buf + count++ * sizeof(uint32_t), ui->uid);
}
- ret = para_write_file(UID_LIST, buf, size);
+ filename = get_uid_list_name();
+ ret = para_write_file(filename, buf, size);
+ free(filename);
free(buf);
return ret;
}
static int open_dir_table(void)
{
+ if (!dir_table_desc.dir) /* we did not create the table */
+ dir_table_desc.dir = para_strdup(conf.database_dir_arg);
return osl_open_table(&dir_table_desc, &dir_table);
}
ret = osl_close_table(dir_table, OSL_MARK_CLEAN);
if (ret < 0)
ERROR_LOG("failed to close dir table: %s\n", error_txt(-ret));
+ free((char *)dir_table_desc.dir);
dir_table = NULL;
}
static int read_uid_file(void)
{
- char *map;
size_t size;
- int ret = mmap_full_file(UID_LIST, O_RDONLY, (void **)&map, &size, NULL);
uint32_t n;
+ char *filename = get_uid_list_name(), *map;
+ int ret = mmap_full_file(filename, O_RDONLY, (void **)&map, &size, NULL);
+ free(filename);
if (ret < 0)
return ret;
num_uids = size / 4;