Pino Toscano
2016-Jul-27 12:45 UTC
[Libguestfs] [PATCH] builder: fix EOF check with flex >= 2.6.1
It looks like flex 2.6.1 changed [1] the return code for EOF in yyinput. Therefore, use the right value depending on the version of flex which generates the lexer. [1] https://github.com/westes/flex/commit/f863c9490e6912ffcaeb12965fb3a567a10745ff --- builder/index-scan.l | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/builder/index-scan.l b/builder/index-scan.l index d4db826..bdb474b 100644 --- a/builder/index-scan.l +++ b/builder/index-scan.l @@ -45,6 +45,14 @@ extern void scanner_init (yyscan_t *scanner, struct parse_context *context, FILE *in); extern void scanner_destroy (yyscan_t scanner); +#if (YY_FLEX_MAJOR_VERSION > 2) \ + || ((YY_FLEX_MAJOR_VERSION == 2) && (YY_FLEX_MINOR_VERSION > 6)) \ + || ((YY_FLEX_MAJOR_VERSION == 2) && (YY_FLEX_MINOR_VERSION == 6) && (YY_FLEX_SUBMINOR_VERSION >= 1)) +#define IS_EOF 0 +#else +#define IS_EOF EOF +#endif + %} %option nounput @@ -104,7 +112,7 @@ extern void scanner_destroy (yyscan_t scanner); int c, prevnl = 0; /* Eat everything to the first blank line. */ - while ((c = input (yyscanner)) != EOF) { + while ((c = input (yyscanner)) != IS_EOF) { if (c == '\n' && prevnl) break; prevnl = c == '\n'; @@ -116,7 +124,7 @@ extern void scanner_destroy (yyscan_t scanner); /* Hack to eat the PGP epilogue. */ ^"-----BEGIN PGP SIGNATURE-----\n" { /* Eat everything to the end of the file. */ - while (input (yyscanner) != EOF) + while (input (yyscanner) != IS_EOF) ; return PGP_EPILOGUE; -- 2.7.4
Richard W.M. Jones
2016-Jul-27 13:07 UTC
Re: [Libguestfs] [PATCH] builder: fix EOF check with flex >= 2.6.1
On Wed, Jul 27, 2016 at 02:45:44PM +0200, Pino Toscano wrote:> It looks like flex 2.6.1 changed [1] the return code for EOF in > yyinput. Therefore, use the right value depending on the version of > flex which generates the lexer. > > [1] https://github.com/westes/flex/commit/f863c9490e6912ffcaeb12965fb3a567a10745ffThis sounds like a regression in flex, but ACK. Rich.> builder/index-scan.l | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/builder/index-scan.l b/builder/index-scan.l > index d4db826..bdb474b 100644 > --- a/builder/index-scan.l > +++ b/builder/index-scan.l > @@ -45,6 +45,14 @@ > extern void scanner_init (yyscan_t *scanner, struct parse_context *context, FILE *in); > extern void scanner_destroy (yyscan_t scanner); > > +#if (YY_FLEX_MAJOR_VERSION > 2) \ > + || ((YY_FLEX_MAJOR_VERSION == 2) && (YY_FLEX_MINOR_VERSION > 6)) \ > + || ((YY_FLEX_MAJOR_VERSION == 2) && (YY_FLEX_MINOR_VERSION == 6) && (YY_FLEX_SUBMINOR_VERSION >= 1)) > +#define IS_EOF 0 > +#else > +#define IS_EOF EOF > +#endif > + > %} > > %option nounput > @@ -104,7 +112,7 @@ extern void scanner_destroy (yyscan_t scanner); > int c, prevnl = 0; > > /* Eat everything to the first blank line. */ > - while ((c = input (yyscanner)) != EOF) { > + while ((c = input (yyscanner)) != IS_EOF) { > if (c == '\n' && prevnl) > break; > prevnl = c == '\n'; > @@ -116,7 +124,7 @@ extern void scanner_destroy (yyscan_t scanner); > /* Hack to eat the PGP epilogue. */ > ^"-----BEGIN PGP SIGNATURE-----\n" { > /* Eat everything to the end of the file. */ > - while (input (yyscanner) != EOF) > + while (input (yyscanner) != IS_EOF) > ; > > return PGP_EPILOGUE; > -- > 2.7.4 > > _______________________________________________ > Libguestfs mailing list > Libguestfs@redhat.com > https://www.redhat.com/mailman/listinfo/libguestfs-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://people.redhat.com/~rjones/virt-df/
Apparently Analagous Threads
- [PATCH 1/3] builder: make the C index parser reentrant
- [PATCH 0/6] RFC: basic subscription-manager support in virt-customize
- [PATCH 0/9] libxl: disk configuration handling
- [PATCH] builder: better handle some index parsing errors
- [PATCH] builder: ignore spaces after repo identifiers (RHBZ#1506511)