};
/* Data which is passed between imap_rename() and imap_rename_backend() */
-struct irlparms {
- char *oldname;
- char *newname;
+typedef struct __irlparms {
+ const char *oldname;
+ long oldnamelen;
+ const char *newname;
+ long newnamelen;
struct irl **irl;
-};
+}irlparms;
/*
char newroomname[ROOMNAMELEN];
int newfloor = 0;
struct irl *irlp = NULL; /* scratch pointer */
- struct irlparms *irlparms;
+ irlparms *myirlparms;
- irlparms = (struct irlparms *) data;
+ myirlparms = (irlparms *) data;
imap_mailboxname(foldername, sizeof foldername, qrbuf);
/* Rename subfolders */
- if ((!strncasecmp(foldername, irlparms->oldname,
- strlen(irlparms->oldname))
- && (foldername[strlen(irlparms->oldname)] == '/'))) {
+ if ((!strncasecmp(foldername, myirlparms->oldname,
+ myirlparms->oldnamelen)
+ && (foldername[myirlparms->oldnamelen] == '/'))) {
sprintf(newfoldername, "%s/%s",
- irlparms->newname,
- &foldername[strlen(irlparms->oldname) + 1]
+ myirlparms->newname,
+ &foldername[myirlparms->oldnamelen + 1]
);
newfloor = imap_roomname(newroomname,
strcpy(irlp->irl_newroom, newroomname);
strcpy(irlp->irl_oldroom, qrbuf->QRname);
irlp->irl_newfloor = newfloor;
- irlp->next = *(irlparms->irl);
- *(irlparms->irl) = irlp;
+ irlp->next = *(myirlparms->irl);
+ *(myirlparms->irl) = irlp;
}
}
int r;
struct irl *irl = NULL; /* the list */
struct irl *irlp = NULL; /* scratch pointer */
- struct irlparms irlparms;
+ irlparms irlparms;
char aidemsg[1024];
if (strchr(Params[3].Key, '\\') != NULL) {
/* Otherwise, do the subfolders. Build a list of rooms to rename... */
else {
irlparms.oldname = Params[2].Key;
+ irlparms.oldnamelen = Params[2].len;
irlparms.newname = Params[3].Key;
+ irlparms.newnamelen = Params[3].len;
irlparms.irl = &irl;
CtdlForEachRoom(imap_rename_backend, (void *) &irlparms);