X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fwiki%2Fserv_wiki.c;h=680f63733aed4c47088b8da5b60c075a87f8b1fb;hb=1428026a3d58abcf316a7f9aacdf110cc78add85;hp=4643d917d3a2669da8f5e890474cc77565fbc987;hpb=72b4f6b4169cffb85654c3d2f69593eca5371edf;p=citadel.git diff --git a/citadel/modules/wiki/serv_wiki.c b/citadel/modules/wiki/serv_wiki.c index 4643d917d..680f63733 100644 --- a/citadel/modules/wiki/serv_wiki.c +++ b/citadel/modules/wiki/serv_wiki.c @@ -168,7 +168,7 @@ int wiki_upload_beforesave(struct CtdlMessage *msg) { fclose(fp); snprintf(diff_cmd, sizeof diff_cmd, - "diff -u %s %s >%s", + DIFF " -u %s %s >%s", diff_new_filename, ((old_msg != NULL) ? diff_old_filename : "/dev/null"), diff_out_filename @@ -193,7 +193,7 @@ int wiki_upload_beforesave(struct CtdlMessage *msg) { fclose(fp); } - syslog(LOG_DEBUG, "diff length is %d bytes", diffbuf_len); + syslog(LOG_DEBUG, "diff length is "SIZE_T_FMT" bytes", diffbuf_len); unlink(diff_old_filename); unlink(diff_new_filename); @@ -434,7 +434,7 @@ void wiki_rev_callback(char *name, char *filename, char *partnum, char *disp, syslog(LOG_DEBUG, "callback found rev: %s\n", this_rev); /* Perform the patch */ - fp = popen("patch -f -s -p0 -r /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); @@ -603,6 +603,24 @@ void wiki_rev(char *pagename, char *rev, char *operation) 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_msglist = NULL; + CC->cached_num_msgs = 0; + } + CC->cached_msglist = malloc(sizeof(long)); + if (CC->cached_msglist != NULL) { + CC->cached_num_msgs = 1; + CC->cached_msglist[0] = msgnum; + } + } else if (!strcasecmp(operation, "revert")) { snprintf(timestamp, sizeof timestamp, "%ld", time(NULL)); @@ -679,6 +697,6 @@ CTDL_MODULE_INIT(wiki) CtdlRegisterProtoHook(cmd_wiki, "WIKI", "Commands related to Wiki management"); } - /* return our Subversion id for the Log */ + /* return our module name for the log */ return "wiki"; }