/*
- * $Id$
- *
* Server-side module for Wiki rooms. This handles things like version control.
*
- * Copyright (c) 2009 by the citadel.org team
+ * Copyright (c) 2009-2011 by the citadel.org team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "config.h"
#include "control.h"
#include "user_ops.h"
-#include "policy.h"
#include "database.h"
#include "msgbase.h"
#include "euidindex.h"
CtdlLogPrintf(CTDL_DEBUG, "callback found rev: %s\n", this_rev);
/* Perform the patch */
- fp = popen("patch -f -s -p0 --global-reject-file=/dev/null >/dev/null 2>/dev/null", "w");
+ fp = popen("patch -f -s -p0 -r /dev/null >/dev/null 2>/dev/null", "w");
if (fp) {
/* Replace the filenames in the patch with the tempfilename we're actually tweaking */
fprintf(fp, "--- %s\n", hecbd->tempfilename);
fseek(fp, 0L, SEEK_SET);
msg->cm_fields['M'] = malloc(len + 1);
rv = fread(msg->cm_fields['M'], len, 1, fp);
- CtdlLogPrintf(CTDL_DEBUG, "did %d blocks of %d bytes\n", rv, len);
+ CtdlLogPrintf(CTDL_DEBUG, "did %d blocks of %ld bytes\n", rv, len);
msg->cm_fields['M'][len] = 0;
fclose(fp);
}
msg->cm_fields['A'] = strdup("Citadel");
CtdlCreateRoom(wwm, 5, "", 0, 1, 1, VIEW_BBS); /* Not an error if already exists */
msgnum = CtdlSubmitMsg(msg, NULL, wwm, 0); /* Store the revision here */
+
+ /*
+ * WARNING: VILE SLEAZY HACK
+ * This will avoid the 'message xxx is not in this room' security error,
+ * but only if the client fetches the message we just generated immediately
+ * without first trying to perform other fetch operations.
+ */
+ if (CC->cached_msglist != NULL) free(CC->cached_msglist);
+ CC->cached_num_msgs = 1;
+ CC->cached_msglist = malloc(sizeof(long));
+ CC->cached_msglist[0] = msgnum;
+
}
else if (!strcasecmp(operation, "revert")) {
snprintf(timestamp, sizeof timestamp, "%ld", time(NULL));