[Piglit] [PATCH] util: Add an implementation of strndup
Vinson Lee
vlee at freedesktop.org
Thu Sep 5 22:33:26 PDT 2013
On Thu, Sep 5, 2013 at 10:45 AM, Ian Romanick <idr at freedesktop.org> wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> Commit 4c617fa7 added a use of strndup, and that broke this bulid with
> various Windows compilers that don't support strndup.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68780
> Cc: Vinson Lee <vlee at freedesktop.org>
> ---
> CMakeLists.txt | 1 +
> tests/util/piglit-util.c | 17 +++++++++++++++++
> tests/util/piglit-util.h | 4 ++++
> 3 files changed, 22 insertions(+)
>
> diff --git a/CMakeLists.txt b/CMakeLists.txt
> index 13a984c..1ea2c80 100644
> --- a/CMakeLists.txt
> +++ b/CMakeLists.txt
> @@ -255,6 +255,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${piglit_BINARY_DIR}/bin)
> set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${piglit_BINARY_DIR}/bin)
>
> check_function_exists(strchrnul HAVE_STRCHRNUL)
> +check_function_exists(strndup HAVE_STRNDUP)
> check_function_exists(fopen_s HAVE_FOPEN_S)
> check_function_exists(setrlimit HAVE_SETRLIMIT)
>
> diff --git a/tests/util/piglit-util.c b/tests/util/piglit-util.c
> index 98fffa2..71d55a7 100644
> --- a/tests/util/piglit-util.c
> +++ b/tests/util/piglit-util.c
> @@ -216,6 +216,23 @@ char *strchrnul(const char *s, int c)
> #endif
>
>
> +#ifndef HAVE_STRNDUP
> +char *strndup(const char *s, size_t n)
> +{
> + const size_t len = strlen(s);
> + const size_t size_to_copy = MIN2(n, len);
> +
> + char *const copy = malloc(size_to_copy + 1);
> + if (copy != NULL) {
> + memcpy(copy, s, size_to_copy);
> + copy[size_to_copy] = '\0';
> + }
> +
> + return copy;
> +}
> +#endif
> +
> +
> void
> piglit_set_rlimit(unsigned long lim)
> {
> diff --git a/tests/util/piglit-util.h b/tests/util/piglit-util.h
> index f89eb6e..52f053e 100644
> --- a/tests/util/piglit-util.h
> +++ b/tests/util/piglit-util.h
> @@ -144,6 +144,10 @@ void piglit_report_subtest_result(enum piglit_result result,
> char *strchrnul(const char *s, int c);
> #endif
>
> +#ifndef HAVE_STRNDUP
> +char *strndup(const char *s, size_t n);
> +#endif
> +
> extern void piglit_set_rlimit(unsigned long lim);
>
> char *piglit_load_text_file(const char *file_name, unsigned *size);
> --
> 1.8.1.4
>
This patch fixes the MinGW build for me.
Tested-by: Vinson Lee <vlee at freedesktop.org>
More information about the Piglit
mailing list