[Libguestfs] [PATCH] builder: fix EOF check with flex >= 2.6.1
Richard W.M. Jones
rjones at redhat.com
Wed Jul 27 13:07:34 UTC 2016
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/f863c9490e6912ffcaeb12965fb3a567a10745ff
This 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 at 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/
More information about the Libguestfs
mailing list