comparison src/regex.c @ 2500:3d8143fc88e1

[xemacs-hg @ 2005-01-24 23:33:30 by ben] get working with VC7 config.inc.samp: Declare OPTIONAL_LIBRARY_DIR as root of library directories. Redo all graphics library defaults to mirror the versions and directories in the current binary aux distribution on xemacs web site. Enable TIFF and COMPFACE by default since you can now compile with them and binary libs are provided. xemacs.mak: Put our own directories first in case of conflict (e.g. config.h in compface). xemacs.mak: Use MSVCRT to avoid link problems. s/windowsnt.h: bytecode.c, print.c: Add casts to avoid warning. compiler.h: Add MSC_VERSION and include definitions of DOESNT_RETURN and friends here, like for GCC. Need different definitions for VC7 and VC6. s/windowsnt.h: Remove stuff moved to compiler.h. Disable warning 4646 ("function declared with __declspec(noreturn) has non-void return type") on VC7 since lots of Lisp primitives trigger this and there is no easy way to kludge around the warning. glyphs-eimage.c: Some really nasty hacks to allow TIFF and JPEG to both be compiled. #### The better solution is to move the TIFF and JPEG code to different files. glyphs-msw.c: Define __STDC__ to avoid problems with compface.h. intl-auto-encap-win32.c, intl-auto-encap-win32.h, intl-encap-win32.c, syswindows.h: Those wankers at Microsoft cannot leave well enough alone. Various functions change parameter types semi-randomly between VC6 and VC7, so we need to include our own versions that can handle both kinds with appropriate casting. EmacsFrame.c, EmacsShell-sub.c, EmacsShell.c, alloc.c, alloca.c, buffer.c, bytecode.c, charset.h, chartab.c, cm.c, console-stream.c, console.c, data.c, debug.h, device-msw.c, device-tty.c, device-x.c, doprnt.c, dumper.c, dynarr.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, fileio.c, fns.c, font-lock.c, frame-gtk.c, frame-x.c, frame.c, free-hook.c, gccache-gtk.c, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-x.c, glyphs.c, gtk-glue.c, gutter.c, input-method-xlib.c, insdel.c, intl-win32.c, keymap.c, lisp.h, lread.c, lstream.c, macros.c, malloc.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, mule-coding.c, native-gtk-toolbar.c, number.c, objects-msw.c, objects.c, print.c, process-nt.c, process-unix.c, process.c, ralloc.c, rangetab.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, regex.c, scrollbar-gtk.c, scrollbar-x.c, search.c, select-x.c, signal.c, specifier.c, specifier.h, strftime.c, sunplay.c, symbols.c, sysdep.c, sysproc.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, ui-gtk.c, unexnt.c, unicode.c, win32.c, window.c, xgccache.c, s/windowsnt.h: abort() -> ABORT(). Eliminate preprocessor games with abort() since it creates huge problems in VC7, solvable only by including massive amounts of files in every compile (and not worth it).
author ben
date Mon, 24 Jan 2005 23:34:34 +0000
parents ab71ad6ff3dd
children cd00e5eeb22a
comparison
equal deleted inserted replaced
2499:4c5ee4d2e921 2500:3d8143fc88e1
79 #include <sys/types.h> 79 #include <sys/types.h>
80 #include <stddef.h> /* needed for ptrdiff_t under Solaris */ 80 #include <stddef.h> /* needed for ptrdiff_t under Solaris */
81 #include <string.h> 81 #include <string.h>
82 82
83 #include "compiler.h" /* Get compiler-specific definitions like UNUSED */ 83 #include "compiler.h" /* Get compiler-specific definitions like UNUSED */
84
85 #define ABORT abort
84 86
85 /* If we are not linking with Emacs proper, 87 /* If we are not linking with Emacs proper,
86 we can't use the relocating allocator 88 we can't use the relocating allocator
87 even if config.h says that we can. */ 89 even if config.h says that we can. */
88 #undef REGEX_REL_ALLOC 90 #undef REGEX_REL_ALLOC
291 of our string pointers in re_match_2_internal() and re_search_2(). 293 of our string pointers in re_match_2_internal() and re_search_2().
292 However, if malloc() or alloca() happens and we don't know about it, 294 However, if malloc() or alloca() happens and we don't know about it,
293 we could still be screwed. So we set up a system where we indicate all 295 we could still be screwed. So we set up a system where we indicate all
294 places where we are prepared for malloc() or alloca(), and in any 296 places where we are prepared for malloc() or alloca(), and in any
295 other circumstances, calls to those functions (from anywhere inside of 297 other circumstances, calls to those functions (from anywhere inside of
296 XEmacs!) will abort(). We do this even when REL_ALLOC is not defined 298 XEmacs!) will ABORT(). We do this even when REL_ALLOC is not defined
297 so that we catch these problems sooner, since many developers and beta 299 so that we catch these problems sooner, since many developers and beta
298 testers will not be running with REL_ALLOC. */ 300 testers will not be running with REL_ALLOC. */
299 int regex_malloc_disallowed; 301 int regex_malloc_disallowed;
300 #define BEGIN_REGEX_MALLOC_OK() regex_malloc_disallowed = 0 302 #define BEGIN_REGEX_MALLOC_OK() regex_malloc_disallowed = 0
301 #define END_REGEX_MALLOC_OK() regex_malloc_disallowed = 1 303 #define END_REGEX_MALLOC_OK() regex_malloc_disallowed = 1
4142 p += 2; 4144 p += 2;
4143 continue; 4145 continue;
4144 4146
4145 4147
4146 default: 4148 default:
4147 abort (); /* We have listed all the cases. */ 4149 ABORT (); /* We have listed all the cases. */
4148 } /* switch *p++ */ 4150 } /* switch *p++ */
4149 4151
4150 /* Getting here means we have found the possible starting 4152 /* Getting here means we have found the possible starting
4151 characters for one path of the pattern -- and that the empty 4153 characters for one path of the pattern -- and that the empty
4152 string does not match. We need not follow this path further. 4154 string does not match. We need not follow this path further.
6345 d++; 6347 d++;
6346 break; 6348 break;
6347 #endif /* emacs */ 6349 #endif /* emacs */
6348 6350
6349 default: 6351 default:
6350 abort (); 6352 ABORT ();
6351 } 6353 }
6352 continue; /* Successfully executed one pattern command; keep going. */ 6354 continue; /* Successfully executed one pattern command; keep going. */
6353 6355
6354 6356
6355 /* We goto here if a matching operation fails. */ 6357 /* We goto here if a matching operation fails. */
6971 sizeof (re_error_msgid[0]))) 6973 sizeof (re_error_msgid[0])))
6972 /* Only error codes returned by the rest of the code should be passed 6974 /* Only error codes returned by the rest of the code should be passed
6973 to this routine. If we are given anything else, or if other regex 6975 to this routine. If we are given anything else, or if other regex
6974 code generates an invalid error code, then the program has a bug. 6976 code generates an invalid error code, then the program has a bug.
6975 Dump core so we can fix it. */ 6977 Dump core so we can fix it. */
6976 abort (); 6978 ABORT ();
6977 6979
6978 msg = gettext (re_error_msgid[errcode]); 6980 msg = gettext (re_error_msgid[errcode]);
6979 6981
6980 msg_size = strlen (msg) + 1; /* Includes the null. */ 6982 msg_size = strlen (msg) + 1; /* Includes the null. */
6981 6983