summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Wette <mwette@alumni.caltech.edu>2020-03-22 09:12:37 -0700
committerLudovic Courtès <ludo@gnu.org>2020-03-22 18:00:06 +0100
commitb62d849d369ad95572a6a83f243045a5b81c7d00 (patch)
tree4966e2702706a8ad1e6b16ec0dbee39fb571deb8
parentbef5e0b3938cc88e3a1a1ac590b009875cc38162 (diff)
downloadguile-b62d849d369ad95572a6a83f243045a5b81c7d00.tar.gz
Deprecate 'tmpnam' and add '--disable-tmpnam' configure option.
* configure.ac: Add '--disable-tmpnam'. * libguile/posix.c (tmpnam): Conditionalize on 'SCM_ENABLE_DEPRECATED' and 'ENABLE_TMPNAM'. Call 'scm_c_issue_deprecation_warning'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--configure.ac8
-rw-r--r--libguile/posix.c11
2 files changed, 19 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 6198c7e6e..3e96094f6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -166,6 +166,10 @@ AC_ARG_ENABLE(regex,
[ --disable-regex omit regular expression interfaces],,
enable_regex=yes)
+AC_ARG_ENABLE(tmpnam,
+ AS_HELP_STRING([--disable-tmpnam],[omit POSIX tmpnam]),,
+ enable_tmpnam=yes)
+
AC_ARG_ENABLE([deprecated],
AS_HELP_STRING([--disable-deprecated],[omit deprecated features]))
@@ -909,6 +913,10 @@ if test "$enable_regex" = yes; then
AC_DEFINE([ENABLE_REGEX], 1, [Define when regex support is enabled.])
fi
+if test "$enable_tmpnam" = yes; then
+ AC_DEFINE([ENABLE_TMPNAM], 1, [Define when tmpnam support is enabled.])
+fi
+
AC_REPLACE_FUNCS([strerror memmove])
# Reasons for testing:
diff --git a/libguile/posix.c b/libguile/posix.c
index a1520abc4..9b9b47636 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -87,6 +87,10 @@
#include "vectors.h"
#include "version.h"
+#if (SCM_ENABLE_DEPRECATED == 1)
+#include "deprecation.h"
+#endif
+
#include "posix.h"
#if HAVE_SYS_WAIT_H
@@ -1588,6 +1592,8 @@ SCM_DEFINE (scm_environ, "environ", 0, 1, 0,
}
#undef FUNC_NAME
+#if (SCM_ENABLE_DEPRECATED == 1)
+#ifdef ENABLE_TMPNAM
#ifdef L_tmpnam
SCM_DEFINE (scm_tmpnam, "tmpnam", 0, 0, 0,
@@ -1602,6 +1608,9 @@ SCM_DEFINE (scm_tmpnam, "tmpnam", 0, 0, 0,
char name[L_tmpnam];
char *rv;
+ scm_c_issue_deprecation_warning
+ ("Use of tmpnam is deprecated. Use mkstemp! instead.");
+
SCM_SYSCALL (rv = tmpnam (name));
if (rv == NULL)
/* not SCM_SYSERROR since errno probably not set. */
@@ -1611,6 +1620,8 @@ SCM_DEFINE (scm_tmpnam, "tmpnam", 0, 0, 0,
#undef FUNC_NAME
#endif
+#endif
+#endif
SCM_DEFINE (scm_tmpfile, "tmpfile", 0, 0, 0,
(void),