X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fvfgets.c;h=1a99b7611641ac46f8ae0e868e0d7877133fd2a3;hp=3a376e10d6614fa3c1274359d5a78dd8dc7562a0;hb=a485ed478abbd599d8c9aab48934e7a26733ecb1;hpb=f480c03187724e54e5391ee61b810827da319a6c diff --git a/sbr/vfgets.c b/sbr/vfgets.c index 3a376e1..1a99b76 100644 --- a/sbr/vfgets.c +++ b/sbr/vfgets.c @@ -1,4 +1,3 @@ - /* * vfgets.c -- virtual fgets * @@ -10,63 +9,63 @@ #include #include -#define QUOTE '\\' +#define QUOTE '\\' int vfgets (FILE *in, char **bp) { - int toggle; - char *cp, *dp, *ep, *fp; - static int len = 0; - static char *pp = NULL; + int toggle; + char *cp, *dp, *ep, *fp; + static int len = 0; + static char *pp = NULL; - if (pp == NULL) - pp = mh_xmalloc ((size_t) (len = BUFSIZ)); + if (pp == NULL) + pp = mh_xmalloc ((size_t) (len = BUFSIZ)); - for (ep = (cp = pp) + len - 1;;) { - if (fgets (cp, ep - cp + 1, in) == NULL) { - if (cp != pp) { - *bp = pp; - return 0; - } - return (ferror (in) && !feof (in) ? -1 : 1); - } + for (ep = (cp = pp) + len - 1;;) { + if (fgets (cp, ep - cp + 1, in) == NULL) { + if (cp != pp) { + *bp = pp; + return 0; + } + return (ferror (in) && !feof (in) ? -1 : 1); + } - if ((dp = cp + strlen (cp) - 2) < cp || *dp != QUOTE) { + if ((dp = cp + strlen (cp) - 2) < cp || *dp != QUOTE) { wrong_guess: - if (cp > ++dp) - adios (NULL, "vfgets() botch -- you lose big"); - if (*dp == '\n') { - *bp = pp; - return 0; - } else { - cp = ++dp; - } - } else { - for (fp = dp - 1, toggle = 0; fp >= cp; fp--) { - if (*fp != QUOTE) - break; - else - toggle = !toggle; - } - if (toggle) - goto wrong_guess; + if (cp > ++dp) + adios (NULL, "vfgets() botch -- you lose big"); + if (*dp == '\n') { + *bp = pp; + return 0; + } else { + cp = ++dp; + } + } else { + for (fp = dp - 1, toggle = 0; fp >= cp; fp--) { + if (*fp != QUOTE) + break; + else + toggle = !toggle; + } + if (toggle) + goto wrong_guess; - if (*++dp == '\n') { - *--dp = 0; - cp = dp; - } else { - cp = ++dp; - } - } + if (*++dp == '\n') { + *--dp = 0; + cp = dp; + } else { + cp = ++dp; + } + } - if (cp >= ep) { - int curlen = cp - pp; + if (cp >= ep) { + int curlen = cp - pp; - dp = mh_xrealloc (pp, (size_t) (len += BUFSIZ)); - cp = dp + curlen; - ep = (pp = dp) + len - 1; + dp = mh_xrealloc (pp, (size_t) (len += BUFSIZ)); + cp = dp + curlen; + ep = (pp = dp) + len - 1; + } } - } }