+ if (*cp == '-') {
+ cp++;
+ if ((err = last = m_conv(mp, cp, LAST)) <= 0) {
+badmsg:
+ switch (err) {
+ case BADMSG:
+ advise(NULL, "no %s message", cp);
+ break;
+
+ case BADNUM:
+ advise(NULL, "message %s doesn't exist", cp);
+ break;
+
+ case BADRNG:
+ advise(NULL, "message %s out of range 1-%d",
+ cp, mp->hghmsg);
+ break;
+
+ case BADLST:
+badlist:
+ advise(NULL, "bad message list %s", name);
+ break;
+
+ case BADNEW:
+ advise(NULL, "folder full, no %s message",
+ name);
+ break;
+
+ default:
+ advise(NULL, "no messages match specification");
+ }
+ return 0;
+ }
+
+ if (last < first)
+ goto badlist;
+ if (*delimp)
+ goto badelim;
+ if (first > mp->hghmsg || last < mp->lowmsg) {