diff --git a/lib/Makefile.am b/lib/Makefile.am index 4485499d8..afb228f57 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=tools --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files argmatch argp error gethrxtime isatty mkstemp progname stpcpy sys_wait +# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=tools --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files argmatch argp error gethrxtime isatty mkstemp mkstemps progname stpcpy sys_wait AUTOMAKE_OPTIONS = 1.9.6 gnits @@ -517,6 +517,15 @@ EXTRA_libgnu_la_SOURCES += mkstemp.c ## end gnulib module mkstemp +## begin gnulib module mkstemps + + +EXTRA_DIST += mkstemps.c + +EXTRA_libgnu_la_SOURCES += mkstemps.c + +## end gnulib module mkstemps + ## begin gnulib module msvc-inval diff --git a/lib/mkstemps.c b/lib/mkstemps.c new file mode 100644 index 000000000..85c1de4ca --- /dev/null +++ b/lib/mkstemps.c @@ -0,0 +1,54 @@ +/* Copyright (C) 1998-1999, 2001, 2005-2007, 2009-2013 Free Software + Foundation, Inc. + This file is derived from the one in the GNU C Library. + + This program 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. + + This program 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 this program. If not, see . */ + +#if !_LIBC +# include +#endif + +#include + +#if !_LIBC +# include +# include "tempname.h" +# define __gen_tempname gen_tempname +# ifndef __GT_FILE +# define __GT_FILE GT_FILE +# endif +# define __set_errno(x) errno = x; +#endif + +#include + +#ifndef __GT_FILE +# define __GT_FILE 0 +#endif + +/* Generate a unique temporary file name from XTEMPLATE. The last six + characters before a suffix of length SUFFIXLEN of XTEMPLATE must be + "XXXXXX"; they are replaced with a string that makes the filename + unique. Then open the file and return a fd. */ +int +mkstemps (char *xtemplate, int suffixlen) +{ + if (suffixlen < 0) + { + __set_errno (EINVAL); + return -1; + } + + return __gen_tempname (xtemplate, suffixlen, 0, __GT_FILE); +} diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4 index e040741b6..52a628a0f 100644 --- a/m4/gnulib-cache.m4 +++ b/m4/gnulib-cache.m4 @@ -27,7 +27,7 @@ # Specification in the form of a command-line invocation: -# gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=tools --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files argmatch argp error gethrxtime isatty mkstemp progname stpcpy sys_wait +# gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=tools --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files argmatch argp error gethrxtime isatty mkstemp mkstemps progname stpcpy sys_wait # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([]) @@ -38,6 +38,7 @@ gl_MODULES([ gethrxtime isatty mkstemp + mkstemps progname stpcpy sys_wait diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 index 7ced1da35..ad62632c8 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 @@ -78,6 +78,7 @@ AC_DEFUN([gl_EARLY], # Code from module memchr: # Code from module mempcpy: # Code from module mkstemp: + # Code from module mkstemps: # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: @@ -263,6 +264,12 @@ AC_SUBST([LTALLOCA]) gl_PREREQ_MKSTEMP fi gl_STDLIB_MODULE_INDICATOR([mkstemp]) + gl_FUNC_MKSTEMPS + if test $HAVE_MKSTEMPS = 0; then + AC_LIBOBJ([mkstemps]) + fi + gl_MODULE_INDICATOR([mkstemps]) + gl_STDLIB_MODULE_INDICATOR([mkstemps]) gl_MSVC_INVAL if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then AC_LIBOBJ([msvc-inval]) @@ -574,6 +581,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/memchr.valgrind lib/mempcpy.c lib/mkstemp.c + lib/mkstemps.c lib/msvc-inval.c lib/msvc-inval.h lib/msvc-nothrow.c @@ -684,6 +692,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/memchr.m4 m4/mempcpy.m4 m4/mkstemp.m4 + m4/mkstemps.m4 m4/mmap-anon.m4 m4/msvc-inval.m4 m4/msvc-nothrow.m4 diff --git a/m4/mkstemps.m4 b/m4/mkstemps.m4 new file mode 100644 index 000000000..76ab16d94 --- /dev/null +++ b/m4/mkstemps.m4 @@ -0,0 +1,18 @@ +# mkstemps.m4 serial 2 +dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_MKSTEMPS], +[ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + + dnl Persuade glibc to declare mkstemps(). + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + AC_CHECK_FUNCS_ONCE([mkstemps]) + if test $ac_cv_func_mkstemps != yes; then + HAVE_MKSTEMPS=0 + fi +])