~darkmuggle-deactivatedaccount/ubuntu/quantal/grub2/fix-872244

« back to all changes in this revision

Viewing changes to m4/regex.m4

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson, Colin Watson, Evan Broder, Mario Limonciello
  • Date: 2010-11-24 13:59:55 UTC
  • mfrom: (1.17.6 upstream) (17.6.15 experimental)
  • Revision ID: james.westby@ubuntu.com-20101124135955-r6ii5sepayr7jt53
Tags: 1.99~20101124-1ubuntu1
[ Colin Watson ]
* Resynchronise with Debian experimental.  Remaining changes:
  - Adjust for default Ubuntu boot options ("quiet splash").
  - Default to hiding the menu; holding down Shift at boot will show it.
  - Set a monochromatic theme for Ubuntu.
  - Apply Ubuntu GRUB Legacy changes to legacy update-grub script: title,
    recovery mode, quiet option, tweak how memtest86+ is displayed, and
    use UUIDs where appropriate.
  - Fix backslash-escaping in merge_debconf_into_conf.
  - Remove "GNU/Linux" from default distributor string.
  - Add crashkernel= options if kdump and makedumpfile are available.
  - If other operating systems are installed, then automatically unhide
    the menu.  Otherwise, if GRUB_HIDDEN_TIMEOUT is 0, then use keystatus
    if available to check whether Shift is pressed.  If it is, show the
    menu, otherwise boot immediately.  If keystatus is not available, then
    fall back to a short delay interruptible with Escape.
  - Allow Shift to interrupt 'sleep --interruptible'.
  - Don't display introductory message about line editing unless we're
    actually offering a shell prompt.  Don't clear the screen just before
    booting if we never drew the menu in the first place.
  - Remove some verbose messages printed before reading the configuration
    file.
  - Suppress progress messages as the kernel and initrd load for
    non-recovery kernel menu entries.
  - Change prepare_grub_to_access_device to handle filesystems
    loop-mounted on file images.
  - Ignore devices loop-mounted from files in 10_linux.
  - Show the boot menu if the previous boot failed, that is if it failed
    to get to the end of one of the normal runlevels.
  - Don't generate /boot/grub/device.map during grub-install or
    grub-mkconfig by default.
  - Adjust upgrade version checks for Ubuntu.
  - Don't display "GRUB loading" unless Shift is held down.
  - Adjust versions of grub-doc and grub-legacy-doc conflicts to tolerate
    our backport of the grub-doc split.
  - Fix LVM/RAID probing in the absence of /boot/grub/device.map.
  - Look for .mo files in /usr/share/locale-langpack as well, in
    preference.
  - Make sure GRUB_TIMEOUT isn't quoted unnecessarily.
  - Probe all devices in 'grub-probe --target=drive' if
    /boot/grub/device.map is missing.
  - Build-depend on qemu-kvm rather than qemu-system for grub-pc tests.
  - Use qemu rather than qemu-system-i386.
  - Program vesafb on BIOS systems rather than efifb.
  - Add a grub-rescue-efi-amd64 package containing a rescue CD-ROM image
    for EFI-AMD64.
  - On Wubi, don't ask for an install device, but just update wubildr
    using the diverted grub-install.
  - When embedding the core image in a post-MBR gap, check for and avoid
    sectors matching any of a list of known signatures.
  - Disable video_bochs and video_cirrus on PC BIOS systems, as probing
    PCI space seems to break on some systems.
* Downgrade "ACPI shutdown failed" error to a debug message, since it can
  cause spurious test failures.

[ Evan Broder ]
* Enable lua from grub-extras.
* Incorporate the bitop library into lua.
* Add enum_pci function to grub module in lua.
* Switch back to gfxpayload=keep by default, unless the video hardware
  is known to not support it.

