Update from libc.
authorJim Meyering <jim@meyering.net>
Sat, 28 Oct 2000 07:15:32 +0000 (07:15 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 28 Oct 2000 07:15:32 +0000 (07:15 +0000)
lib/regex.c
lib/regex.h

index 35d778d..25a219e 100644 (file)
 /* This is for other GNU distributions with internationalized messages.  */
 #if HAVE_LIBINTL_H || defined _LIBC
 # include <libintl.h>
+# ifdef _LIBC
+#  undef gettext
+#  define gettext(msgid) __dcgettext ("libc", msgid, LC_MESSAGES)
+# endif
 #else
 # define gettext(msgid) (msgid)
 #endif
@@ -2724,7 +2728,10 @@ regex_compile (pattern, size, syntax, bufp)
                            if (c1 == 1)
                              range_start = extra[idx];
                            while (c1-- > 0)
-                             SET_LIST_BIT (extra[idx++]);
+                             {
+                               SET_LIST_BIT (extra[idx]);
+                               ++idx;
+                             }
                          }
 #endif
                        had_char_class = false;
index 5edeff3..47f4af7 100644 (file)
@@ -513,13 +513,31 @@ extern int re_exec _RE_ARGS ((const char *));
 # endif
 #endif
 
+/* GCC 2.95 and later have "__restrict"; C99 compilers have
+   "restrict", and "configure" may have defined "restrict".  */
+#ifndef __restrict
+# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
+#  if defined restrict || 199901L <= __STDC_VERSION__
+#   define __restrict restrict
+#  else
+#   define __restrict
+#  endif
+# endif
+/* For now unconditionally define __restrict_arr to expand to nothing.
+   Ideally we would have a test for the compiler which allows defining
+   it to restrict.  */
+# define __restrict_arr
+#endif
+
 /* POSIX compatibility.  */
-extern int regcomp _RE_ARGS ((regex_t *__preg, const char *__pattern,
+extern int regcomp _RE_ARGS ((regex_t *__restrict __preg,
+                             const char *__restrict __pattern,
                              int __cflags));
 
-extern int regexec _RE_ARGS ((const regex_t *__preg,
-                             const char *__string, size_t __nmatch,
-                             regmatch_t __pmatch[], int __eflags));
+extern int regexec _RE_ARGS ((const regex_t *__restrict __preg,
+                             const char *__restrict __string, size_t __nmatch,
+                             regmatch_t __pmatch[__restrict_arr],
+                             int __eflags));
 
 extern size_t regerror _RE_ARGS ((int __errcode, const regex_t *__preg,
                                  char *__errbuf, size_t __errbuf_size));