Re: [LTP] [PATCH 2/3] fanotify10: Add support for multiple event files

Jan Kara
2022-11-21T09:54:02Z

On Mon 21-11-22 10:33:13, Petr Vorel wrote:
> Hi Jan, all,
>
> > On Thu 17-11-22 16:58:50, Petr Vorel wrote:
> > > Hi Jan, all,
>
> > > > +#define foreach_path(tc, buf, pname) \
> > > > + for (int piter = 0; format_path_check((buf), (tc)->pname##_fmt, \
> > > Unfortunately we still support C99 due old compiler on CentOS 7,
> > > therefore int piter needs to be defined outside of for loop.
>
> > Hum, but variable declaration in the for loop is part of C99 standard (as
> > the error message also says). So did you want to say you are compiling
> > against C89 standard? And CentOS 7 ships with GCC 4.8.5 AFAICS which should
> > be fully C99 compliant BTW. So what's the situation here?
> I'm sorry, I didn't express clearly myself. Yes, 4.8.5 supports C99,
> but the default is C90 [1].

OK, thanks for explanation.

> > That being said I can workaround the problem in the macro, it will just be
> > somewhat uglier. So before doing that I'd like to understand whether
> > following C89 is really required...
>
> I'm don't remember why we have just not specified -std=... already, Cyril had
> some objections, thus Cc him.
>
> Cent0S EOL in 2024-06, we might reconsider to add -std=... to endup this agony
> (errors like this often need to be fixed).
>
> [1] https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Standards.html

Given Cyril's reply, should I rework my patch or are we fine with using
C99?

Honza

> > > fanotify10.c:470:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
> > > for (int piter = 0; format_path_check((buf), (tc)->pname##_fmt, \
> > > ^
>
> > > fanotify10.c:470:11: error: redefinition of ‘piter’
> > > for (int piter = 0; format_path_check((buf), (tc)->pname##_fmt, \
> > > ^
> > > Kind regards,
> > > Petr
--
Jan Kara <jack@suse.com>
SUSE Labs, CR