[ Mario Limonciello ]
* Built part_msdos and vfat into bootx64.efi (LP: #677758)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# serial 56
 
2
 
 
3
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
 
4
# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
5
#
 
6
# This file is free software; the Free Software Foundation
 
7
# gives unlimited permission to copy and/or distribute it,
 
8
# with or without modifications, as long as this notice is preserved.
 
9
 
 
10
dnl Initially derived from code in GNU grep.
 
11
dnl Mostly written by Jim Meyering.
 
12
 
 
13
AC_PREREQ([2.50])
 
14
 
 
15
AC_DEFUN([gl_REGEX],
 
16
[
 
17
  AC_CHECK_HEADERS_ONCE([locale.h])
 
18
 
 
19
  AC_ARG_WITH([included-regex],
 
20
    [AS_HELP_STRING([--without-included-regex],
 
21
                    [don't compile regex; this is the default on systems
 
22
                     with recent-enough versions of the GNU C Library
 
23
                     (use with caution on other systems).])])
 
24
 
 
25
  case $with_included_regex in #(
 
26
  yes|no) ac_use_included_regex=$with_included_regex
 
27
        ;;
 
28
  '')
 
29
    # If the system regex support is good enough that it passes the
 
30
    # following run test, then default to *not* using the included regex.c.
 
31
    # If cross compiling, assume the test would fail and use the included
 
32
    # regex.c.
 
33
    AC_CACHE_CHECK([for working re_compile_pattern],
 
34
                   [gl_cv_func_re_compile_pattern_working],
 
35
      [AC_RUN_IFELSE(
 
36
        [AC_LANG_PROGRAM(
 
37
          [AC_INCLUDES_DEFAULT[
 
38
           #if HAVE_LOCALE_H
 
39
            #include <locale.h>
 
40
           #endif
 
41
           #include <limits.h>
 
42
           #include <regex.h>
 
43
           ]],
 
44
          [[static struct re_pattern_buffer regex;
 
45
            unsigned char folded_chars[UCHAR_MAX + 1];
 
46
            int i;
 
47
            const char *s;
 
48
            struct re_registers regs;
 
49
 
 
50
            #if HAVE_LOCALE_H
 
51
              /* http://sourceware.org/ml/libc-hacker/2006-09/msg00008.html
 
52
                 This test needs valgrind to catch the bug on Debian
 
53
                 GNU/Linux 3.1 x86, but it might catch the bug better
 
54
                 on other platforms and it shouldn't hurt to try the
 
55
                 test here.  */
 
56
              if (setlocale (LC_ALL, "en_US.UTF-8"))
 
57
                {
 
58
                  static char const pat[] = "insert into";
 
59
                  static char const data[] =
 
60
                    "\xFF\0\x12\xA2\xAA\xC4\xB1,K\x12\xC4\xB1*\xACK";
 
61
                  re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE
 
62
                                 | RE_ICASE);
 
63
                  memset (&regex, 0, sizeof regex);
 
64
                  s = re_compile_pattern (pat, sizeof pat - 1, &regex);
 
65
                  if (s)
 
66
                    return 1;
 
67
                  if (re_search (&regex, data, sizeof data - 1,
 
68
                                 0, sizeof data - 1, &regs)
 
69
                      != -1)
 
70
                    return 1;
 
71
                  if (! setlocale (LC_ALL, "C"))
 
72
                    return 1;
 
73
                }
 
74
            #endif
 
75
 
 
76
            /* This test is from glibc bug 3957, reported by Andrew Mackey.  */
 
77
            re_set_syntax (RE_SYNTAX_EGREP | RE_HAT_LISTS_NOT_NEWLINE);
 
78
            memset (&regex, 0, sizeof regex);
 
79
            s = re_compile_pattern ("a[^x]b", 6, &regex);
 
80
            if (s)
 
81
              return 1;
 
82
 
 
83
            /* This should fail, but succeeds for glibc-2.5.  */
 
84
            if (re_search (&regex, "a\nb", 3, 0, 3, &regs) != -1)
 
85
              return 1;
 
86
 
 
87
            /* This regular expression is from Spencer ere test number 75
 
88
               in grep-2.3.  */
 
89
            re_set_syntax (RE_SYNTAX_POSIX_EGREP);
 
90
            memset (&regex, 0, sizeof regex);
 
91
            for (i = 0; i <= UCHAR_MAX; i++)
 
92
              folded_chars[i] = i;
 
93
            regex.translate = folded_chars;
 
94
            s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, &regex);
 
95
            /* This should fail with _Invalid character class name_ error.  */
 
96
            if (!s)
 
97
              return 1;
 
98
 
 
99
            /* Ensure that [b-a] is diagnosed as invalid, when
 
100
               using RE_NO_EMPTY_RANGES. */
 
101
            re_set_syntax (RE_SYNTAX_POSIX_EGREP | RE_NO_EMPTY_RANGES);
 
102
            memset (&regex, 0, sizeof regex);
 
103
            s = re_compile_pattern ("a[b-a]", 6, &regex);
 
104
            if (s == 0)
 
105
              return 1;
 
106
 
 
107
            /* This should succeed, but does not for glibc-2.1.3.  */
 
108
            memset (&regex, 0, sizeof regex);
 
109
            s = re_compile_pattern ("{1", 2, &regex);
 
110
 
 
111
            if (s)
 
112
              return 1;
 
113
 
 
114
            /* The following example is derived from a problem report
 
115
               against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>.  */
 
116
            memset (&regex, 0, sizeof regex);
 
117
            s = re_compile_pattern ("[an\371]*n", 7, &regex);
 
118
            if (s)
 
119
              return 1;
 
120
 
 
121
            /* This should match, but does not for glibc-2.2.1.  */
 
122
            if (re_match (&regex, "an", 2, 0, &regs) != 2)
 
123
              return 1;
 
124
 
 
125
            memset (&regex, 0, sizeof regex);
 
126
            s = re_compile_pattern ("x", 1, &regex);
 
127
            if (s)
 
128
              return 1;
 
129
 
 
130
            /* glibc-2.2.93 does not work with a negative RANGE argument.  */
 
131
            if (re_search (&regex, "wxy", 3, 2, -2, &regs) != 1)
 
132
              return 1;
 
133
 
 
134
            /* The version of regex.c in older versions of gnulib
 
135
               ignored RE_ICASE.  Detect that problem too.  */
 
136
            re_set_syntax (RE_SYNTAX_EMACS | RE_ICASE);
 
137
            memset (&regex, 0, sizeof regex);
 
138
            s = re_compile_pattern ("x", 1, &regex);
 
139
            if (s)
 
140
              return 1;
 
141
 
 
142
            if (re_search (&regex, "WXY", 3, 0, 3, &regs) < 0)
 
143
              return 1;
 
144
 
 
145
            /* Catch a bug reported by Vin Shelton in
 
146
               http://lists.gnu.org/archive/html/bug-coreutils/2007-06/msg00089.html
 
147
               */
 
148
            re_set_syntax (RE_SYNTAX_POSIX_BASIC
 
149
                           & ~RE_CONTEXT_INVALID_DUP
 
150
                           & ~RE_NO_EMPTY_RANGES);
 
151
            memset (&regex, 0, sizeof regex);
 
152
            s = re_compile_pattern ("[[:alnum:]_-]\\\\+$", 16, &regex);
 
153
            if (s)
 
154
              return 1;
 
155
 
 
156
            /* REG_STARTEND was added to glibc on 2004-01-15.
 
157
               Reject older versions.  */
 
158
            if (! REG_STARTEND)
 
159
              return 1;
 
160
 
 
161
#if 0
 
162
            /* It would be nice to reject hosts whose regoff_t values are too
 
163
               narrow (including glibc on hosts with 64-bit ptrdiff_t and
 
164
               32-bit int), but we should wait until glibc implements this
 
165
               feature.  Otherwise, support for equivalence classes and
 
166
               multibyte collation symbols would always be broken except
 
167
               when compiling --without-included-regex.   */
 
168
            if (sizeof (regoff_t) < sizeof (ptrdiff_t)
 
169
                || sizeof (regoff_t) < sizeof (ssize_t))
 
170
              return 1;
 
171
#endif
 
172
 
 
173
            return 0;]])],
 
174
       [gl_cv_func_re_compile_pattern_working=yes],
 
175
       [gl_cv_func_re_compile_pattern_working=no],
 
176
       dnl When crosscompiling, assume it is not working.
 
177
       [gl_cv_func_re_compile_pattern_working=no])])
 
