aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2011-02-09 23:03:12 -0800
committerPaul Eggert2011-02-09 23:03:12 -0800
commitdd4638842ad1921562bc66049ec81a4530651cdf (patch)
tree95521d694eb2e7559d9a4723eb17d95ff06af4d9
parent79ab4b7f0e69ac1d76186346c33187b1fb02ff02 (diff)
downloademacs-dd4638842ad1921562bc66049ec81a4530651cdf.tar.gz
emacs-dd4638842ad1921562bc66049ec81a4530651cdf.zip
Merge from gnulib.
-rw-r--r--arg-nonnull.h2
-rw-r--r--c++defs.h2
-rwxr-xr-xconfigure22
-rw-r--r--doc/misc/texinfo.tex4
-rw-r--r--lib/Makefile.in9
-rw-r--r--lib/gnulib.mk9
-rw-r--r--lib/stdlib.in.h24
-rw-r--r--m4/stdlib_h.m410
-rw-r--r--src/config.in3
-rw-r--r--warn-on-use.h2
10 files changed, 33 insertions, 54 deletions
diff --git a/arg-nonnull.h b/arg-nonnull.h
index 226d1a86998..6c2f1e82d06 100644
--- a/arg-nonnull.h
+++ b/arg-nonnull.h
@@ -9,7 +9,7 @@
9 This program is distributed in the hope that it will be useful, 9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details. 12 General Public License for more details.
13 13
14 You should have received a copy of the GNU General Public License 14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
diff --git a/c++defs.h b/c++defs.h
index d521417069a..b6821a64ac4 100644
--- a/c++defs.h
+++ b/c++defs.h
@@ -9,7 +9,7 @@
9 This program is distributed in the hope that it will be useful, 9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details. 12 General Public License for more details.
13 13
14 You should have received a copy of the GNU General Public License 14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
diff --git a/configure b/configure
index 40e191eb9ab..461f5c17bf2 100755
--- a/configure
+++ b/configure
@@ -677,7 +677,6 @@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
677TIME_H_DEFINES_STRUCT_TIMESPEC 677TIME_H_DEFINES_STRUCT_TIMESPEC
678NEXT_AS_FIRST_DIRECTIVE_TIME_H 678NEXT_AS_FIRST_DIRECTIVE_TIME_H
679NEXT_TIME_H 679NEXT_TIME_H
680HAVE_RANDOM_H
681NEXT_AS_FIRST_DIRECTIVE_STDLIB_H 680NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
682NEXT_STDLIB_H 681NEXT_STDLIB_H
683NEXT_AS_FIRST_DIRECTIVE_STDDEF_H 682NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
@@ -841,6 +840,7 @@ HAVE_SETENV
841HAVE_RPMATCH 840HAVE_RPMATCH
842HAVE_REALPATH 841HAVE_REALPATH
843HAVE_RANDOM_R 842HAVE_RANDOM_R
843HAVE_RANDOM_H
844HAVE_PTSNAME 844HAVE_PTSNAME
845HAVE_MKSTEMPS 845HAVE_MKSTEMPS
846HAVE_MKSTEMP 846HAVE_MKSTEMP
@@ -13281,6 +13281,7 @@ $as_echo "#define HAVE_C99_STRTOLD 1" >>confdefs.h
13281 HAVE_MKSTEMP=1; 13281 HAVE_MKSTEMP=1;
13282 HAVE_MKSTEMPS=1; 13282 HAVE_MKSTEMPS=1;
13283 HAVE_PTSNAME=1; 13283 HAVE_PTSNAME=1;
13284 HAVE_RANDOM_H=1;
13284 HAVE_RANDOM_R=1; 13285 HAVE_RANDOM_R=1;
13285 HAVE_REALPATH=1; 13286 HAVE_REALPATH=1;
13286 HAVE_RPMATCH=1; 13287 HAVE_RPMATCH=1;
@@ -15542,25 +15543,6 @@ $as_echo "$gl_cv_next_stdlib_h" >&6; }
15542 15543
15543 15544
15544 15545
15545 for ac_header in random.h
15546do :
15547 ac_fn_c_check_header_compile "$LINENO" "random.h" "ac_cv_header_random_h" "$ac_includes_default
15548"
15549if test "x$ac_cv_header_random_h" = xyes; then :
15550 cat >>confdefs.h <<_ACEOF
15551#define HAVE_RANDOM_H 1
15552_ACEOF
15553
15554fi
15555
15556done
15557
15558 if test $ac_cv_header_random_h = yes; then
15559 HAVE_RANDOM_H=1
15560 else
15561 HAVE_RANDOM_H=0
15562 fi
15563
15564 15546
15565 15547
15566 15548
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 94d71885d01..1fe8a1872f6 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
3% Load plain if necessary, i.e., if running under initex. 3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5% 5%
6\def\texinfoversion{2011-02-01.10} 6\def\texinfoversion{2011-02-07.16}
7% 7%
8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -8360,7 +8360,7 @@ directory should work if nowhere else does.}
8360 \gdef^^b9{$^1$} 8360 \gdef^^b9{$^1$}
8361 \gdef^^ba{\ordm} 8361 \gdef^^ba{\ordm}
8362 % 8362 %
8363 \gdef^^bb{\guilletright} 8363 \gdef^^bb{\guillemetright}
8364 \gdef^^bc{$1\over4$} 8364 \gdef^^bc{$1\over4$}
8365 \gdef^^bd{$1\over2$} 8365 \gdef^^bd{$1\over2$}
8366 \gdef^^be{$3\over4$} 8366 \gdef^^be{$3\over4$}
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 5e170d155e8..f45a086bb1f 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -918,7 +918,8 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
918 -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \ 918 -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \
919 -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \ 919 -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
920 -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \ 920 -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
921 -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ 921 < $(srcdir)/stdlib.in.h | \
922 sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
922 -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ 923 -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
923 -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ 924 -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
924 -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ 925 -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
@@ -954,8 +955,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
954 -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ 955 -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
955 -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ 956 -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
956 -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ 957 -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
957 -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ 958 -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
958 < $(srcdir)/stdlib.in.h; \
959 } > $@-t && \ 959 } > $@-t && \
960 mv $@-t $@ 960 mv $@-t $@
961 961
@@ -1080,7 +1080,8 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
1080 -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ 1080 -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
1081 -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ 1081 -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
1082 -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ 1082 -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
1083 -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ 1083 | \
1084 sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
1084 -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ 1085 -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
1085 -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ 1086 -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
1086 -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ 1087 -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
index ffd175d58c8..0e7263a002b 100644
--- a/lib/gnulib.mk
+++ b/lib/gnulib.mk
@@ -223,7 +223,8 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
223 -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \ 223 -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \
224 -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \ 224 -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
225 -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \ 225 -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
226 -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ 226 < $(srcdir)/stdlib.in.h | \
227 sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
227 -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ 228 -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
228 -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ 229 -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
229 -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ 230 -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
@@ -259,8 +260,7 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
259 -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ 260 -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
260 -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ 261 -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
261 -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ 262 -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
262 -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ 263 -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
263 < $(srcdir)/stdlib.in.h; \
264 } > $@-t && \ 264 } > $@-t && \
265 mv $@-t $@ 265 mv $@-t $@
266MOSTLYCLEANFILES += stdlib.h stdlib.h-t 266MOSTLYCLEANFILES += stdlib.h stdlib.h-t
@@ -421,7 +421,8 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
421 -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ 421 -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
422 -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ 422 -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
423 -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ 423 -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
424 -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ 424 | \
425 sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
425 -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ 426 -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
426 -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ 427 -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
427 -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ 428 -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
index b3bb9d4e5de..6e69a277af0 100644
--- a/lib/stdlib.in.h
+++ b/lib/stdlib.in.h
@@ -49,20 +49,23 @@
49# include <sys/loadavg.h> 49# include <sys/loadavg.h>
50#endif 50#endif
51 51
52#if @GNULIB_RANDOM_R@
53
52/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included 54/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
53 from <stdlib.h> if _REENTRANT is defined. Include it always. */ 55 from <stdlib.h> if _REENTRANT is defined. Include it whenever we need
54#if @HAVE_RANDOM_H@ 56 'struct random_data'. */
55# include <random.h> 57# if @HAVE_RANDOM_H@
56#endif 58# include <random.h>
59# endif
57 60
58#if !@HAVE_STRUCT_RANDOM_DATA@ || (@GNULIB_RANDOM_R@ && !@HAVE_RANDOM_R@) 61# if !@HAVE_STRUCT_RANDOM_DATA@ || !@HAVE_RANDOM_R@
59# include <stdint.h> 62# include <stdint.h>
60#endif 63# endif
61 64
62#if !@HAVE_STRUCT_RANDOM_DATA@ 65# if !@HAVE_STRUCT_RANDOM_DATA@
63/* Define 'struct random_data'. 66/* Define 'struct random_data'.
64 But allow multiple gnulib generated <stdlib.h> replacements to coexist. */ 67 But allow multiple gnulib generated <stdlib.h> replacements to coexist. */
65# if !GNULIB_defined_struct_random_data 68# if !GNULIB_defined_struct_random_data
66struct random_data 69struct random_data
67{ 70{
68 int32_t *fptr; /* Front pointer. */ 71 int32_t *fptr; /* Front pointer. */
@@ -73,7 +76,8 @@ struct random_data
73 int rand_sep; /* Distance between front and rear. */ 76 int rand_sep; /* Distance between front and rear. */
74 int32_t *end_ptr; /* Pointer behind state table. */ 77 int32_t *end_ptr; /* Pointer behind state table. */
75}; 78};
76# define GNULIB_defined_struct_random_data 1 79# define GNULIB_defined_struct_random_data 1
80# endif
77# endif 81# endif
78#endif 82#endif
79 83
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
index 28eb1a0e537..d28b552e905 100644
--- a/m4/stdlib_h.m4
+++ b/m4/stdlib_h.m4
@@ -1,4 +1,4 @@
1# stdlib_h.m4 serial 35 1# stdlib_h.m4 serial 36
2dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. 2dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation 3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it, 4dnl gives unlimited permission to copy and/or distribute it,
@@ -8,13 +8,6 @@ AC_DEFUN([gl_STDLIB_H],
8[ 8[
9 AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) 9 AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
10 gl_NEXT_HEADERS([stdlib.h]) 10 gl_NEXT_HEADERS([stdlib.h])
11 AC_CHECK_HEADERS([random.h], [], [], [AC_INCLUDES_DEFAULT])
12 if test $ac_cv_header_random_h = yes; then
13 HAVE_RANDOM_H=1
14 else
15 HAVE_RANDOM_H=0
16 fi
17 AC_SUBST([HAVE_RANDOM_H])
18 11
19 dnl Check for declarations of anything we want to poison if the 12 dnl Check for declarations of anything we want to poison if the
20 dnl corresponding gnulib module is not in use, and which is not 13 dnl corresponding gnulib module is not in use, and which is not
@@ -82,6 +75,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
82 HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP]) 75 HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP])
83 HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS]) 76 HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS])
84 HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME]) 77 HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME])
78 HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H])
85 HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) 79 HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R])
86 HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) 80 HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH])
87 HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) 81 HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH])
diff --git a/src/config.in b/src/config.in
index 20d5d165d7b..68cd4b39ac0 100644
--- a/src/config.in
+++ b/src/config.in
@@ -561,9 +561,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
561/* Define to 1 if you have the `random' function. */ 561/* Define to 1 if you have the `random' function. */
562#undef HAVE_RANDOM 562#undef HAVE_RANDOM
563 563
564/* Define to 1 if you have the <random.h> header file. */
565#undef HAVE_RANDOM_H
566
567/* Define to 1 if you have the `recvfrom' function. */ 564/* Define to 1 if you have the `recvfrom' function. */
568#undef HAVE_RECVFROM 565#undef HAVE_RECVFROM
569 566
diff --git a/warn-on-use.h b/warn-on-use.h
index fdf250e9f40..2cdeec3e663 100644
--- a/warn-on-use.h
+++ b/warn-on-use.h
@@ -9,7 +9,7 @@
9 This program is distributed in the hope that it will be useful, 9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details. 12 General Public License for more details.
13 13
14 You should have received a copy of the GNU General Public License 14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 along with this program. If not, see <http://www.gnu.org/licenses/>. */