Mercurial > hg > octave-lojdl > gnulib-hg
changeset 9759:f2b8b84fb4b4
Add module __func__ to provide C99 __func__ variable.
author | Simon Josefsson <simon@josefsson.org> |
---|---|
date | Tue, 04 Mar 2008 15:37:59 +0100 |
parents | 9ef4db7d29cc |
children | e80f91c10083 |
files | doc/gnulib.texi m4/__func__.m4 modules/__func__ modules/__func__-tests tests/test-__func__.c |
diffstat | 5 files changed, 103 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/gnulib.texi +++ b/doc/gnulib.texi @@ -5746,6 +5746,7 @@ * gcd:: * Regular expressions:: * Supporting Relocation:: +* __func__:: @end menu @node alloca @@ -5825,6 +5826,19 @@ @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
new file mode 100644 --- /dev/null +++ b/m4/__func__.m4 @@ -0,0 +1,20 @@ +# __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 +])
new file mode 100644 --- /dev/null +++ b/modules/__func__ @@ -0,0 +1,20 @@ +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
new file mode 100644 --- /dev/null +++ b/modules/__func__-tests @@ -0,0 +1,8 @@ +Files: +tests/test-__func__.c + +configure.ac: + +Makefile.am: +TESTS += test-__func__ +check_PROGRAMS += test-__func__
new file mode 100644 --- /dev/null +++ b/tests/test-__func__.c @@ -0,0 +1,41 @@ +/* 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; +}