178
    case $gl_cv_func_re_compile_pattern_working in #(
 
179
    yes) ac_use_included_regex=no;; #(
 
180
    no) ac_use_included_regex=yes;;
 
181
    esac
 
182
    ;;
 
183
  *) AC_MSG_ERROR([Invalid value for --with-included-regex: $with_included_regex])
 
184
    ;;
 
185
  esac
 
186
 
 
187
  if test $ac_use_included_regex = yes; then
 
188
    AC_DEFINE([_REGEX_LARGE_OFFSETS], [1],
 
189
      [Define if you want regoff_t to be at least as wide POSIX requires.])
 
190
    AC_DEFINE([re_syntax_options], [rpl_re_syntax_options],
 
191
      [Define to rpl_re_syntax_options if the replacement should be used.])
 
192
    AC_DEFINE([re_set_syntax], [rpl_re_set_syntax],
 
193
      [Define to rpl_re_set_syntax if the replacement should be used.])
 
194
    AC_DEFINE([re_compile_pattern], [rpl_re_compile_pattern],
 
195
      [Define to rpl_re_compile_pattern if the replacement should be used.])
 
196
    AC_DEFINE([re_compile_fastmap], [rpl_re_compile_fastmap],
 
197
      [Define to rpl_re_compile_fastmap if the replacement should be used.])
 
