mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-22 00:26:21 +00:00
feat: add flat-file database backend for message history
Add pluggable storage backend abstraction (vtable) to the database layer,
allowing selection between SQLite (default) and a new flat-file backend
that stores messages as human-readable plain text files.
New files:
- database_sqlite.c: extracted SQLite backend from database.c
- database_flatfile.c: plain text backend with tolerant parser,
LMC correction chains, UTF-8/BOM/CRLF handling, integrity checks
Commands:
- /privacy logging flatfile — switch to flat-file backend
- /history verify [<jid>] — check integrity of stored history
Fixes:
- Add missing 'off' guard in flatfile backend
- Enable CHLOG/HISTORY prefs when switching to flatfile mode
Logs stored in ~/.local/share/profanity/flatlog/{account}/{contact}/{date}.log
Format: {ISO8601} [{type}|{enc}|id:{id}|corrects:{id}] {sender}: {message}
Updated: CHANGELOG, CONTRIBUTING.md, profrc.example, man page, cmd_defs,
Makefile.am, test stubs, functional test support (PROF_FLATFILE=1)
This commit is contained in:
@@ -354,7 +354,8 @@ init_prof_test(void **state)
|
||||
|
||||
/* Pre-write profrc with UI/notification defaults to ensure consistent,
|
||||
* deterministic output across tests (no timestamps, no roster/occupants
|
||||
* panels, low input-blocking delay for fast command processing). */
|
||||
* panels, low input-blocking delay for fast command processing).
|
||||
* If PROF_FLATFILE=1, also select the flat-file database backend. */
|
||||
char profrc_path[512];
|
||||
snprintf(profrc_path, sizeof(profrc_path),
|
||||
"%s/profanity/profrc", xdg_config_home);
|
||||
@@ -376,6 +377,11 @@ init_prof_test(void **state)
|
||||
"[notifications]\n"
|
||||
"message=false\n"
|
||||
"room=false\n");
|
||||
const char *flatfile_env = getenv("PROF_FLATFILE");
|
||||
if (flatfile_env && strcmp(flatfile_env, "1") == 0) {
|
||||
fprintf(prc, "[logging]\ndblog=flatfile\n");
|
||||
printf("[PROF_TEST] Wrote profrc with dblog=flatfile: %s\n", profrc_path);
|
||||
}
|
||||
fclose(prc);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user