# HG changeset patch # User Paul Eggert # Date 1142580402 0 # Node ID d0a48e08c98dd94c795a24d615c4f55955c6d640 # Parent 8056b81ac71e472953c9fa0b53fa1c53a45370b7 * lib/regex.h (regoff_t) [defined _REGEX_LARGE_OFFSETS]: Typedef to long int, not to off_, as POSIX will likely change in that direction. * m4/regex.m4 (gl_REGEX): Don't check for off_t, since the code no longer needs it. Instead, check that regoff_t is as least as wide as ptrdiff_t. Don't define _REGEX_WIDE_OFFSETS unless using the included regex, so that our regex.h stays compatible with the installed regex. This is helpful for installers who configure --without-included-regex. Problem reported by Emanuele Giaquinta. diff --git a/lib/ChangeLog b/lib/ChangeLog --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,7 +1,13 @@ +2006-03-16 Paul Eggert + + * regex.h (regoff_t) [defined _REGEX_LARGE_OFFSETS]: + Typedef to long int, not to off_, as POSIX will likely change + in that direction. + 2006-03-13 Sergey Poznyakoff * argp-help.c (validate_uparams): Fix typo - * argp-parse.c (argp_default_options): Consistently begin help + * argp-parse.c (argp_default_options): Consistently begin help messages with a lowercase letter. 2006-03-11 Paul Eggert diff --git a/lib/regex.h b/lib/regex.h --- a/lib/regex.h +++ b/lib/regex.h @@ -1,6 +1,6 @@ /* Definitions for data structures and routines for the regular expression library. - Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005 + Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -53,11 +53,13 @@ /* The type of the offset of a byte within a string. For historical reasons POSIX 1003.1-2004 requires that regoff_t be - at least as wide as off_t. This is a bit odd (and many common - POSIX platforms set it to the more-sensible ssize_t) but we might - as well conform. We don't know of any hosts where ssize_t is wider - than off_t, so off_t is safe. */ -typedef off_t regoff_t; + at least as wide as off_t. However, many common POSIX platforms set + regoff_t to the more-sensible ssize_t and the Open Group has + signalled its intention to change the requirement to be that + regoff_t be at least as wide as ptrdiff_t and ssize_t; see XBD ERN + 60 (2005-08-25). We don't know of any hosts where ssize_t or + ptrdiff_t is wider than long int, so long int is safe. */ +typedef long int regoff_t; /* The type of nonnegative object indexes. Traditionally, GNU regex uses 'int' for these. Code that uses __re_idx_t should work diff --git a/m4/ChangeLog b/m4/ChangeLog --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,14 @@ +2006-03-16 Paul Eggert + + * regex.m4 (gl_REGEX): Don't check for off_t, since the code + no longer needs it. Instead, check that regoff_t is as least + as wide as ptrdiff_t. + + Don't define _REGEX_WIDE_OFFSETS unless using the included regex, + so that our regex.h stays compatible with the installed regex. + This is helpful for installers who configure --without-included-regex. + Problem reported by Emanuele Giaquinta. + 2006-03-15 Eric Blake * dirfd.m4 (gl_FUNC_DIRFD): Use AC_REQUIRE for AC_HEADER_DIRENT. diff --git a/m4/regex.m4 b/m4/regex.m4 --- a/m4/regex.m4 +++ b/m4/regex.m4 @@ -1,7 +1,7 @@ -#serial 31 +#serial 32 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 Free -# Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,31 +14,6 @@ AC_DEFUN([gl_REGEX], [ - AC_REQUIRE([AC_SYS_LARGEFILE]) dnl for a sufficently-wide off_t - - AC_CACHE_CHECK([whether off_t can be used in a switch statement], - [gl_cv_type_off_t_switch], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [AC_INCLUDES_DEFAULT], - [[off_t o = -1; - switch (o) - { - case -2: - return 1; - case -1: - return 2; - default: - return 0; - } - ]])], - [gl_cv_type_off_t_switch=yes], - [gl_cv_type_off_t_switch=no])]) - if test $gl_cv_type_off_t_switch = yes; then - AC_DEFINE([_REGEX_LARGE_OFFSETS], 1, - [Define if you want regoff_t to be at least as wide POSIX requires.]) - fi - AC_LIBSOURCES( [regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h, regexec.c]) @@ -123,10 +98,10 @@ exit (1); /* Reject hosts whose regoff_t values are too narrow. - These include glibc 2.3.5 on hosts with 64-bit off_t - and 32-bit int, and Solaris 10 on hosts with 32-bit int - and _FILE_OFFSET_BITS=64. */ - if (sizeof (regoff_t) < sizeof (off_t)) + These include glibc 2.3.5 on hosts with 64-bit ptrdiff_t + and 32-bit int. */ + if (sizeof (regoff_t) < sizeof (ptrdiff_t) + || sizeof (regoff_t) < sizeof (ssize_t)) exit (1); exit (0);]])], @@ -141,6 +116,8 @@ esac if test $ac_use_included_regex = yes; then + AC_DEFINE([_REGEX_WIDE_OFFSETS], 1, + [Define if you want regoff_t to be at least as wide POSIX requires.]) AC_DEFINE([re_syntax_options], [rpl_re_syntax_options], [Define to rpl_re_syntax_options if the replacement should be used.]) AC_DEFINE([re_set_syntax], [rpl_re_set_syntax],