This is really a replacement for a missing platform function, so use
the same LIBOBJS mechanism to replace it.
---
configure.ac | 2 +-
common/include/Makefile.am | 6 ---
common/replacements/Makefile.am | 14 ++++++
plugins/floppy/Makefile.am | 1 +
common/replacements/get_current_dir_name.h | 48 +++++++++++++++++++
server/public.c | 2 +-
.../get_current_dir_name.c} | 10 ++--
.../test-current-dir-name.c | 2 +-
plugins/floppy/virtual-floppy.c | 2 +-
.gitignore | 2 +-
10 files changed, 72 insertions(+), 17 deletions(-)
diff --git a/configure.ac b/configure.ac
index 41e15b40..0066fc45 100644
--- a/configure.ac
+++ b/configure.ac
@@ -327,7 +327,6 @@ AC_CHECK_FUNCS([\
fdatasync \
flockfile \
funlockfile \
- get_current_dir_name \
mkostemp \
mlock \
mlockall \
@@ -340,6 +339,7 @@ AC_CHECK_FUNCS([\
dnl Replacement functions that we provide for some platforms.
AC_CONFIG_LIBOBJ_DIR([common/replacements])
AC_REPLACE_FUNCS([\
+ get_current_dir_name \
getdelim \
getline \
openlog \
diff --git a/common/include/Makefile.am b/common/include/Makefile.am
index 151c2ae4..a7d0d026 100644
--- a/common/include/Makefile.am
+++ b/common/include/Makefile.am
@@ -38,7 +38,6 @@ EXTRA_DIST = \
ascii-string.h \
byte-swapping.h \
exit-with-parent.h \
- get-current-dir-name.h \
isaligned.h \
ispowerof2.h \
iszero.h \
@@ -56,7 +55,6 @@ TESTS = \
test-ascii-ctype \
test-ascii-string \
test-byte-swapping \
- test-current-dir-name \
test-isaligned \
test-ispowerof2 \
test-iszero \
@@ -79,10 +77,6 @@ test_byte_swapping_SOURCES = test-byte-swapping.c byte-swapping.h
test_byte_swapping_CPPFLAGS = -I$(srcdir)
test_byte_swapping_CFLAGS = $(WARNINGS_CFLAGS)
-test_current_dir_name_SOURCES = test-current-dir-name.c get-current-dir-name.h
-test_current_dir_name_CPPFLAGS = -I$(srcdir)
-test_current_dir_name_CFLAGS = $(WARNINGS_CFLAGS)
-
test_isaligned_SOURCES = test-isaligned.c isaligned.h
test_isaligned_CPPFLAGS = -I$(srcdir)
test_isaligned_CFLAGS = $(WARNINGS_CFLAGS)
diff --git a/common/replacements/Makefile.am b/common/replacements/Makefile.am
index e5a5612f..9494189b 100644
--- a/common/replacements/Makefile.am
+++ b/common/replacements/Makefile.am
@@ -39,6 +39,8 @@ libcompat_la_SOURCES =
libcompat_la_LIBADD = $(LTLIBOBJS)
EXTRA_DIST = \
+ get_current_dir_name.c \
+ get_current_dir_name.h \
getdelim.c \
getline.c \
getline.h \
@@ -50,3 +52,15 @@ EXTRA_DIST = \
syslog.c \
syslog.h \
vsyslog.c
+
+TESTS = \
+ test-current-dir-name
+check_PROGRAMS = $(TESTS)
+
+test_current_dir_name_SOURCES = \
+ test-current-dir-name.c \
+ get_current_dir_name.c \
+ get_current_dir_name.h \
+ $(NULL)
+test_current_dir_name_CPPFLAGS = -I$(srcdir)
+test_current_dir_name_CFLAGS = $(WARNINGS_CFLAGS)
diff --git a/plugins/floppy/Makefile.am b/plugins/floppy/Makefile.am
index 33d026fa..c788382c 100644
--- a/plugins/floppy/Makefile.am
+++ b/plugins/floppy/Makefile.am
@@ -49,6 +49,7 @@ nbdkit_floppy_plugin_la_CPPFLAGS = \
-I$(top_srcdir)/include \
-I$(top_srcdir)/common/include \
-I$(top_srcdir)/common/regions \
+ -I$(top_srcdir)/common/replacements \
-I$(top_srcdir)/common/utils \
-I. \
$(NULL)
diff --git a/common/replacements/get_current_dir_name.h
b/common/replacements/get_current_dir_name.h
new file mode 100644
index 00000000..658d4ea5
--- /dev/null
+++ b/common/replacements/get_current_dir_name.h
@@ -0,0 +1,48 @@
+/* nbdkit
+ * Copyright (C) 2018 Red Hat Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Red Hat nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef NBDKIT_GET_CURRENT_DIR_NAME_H
+#define NBDKIT_GET_CURRENT_DIR_NAME_H
+
+#include <config.h>
+
+#ifdef HAVE_GET_CURRENT_DIR_NAME
+
+#include <unistd.h>
+
+#else
+
+extern char *get_current_dir_name (void);
+
+#endif
+
+#endif /* NBDKIT_GET_CURRENT_DIR_NAME_H */
diff --git a/server/public.c b/server/public.c
index 1f7e1af0..fce16989 100644
--- a/server/public.c
+++ b/server/public.c
@@ -53,7 +53,7 @@
#include "ascii-ctype.h"
#include "ascii-string.h"
-#include "get-current-dir-name.h"
+#include "get_current_dir_name.h"
#include "getline.h"
#include "realpath.h"
diff --git a/common/include/get-current-dir-name.h
b/common/replacements/get_current_dir_name.c
similarity index 92%
rename from common/include/get-current-dir-name.h
rename to common/replacements/get_current_dir_name.c
index 09c6a0fd..72ca45f0 100644
--- a/common/include/get-current-dir-name.h
+++ b/common/replacements/get_current_dir_name.c
@@ -32,9 +32,6 @@
/* Implement get_current_dir_name(3) on platforms which don't have it. */
-#ifndef NBDKIT_GET_CURRENT_DIR_NAME_H
-#define NBDKIT_GET_CURRENT_DIR_NAME_H
-
#include <config.h>
#ifndef HAVE_GET_CURRENT_DIR_NAME
@@ -43,7 +40,9 @@
#include <unistd.h>
#include <limits.h>
-static inline char *
+#include "get_current_dir_name.h"
+
+char *
get_current_dir_name (void)
{
char *ret;
@@ -56,6 +55,5 @@ get_current_dir_name (void)
return NULL;
return realloc (ret, strlen (ret) + 1);
}
-#endif
-#endif /* NBDKIT_GET_CURRENT_DIR_NAME_H */
+#endif /* !HAVE_GET_CURRENT_DIR_NAME */
diff --git a/common/include/test-current-dir-name.c
b/common/replacements/test-current-dir-name.c
similarity index 98%
rename from common/include/test-current-dir-name.c
rename to common/replacements/test-current-dir-name.c
index c3ca52ad..a9bb8de0 100644
--- a/common/include/test-current-dir-name.c
+++ b/common/replacements/test-current-dir-name.c
@@ -40,7 +40,7 @@
#undef NDEBUG /* Keep test strong even for nbdkit built without assertions */
#include <assert.h>
-#include "get-current-dir-name.h"
+#include "get_current_dir_name.h"
int
main (void)
diff --git a/plugins/floppy/virtual-floppy.c b/plugins/floppy/virtual-floppy.c
index 18fd4b01..60916fc5 100644
--- a/plugins/floppy/virtual-floppy.c
+++ b/plugins/floppy/virtual-floppy.c
@@ -49,7 +49,7 @@
#include "byte-swapping.h"
#include "cleanup.h"
-#include "get-current-dir-name.h"
+#include "get_current_dir_name.h"
#include "regions.h"
#include "rounding.h"
diff --git a/.gitignore b/.gitignore
index ca36d9c2..792b73c6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,7 +36,6 @@ plugins/*/*.3
/common/include/test-ascii-ctype
/common/include/test-ascii-string
/common/include/test-byte-swapping
-/common/include/test-current-dir-name
/common/include/test-isaligned
/common/include/test-ispowerof2
/common/include/test-iszero
@@ -47,6 +46,7 @@ plugins/*/*.3
/common/protocol/generate-protostrings.sh
/common/protocol/protostrings.c
/common/replacements/libcompat.a
+/common/replacements/test-current-dir-name
/common/replacements/win32/MSG00001.bin
/common/replacements/win32/nbdkit-cat.h
/common/replacements/win32/nbdkit-cat.rc
--
2.27.0