- /* Compile format string */
- ncomps = fmt_compile(nfs, &fmt) + 1;
-
- FINDCOMP(bodycomp, "body");
- FINDCOMP(datecomp, "date");
- FINDCOMP(cptr, "folder");
- if (cptr && folder)
- cptr->c_text = folder;
- FINDCOMP(cptr, "dtimenow");
- if (cptr)
- cptr->c_text = getcpy(dtimenow(0));
- nxtbuf = compbuffers = (char **) calloc((size_t) ncomps,
- sizeof(char *));
- if (nxtbuf == NULL)
- adios(NULL, "unable to allocate component buffers");
- used_buf = (struct comp **) calloc((size_t) (ncomps+1),
- sizeof(struct comp *));
- if (used_buf == NULL)
- adios(NULL, "unable to allocate component buffer stack");
- used_buf += ncomps+1; *--used_buf = 0;
- rlwidth = bodycomp && (width > SBUFSIZ) ? width : SBUFSIZ;
+ if (fmtstr) {
+ if (width == 0) {
+ if ((width = sc_width()) < WIDTH/2)
+ width = WIDTH/2;
+ else if (width > MAXSCANL)
+ width = MAXSCANL;
+ }
+ dat[3] = slwidth = width;
+ scanl = mh_xcalloc(slwidth + 2, SCAN_CHARWIDTH); /* probably for \n and \0 */
+ /* Compile format string */
+ ncomps = fmt_compile(fmtstr, &fmt) + 1;
+ FINDCOMP(datecomp, "date");
+ } else {
+ ncomps = 1;
+ datecomp = NULL;
+ }
+
+ nxtbuf = compbuffers = mh_xcalloc(ncomps, sizeof(char *));
+ used_buf = mh_xcalloc(ncomps+1, sizeof(struct comp *));
+ /* NULL-terminate array */
+ used_buf += ncomps;
+ *used_buf = NULL;
+ /* allocate space for the items */