+ /*
+ * Assume we will be in "edit file" mode, until
+ * proven wrong.
+ */
+ *aedit = 1;
+ switch (*name) {
+ case '%':
+ *aedit = 0;
+ strcpy(prevfile, mailname);
+ if (name[1] != 0) {
+ strcpy(savename, myname);
+ strcpy(oldmailname, mailname);
+ strncpy(myname, name+1, PATHSIZE-1);
+ myname[PATHSIZE-1] = 0;
+ findmail();
+ cp = savestr(mailname);
+ strcpy(myname, savename);
+ strcpy(mailname, oldmailname);
+ return(cp);
+ }
+ strcpy(oldmailname, mailname);
+ findmail();
+ cp = savestr(mailname);
+ strcpy(mailname, oldmailname);
+ return(cp);
+
+ case '#':
+ if (name[1] != 0)
+ goto regular;
+ if (prevfile[0] == 0) {
+ printf("No previous file\n");
+ return(NOSTR);
+ }
+ cp = savestr(prevfile);
+ strcpy(prevfile, mailname);
+ return(cp);
+
+ case '&':
+ strcpy(prevfile, mailname);
+ if (name[1] == 0)
+ return(mbox);
+ /* Fall into . . . */
+
+ default:
+regular:
+ strcpy(prevfile, mailname);
+ cp = expand(name);
+ return(cp);
+ }