X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Femacs.c;h=fe1d119ce09e34ca65c621db2c3d48842d54e76e;hb=a1655b870904de973c366d85ebdc8adde4ef5e1e;hp=08bfa7e428259ff6649f5a639252b9d653b6ed50;hpb=ea1ea793fe6e244ef5555ed983423a204101af13;p=chise%2Fxemacs-chise.git diff --git a/src/emacs.c b/src/emacs.c index 08bfa7e..fe1d119 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA. */ #include "console.h" #include "process.h" #include "redisplay.h" +#include "frame.h" #include "sysdep.h" #include "syssignal.h" /* Always include before systty.h */ @@ -43,6 +44,15 @@ Boston, MA 02111-1307, USA. */ #include "sysfile.h" #include "systime.h" +#ifdef PDUMP +#include "dump-id.h" +#include "dumper.h" +#endif + +#ifndef SEPCHAR +#define SEPCHAR ':' +#endif + #ifdef QUANTIFY #include #endif @@ -57,13 +67,7 @@ Boston, MA 02111-1307, USA. */ #endif #ifdef TOOLTALK -#include TT_C_H_PATH -#endif - -#ifdef APOLLO -#ifndef APOLLO_SR10 -#include -#endif +#include TT_C_H_FILE #endif #if defined (WINDOWSNT) @@ -73,7 +77,7 @@ Boston, MA 02111-1307, USA. */ /* For PATH_EXEC */ #include -#ifdef HEAP_IN_DATA +#if defined (HEAP_IN_DATA) && !defined(PDUMP) void report_sheap_usage (int die_if_pure_storage_exceeded); #endif @@ -155,6 +159,7 @@ Lisp_Object Vconfigure_info_directory; Lisp_Object Vsite_directory, Vconfigure_site_directory; Lisp_Object Vconfigure_info_path; Lisp_Object Vinternal_error_checking; +Lisp_Object Vmail_lock_methods, Vconfigure_mail_lock_method; Lisp_Object Vpath_separator; /* The default base directory XEmacs is installed under. */ @@ -175,7 +180,7 @@ int display_arg; /* Type of display specified. We cannot use a Lisp symbol here because Lisp symbols may not initialized at the time that we set this variable. */ -CONST char *display_use; +const char *display_use; /* If non-zero, then the early error handler will only print the error message and exit. */ @@ -217,6 +222,10 @@ int inhibit_early_packages; /* Nonzero means don't load package autoloads at startup */ int inhibit_autoloads; +/* Nonzero means don't load the dump file (ignored if not PDUMP) */ + +int nodumpfile; + /* Nonzero means print debug information about path searching */ int debug_paths; @@ -238,6 +247,14 @@ static int fatal_error_code; /* Nonzero if handling a fatal error already */ static int fatal_error_in_progress; +static JMP_BUF run_temacs_catch; + +static int run_temacs_argc; +static char **run_temacs_argv; +static char *run_temacs_args; +static size_t run_temacs_argv_size; +static size_t run_temacs_args_size; + static void shut_down_emacs (int sig, Lisp_Object stuff); /* Handle bus errors, illegal instruction, etc. */ @@ -260,7 +277,7 @@ fatal_error_signal (int sig) # if 0 /* This is evil, rarely useful, and causes grief in some cases. */ /* Check for Sun-style stack printing via /proc */ { - CONST char *pstack = "/usr/proc/bin/pstack"; + const char *pstack = "/usr/proc/bin/pstack"; if (access (pstack, X_OK) == 0) { char buf[100]; @@ -278,61 +295,6 @@ fatal_error_signal (int sig) } -DOESNT_RETURN -fatal (CONST char *fmt, ...) -{ - va_list args; - va_start (args, fmt); - - fprintf (stderr, "\nXEmacs: "); - vfprintf (stderr, GETTEXT (fmt), args); - fprintf (stderr, "\n"); - - va_end (args); - fflush (stderr); - exit (1); -} - -/* #### The following two functions should be replaced with - calls to emacs_doprnt_*() functions, with STREAM set to send out - to stdout or stderr. This is the only way to ensure that - I18N3 works properly (many implementations of the *printf() - functions, including the ones included in glibc, do not implement - the %###$ argument-positioning syntax). */ - -/* exactly equivalent to fprintf (stderr, fmt, ...) except that it calls - GETTEXT on the format string. */ - -int -stderr_out (CONST char *fmt, ...) -{ - int retval; - va_list args; - va_start (args, fmt); - - retval = vfprintf (stderr, GETTEXT (fmt), args); - - va_end (args); - /* fflush (stderr); */ - return retval; -} - -/* exactly equivalent to fprintf (stdout, fmt, ...) except that it calls - GETTEXT on the format string. */ - -int -stdout_out (CONST char *fmt, ...) -{ - int retval; - va_list args; - va_start (args, fmt); - - retval = vfprintf (stdout, GETTEXT (fmt), args); - - va_end (args); - return retval; -} - #ifdef SIGDANGER /* Handler for SIGDANGER. */ @@ -369,7 +331,7 @@ make_arg_list_1 (int argc, char **argv, int skip_args) /* Do not trust to what crt0 has stuffed into argv[0] */ char full_exe_path [MAX_PATH]; GetModuleFileName (NULL, full_exe_path, MAX_PATH); - result = Fcons (build_ext_string (full_exe_path, FORMAT_FILENAME), + result = Fcons (build_ext_string (full_exe_path, Qfile_name), result); #if defined(HAVE_SHLIB) (void)dll_init(full_exe_path); @@ -377,7 +339,8 @@ make_arg_list_1 (int argc, char **argv, int skip_args) } else #endif - result = Fcons (build_ext_string (argv [i], FORMAT_FILENAME), result); + result = Fcons (build_ext_string (argv [i], Qfile_name), + result); } } return result; @@ -401,10 +364,12 @@ make_argc_argv (Lisp_Object argv_list, int *argc, char ***argv) for (i = 0, next = argv_list; i < n; i++, next = XCDR (next)) { - CONST char *temp; + const char *temp; CHECK_STRING (XCAR (next)); - GET_C_STRING_EXT_DATA_ALLOCA (XCAR (next), FORMAT_OS, temp); + TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (next), + C_STRING_ALLOCA, temp, + Qnative); (*argv) [i] = xstrdup (temp); } (*argv) [n] = 0; @@ -570,7 +535,7 @@ main_1 (int argc, char **argv, char **envp, int restart) * But hey, it solves all NS related memory problems, so who's * complaining? */ if (initialized && malloc_jumpstart (malloc_cookie) != 0) - fprintf (stderr, "malloc jumpstart failed!\n"); + stderr_out ("malloc jumpstart failed!\n"); #endif /* NeXT */ /* @@ -588,22 +553,6 @@ main_1 (int argc, char **argv, char **envp, int restart) sort_args (argc, argv); - /* Map in shared memory, if we are using that. */ -#ifdef HAVE_SHM - if (argmatch (argv, argc, "-nl", "--no-shared-memory", 6, NULL, &skip_args)) - { - map_in_data (0); - /* The shared memory was just restored, which clobbered this. */ - skip_args = 1; - } - else - { - map_in_data (1); - /* The shared memory was just restored, which clobbered this. */ - skip_args = 0; - } -#endif /* HAVE_SHM */ - #if (defined (MSDOS) && defined (EMX)) || defined (WIN32) || defined (_SCO_DS) environ = envp; #endif @@ -618,15 +567,6 @@ main_1 (int argc, char **argv, char **envp, int restart) clearerr (stdin); -#ifdef APOLLO -#ifndef APOLLO_SR10 - /* If USE_DOMAIN_ACLS environment variable exists, - use ACLs rather than UNIX modes. */ - if (egetenv ("USE_DOMAIN_ACLS")) - default_acl (USE_DEFACL); -#endif -#endif /* APOLLO */ - #if defined (HAVE_MMAP) && defined (REL_ALLOC) /* ralloc can only be used if using the GNU memory allocator. */ init_ralloc (); @@ -671,6 +611,17 @@ main_1 (int argc, char **argv, char **envp, int restart) inhibit_window_system = 1; #endif + /* Handle the -sd/--show-dump-id switch, which means show the hex dump_id and quit */ + if (argmatch (argv, argc, "-sd", "--show-dump-id", 9, NULL, &skip_args)) + { +#ifdef PDUMP + printf ("%08x\n", dump_id); +#else + printf ("*ERROR**\n"); +#endif + exit (0); + } + /* Handle the -t switch, which specifies filename to use as terminal */ { char *term; @@ -692,6 +643,12 @@ main_1 (int argc, char **argv, char **envp, int restart) } } + /* Handle the --no-dump-file/-nd switch, which means don't load the dump file (ignored when not using pdump) */ + if (argmatch (argv, argc, "-nd", "--no-dump-file", 7, NULL, &skip_args)) + { + nodumpfile = 1; + } + /* Handle -nw switch */ if (argmatch (argv, argc, "-nw", "--no-windows", 6, NULL, &skip_args)) inhibit_window_system = 1; @@ -856,8 +813,26 @@ main_1 (int argc, char **argv, char **envp, int restart) We try to do things in an order that minimizes the non-obvious dependencies between functions. */ + /* purify_flag 1 is correct even if CANNOT_DUMP. + * loadup.el will set to nil at end. */ + + purify_flag = 0; #ifdef PDUMP - initialized = restart || pdump_load (); + if (restart) + initialized = 1; + else if (nodumpfile) { + initialized = 0; + purify_flag = 1; + } else { + initialized = pdump_load (argv[0]); + if (initialized) + run_temacs_argc = -1; + else + purify_flag = 1; + } +#else + if (!initialized) + purify_flag = 1; #endif if (!initialized) @@ -871,7 +846,7 @@ main_1 (int argc, char **argv, char **envp, int restart) /* Initialize Qnil, Qt, Qunbound, and the obarray. After this, symbols can be - interned. This depends on init_alloc_once(). */ + interned. This depends on init_alloc_once_early(). */ init_symbols_once_early (); /* Declare the basic symbols pertaining to errors, @@ -886,6 +861,7 @@ main_1 (int argc, char **argv, char **envp, int restart) The *only* thing that the syms_of_*() functions are allowed to do is call one of the following three functions: + INIT_LRECORD_IMPLEMENTATION() defsymbol() defsubr() (i.e. DEFSUBR) deferror() @@ -896,9 +872,6 @@ main_1 (int argc, char **argv, char **envp, int restart) syms_of_abbrev (); syms_of_alloc (); -#ifdef HAVE_X_WINDOWS - syms_of_balloon_x (); -#endif syms_of_buffer (); syms_of_bytecode (); syms_of_callint (); @@ -912,6 +885,7 @@ main_1 (int argc, char **argv, char **envp, int restart) syms_of_data (); #ifdef DEBUG_XEMACS syms_of_debug (); + syms_of_tests (); #endif /* DEBUG_XEMACS */ syms_of_device (); #ifdef HAVE_DIALOGS @@ -945,9 +919,7 @@ main_1 (int argc, char **argv, char **envp, int restart) syms_of_glyphs (); syms_of_glyphs_eimage (); syms_of_glyphs_widget (); -#if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS) syms_of_gui (); -#endif syms_of_gutter (); syms_of_indent (); syms_of_intl (); @@ -1004,6 +976,7 @@ main_1 (int argc, char **argv, char **envp, int restart) #endif #ifdef HAVE_X_WINDOWS + syms_of_balloon_x (); syms_of_device_x (); #ifdef HAVE_DIALOGS syms_of_dialog_x (); @@ -1014,10 +987,15 @@ main_1 (int argc, char **argv, char **envp, int restart) #ifdef HAVE_MENUBARS syms_of_menubar_x (); #endif - syms_of_xselect (); + syms_of_select_x (); #if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS) syms_of_gui_x (); #endif +#ifdef HAVE_XIM +#ifdef XIM_XLIB + syms_of_input_method_xlib (); +#endif +#endif /* HAVE_XIM */ #endif /* HAVE_X_WINDOWS */ #ifdef HAVE_MS_WINDOWS @@ -1027,6 +1005,7 @@ main_1 (int argc, char **argv, char **envp, int restart) syms_of_objects_mswindows (); syms_of_select_mswindows (); syms_of_glyphs_mswindows (); + syms_of_gui_mswindows (); #ifdef HAVE_MENUBARS syms_of_menubar_mswindows (); #endif @@ -1088,6 +1067,14 @@ main_1 (int argc, char **argv, char **envp, int restart) syms_of_eldap (); #endif +#ifdef HAVE_GPM + syms_of_gpmevent (); +#endif + +#ifdef HAVE_POSTGRESQL + syms_of_postgresql (); +#endif + /* Now create the subtypes for the types that have them. We do this before the vars_*() because more symbols may get initialized here. */ @@ -1268,7 +1255,7 @@ main_1 (int argc, char **argv, char **envp, int restart) using a global variable that has been initialized earlier on in the same function - Any of the object-creating functions on alloc.c: e.g. + Any of the object-creating functions in alloc.c: e.g. make_pure_*() make_string() @@ -1292,9 +1279,6 @@ main_1 (int argc, char **argv, char **envp, int restart) vars_of_abbrev (); vars_of_alloc (); -#ifdef HAVE_X_WINDOWS - vars_of_balloon_x (); -#endif vars_of_buffer (); vars_of_bytecode (); vars_of_callint (); @@ -1306,6 +1290,7 @@ main_1 (int argc, char **argv, char **envp, int restart) vars_of_data (); #ifdef DEBUG_XEMACS vars_of_debug (); + vars_of_tests (); #endif vars_of_console_stream (); vars_of_device (); @@ -1343,9 +1328,7 @@ main_1 (int argc, char **argv, char **envp, int restart) vars_of_glyphs (); vars_of_glyphs_eimage (); vars_of_glyphs_widget (); -#if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS) vars_of_gui (); -#endif vars_of_gutter (); vars_of_indent (); vars_of_insdel (); @@ -1373,6 +1356,7 @@ main_1 (int argc, char **argv, char **envp, int restart) vars_of_module (); #endif #ifdef WINDOWSNT + vars_of_nt (); vars_of_ntproc (); #endif vars_of_objects (); @@ -1414,6 +1398,7 @@ main_1 (int argc, char **argv, char **envp, int restart) #endif #ifdef HAVE_X_WINDOWS + vars_of_balloon_x (); vars_of_device_x (); #ifdef HAVE_DIALOGS vars_of_dialog_x (); @@ -1424,14 +1409,14 @@ main_1 (int argc, char **argv, char **envp, int restart) vars_of_menubar_x (); #endif vars_of_objects_x (); - vars_of_xselect (); + vars_of_select_x (); #ifdef HAVE_SCROLLBARS vars_of_scrollbar_x (); #endif #if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS) vars_of_gui_x (); #endif -#endif +#endif /* HAVE_X_WINDOWS */ #ifdef HAVE_MS_WINDOWS vars_of_device_mswindows (); @@ -1483,6 +1468,14 @@ main_1 (int argc, char **argv, char **envp, int restart) vars_of_eldap (); #endif +#ifdef HAVE_POSTGRESQL + vars_of_postgresql(); +#endif + +#ifdef HAVE_GPM + vars_of_gpmevent (); +#endif + /* Now initialize any specifier variables. We do this later because it has some dependence on the vars initialized above. @@ -1532,7 +1525,7 @@ main_1 (int argc, char **argv, char **envp, int restart) earlier. The second may also depend on the first. */ complex_vars_of_mule_charset (); #endif -#if defined(FILE_CODING) +#ifdef FILE_CODING complex_vars_of_file_coding (); #endif @@ -1617,6 +1610,7 @@ main_1 (int argc, char **argv, char **envp, int restart) #ifdef PDUMP } else if (!restart) { reinit_alloc_once_early (); + reinit_symbols_once_early (); reinit_opaque_once_early (); reinit_console_type_create_stream (); @@ -1679,6 +1673,7 @@ main_1 (int argc, char **argv, char **envp, int restart) reinit_vars_of_event_stream (); reinit_vars_of_events (); reinit_vars_of_extents (); + reinit_vars_of_fileio (); reinit_vars_of_font_lock (); reinit_vars_of_glyphs (); reinit_vars_of_glyphs_widget (); @@ -1686,12 +1681,13 @@ main_1 (int argc, char **argv, char **envp, int restart) reinit_vars_of_lread (); reinit_vars_of_lstream (); reinit_vars_of_minibuf (); +#ifdef HAVE_SHLIB reinit_vars_of_module (); +#endif reinit_vars_of_objects (); reinit_vars_of_print (); reinit_vars_of_redisplay (); reinit_vars_of_search (); - reinit_vars_of_scrollbar_x (); reinit_vars_of_undo (); reinit_vars_of_window (); @@ -1701,14 +1697,17 @@ main_1 (int argc, char **argv, char **envp, int restart) #ifdef HAVE_X_WINDOWS reinit_vars_of_device_x (); +#ifdef HAVE_SCROLLBARS + reinit_vars_of_scrollbar_x (); +#endif #ifdef HAVE_MENUBARS reinit_vars_of_menubar_x (); #endif - reinit_vars_of_xselect (); + reinit_vars_of_select_x (); #if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS) reinit_vars_of_gui_x (); #endif -#endif +#endif /* HAVE_X_WINDOWS */ #if defined(MULE) && defined(HAVE_WNN) reinit_vars_of_mule_wnn (); @@ -1717,7 +1716,7 @@ main_1 (int argc, char **argv, char **envp, int restart) reinit_complex_vars_of_buffer (); reinit_complex_vars_of_console (); reinit_complex_vars_of_minibuf (); -#endif +#endif /* PDUMP */ } @@ -1775,6 +1774,7 @@ main_1 (int argc, char **argv, char **envp, int restart) init_redisplay (); /* Determine terminal type. init_sys_modes uses results */ + init_frame (); init_event_stream (); /* Set up so we can get user input. */ init_macros (); /* set up so we can run macros. */ init_editfns (); /* Determine the name of the user we're running as */ @@ -1788,7 +1788,7 @@ main_1 (int argc, char **argv, char **envp, int restart) #ifdef HAVE_TTY init_device_tty (); #endif - init_console_stream (); /* Create the first console */ + init_console_stream (restart); /* Create the first console */ /* try to get the actual pathname of the exec file we are running */ if (!restart) @@ -1882,17 +1882,18 @@ main_1 (int argc, char **argv, char **envp, int restart) struct standard_args { - CONST char * CONST name; - CONST char * CONST longname; + const char *name; + const char *longname; int priority; int nargs; }; -static struct standard_args standard_args[] = +static const struct standard_args standard_args[] = { /* Handled by main_1 above: */ - { "-nl", "--no-shared-memory", 100, 0 }, - { "-t", "--terminal", 95, 1 }, + { "-sd", "--show-dump-id", 105, 0 }, + { "-t", "--terminal", 100, 1 }, + { "-nd", "--no-dump-file", 95, 0 }, { "-nw", "--no-windows", 90, 0 }, { "-batch", "--batch", 85, 0 }, { "-debug-paths", "--debug-paths", 82, 0 }, @@ -2087,14 +2088,6 @@ sort_args (int argc, char **argv) xfree (priority); } -static JMP_BUF run_temacs_catch; - -static int run_temacs_argc; -static char **run_temacs_argv; -static char *run_temacs_args; -static size_t run_temacs_argv_size; -static size_t run_temacs_args_size; - DEFUN ("running-temacs-p", Frunning_temacs_p, 0, 0, 0, /* True if running temacs. This means we are in the dumping stage. This is false during normal execution of the `xemacs' program, and @@ -2122,11 +2115,11 @@ Do not call this. It will reinitialize your XEmacs. You'll be sorry. (int nargs, Lisp_Object *args)) { int ac; - CONST Extbyte *wampum; + const Extbyte *wampum; int namesize; int total_len; Lisp_Object orig_invoc_name = Fcar (Vcommand_line_args); - CONST Extbyte **wampum_all = alloca_array (CONST Extbyte *, nargs); + const Extbyte **wampum_all = alloca_array (const Extbyte *, nargs); int *wampum_all_len = alloca_array (int, nargs); assert (!gc_in_progress); @@ -2137,16 +2130,17 @@ Do not call this. It will reinitialize your XEmacs. You'll be sorry. /* Need to convert the orig_invoc_name and all of the arguments to external format. */ - GET_STRING_EXT_DATA_ALLOCA (orig_invoc_name, FORMAT_OS, wampum, - namesize); + TO_EXTERNAL_FORMAT (LISP_STRING, orig_invoc_name, + ALLOCA, (wampum, namesize), + Qnative); namesize++; for (ac = 0, total_len = namesize; ac < nargs; ac++) { CHECK_STRING (args[ac]); - GET_STRING_EXT_DATA_ALLOCA (args[ac], FORMAT_OS, - wampum_all[ac], - wampum_all_len[ac]); + TO_EXTERNAL_FORMAT (LISP_STRING, args[ac], + ALLOCA, (wampum_all[ac], wampum_all_len[ac]), + Qnative); wampum_all_len[ac]++; total_len += wampum_all_len[ac]; } @@ -2168,7 +2162,7 @@ Do not call this. It will reinitialize your XEmacs. You'll be sorry. unbind_to (0, Qnil); /* this closes loadup.el */ purify_flag = 0; run_temacs_argc = nargs + 1; -#ifdef HEAP_IN_DATA +#if defined (HEAP_IN_DATA) && !defined(PDUMP) report_sheap_usage (0); #endif LONGJMP (run_temacs_catch, 1); @@ -2274,7 +2268,7 @@ main (int argc, char **argv, char **envp) int rc = malloc_set_state (malloc_state_ptr); if (rc != 0) { - fprintf (stderr, "malloc_set_state failed, rc = %d\n", rc); + stderr_out ("malloc_set_state failed, rc = %d\n", rc); abort (); } #if 0 @@ -2436,12 +2430,16 @@ shut_down_emacs (int sig, Lisp_Object stuff) ("Your files have been auto-saved.\n" "Use `M-x recover-session' to recover them.\n" "\n" + "If you have access to the PROBLEMS file that came with your\n" + "version of XEmacs, please check to see if your crash is described\n" + "there, as there may be a workaround available.\n" #ifdef INFODOCK - "Please report this bug by selecting `Report-Bug' in the InfoDock\n" - "menu.\n" + "Otherwise, please report this bug by selecting `Report-Bug'\n" + "in the InfoDock menu.\n" #else - "Please report this bug by running the send-pr script included\n" - "with XEmacs, or selecting `Send Bug Report' from the help menu.\n" + "Otherwise, please report this bug by running the send-pr\n" + "script included with XEmacs, or selecting `Send Bug Report'\n" + "from the help menu.\n" "As a last resort send ordinary email to `crashes@xemacs.org'.\n" #endif "*MAKE SURE* to include the information in the command\n" @@ -2456,7 +2454,7 @@ shut_down_emacs (int sig, Lisp_Object stuff) "\n" " gdb "); { - CONST char *name; + const char *name; char *dir = 0; /* Now try to determine the actual path to the executable, @@ -2503,50 +2501,11 @@ shut_down_emacs (int sig, Lisp_Object stuff) #ifndef CANNOT_DUMP -/* Nothing like this can be implemented on an Apollo. - What a loss! */ +#if !defined(PDUMP) || !defined(SYSTEM_MALLOC) extern char my_edata[]; - -#ifdef HAVE_SHM - -DEFUN ("dump-emacs-data", Fdump_emacs_data, 1, 1, 0, /* -Dump current state of XEmacs into data file FILENAME. -This function exists on systems that use HAVE_SHM. -*/ - (intoname)) -{ - /* This function can GC */ - int opurify; - struct gcpro gcpro1; - GCPRO1 (intoname); - - CHECK_STRING (intoname); - intoname = Fexpand_file_name (intoname, Qnil); - - opurify = purify_flag; - purify_flag = 0; - - fflush (stderr); - fflush (stdout); - - disksave_object_finalization (); - release_breathing_space (); - - /* Tell malloc where start of impure now is */ - /* Also arrange for warnings when nearly out of space. */ -#ifndef SYSTEM_MALLOC - memory_warnings (my_edata, malloc_warning); #endif - UNGCPRO; - map_out_data (XSTRING_DATA (intoname)); - - purify_flag = opurify; - - return Qnil; -} -#else /* not HAVE_SHM */ extern void disable_free_hook (void); DEFUN ("dump-emacs", Fdump_emacs, 2, 2, 0, /* @@ -2587,7 +2546,7 @@ and announce itself normally when it is run. opurify = purify_flag; purify_flag = 0; -#ifdef HEAP_IN_DATA +#if defined (HEAP_IN_DATA) && !defined(PDUMP) report_sheap_usage (1); #endif @@ -2623,9 +2582,14 @@ and announce itself normally when it is run. char *intoname_ext; char *symname_ext; - GET_C_STRING_FILENAME_DATA_ALLOCA (intoname, intoname_ext); + TO_EXTERNAL_FORMAT (LISP_STRING, intoname, + C_STRING_ALLOCA, intoname_ext, + Qfile_name); + if (STRINGP (symname)) - GET_C_STRING_FILENAME_DATA_ALLOCA (symname, symname_ext); + TO_EXTERNAL_FORMAT (LISP_STRING, symname, + C_STRING_ALLOCA, symname_ext, + Qfile_name); else symname_ext = 0; @@ -2657,26 +2621,21 @@ and announce itself normally when it is run. return Qnil; } -#endif /* not HAVE_SHM */ - #endif /* not CANNOT_DUMP */ -#ifndef SEPCHAR -#define SEPCHAR ':' -#endif /* Split STRING into a list of substrings. The substrings are the parts of original STRING separated by SEPCHAR. */ static Lisp_Object -split_string_by_emchar_1 (CONST Bufbyte *string, Bytecount size, +split_string_by_emchar_1 (const Bufbyte *string, Bytecount size, Emchar sepchar) { Lisp_Object result = Qnil; - CONST Bufbyte *end = string + size; + const Bufbyte *end = string + size; while (1) { - CONST Bufbyte *p = string; + const Bufbyte *p = string; while (p < end) { if (charptr_emchar (p) == sepchar) @@ -2696,33 +2655,32 @@ split_string_by_emchar_1 (CONST Bufbyte *string, Bytecount size, } /* The same as the above, except PATH is an external C string (it is - converted as FORMAT_FILENAME), and sepchar is hardcoded to SEPCHAR + converted using Qfile_name), and sepchar is hardcoded to SEPCHAR (':' or whatever). */ Lisp_Object -decode_path (CONST char *path) +decode_path (const char *path) { - int len; + Bytecount newlen; Bufbyte *newpath; if (!path) return Qnil; - GET_C_CHARPTR_INT_FILENAME_DATA_ALLOCA (path, newpath); + TO_INTERNAL_FORMAT (C_STRING, path, ALLOCA, (newpath, newlen), Qfile_name); - len = strlen ((const char *) newpath); /* #### Does this make sense? It certainly does for decode_env_path(), but it looks dubious here. Does any code depend on decode_path("") returning nil instead of an empty string? */ - if (!len) + if (!newlen) return Qnil; - return split_string_by_emchar_1 (newpath, (Bytecount)len, SEPCHAR); + return split_string_by_emchar_1 (newpath, newlen, SEPCHAR); } Lisp_Object -decode_env_path (CONST char *evarname, CONST char *default_) +decode_env_path (const char *evarname, const char *default_) { - CONST char *path = 0; + const char *path = 0; if (evarname) path = egetenv (evarname); if (!path) @@ -2785,7 +2743,7 @@ Non-nil return value means XEmacs is running without interactive terminal. /* This highly dubious kludge ... shut up Jamie, I'm tired of your slagging. */ DOESNT_RETURN -assert_failed (CONST char *file, int line, CONST char *expr) +assert_failed (const char *file, int line, const char *expr) { stderr_out ("Fatal error: assertion failed, file %s, line %d, %s\n", file, line, expr); @@ -2833,11 +2791,7 @@ void syms_of_emacs (void) { #ifndef CANNOT_DUMP -#ifdef HAVE_SHM - DEFSUBR (Fdump_emacs_data); -#else DEFSUBR (Fdump_emacs); -#endif #endif /* !CANNOT_DUMP */ DEFSUBR (Frun_emacs_from_temacs); @@ -3034,6 +2988,8 @@ typecheck - check types strictly, aborting in case of error; malloc - check operation of malloc; gc - check garbage collection; bufpos - check buffer positions. + +quick-build - user has requested the "quick-build" configure option. */ ); Vinternal_error_checking = Qnil; #ifdef ERROR_CHECK_EXTENTS @@ -3056,6 +3012,50 @@ bufpos - check buffer positions. Vinternal_error_checking = Fcons (intern ("bufpos"), Vinternal_error_checking); #endif +#ifdef QUICK_BUILD + Vinternal_error_checking = Fcons (intern ("quick-build"), + Vinternal_error_checking); +#endif + + DEFVAR_CONST_LISP ("mail-lock-methods", &Vmail_lock_methods /* +Mail spool locking methods supported by this instance of XEmacs. +This is a list of symbols. Each of the symbols is one of the +following: dot, lockf, flock, locking, mmdf. +*/ ); + { + Vmail_lock_methods = Qnil; + Vmail_lock_methods = Fcons (intern ("dot"), Vmail_lock_methods); +#ifdef HAVE_LOCKF + Vmail_lock_methods = Fcons (intern ("lockf"), Vmail_lock_methods); +#endif +#ifdef HAVE_FLOCK + Vmail_lock_methods = Fcons (intern ("flock"), Vmail_lock_methods); +#endif +#ifdef HAVE_MMDF + Vmail_lock_methods = Fcons (intern ("mmdf"), Vmail_lock_methods); +#endif +#ifdef HAVE_LOCKING + Vmail_lock_methods = Fcons (intern ("locking"), Vmail_lock_methods); +#endif + } + + DEFVAR_CONST_LISP ("configure-mail-lock-method", &Vconfigure_mail_lock_method /* +Mail spool locking method suggested by configure. This is one +of the symbols in MAIL-LOCK-METHODS. +*/ ); + { +#if defined(MAIL_LOCK_FLOCK) && defined(HAVE_FLOCK) + Vconfigure_mail_lock_method = intern("flock"); +#elif defined(MAIL_LOCK_LOCKF) && defined(HAVE_LOCKF) + Vconfigure_mail_lock_method = intern("lockf"); +#elif defined(MAIL_LOCK_MMDF) && defined(HAVE_MMDF) + Vconfigure_mail_lock_method = intern("mmdf"); +#elif defined(MAIL_LOCK_LOCKING) && defined(HAVE_LOCKING) + Vconfigure_mail_lock_method = intern("locking"); +#else + Vconfigure_mail_lock_method = intern("dot"); +#endif + } DEFVAR_LISP ("path-separator", &Vpath_separator /* The directory separator in search paths, as a string. @@ -3154,7 +3154,8 @@ configure's idea of what the package path will be. *Directory of architecture-independent files that come with XEmacs, intended for XEmacs to use. Use of this variable in new code is almost never correct. See the -function `locate-data-directory' and the variable `data-directory-list'. +functions `locate-data-file' and `locate-data-directory' and the variable +`data-directory-list'. */ ); Vdata_directory = Qnil;