+ if (argv[0] == NOSTR) {
+ if (edit)
+ printf("Reading \"%s\"", editfile);
+ else
+ printf("Reading %s's mail",
+ rindex(mailname, '/') + 1);
+ printf("; %d message(s)\n", msgCount);
+ return(0);
+ }
+
+ /*
+ * Acker's! Must switch to the new file.
+ * We use a funny interpretation --
+ * # -- gets the previous file
+ * % -- gets the invoker's post office box
+ * %user -- gets someone else's post office box
+ * & -- gets invoker's mbox file
+ * string -- reads the given file
+ */
+
+ cp = getfilename(argv[0]);
+ if (cp == NOSTR)
+ return(-1);
+ return(setfile(cp, 1));
+}
+
+/*
+ * Evaluate the string given as a new mailbox name.
+ * Ultimately, we want this to support a number of meta characters.
+ * Possibly:
+ * % -- for my system mail box
+ * %user -- for user's system mail box
+ * # -- for previous file
+ * & -- get's invoker's mbox file
+ * file name -- for any other file
+ */
+
+char prevfile[PATHSIZE];
+
+char *
+getfilename(name)
+ char *name;
+{
+ register char *cp;
+ char savename[BUFSIZ];
+
+ switch (*name) {
+ case '%':
+ strcpy(prevfile, mailname);
+ if (name[1] != 0) {
+ strcpy(savename, myname);
+ strncpy(myname, name+1, PATHSIZE-1);
+ myname[PATHSIZE-1] = 0;
+ findmail();
+ cp = mailname;
+ strcpy(myname, savename);
+ return(cp);
+ }
+ findmail();
+ return(mailname);
+
+ case '#':
+ if (name[1] != 0)
+ goto regular;
+ if (prevfile[0] == 0) {
+ printf("No previous file\n");
+ return(NOSTR);
+ }
+ strcpy(savename, prevfile);
+ strcpy(prevfile, mailname);
+ strcpy(mailname, savename);
+ return(mailname);
+
+ case '&':
+ strcpy(prevfile, mailname);
+ if (name[1] == 0)
+ return(mbox);
+ /* Fall into . . . */
+
+ default:
+regular:
+ strcpy(prevfile, mailname);
+ cp = expand(name);
+ return(cp);
+ }