• Paul Eggert's avatar
    Use Gnulib regex for lib-src · d904cc83
    Paul Eggert authored
    Emacs regular expressions forked from everyone else long ago.
    This makes it official and should allow simplification later.
    etags.c now uses the glibc regex API, falling back on a
    Gnulib-supplied substitute lib/regex.c if necessary.
    Emacs proper now uses its own regular expression module.
    Although this patch may look dauntingly large, most of it
    was generated automatically by admin/merge-gnulib
    and contains an exact copy of the glibc regex source,
    and the by-hand changes do not grow the Emacs source code.
    * admin/merge-gnulib (GNULIB_MODULES): Add regex.
    (AVOIDED_MODULES): Add btowc, langinfo, lock, mbrtowc, mbsinit,
    nl_langinfo, wchar, wcrtomb, wctype-h.
    * lib-src/Makefile.in (regex-emacs.o): Remove; Gnulib does it now.
    (etags_deps, etags_libs): Remove regex-emacs.o.
    * lib-src/etags.c: Go back to including regex.h.
    (add_regex): Use unsigned char translation array,
    since glibc regex requires that.
    * lib/Makefile.in (not_emacs_OBJECTS, for_emacs_OBJECTS): New macros.
    (libegnu_a_OBJECTS): Use them, to avoid building e-regex.o.
    * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
    * lib/regcomp.c, lib/regex.c, lib/regex.h, lib/regex_internal.c:
    * lib/regex_internal.h, lib/regexec.c, m4/builtin-expect.m4:
    * m4/eealloc.m4, m4/glibc21.m4, m4/mbstate_t.m4, m4/regex.m4:
    New files, copied from Gnulib.
    * src/regex-emacs.h, src/conf_post.h:
    (RE_TRANSLATE_TYPE, RE_TRANSLATE, RE_TRANSLATE_P):
    Move from src/conf_post.h to src/regex-emacs.h,
    so that they don’t interfere with compiling lib/regex.c.
    d904cc83
regex.h 24.1 KB