From 06b8e466fd5db6f6df344764ac5832587d03c126 Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: 周五, 07 7月 2017 21:03:33 +0800 Subject: [PATCH] Merge pull request #86 from RedPitaya/master --- libscpi/src/utils.c | 53 ++++++++++++++++++++++++++++++++++------------------- 1 files changed, 34 insertions(+), 19 deletions(-) diff --git a/libscpi/src/utils.c b/libscpi/src/utils.c index ba64d07..7d6030c 100644 --- a/libscpi/src/utils.c +++ b/libscpi/src/utils.c @@ -297,7 +297,7 @@ */ size_t strBaseToInt64(const char * str, int64_t * val, int8_t base) { char * endptr; - *val = strtoll(str, &endptr, base); + *val = SCPIDEFINE_strtoll(str, &endptr, base); return endptr - str; } @@ -309,7 +309,7 @@ */ size_t strBaseToUInt64(const char * str, uint64_t * val, int8_t base) { char * endptr; - *val = strtoull(str, &endptr, base); + *val = SCPIDEFINE_strtoull(str, &endptr, base); return endptr - str; } @@ -321,7 +321,7 @@ */ size_t strToFloat(const char * str, float * val) { char * endptr; - *val = strtof(str, &endptr); + *val = SCPIDEFINE_strtof(str, &endptr); return endptr - str; } @@ -752,6 +752,19 @@ } #endif +#if USE_MEMORY_ALLOCATION_FREE && !HAVE_STRNDUP +char *OUR_strndup(const char *s, size_t n) { + size_t len = SCPIDEFINE_strnlen(s, n); + char * result = malloc(len + 1); + if (!result) { + return NULL; + } + memcpy(result, s, len); + result[len] = '\0'; + return result; +} +#endif + #if USE_DEVICE_DEPENDENT_ERROR_INFORMATION && !USE_MEMORY_ALLOCATION_FREE /** @@ -995,14 +1008,14 @@ char * SCPI_dtostre(double __val, char * __s, size_t __ssize, unsigned char __prec, unsigned char __flags) { char buffer[SCPI_DTOSTRE_BUFFER_SIZE]; - int sign = signbit(__val); + int sign = SCPIDEFINE_signbit(__val); char * s = buffer; int decpt; if (sign) { __val = -__val; s[0] = '-'; s++; - } else if (!isnan(__val)) { + } else if (!SCPIDEFINE_isnan(__val)) { if (SCPI_DTOSTRE_PLUS_SIGN & __flags) { s[0] = '+'; s++; @@ -1012,13 +1025,14 @@ } } - if (!isfinite(__val)) { - if (isnan(__val)) { + if (!SCPIDEFINE_isfinite(__val)) { + if (SCPIDEFINE_isnan(__val)) { strcpy(s, (__flags & SCPI_DTOSTRE_UPPERCASE) ? "NAN" : "nan"); } else { strcpy(s, (__flags & SCPI_DTOSTRE_UPPERCASE) ? "INF" : "inf"); } strncpy(__s, buffer, __ssize); + __s[__ssize - 1] = '\0'; return __s; } @@ -1072,6 +1086,7 @@ } strncpy(__s, buffer, __ssize); + __s[__ssize - 1] = '\0'; return __s; } @@ -1105,10 +1120,10 @@ * @return */ uint32_t SCPI_Swap32(uint32_t val) { - return ((val & 0x000000FF) << 24) | - ((val & 0x0000FF00) << 8) | - ((val & 0x00FF0000) >> 8) | - ((val & 0xFF000000) >> 24); + return ((val & 0x000000FFul) << 24) | + ((val & 0x0000FF00ul) << 8) | + ((val & 0x00FF0000ul) >> 8) | + ((val & 0xFF000000ul) >> 24); } /** @@ -1117,12 +1132,12 @@ * @return */ uint64_t SCPI_Swap64(uint64_t val) { - return ((val & 0x00000000000000FFul) << 56) | - ((val & 0x000000000000FF00ul) << 40) | - ((val & 0x0000000000FF0000ul) << 24) | - ((val & 0x00000000FF000000ul) << 8) | - ((val & 0x000000FF00000000ul) >> 8) | - ((val & 0x0000FF0000000000ul) >> 24) | - ((val & 0x00FF000000000000ul) >> 40) | - ((val & 0xFF00000000000000ul) >> 56); + return ((val & 0x00000000000000FFull) << 56) | + ((val & 0x000000000000FF00ull) << 40) | + ((val & 0x0000000000FF0000ull) << 24) | + ((val & 0x00000000FF000000ull) << 8) | + ((val & 0x000000FF00000000ull) >> 8) | + ((val & 0x0000FF0000000000ull) >> 24) | + ((val & 0x00FF000000000000ull) >> 40) | + ((val & 0xFF00000000000000ull) >> 56); } -- Gitblit v1.9.1