diff --git a/util/include/rusefi/efistring.h b/util/include/rusefi/efistring.h new file mode 100644 index 0000000..7fcb397 --- /dev/null +++ b/util/include/rusefi/efistring.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +char *strlncpy(char *dest, const char *src, size_t size); diff --git a/util/src/efistring.cpp b/util/src/efistring.cpp new file mode 100644 index 0000000..8da178d --- /dev/null +++ b/util/src/efistring.cpp @@ -0,0 +1,17 @@ +#include + +// see strncpy man page +// this implementation helps avoiding following gcc error/warning: +// error: 'strncpy' output may be truncated copying xxx bytes from a string of length xxx + +char *strlncpy(char *dest, const char *src, size_t size) +{ + size_t i; + + for (i = 0; (i < (size - 1)) && (src[i] != '\0'); i++) + dest[i] = src[i]; + for ( ; i < size; i++) + dest[i] = '\0'; + + return dest; +} diff --git a/util/util.mk b/util/util.mk index f4188de..003381b 100644 --- a/util/util.mk +++ b/util/util.mk @@ -3,6 +3,7 @@ RUSEFI_LIB_INC += $(RUSEFI_LIB)/util/include $(RUSEFI_LIB)/util/include/rusefi/c RUSEFI_LIB_CPP += \ $(RUSEFI_LIB)/util/src/util_dummy.cpp \ $(RUSEFI_LIB)/util/src/crc.cpp \ + $(RUSEFI_LIB)/util/src/efistring.cpp \ $(RUSEFI_LIB)/util/src/efistringutil.cpp \ $(RUSEFI_LIB)/util/src/fragments.cpp \ $(RUSEFI_LIB)/util/src/rusefi_math.cpp \