+static void
+memoserv_saxdb_read_accounts(struct dict *db)
+{
+ struct memo_account *ma;
+ struct handle_info *hi;
+ struct record_data *rd;
+ dict_iterator_t it;
+ const char *str;
+
+ for (it = dict_first(db); it; it = iter_next(it)) {
+ hi = get_handle_info(iter_key(it));
+ if (hi == NULL) {
+ log_module(MS_LOG, LOG_WARNING, "No account known for %s.", iter_key(it));
+ continue;
+ }
+
+ ma = memoserv_get_account(hi);
+ if (ma == NULL) {
+ log_module(MS_LOG, LOG_WARNING, "Unable to allocate memory for account %s.", iter_key(it));
+ continue;
+ }
+
+ rd = iter_data(it);
+ if (rd->type == RECDB_QSTRING) {
+ str = rd->d.qstring;
+ } else {
+ log_module(MS_LOG, LOG_WARNING, "Unexpected rectype %d for accounts/%s.", rd->type, iter_key(it));
+ continue;
+ }
+
+ if (str != NULL)
+ ma->flags = strtol(str, NULL, 0);
+ }
+}
+
+static int
+memoserv_saxdb_read(struct dict *db)
+{
+ struct dict *obj;
+
+ obj = database_get_data(db, KEY_ACCOUNTS, RECDB_OBJECT);
+ if (obj == NULL) {
+ return memoserv_saxdb_read_messages(db);
+ } else {
+ memoserv_saxdb_read_accounts(obj);
+ obj = database_get_data(db, KEY_MESSAGES, RECDB_OBJECT);
+ return memoserv_saxdb_read_messages(obj);
+ }
+}
+