From ce3f1cc0ef9f46d70ab5387b1458e9098b40711d Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Sat, 22 Mar 2025 06:43:11 +0100 Subject: Some safety with move arrays, small refactor appendchar --- src/solvers/coord/common.h | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'src/solvers/coord/common.h') diff --git a/src/solvers/coord/common.h b/src/solvers/coord/common.h index d570b6d..8553658 100644 --- a/src/solvers/coord/common.h +++ b/src/solvers/coord/common.h @@ -4,9 +4,9 @@ coord_t *all_coordinates[] = { }; STATIC void append_coord_name(const coord_t *, char *); -STATIC coord_t *parse_coord(const char *, int); -STATIC uint8_t parse_axis(const char *, int); -STATIC void parse_coord_and_axis(const char *, int, coord_t **, uint8_t *); +STATIC coord_t *parse_coord(size_t n, const char [n]); +STATIC uint8_t parse_axis(size_t n, const char [n]); +STATIC void parse_coord_and_axis(size_t n, const char [n], coord_t **, uint8_t *); STATIC int64_t dataid_coord(const char *, char [static NISSY_DATAID_SIZE]); STATIC void @@ -22,7 +22,7 @@ append_coord_name(const coord_t *coord, char *str) } STATIC coord_t * -parse_coord(const char *coord, int n) +parse_coord(size_t n, const char coord[n]) { int i; @@ -34,7 +34,7 @@ parse_coord(const char *coord, int n) } STATIC uint8_t -parse_axis(const char *axis, int n) +parse_axis(size_t n, const char axis[n]) { if (!strncmp(axis, "UD", n) || !strncmp(axis, "DU", n)) { return AXIS_UD; @@ -48,19 +48,24 @@ parse_axis(const char *axis, int n) } STATIC void -parse_coord_and_axis(const char *str, int n, coord_t **coord, uint8_t *axis) +parse_coord_and_axis( + size_t n, + const char str[n], + coord_t **coord, + uint8_t *axis +) { - int i; + size_t i; for (i = 0; i < n; i++) if (str[i] == '_') break; if (coord != NULL) - *coord = parse_coord(str, i); + *coord = parse_coord(i, str); if (axis != NULL) - *axis = i == n ? UINT8_ERROR : parse_axis(str+i+1, n-i-1); + *axis = i == n ? UINT8_ERROR : parse_axis(n-i-1, str+i+1); } STATIC int64_t @@ -68,7 +73,7 @@ dataid_coord(const char *ca, char dataid[static NISSY_DATAID_SIZE]) { coord_t *c; - parse_coord_and_axis(ca, strlen(ca), &c, NULL); + parse_coord_and_axis(strlen(ca), ca, &c, NULL); if (c == NULL) { LOG("dataid_coord: cannot parse coordinate from '%s'\n", ca); -- cgit v1.3