When building the tlv.c file, the following warning may occur when operating in C89 mode:
$make EXTRA_CFLAGS=-std=gnu89 tlv.c: In function ‘mgt_post_recv’: tlv.c:374:17: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode 374 | for (int i = 0; i < umtn->actual_table_size; i++) { | ^~~ tlv.c:374:17: note: use option ‘-std=c99’, ‘-std=gnu99’, ‘-std=c11’ or ‘-std=gnu11’ to compile your code tlv.c: In function ‘mgt_pre_send’: tlv.c:551:17: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode 551 | for (int i = 0; i < umtn->actual_table_size; i++) { | ^~~ make: *** [<builtin>: tlv.o] Error 1 make: *** Waiting for unfinished jobs.... pmc.c: In function ‘pmc_show’: pmc.c:559:17: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode 559 | for (int i = 0; i < umtn->actual_table_size; i++) { | ^~~ This occurs because initial loop declarations are only supported in C99 or newer. LinuxPTP source still prefers to keep with the GNU C89 convention of variables being at the top of the function. Newer versions of GCC have begun defaulting to a newer C standard, which explains how these slipped in. Note that directly enforcing "-std=c89" does not work because we rely on some GNU extensions of C89. For the tlv.c file it turns out that the case statements which declare the variables in loops already have suitable iterator variables bound at the top of the function. For the iterator in pmc_show, we need to add the declaration at the top of the function. Reported-by: Jakub Raczyński <j.raczyn...@elpromaelectronics.com> Signed-off-by: Jacob Keller <jacob.e.kel...@intel.com> --- pmc.c | 4 ++-- tlv.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pmc.c b/pmc.c index 00e691f0c244..bc870585960e 100644 --- a/pmc.c +++ b/pmc.c @@ -181,8 +181,8 @@ static void pmc_show(struct ptp_message *msg, FILE *fp) uint64_t next_jump; struct portDS *p; struct TLV *tlv; + int action, i; uint8_t *buf; - int action; if (msg_type(msg) == SIGNALING) { pmc_show_signaling(msg, fp); @@ -591,7 +591,7 @@ static void pmc_show(struct ptp_message *msg, FILE *fp) "BM", "identity", "address", "state", "clockClass", "clockQuality", "offsetScaledLogVariance", "p1", "p2"); - for (int i = 0; i < umtn->actual_table_size; i++) { + for (i = 0; i < umtn->actual_table_size; i++) { ume = (struct unicast_master_entry *) buf; pmc_show_unicast_master_entry(ume, fp); buf += sizeof(*ume) + ume->address.addressLength; diff --git a/tlv.c b/tlv.c index 79400126cbc4..9b82bd9d3fb2 100644 --- a/tlv.c +++ b/tlv.c @@ -444,7 +444,7 @@ static int mgt_post_recv(struct management_tlv *m, uint16_t data_len, umtn->actual_table_size = ntohs(umtn->actual_table_size); buf = (uint8_t *) umtn->unicast_masters; - for (int i = 0; i < umtn->actual_table_size; i++) { + for (i = 0; i < umtn->actual_table_size; i++) { len += sizeof(struct unicast_master_entry); if (data_len < len) goto bad_length; @@ -643,7 +643,7 @@ static void mgt_pre_send(struct management_tlv *m, struct tlv_extra *extra) case MID_UNICAST_MASTER_TABLE_NP: umtn = (struct unicast_master_table_np *)m->data; buf = (uint8_t *) umtn->unicast_masters; - for (int i = 0; i < umtn->actual_table_size; i++) { + for (i = 0; i < umtn->actual_table_size; i++) { ume = (struct unicast_master_entry *) buf; // update pointer before the conversion buf += sizeof(*ume) + ume->address.addressLength; -- 2.41.0.1.g9857a21e0017.dirty _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel