]> code.citadel.org Git - citadel.git/blobdiff - citadel/room_ops.c
* Every user gets a Trash folder. Clients can also use _TRASH_
[citadel.git] / citadel / room_ops.c
index 81b43db061dd2cb445c22ef5dc777113853d40d3..46490bd9dd0702c783681ec3f83aff7cc3746e91 100644 (file)
@@ -824,8 +824,8 @@ void usergoto(char *where, int display_result, int transiently,
        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);
        }
@@ -932,15 +932,33 @@ void cmd_goto(char *gargs)
 
        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);
@@ -1078,7 +1096,7 @@ void cmd_rdir(void)
        }
        cprintf("%d %s|"
 #ifndef HAVE_DATA_DIR
-                       CTDLDIR
+                       "."
 #else
                        DATA_DIR
 #endif
@@ -1087,7 +1105,7 @@ void cmd_rdir(void)
 
        snprintf(buf, sizeof buf, "ls "
 #ifndef HAVE_DATA_DIR
-                        CTDLDIR
+                        "."
 #else
                         DATA_DIR
 #endif
@@ -1097,7 +1115,7 @@ void cmd_rdir(void)
 
        snprintf(buf, sizeof buf, 
 #ifndef HAVE_DATA_DIR
-                        CTDLDIR
+                        "."
 #else
                         DATA_DIR
 #endif
@@ -1112,7 +1130,7 @@ void cmd_rdir(void)
                if (strcasecmp(flnm, "filedir")) {
                        snprintf(buf, sizeof buf, 
 #ifndef HAVE_DATA_DIR
-                                        CTDLDIR
+                                        "."
 #else
                                         DATA_DIR
 #endif
@@ -1425,7 +1443,7 @@ void cmd_setr(char *args)
        if (CC->room.QRflags & QR_DIRECTORY) {
                snprintf(buf, sizeof buf, 
 #ifndef HAVE_DATA_DIR
-                                CTDLDIR
+                                "."
 #else
                                 DATA_DIR
 #endif
@@ -1599,7 +1617,7 @@ void delete_room(struct ctdlroom *qrbuf)
        /* 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);