* gcd::
* Regular expressions::
* Supporting Relocation::
+* __func__::
@end menu
@node alloca
@include regexprops-generic.texi
+@node __func__
+@section __func__
+
+The @code{__func__} module makes sure that you can use the
+@code{__func__} variable as defined by C99 in your code.
+
+A small example is:
+
+@smallexample
+#include <config.h>
+...
+printf ("%s: something happened\n", __func__);
+@end smallexample
@node GNU Free Documentation License
@appendix GNU Free Documentation License
--- /dev/null
+# __func__.m4 serial 1
+dnl Copyright (C) 2008 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.
+
+# Written by Simon Josefsson
+
+AC_DEFUN([gl___FUNC__],
+[
+ AC_CACHE_CHECK([whether __func__ is available], [gl_cv_var___func__],
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[]], [[const char *str = __func__;]])],
+ [gl_cv_var___func__=yes],
+ [gl_cv_var___func__=no]))
+ if test "$gl_cv_var___func__" != yes; then
+ AC_DEFINE([__func__], ["<unknown function>"],
+ [Define as a replacement for the ISO C99 __func__ variable.])
+ fi
+])
--- /dev/null
+Description:
+Make sure __func__ is usable even on non-C99 platforms.
+
+Files:
+m4/__func__.m4
+
+Depends-on:
+
+configure.ac:
+gl___FUNC__
+
+Makefile.am:
+
+Include:
+
+License:
+LGPL
+
+Maintainer:
+Simon Josefsson
--- /dev/null
+Files:
+tests/test-__func__.c
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-__func__
+check_PROGRAMS += test-__func__
--- /dev/null
+/* Test whether __func__ is available
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ 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 <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (strlen (__func__) + 1 == sizeof (__func__));
+ return 0;
+}