get_mm();
cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long));
if (cdbfr != NULL) {
- msglist = malloc(cdbfr->len);
- memcpy(msglist, cdbfr->ptr, cdbfr->len);
+ msglist = (long *) cdbfr->ptr;
+ cdbfr->ptr = NULL; /* usergoto() now owns this memory */
num_msgs = cdbfr->len / sizeof(long);
cdb_free(cdbfr);
}
- lprintf(CTDL_DEBUG, " *** START COUNT *** \n");
total_messages = 0;
for (a=0; a<num_msgs; ++a) {
if (msglist[a] > 0L) ++total_messages;
}
}
}
- lprintf(CTDL_DEBUG, " *** END COUNT *** \n");
new_messages = total_messages - old_messages;
if (msglist != NULL) free(msglist);
getuser(&CC->user, CC->curr_user);
- if (!strcasecmp(towhere, "_BASEROOM_"))
+ /*
+ * Handle some of the macro named rooms
+ */
+ if (!strcasecmp(towhere, "_BASEROOM_")) {
safestrncpy(towhere, config.c_baseroom, sizeof towhere);
-
- if (!strcasecmp(towhere, "_MAIL_"))
+ }
+ else if (!strcasecmp(towhere, "_MAIL_")) {
safestrncpy(towhere, MAILROOM, sizeof towhere);
-
- if (!strcasecmp(towhere, "_BITBUCKET_"))
+ }
+ else if (!strcasecmp(towhere, "_TRASH_")) {
+ safestrncpy(towhere, USERTRASHROOM, sizeof towhere);
+ }
+ else if (!strcasecmp(towhere, "_BITBUCKET_")) {
safestrncpy(towhere, config.c_twitroom, sizeof towhere);
-
+ }
+ else if (!strcasecmp(towhere, "_CALENDAR_")) {
+ safestrncpy(towhere, USERCALENDARROOM, sizeof towhere);
+ }
+ else if (!strcasecmp(towhere, "_TASKS_")) {
+ safestrncpy(towhere, USERTASKSROOM, sizeof towhere);
+ }
+ else if (!strcasecmp(towhere, "_CONTACTS_")) {
+ safestrncpy(towhere, USERCONTACTSROOM, sizeof towhere);
+ }
+ else if (!strcasecmp(towhere, "_NOTES_")) {
+ safestrncpy(towhere, USERNOTESROOM, sizeof towhere);
+ }
/* First try a regular match */
c = getroom(&QRscratch, towhere);
cprintf("%d not here.\n", ERROR + HIGHER_ACCESS_REQUIRED);
return;
}
- cprintf("%d %s|%s/files/%s\n",
- LISTING_FOLLOWS, config.c_fqdn, CTDLDIR, CC->room.QRdirname);
+ cprintf("%d %s|"
+#ifndef HAVE_DATA_DIR
+ "."
+#else
+ DATA_DIR
+#endif
+ "/files/%s\n",
+ LISTING_FOLLOWS, config.c_fqdn, CC->room.QRdirname);
- snprintf(buf, sizeof buf, "ls %s/files/%s >%s 2> /dev/null",
- CTDLDIR, CC->room.QRdirname, tempfilename);
- system(buf);
+ snprintf(buf, sizeof buf, "ls "
+#ifndef HAVE_DATA_DIR
+ "."
+#else
+ DATA_DIR
+#endif
+ "/files/%s >%s 2> /dev/null",
+ CC->room.QRdirname, tempfilename);
+ system(buf);
- snprintf(buf, sizeof buf, "%s/files/%s/filedir", CTDLDIR, CC->room.QRdirname);
+ snprintf(buf, sizeof buf,
+#ifndef HAVE_DATA_DIR
+ "."
+#else
+ DATA_DIR
+#endif
+ "/files/%s/filedir", CC->room.QRdirname);
fd = fopen(buf, "r");
if (fd == NULL)
fd = fopen("/dev/null", "r");
while (fgets(flnm, sizeof flnm, ls) != NULL) {
flnm[strlen(flnm) - 1] = 0;
if (strcasecmp(flnm, "filedir")) {
- snprintf(buf, sizeof buf, "%s/files/%s/%s",
- CTDLDIR, CC->room.QRdirname, flnm);
+ snprintf(buf, sizeof buf,
+#ifndef HAVE_DATA_DIR
+ "."
+#else
+ DATA_DIR
+#endif
+ "/files/%s/%s",
+ CC->room.QRdirname, flnm);
stat(buf, &statbuf);
safestrncpy(comment, "", sizeof comment);
fseek(fd, 0L, 0);
/* Create a room directory if necessary */
if (CC->room.QRflags & QR_DIRECTORY) {
- snprintf(buf, sizeof buf, "./files/%s", CC->room.QRdirname);
+ snprintf(buf, sizeof buf,
+#ifndef HAVE_DATA_DIR
+ "."
+#else
+ DATA_DIR
+#endif
+ "/files/%s", CC->room.QRdirname);
mkdir(buf, 0755);
}
snprintf(buf, sizeof buf, "%s> edited by %s\n", CC->room.QRname, CC->curr_user);
/* Delete the messages in the room
* (Careful: this opens an S_ROOMS critical section!)
*/
- CtdlDeleteMessages(qrbuf->QRname, 0L, "");
+ CtdlDeleteMessages(qrbuf->QRname, 0L, "", 0);
/* Flag the room record as not in use */
lgetroom(qrbuf, qrbuf->QRname);