From c881e18dae539bb885c417f0a7ef01b8223a67fb Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Fri, 1 Jan 2021 15:54:13 +0100 Subject: [PATCH] Revert "Mes C Library: m2/getcwd.c: Remove specialization." This reverts commit 37f44ce9453ef5589b1336c981360de16c154999. --- kaem.run | 2 +- lib/m2/getcwd.c | 42 ++++++++++++++++++++++++++++++++++++++++++ lib/posix/getcwd.c | 15 ++++----------- simple.make | 4 ++-- 4 files changed, 49 insertions(+), 14 deletions(-) create mode 100644 lib/m2/getcwd.c diff --git a/kaem.run b/kaem.run index 827fdac0..2d8780d7 100644 --- a/kaem.run +++ b/kaem.run @@ -91,7 +91,7 @@ M2-Planet \ -f lib/m2/clock_gettime.c \ -f lib/m2/time.c \ -f lib/linux/_getcwd.c \ - -f lib/posix/getcwd.c \ + -f lib/m2/getcwd.c \ -f lib/linux/dup.c \ -f lib/linux/dup2.c \ -f lib/string/strcmp.c \ diff --git a/lib/m2/getcwd.c b/lib/m2/getcwd.c new file mode 100644 index 00000000..849c0a0f --- /dev/null +++ b/lib/m2/getcwd.c @@ -0,0 +1,42 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2016,2017,2018,2019,2020 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include +#include +#include +#include +#include + +// CONSTANT PATH_MAX 1024 + +char *__getcwd_buf; + +char * +getcwd (char *buffer, int size) +{ + if (buffer == 0) + buffer = __getcwd_buf; + if (buffer == 0) + { + __getcwd_buf = malloc (PATH_MAX); + buffer = __getcwd_buf; + } + return _getcwd (buffer, size); +} diff --git a/lib/posix/getcwd.c b/lib/posix/getcwd.c index bc820f25..e3e6d67c 100644 --- a/lib/posix/getcwd.c +++ b/lib/posix/getcwd.c @@ -19,24 +19,17 @@ */ #include -#include #include -#include #include - -// CONSTANT PATH_MAX 1024 +#include char *__getcwd_buf; char * -getcwd (char *buffer, int size) +getcwd (char *buffer, size_t size) { + static char buf[PATH_MAX]; if (buffer == 0) - buffer = __getcwd_buf; - if (buffer == 0) - { - __getcwd_buf = malloc (PATH_MAX); - buffer = __getcwd_buf; - } + buffer = buf; return _getcwd (buffer, size); } diff --git a/simple.make b/simple.make index 6bea0644..283b2994 100644 --- a/simple.make +++ b/simple.make @@ -1,6 +1,6 @@ # GNU Mes --- Maxwell Equations of Software # Copyright © 2019 Jeremiah Orians -# Copyright © 2018,2019,2020 Jan (janneke) Nieuwenhuizen +# Copyright © 2018,2019,2020,2021 Jan (janneke) Nieuwenhuizen # # This file is part of GNU Mes. # @@ -129,7 +129,7 @@ M2_SOURCES = \ lib/m2/clock_gettime.c \ lib/m2/time.c \ lib/linux/_getcwd.c \ - lib/posix/getcwd.c \ + lib/m2/getcwd.c \ lib/linux/dup.c \ lib/linux/dup2.c \ lib/string/strcmp.c \