X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fscansbr.c;h=48837d76033fa45a2ac45c0b4258d74c92f8a034;hp=50b250e558ec086590a99ac015c8f824a3b88868;hb=6e9577f324bef90765a5edc02044eb111ec48072;hpb=cdb32d069bdcb6fa04ca7e3d87240442665611b0 diff --git a/uip/scansbr.c b/uip/scansbr.c index 50b250e..48837d7 100644 --- a/uip/scansbr.c +++ b/uip/scansbr.c @@ -74,8 +74,7 @@ scan(FILE *inb, int innum, int outnum, char *fmtstr, int width, int curflg, width = MAXSCANL; } dat[3] = slwidth = width; - scanl = (char *) mh_xmalloc((size_t) SCAN_CHARWIDTH * - (slwidth + 2)); /* probably for \n and \0 */ + scanl = mh_xcalloc(slwidth + 2, SCAN_CHARWIDTH); /* probably for \n and \0 */ /* Compile format string */ ncomps = fmt_compile(fmtstr, &fmt) + 1; FINDCOMP(datecomp, "date"); @@ -108,6 +107,9 @@ scan(FILE *inb, int innum, int outnum, char *fmtstr, int width, int curflg, for (compnum = 1, state = FLD2; ; ) { state = m_getfld2(state, &f, inb); switch (state) { + case LENERR2: + state = FLD2; + /* FALL */ case FLD2: compnum++; if (incing) { @@ -129,7 +131,7 @@ scan(FILE *inb, int innum, int outnum, char *fmtstr, int width, int curflg, free(cptr->c_text); cptr->c_text = NULL; } - cptr->c_text = getcpy(f.value); + cptr->c_text = mh_xstrdup(f.value); cp = cptr->c_text + strlen(cptr->c_text) - 1; for (; cp >= cptr->c_text; cp--) { if (isspace(*cp)) { @@ -192,19 +194,20 @@ body:; } goto finished; - case LENERR2: - advise(NULL, "line \"%s\" too long", trim(f.value)); - goto handleerror; - case FMTERR2: if (strncmp("From ", f.value, 5)==0) { state = FILEEOF2; goto finished; } - /* FALL */ + state = FLD2; + fprintf(stderr, innum ? + "??Format error (message %d) in " : + "??Format error in ", + outnum ? outnum : innum); + fprintf(stderr, "component %d\n", compnum); + continue; case IOERR2: -handleerror:; fprintf(stderr, innum ? "??Format error (message %d) in " : "??Format error in ", @@ -252,7 +255,7 @@ finished: if (datecomp && !datecomp->c_text) { if (!datecomp->c_text) { if (!datecomp->c_tws) - datecomp->c_tws = (struct tws *) mh_xcalloc((size_t) 1, sizeof(*datecomp->c_tws)); + datecomp->c_tws = mh_xcalloc(1, sizeof(*datecomp->c_tws)); if (!datecomp->c_tws) adios(EX_OSERR, NULL, "unable to allocate tws buffer"); *datecomp->c_tws = *dlocaltime((time_t *) &st.st_mtime);