Ctx = CC;
cprintf("%d Exporting all Citadel databases.\n", LISTING_FOLLOWS);
-
+ Ctx->dont_term = 1;
cprintf("version\n%d\n", REV_LEVEL);
/* export the config file (this is done using x-macros) */
artv_export_visits();
if (Ctx->kill_me != 1)
artv_export_messages();
-
client_write("000\n", 4);
+ Ctx->dont_term = 0;
}
void artv_do_dump(void) {
char *data;
int data_len;
- client_getln(buf, sizeof buf); usernum = atol(buf);
client_getln(openid, sizeof openid);
+ client_getln(buf, sizeof buf); usernum = atol(buf);
if (IsEmptyStr(openid)) return;
data_len = sizeof(long) + strlen(openid) + 1;
plain[0] = 0;
plain_size = SIZ;
+ CC->dont_term = 1;
+
cprintf("%d sock it to me\n", SEND_LISTING);
abuf[0] = '\0';
unbuffer_output();
while (client_getln(buf, sizeof buf) >= 0 && strcmp(buf, "000")) ;;
rebuild_euid_index();
rebuild_usersbynumber();
+ CC->dont_term = 0;
}
static int is_running = 0;
if (CtdlAccessCheck(ac_internal)) return;
- if (is_running) {
+
+ if (CtdlTrySingleUser())
+ {
+ CtdlMakeTempFileName(artv_tempfilename1, sizeof artv_tempfilename1);
+ CtdlMakeTempFileName(artv_tempfilename2, sizeof artv_tempfilename2);
+
+ extract_token(cmd, cmdbuf, 0, '|', sizeof cmd);
+ if (!strcasecmp(cmd, "export")) artv_do_export();
+ else if (!strcasecmp(cmd, "import")) artv_do_import();
+ else if (!strcasecmp(cmd, "dump")) artv_do_dump();
+ else cprintf("%d illegal command\n", ERROR + ILLEGAL_VALUE);
+
+ unlink(artv_tempfilename1);
+ unlink(artv_tempfilename2);
+
+ CtdlEndSingleUser();
+ }
+ else
+ {
cprintf("%d The importer/exporter is already running.\n",
ERROR + RESOURCE_BUSY);
- return;
}
- is_running = 1;
-
- CtdlMakeTempFileName(artv_tempfilename1, sizeof artv_tempfilename1);
- CtdlMakeTempFileName(artv_tempfilename2, sizeof artv_tempfilename2);
-
- extract_token(cmd, cmdbuf, 0, '|', sizeof cmd);
- if (!strcasecmp(cmd, "export")) artv_do_export();
- else if (!strcasecmp(cmd, "import")) artv_do_import();
- else if (!strcasecmp(cmd, "dump")) artv_do_dump();
- else cprintf("%d illegal command\n", ERROR + ILLEGAL_VALUE);
-
- unlink(artv_tempfilename1);
- unlink(artv_tempfilename2);
-
- is_running = 0;
}