From 1ab2f233983f27e8932c5053dbb2f11b188628ab Mon Sep 17 00:00:00 2001 From: div0 Date: Thu, 24 Jan 2008 22:14:23 +0000 Subject: [PATCH] new command "dumpdb", makes a simpler format (easier to process) that can still be loaded by "loaddb" git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3263 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/common/util.qc | 17 +++++++++++++++++ data/qcsrc/common/util.qh | 1 + data/qcsrc/server/gamecommand.qc | 14 ++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/data/qcsrc/common/util.qc b/data/qcsrc/common/util.qc index a6050590e..4addf0fc5 100644 --- a/data/qcsrc/common/util.qc +++ b/data/qcsrc/common/util.qc @@ -289,6 +289,23 @@ float db_load(string pFilename) return db; } +void db_dump(float db, string pFilename) +{ + float fh, i, j, n, m; + fh = fopen(pFilename, FILE_WRITE); + if(fh < 0) + error(strcat("Can't dump DB to ", pFilename)); + n = buf_getsize(db); + fputs(fh, "0\n"); + for(i = 0; i < n; ++i) + { + m = tokenizebyseparator(bufstr_get(db, i), "\\"); + for(j = 2; j < m; j += 2) + fputs(fh, strcat("\\", argv(j-1), "\\", argv(j), "\n")); + } + fclose(fh); +} + void db_close(float db) { buf_del(db); diff --git a/data/qcsrc/common/util.qh b/data/qcsrc/common/util.qh index 561f2a700..e92577da6 100644 --- a/data/qcsrc/common/util.qh +++ b/data/qcsrc/common/util.qh @@ -38,6 +38,7 @@ string fstrunzone(string s); // database (NOTE: keys are case sensitive) void db_save(float db, string filename); +void db_dump(float db, string pFilename); float db_create(); float db_load(string filename); void db_close(float db); diff --git a/data/qcsrc/server/gamecommand.qc b/data/qcsrc/server/gamecommand.qc index 7612bbca3..3ca69d9f4 100644 --- a/data/qcsrc/server/gamecommand.qc +++ b/data/qcsrc/server/gamecommand.qc @@ -27,6 +27,7 @@ void GameCommand(string command) print(" printstats\n"); print(" make_mapinfo\n"); print(" savedb filename\n"); + print(" dumpdb filename\n"); print(" loaddb filename\n"); GameCommand_Ban("help"); GameCommand_Generic("help"); @@ -93,12 +94,25 @@ void GameCommand(string command) } if(argv(0) == "savedb") if(argc == 2) + { db_save(ServerProgsDB, argv(1)); + print("DB saved.\n"); + return; + } + + if(argv(0) == "dumpdb") if(argc == 2) + { + db_dump(ServerProgsDB, argv(1)); + print("DB dumped.\n"); + return; + } if(argv(0) == "loaddb") if(argc == 2) { db_close(ServerProgsDB); ServerProgsDB = db_load(argv(1)); + print("DB loaded.\n"); + return; } print("Invalid command. For a list of supported commands, try sv_cmd help.\n"); -- 2.39.2