From: Laurent Mazet Date: Sat, 29 Mar 2025 16:05:24 +0000 (+0100) Subject: cleaning X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=5cb07f30d903acc64851c81897422fdea945035c;p=morep.git cleaning --- diff --git a/morep.h b/morep.h index 247e9f0..36d600e 100644 --- a/morep.h +++ b/morep.h @@ -100,4 +100,4 @@ __END_DECLS #endif /* __MOREP_H__ */ -/* vi:set tabstop=4 expandtab shiftwidth=4: this line set vi mode */ +/* vim: set ts=4 sw=4 et: */ diff --git a/morep_valid.c b/morep_valid.c index cc7008b..9615426 100644 --- a/morep_valid.c +++ b/morep_valid.c @@ -84,15 +84,15 @@ char *read_stream (FILE *sd, int *plen) uint8_t *parse_payload (char *value, int *plen) { int slen = strlen (value); - uint8_t *payload = NULL; + uint8_t *buffer = NULL; int length = 0; - /* string payload: "..." */ + /* string payload: "..." (no space, tab or =) */ if ((*value == '"') && (slen > 1)) { if (value[slen - 1] == '"') { length = slen - 2; - payload = (uint8_t *) calloc (length + 1, 1); - memcpy (payload, value + 1, length); + buffer = (uint8_t *) calloc (length + 1, 1); + memcpy (buffer, value + 1, length); } else { VERBOSE (morep, ERROR, PRINTF ("incomplet string '%s'\n", value)); } @@ -102,28 +102,28 @@ uint8_t *parse_payload (char *value, int *plen) else if (*value == '@') { FILE *fid = fopen (value + 1, "r"); if (fid != NULL) { - payload = (uint8_t *) read_stream (fid, &length); + buffer = (uint8_t *) read_stream (fid, &length); fclose (fid); } else { VERBOSE (morep, ERROR, PRINTF ("can't open file '%s'\n", value)); } } - /* hexa string: xxxxxx */ + /* hexa payload: xxxxxx [0-9a-fA-F] */ else if (slen % 2 == 0) { length = slen / 2; - payload = (uint8_t *) calloc (length, 1); + buffer = (uint8_t *) calloc (length, 1); int i; for (i = 0; i < length; i++) { char digit[3] = {0}; char *ptr = NULL; digit[0] = value[2 * i]; digit[1] = value[2 * i + 1]; - payload[i] = strtol (digit, &ptr, 16); + buffer[i] = strtol (digit, &ptr, 16); if (*ptr != '\0') { - VERBOSE (morep, ERROR, PRINTF ("unrecognize hexa string (%d) '%s'\n", 2 * i, value)); - free (payload); - payload = NULL; + VERBOSE (morep, ERROR, PRINTF ("unrecognize hexa-string (%d) '%s'\n", 2 * i, value)); + free (buffer); + buffer = NULL; break; } } @@ -131,26 +131,29 @@ uint8_t *parse_payload (char *value, int *plen) /* unrecognize format */ else { - VERBOSE (morep, WARNING, PRINTF ("can't parse payload '%s'\n", value)); + VERBOSE (morep, WARNING, PRINTF ("can't parse buffer '%s'\n", value)); } if (plen) { *plen = length; } - return payload; + return buffer; } -int parse_line (char *line, uint8_t *msgtype, uint8_t **payload) +uint8_t *parse_line (char *line, uint8_t *msgtype, int *plen) { - int rc = -1; + uint8_t *payload = NULL; + int length = -1; *msgtype = -1; + /* trim line */ while ((*line == ' ') || (*line == '\t')) { line++; } + /* segment line as var=val */ char *delim = " =\t"; char *str = strdup (line); char *save_ptr; @@ -162,22 +165,38 @@ int parse_line (char *line, uint8_t *msgtype, uint8_t **payload) char *val = strtok_r (NULL, delim, &save_ptr); if (!var) break; - if (0) { - } else if (strcmp ("MSG", var) == 0) { + /* switch on string */ + if (0) { } + + /* case message type */ + else if (strcmp ("MSG", var) == 0) { *msgtype = strtol (val, NULL, 0); - if (rc < 0 ) { - rc = 0; + if (length < 0 ) { + length = 0; } - } else if (strcmp ("PAYLOAD", var) == 0) { - *payload = parse_payload (val, &rc); - } else { + } + + /* case payload */ + else if (strcmp ("PAYLOAD", var) == 0) { + payload = parse_payload (val, &length); + } + + /* default */ + else { VERBOSE (morep, WARNING, PRINTF ("unknown word '%s'\n", var)); break; } + /* end switch */ + } + /* end of segmentation */ free (str); - return rc; + if (plen) { + *plen = length; + } + + return payload; } typedef struct { @@ -350,8 +369,8 @@ int main (int argc, char **argv) /* get values */ uint8_t msgtype = 0; - uint8_t *payload = NULL; - int len = parse_line (pt, &msgtype, &payload); + int len = 0; + uint8_t *payload = parse_line (pt, &msgtype, &len); if (len < 0) { VERBOSE (morep, WARNING, PRINTF ("can't parse line '%s'\n", line)); continue; @@ -366,16 +385,20 @@ int main (int argc, char **argv) uint8_t rxpayload[1496 * 16 - 1] = {0}; int rxlen = 0; int seqnum = MOREP_Receive (comm->morep, &rxmsgtype, rxpayload, &rxlen); + + /* check msg type */ if (rxmsgtype != msgtype) { - VERBOSE (morep, WARNING, PRINTF ("R%04x seqnum=%d: expected msgtype %04x\n", rxmsgtype, seqnum, msgtype)); - } else { + VERBOSE (morep, WARNING, PRINTF ("R%04x seqnum=%d msg=%d: expected msgtype %04x\n", rxmsgtype, seqnum, rxmsgtype, msgtype)); + } + /* check payload */ + else { int ok = (rxlen == len); i = -1; for (i = 0; ok && (i < rxlen); i++) { ok = (rxpayload[i] == payload[i]); } if (!ok) { - VERBOSE (morep, WARNING, PRINTF ("R%04x seqnum=%d: payload diff at %d/%d\n", rxmsgtype, seqnum, i, rxlen)); + VERBOSE (morep, WARNING, PRINTF ("R%04x seqnum=%d msg=%d: payloads differed at %d/%d\n", rxmsgtype, seqnum, rxmsgtype, i, rxlen)); } else { VERBOSE (morep, INFO, PRINTF ("R%04x seqnum=%d msg=%d length=%d\n", rxmsgtype, seqnum, rxmsgtype, rxlen)); } diff --git a/verbose.h b/verbose.h index 4bdb4d2..c33ec51 100644 --- a/verbose.h +++ b/verbose.h @@ -120,3 +120,5 @@ __BEGIN_DECLS __END_DECLS #endif /* __VERBOSE_H__ */ + +/* vim: set ts=4 sw=4 et: */