{ "form formatfile", 0 },
#define FMTSW 3
{ "format string", 5 },
-#define HEADSW 4
- { "header", 0 },
-#define NHEADSW 5
- { "noheader", 0 },
-#define WIDTHSW 6
+#define WIDTHSW 4
{ "width columns", 0 },
-#define REVSW 7
- { "reverse", 0 },
-#define NREVSW 8
- { "noreverse", 0 },
-#define FILESW 9
+#define FILESW 5
{ "file file", 4 },
-#define VERSIONSW 10
+#define VERSIONSW 6
{ "version", 0 },
-#define HELPSW 11
+#define HELPSW 7
{ "help", 0 },
{ NULL, 0 }
};
/*
-** global for sbr/formatsbr.c - yech!
-*/
-#ifdef LBL
-extern struct msgs *fmt_current_folder;
-#endif
-
-/*
** prototypes
*/
void clear_screen(void); /* from termsbr.c */
int
main(int argc, char **argv)
{
- int clearflag = 0, hdrflag = 0, ontty;
- int width = 0, revflag = 0;
+ int clearflag = 0, ontty;
+ int width = 0;
int i, state, msgnum;
int seqnum[NUMATTRS], unseen, num_unseen_seq = 0;
char *cp, *maildir, *file = NULL, *folder = NULL;
#ifdef LOCALE
setlocale(LC_ALL, "");
#endif
- invo_name = r1bindex(argv[0], '/');
+ invo_name = mhbasename(argv[0]);
/* read user profile/context */
context_read();
while ((cp = *argp++)) {
if (*cp == '-') {
switch (smatch(++cp, switches)) {
- case AMBIGSW:
- ambigsw(cp, switches);
- done(1);
- case UNKWNSW:
- adios(NULL, "-%s unknown", cp);
-
- case HELPSW:
- snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name);
- print_help(buf, switches, 1);
- done(1);
- case VERSIONSW:
- print_version(invo_name);
- done(1);
-
- case CLRSW:
- clearflag++;
- continue;
- case NCLRSW:
- clearflag = 0;
- continue;
-
- case FORMSW:
- if (!(form = *argp++) || *form == '-')
- adios(NULL, "missing argument to %s", argp[-2]);
- format = NULL;
- continue;
- case FMTSW:
- if (!(format = *argp++) ||
- *format == '-')
- adios(NULL, "missing argument to %s", argp[-2]);
- form = NULL;
- continue;
-
- case HEADSW:
- hdrflag++;
- continue;
- case NHEADSW:
- hdrflag = 0;
- continue;
-
- case WIDTHSW:
- if (!(cp = *argp++) || *cp == '-')
- adios(NULL, "missing argument to %s", argp[-2]);
- width = atoi(cp);
- continue;
- case REVSW:
- revflag++;
- continue;
- case NREVSW:
- revflag = 0;
- continue;
-
- case FILESW:
- if (!(cp = *argp++) || (cp[0] == '-' && cp[1]))
- adios(NULL, "missing argument to %s", argp[-2]);
- if (strcmp(file = cp, "-"))
- file = path(cp, TFILE);
- continue;
+ case AMBIGSW:
+ ambigsw(cp, switches);
+ done(1);
+ case UNKWNSW:
+ adios(NULL, "-%s unknown", cp);
+
+ case HELPSW:
+ snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name);
+ print_help(buf, switches, 1);
+ done(1);
+ case VERSIONSW:
+ print_version(invo_name);
+ done(1);
+
+ case CLRSW:
+ clearflag++;
+ continue;
+ case NCLRSW:
+ clearflag = 0;
+ continue;
+
+ case FORMSW:
+ if (!(form = *argp++) || *form == '-')
+ adios(NULL, "missing argument to %s",
+ argp[-2]);
+ format = NULL;
+ continue;
+ case FMTSW:
+ if (!(format = *argp++) || *format == '-')
+ adios(NULL, "missing argument to %s",
+ argp[-2]);
+ form = NULL;
+ continue;
+
+ case WIDTHSW:
+ if (!(cp = *argp++) || *cp == '-')
+ adios(NULL, "missing argument to %s",
+ argp[-2]);
+ width = atoi(cp);
+ continue;
+
+ case FILESW:
+ if (!(cp = *argp++) || (cp[0] == '-' && cp[1]))
+ adios(NULL, "missing argument to %s",
+ argp[-2]);
+ if (strcmp(file = cp, "-")!=0)
+ file = getcpy(expanddir(cp));
+ continue;
}
}
if (*cp == '+' || *cp == '@') {
if (folder)
adios(NULL, "only one folder at a time!");
else
- folder = pluspath(cp);
+ folder = getcpy(expandfol(cp));
} else
- app_msgarg(&msgs, cp);
+ app_msgarg(&msgs, cp);
}
- if (!context_find("path"))
- free(path("./", TFOLDER));
-
/*
** Get new format string. Must be before chdir().
*/
if (strcmp(file, "-") == 0) {
in = stdin;
file = "stdin";
- } else {
- if ((in = fopen(file, "r")) == NULL)
- adios(file, "unable to open");
- }
-
-#ifndef JLR
- if (hdrflag) {
- printf("FOLDER %s\t%s\n", file, dtimenow(1));
+ } else if (!(in = fopen(file, "r"))) {
+ adios(file, "unable to open");
}
-#endif /* JLR */
m_unknown(in);
for (msgnum = 1; ; ++msgnum) {
state = scan(in, msgnum, -1, nfs, width, 0, 0,
- hdrflag ? file : NULL, 0L, 1);
+ NULL, 0L, 1);
if (state != SCNMSG && state != SCNENC)
break;
}
*/
if (!msgs.size)
- app_msgarg(&msgs, "all");
+ app_msgarg(&msgs, seq_all);
if (!folder)
- folder = getfolder(1);
- maildir = m_maildir(folder);
+ folder = getcurfol();
+ maildir = toabsdir(folder);
if (chdir(maildir) == NOTOK)
adios(maildir, "unable to change directory to");
done(1);
seq_setprev(mp); /* set the Previous-Sequence */
- context_replace(pfolder, folder); /* update current folder */
+ context_replace(curfolder, folder); /* update current folder */
seq_save(mp); /* synchronize message sequences */
context_save(); /* save the context file */
/*
- ** Get the sequence number for each sequence
- ** specified by Unseen-Sequence
+ ** Get the sequence number for each `unseen' sequence
*/
- if ((cp = context_find(usequence)) && *cp) {
+ if (!(cp = context_find(usequence))) {
+ cp = seq_unseen; /* use default, if not set */
+ }
+ if (*cp) {
char **ap, *dp;
dp = getcpy(cp);
ap = brkstring(dp, " ", "\n");
- for (i = 0; ap && *ap; i++, ap++)
+ for (i = 0; ap && *ap; i++, ap++) {
seqnum[i] = seq_getnum(mp, *ap);
-
+ }
num_unseen_seq = i;
- if (dp)
+ if (dp) {
free(dp);
+ }
}
ontty = isatty(fileno(stdout));
-#ifdef LBL
- else
- fmt_current_folder = mp;
-#endif
-
- for (msgnum = revflag ? mp->hghsel : mp->lowsel;
- (revflag ? msgnum >= mp->lowsel : msgnum <= mp->hghsel);
- msgnum += (revflag ? -1 : 1)) {
+ for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
if (is_selected(mp, msgnum)) {
if ((in = fopen(cp = m_name(msgnum), "r")) == NULL) {
-#if 0
- if (errno != EACCES)
-#endif
- admonish(cp, "unable to open message");
-#if 0
- else
- printf("%*d unreadable\n",
- DMAXFOLDER, msgnum);
-#endif
+ admonish(cp, "unable to open message");
continue;
}
-#ifndef JLR
- if (hdrflag) {
- printf("FOLDER %s\t%s\n", folder, dtimenow(1));
- }
-#endif /* JLR */
-
/*
** Check if message is in any sequence given
** by Unseen-Sequence profile entry.
switch (state = scan(in, msgnum, 0, nfs, width,
msgnum == mp->curmsg, unseen,
folder, 0L, 1)) {
- case SCNMSG:
- case SCNENC:
- case SCNERR:
- break;
+ case SCNMSG:
+ case SCNENC:
+ case SCNERR:
+ break;
- default:
- adios(NULL, "scan() botch(%d)", state);
+ default:
+ adios(NULL, "scan() botch(%d)", state);
- case SCNEOF:
-#if 0
- printf("%*d empty\n", DMAXFOLDER,
- msgnum);
-#else
- advise(NULL, "message %d: empty",
- msgnum);
-#endif
- break;
+ case SCNEOF:
+ advise(NULL, "message %d: empty", msgnum);
+ break;
}
- hdrflag = 0;
fclose(in);
if (ontty)
fflush(stdout);
}
}
-#ifdef LBL
- seq_save(mp); /* because formatsbr might have made changes */
-#endif
-
folder_free(mp); /* free folder/message structure */
if (clearflag)
clear_screen();