]> 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 682adddaba5afbe61d88076a8b3d246b809f3a9d..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);