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 e218ca478c38..4640a64ca8ea 100644
--- a/pmc.c
+++ b/pmc.c
@@ -177,8 +177,8 @@ static void pmc_show(struct ptp_message *msg, FILE *fp)
        struct parentDS *pds;
        struct portDS *p;
        struct TLV *tlv;
+       int action, i;
        uint8_t *buf;
-       int action;
 
        if (msg_type(msg) == SIGNALING) {
                pmc_show_signaling(msg, fp);
@@ -556,7 +556,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 1c13460796e5..240e7df01545 100644
--- a/tlv.c
+++ b/tlv.c
@@ -371,7 +371,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;
@@ -548,7 +548,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.38.1.420.g319605f8f00e



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to