198
    AC_DEFINE([re_search], [rpl_re_search],
 
199
      [Define to rpl_re_search if the replacement should be used.])
 
200
    AC_DEFINE([re_search_2], [rpl_re_search_2],
 
201
      [Define to rpl_re_search_2 if the replacement should be used.])
 
202
    AC_DEFINE([re_match], [rpl_re_match],
 
203
      [Define to rpl_re_match if the replacement should be used.])
 
204
    AC_DEFINE([re_match_2], [rpl_re_match_2],
 
205
      [Define to rpl_re_match_2 if the replacement should be used.])
 
206
    AC_DEFINE([re_set_registers], [rpl_re_set_registers],
 
207
      [Define to rpl_re_set_registers if the replacement should be used.])
 
208
    AC_DEFINE([re_comp], [rpl_re_comp],
 
209
      [Define to rpl_re_comp if the replacement should be used.])
 
210
    AC_DEFINE([re_exec], [rpl_re_exec],
 
211
      [Define to rpl_re_exec if the replacement should be used.])
 
212
    AC_DEFINE([regcomp], [rpl_regcomp],
 
213
      [Define to rpl_regcomp if the replacement should be used.])
 
214
    AC_DEFINE([regexec], [rpl_regexec],
 
215
      [Define to rpl_regexec if the replacement should be used.])
 
216
    AC_DEFINE([regerror], [rpl_regerror],
 
217
      [Define to rpl_regerror if the replacement should be used.])
 
218
    AC_DEFINE([regfree], [rpl_regfree],
 
219
      [Define to rpl_regfree if the replacement should be used.])
 
220
    AC_LIBOBJ([regex])
 
221
    gl_PREREQ_REGEX
 
222
  fi
 
223
])
 
224
 
 
225
# Prerequisites of lib/regex.c and lib/regex_internal.c.
 
226
AC_DEFUN([gl_PREREQ_REGEX],
 
227
[
 
228
  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
229
  AC_REQUIRE([AC_C_INLINE])
 
230
  AC_REQUIRE([AC_C_RESTRICT])
 
231
  AC_REQUIRE([AC_TYPE_MBSTATE_T])
 
232
  AC_CHECK_HEADERS([libintl.h])
 
233
  AC_CHECK_FUNCS_ONCE([isblank iswctype wcscoll])
 
234
  AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
 
235
])