#include TT_C_H_FILE
#endif
-#if defined (WINDOWSNT)
-#include <windows.h>
+#if defined (WIN32_NATIVE)
+#include "nt.h"
#endif
/* For PATH_EXEC */
/* If nonzero, set XEmacs to run at this priority. This is also used
in child_setup and sys_suspend to make sure subshells run at normal
priority. */
-int emacs_priority;
+Fixnum emacs_priority;
/* Some FSF junk with running_asynch_code, to preserve the match
data. Not necessary because we don't call process filters
/* Number of bytes of writable memory we can expect to be able to get */
unsigned int lim_data;
+/* WARNING!
+
+ Some LISP-visible command-line options are set by XEmacs _before_ the
+ data is dumped in building a --pdump XEmacs, but used _after_ it is
+ restored in normal operation. Thus the dump-time values overwrite the
+ values XEmacs is getting at runtime. Such variables must be saved
+ before loading the dumpfile, and restored afterward.
+
+ Therefore these variables may not be initialized in vars_of_emacs().
+
+ The save/restore is done immediately before and after pdump_load() in
+ main_1(). See that function for the current list of protected variables.
+
+ Note that saving/restoring is only necessary for a few variables that are
+ o command line arguments effective at runtime (as opposed to dump-time),
+ o parsed before pdump_load, and
+ o exported to Lisp via a DEFVAR.
+*/
+
/* Nonzero means running XEmacs without interactive terminal. */
int noninteractive;
/* Value of Lisp variable `noninteractive'.
Normally same as C variable `noninteractive'
- but nothing terrible happens if user sets this one. */
+ but nothing terrible happens if user sets this one.
+
+ Shadowed from the pdumper by `noninteractive'. */
int noninteractive1;
int debug_paths;
/* Save argv and argc. */
-static char **initial_argv;
-static int initial_argc;
+static Extbyte **initial_argv; /* #### currently unused */
+static int initial_argc; /* #### currently unused */
static void sort_args (int argc, char **argv);
return EXCEPTION_CONTINUE_SEARCH;
/* I don't know if this filter is still wrapped in the outer __try, but
- it doesn't hurt to have another one. --ben */
+ it doesn't hurt to have another one. --ben
+ And it lets us control more exactly what we really want to do in such
+ a situation. */
__try
{
fatal_error_in_progress++;
}
/* VC++ documentation says that
GetExceptionCode() cannot be called inside the filter itself. */
- __except (mswindows_handle_hardware_exceptions (GetExceptionCode ())) {}
+
+ /* __except (mswindows_handle_hardware_exceptions (GetExceptionCode ())) {}
+
+ The line above is original. Unfortunately, when an error is tripped
+ inside of the handler (e.g. during Fbacktrace()), and the handler for
+ the handler is invoked, it correctly notices that something is amiss
+ and it should just return -- but it returns EXCEPTION_CONTINUE_SEARCH,
+ which causes the debugger to be invoked debugging the handler code in
+ this function -- and WITH THE STACK UNWOUND so that you see main()
+ calling mswindows_handle_hardware_exceptions(), calling Fbacktrace(),
+ and a crash a couple of frames in -- AND NO SIGN OF THE ORIGINAL CRASH!
+
+ There's some real weirdness going on in the stack handling -- unlike
+ in Unix, where further crashes just keep adding to the stack, it seems
+ that under the structured-exception-handling, the stack can actually
+ bounce back and forth between the full stack at the location of the
+ exception and the unwound stack at the place where the __try clause was
+ established. I don't completely understand it. What I do know is that
+ returning EXCEPTION_EXECUTE_HANDLER on nested crash has the effect of
+ aborting execution of the handler and going back to the outer filter
+ function, which returns EXCEPTION_CONTINUE_SEARCH and everything is
+ hunky-dorey -- your debugger sees a crash at the right location with
+ the right stack.
+
+ I'm leaving in the trickier Unix-like code in the handler; someone who
+ understands better than me how the stack works in these handlers could
+ fix it up more. As it is, it works pretty well, so I'm not likely to
+ touch it more. --ben
+ */
+
+ __except (EXCEPTION_EXECUTE_HANDLER) {}
+
/* pretend we didn't handle this, so that the debugger is invoked and/or
the normal GPF box appears. */
/* Code for dealing with Lisp access to the Unix command line */
static Lisp_Object
-make_arg_list_1 (int argc, char **argv, int skip_args)
+make_arg_list_1 (int argc, Extbyte **argv, int skip_args)
{
Lisp_Object result = Qnil;
REGISTER int i;
{
if (i == 0 || i > skip_args)
{
-#ifdef WINDOWSNT
+#ifdef WIN32_NATIVE
if (i == 0)
{
/* Do not trust to what crt0 has stuffed into argv[0] */
- char full_exe_path [MAX_PATH];
+ char full_exe_path[MAX_PATH];
+ Lisp_Object fullpath;
+
GetModuleFileName (NULL, full_exe_path, MAX_PATH);
- result = Fcons (build_ext_string (full_exe_path, Qfile_name),
- result);
+ fullpath = build_ext_string (full_exe_path, Qmswindows_tstr);
+ result = Fcons (fullpath, result);
#if defined(HAVE_SHLIB)
- (void)dll_init(full_exe_path);
+ {
+ Extbyte *fullpathext;
+
+ LISP_STRING_TO_EXTERNAL (fullpath, fullpathext,
+ Qdll_filename_encoding);
+ (void) dll_init (fullpathext);
+ }
#endif
}
else
#endif
- result = Fcons (build_ext_string (argv [i], Qfile_name),
+ result = Fcons (build_ext_string (argv[i],
+ Qcommand_argument_encoding),
result);
}
}
}
Lisp_Object
-make_arg_list (int argc, char **argv)
+make_arg_list (int argc, Extbyte **argv)
{
return make_arg_list_1 (argc, argv, 0);
}
/* Calling functions are also responsible for calling free_argc_argv
when they are done with the generated list. */
void
-make_argc_argv (Lisp_Object argv_list, int *argc, char ***argv)
+make_argc_argv (Lisp_Object argv_list, int *argc, Extbyte ***argv)
{
Lisp_Object next;
int n = XINT (Flength (argv_list));
REGISTER int i;
- *argv = (char**) xmalloc ((n+1) * sizeof (char*));
+ *argv = (Extbyte**) xmalloc ((n+1) * sizeof (Extbyte*));
for (i = 0, next = argv_list; i < n; i++, next = XCDR (next))
{
- const char *temp;
+ const Extbyte *temp;
CHECK_STRING (XCAR (next));
- TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (next),
- C_STRING_ALLOCA, temp,
- Qnative);
+ LISP_STRING_TO_EXTERNAL (XCAR (next), temp, Qcommand_argument_encoding);
(*argv) [i] = xstrdup (temp);
}
(*argv) [n] = 0;
}
void
-free_argc_argv (char **argv)
+free_argc_argv (Extbyte **argv)
{
int elt = 0;
}
static void
-init_cmdargs (int argc, char **argv, int skip_args)
+init_cmdargs (int argc, Extbyte **argv, int skip_args)
{
initial_argv = argv;
initial_argc = argc;
# undef RUN_TIME_REMAP
#endif
-#if defined (MULE) && defined (MSDOS) && defined (EMX)
-/* Setup all of files be input/output'ed with binary translation mode. */
-asm (" .text");
-asm ("L_setbinmode:");
-asm (" movl $1, __fmode_bin");
-asm (" ret");
-asm (" .stabs \"___CTOR_LIST__\", 23, 0, 0, L_setbinmode");
-#endif
-
/* Test whether the next argument in ARGV matches SSTR or a prefix of
LSTR (at least MINLEN characters). If so, then if VALPTR is non-null
(the argument is supposed to have a value) store in *VALPTR either
#define main_1 STACK_TRACE_EYE_CATCHER
/* This function is not static, so that the compiler is less likely to
- inline it, which would make it not show up in stack traces. */
+ inline it, which would make it not show up in stack traces.
+
+ The restart argument is a flag that indicates that main_1 is now
+ being called for the second time in this invocation of xemacs; this can
+ only happen in an xemacs that is not loaded with dumped data (temacs
+ with the conventional dumper or xemacs -nd with the pdumper). See
+ Frun_emacs_from_temacs().
+
+ restart interacts with initialized as follows (per Olivier Galibert):
+
+ It's perverted.
+
+ initialized==0 => temacs
+ initialized!=0 && restart!=0 => run-temacs
+ initialized!=0 && restart==0 => xemacs/post pdump_load()
+*/
DECLARE_DOESNT_RETURN (main_1 (int, char **, char **, int));
DOESNT_RETURN
main_1 (int argc, char **argv, char **envp, int restart)
sort_args (argc, argv);
-#if (defined (MSDOS) && defined (EMX)) || defined (WIN32) || defined (_SCO_DS)
+#if defined (WIN32_NATIVE) || defined (_SCO_DS)
environ = envp;
#endif
memory_warnings (0, malloc_warning);
#endif /* not SYSTEM_MALLOC */
-#ifdef MSDOS
- /* We do all file input/output as binary files. When we need to translate
- newlines, we do that manually. */
- _fmode = O_BINARY;
- (stdin) ->_flag &= ~_IOTEXT;
- (stdout)->_flag &= ~_IOTEXT;
- (stderr)->_flag &= ~_IOTEXT;
-#endif /* MSDOS */
-
#ifdef SET_EMACS_PRIORITY
if (emacs_priority != 0)
nice (-emacs_priority);
#ifdef PDUMP
printf ("%08x\n", dump_id);
#else
- printf ("*ERROR**\n");
+ printf ("Portable dumper not configured; -sd just forces exit.\n");
#endif
exit (0);
}
initialized = 0;
purify_flag = 1;
} else {
+
+ /* Keep command options from getting stomped.
+
+ Some LISP-visible options are changed by XEmacs _after_ the data is
+ dumped in building a --pdump XEmacs, but _before_ it is restored in
+ normal operation. Thus the restored values overwrite the values
+ XEmacs is getting at run-time. Such variables must be saved here,
+ and restored after loading the dumped data.
+
+ Boy, this is ugly, but how else to do it?
+ */
+
+ /* noninteractive1 is saved in noninteractive, which isn't LISP-visible */
+ int inhibit_early_packages_save = inhibit_early_packages;
+ int inhibit_autoloads_save = inhibit_autoloads;
+ int debug_paths_save = debug_paths;
+ /* #### Give inhibit-site-lisp a command switch? If so, uncomment: */
+ /* int inhibit_site_lisp_save = inhibit_site_lisp; */
+ int inhibit_site_modules_save = inhibit_site_modules;
+
initialized = pdump_load (argv[0]);
+
+ /* Now unstomp everything */
+ noninteractive1 = noninteractive;
+ inhibit_early_packages = inhibit_early_packages_save;
+ inhibit_autoloads = inhibit_autoloads_save;
+ debug_paths = debug_paths_save;
+ /* #### Give inhibit-site-lisp a command switch? If so, uncomment: */
+ /* inhibit_site_lisp = inhibit_site_lisp_save; */
+ inhibit_site_modules = inhibit_site_modules_save;
+
if (initialized)
run_temacs_argc = -1;
else
init_symbols_once_early ();
/* Declare the basic symbols pertaining to errors,
- So that deferror() can be called. */
+ So that DEFERROR*() can be called. */
init_errors_once_early ();
/* Make sure that opaque pointers can be created. */
/* Now declare all the symbols and define all the Lisp primitives.
The *only* thing that the syms_of_*() functions are allowed to do
- is call one of the following three functions:
+ is call one of the following:
INIT_LRECORD_IMPLEMENTATION()
- defsymbol()
+ defsymbol(), DEFSYMBOL(), or DEFSYMBOL_MULTIWORD_PREDICATE()
defsubr() (i.e. DEFSUBR)
- deferror()
- defkeyword()
+ deferror(), DEFERROR(), or DEFERROR_STANDARD()
+ defkeyword() or DEFKEYWORD()
Order does not matter in these functions.
*/
#endif
#ifdef HAVE_X_WINDOWS
+#ifdef HAVE_BALLOON_HELP
syms_of_balloon_x ();
+#endif
syms_of_device_x ();
#ifdef HAVE_DIALOGS
syms_of_dialog_x ();
#ifdef HAVE_MS_WINDOWS
syms_of_console_mswindows ();
syms_of_device_mswindows ();
+ syms_of_dialog_mswindows ();
syms_of_frame_mswindows ();
syms_of_objects_mswindows ();
syms_of_select_mswindows ();
#ifdef HAVE_SCROLLBARS
syms_of_scrollbar_mswindows ();
#endif
+#endif /* HAVE_MS_WINDOWS */
#ifdef HAVE_MSW_C_DIRED
syms_of_dired_mswindows ();
#endif
-#ifdef WINDOWSNT
+#ifdef WIN32_NATIVE
syms_of_ntproc ();
#endif
-#endif /* HAVE_MS_WINDOWS */
+#if defined (WIN32_NATIVE) || defined (CYGWIN)
+ syms_of_win32 ();
+#endif
#ifdef MULE
syms_of_mule ();
#endif
#ifdef HAVE_GPM
- syms_of_gpmevent ();
+ syms_of_gpmevent ();
#endif
#ifdef HAVE_POSTGRESQL
make_opaque_ptr()
perhaps a few others.
+
+ NB: Initialization or assignment should not be done here to certain
+ variables settable from the command line. See the comment above
+ the call to pdump_load() in main_1(). This caveat should only
+ apply to vars_of_emacs().
*/
/* Now allow Fprovide() statements to be made. */
vars_of_extents ();
vars_of_faces ();
vars_of_fileio ();
+#ifdef CLASH_DETECTION
+ vars_of_filelock ();
+#endif
vars_of_floatfns ();
vars_of_font_lock ();
vars_of_frame ();
#ifdef HAVE_SHLIB
vars_of_module ();
#endif
-#ifdef WINDOWSNT
+#ifdef WIN32_NATIVE
vars_of_nt ();
vars_of_ntproc ();
#endif
#endif
#ifdef HAVE_X_WINDOWS
+#ifdef HAVE_BALLOON_HELP
vars_of_balloon_x ();
+#endif
vars_of_device_x ();
#ifdef HAVE_DIALOGS
vars_of_dialog_x ();
#endif
#ifdef HAVE_GPM
- vars_of_gpmevent ();
+ vars_of_gpmevent ();
#endif
/* Now initialize any specifier variables. We do this later
}
#endif
#ifdef PDUMP
- } else if (!restart) {
+ } else if (!restart) { /* after successful pdump_load() */
reinit_alloc_once_early ();
reinit_symbols_once_early ();
reinit_opaque_once_early ();
if (initialized)
{
- /* Stuff that needs to be reset at run time. Order below should
- not matter. */
+ /* Stuff that should not be done at dump time, including stuff that
+ needs to be reset at run time. Order below should not matter.
+
+ Many initializations taken from the environment should go here. */
reinit_alloc ();
reinit_eval ();
#ifdef MULE_REGEXP
reinit_mule_category ();
#endif
+#ifdef HAVE_POSTGRESQL
+ init_postgresql_from_environment();
+#endif
}
/* Now do further initialization/setup of stuff that is not needed by the
init_initial_directory(); /* get the directory to use for the
"*scratch*" buffer, etc. */
-#ifdef WINDOWSNT
+#ifdef WIN32_NATIVE
/*
* For Win32, call init_environment() now, so that environment/registry
* variables will be properly entered into Vprocess_environment.
first because many of the functions below
call egetenv() to get environment variables. */
init_lread (); /* Set up the Lisp reader. */
-#ifdef MSDOS
- /* Call early 'cause init_environment needs it. */
- init_dosfns ();
- /* Set defaults for several environment variables. */
- init_environment (argc, argv, skip_args);
-#endif
- init_cmdargs (argc, argv, skip_args); /* Create list Vcommand_line_args */
+ init_cmdargs (argc, (Extbyte **) argv,
+ skip_args); /* Create list Vcommand_line_args */
init_buffer (); /* Set default directory of *scratch* buffer */
-#ifdef WINDOWSNT
+#ifdef WIN32_NATIVE
init_ntproc();
#endif
#ifdef SUNPRO
init_sunpro (); /* Set up Sunpro usage tracking */
#endif
+#if defined (WIN32_NATIVE) || defined (CYGWIN)
+ init_win32 ();
+#endif
#if defined (HAVE_NATIVE_SOUND) && defined (hp9000s800)
init_hpplay ();
#endif
Vinvocation_directory = Ffile_name_directory (Vinvocation_directory);
}
-#if defined(HAVE_SHLIB) && !defined(WINDOWSNT)
+#if defined(HAVE_SHLIB) && !defined(WIN32_NATIVE)
/* This is Unix only. MS Windows NT has a library call that does
The Right Thing on that system. Rumor has it, this must be
called for GNU dld in temacs and xemacs. */
06/20/96 robertl@dgii.com */
{
- extern char *_environ;
+ extern char **_environ;
if ((unsigned) environ == 0)
environ=_environ;
}
#endif /* _SCO_DS */
vol_envp = environ;
}
-#ifdef RUN_TIME_REMAP
+#if defined (RUN_TIME_REMAP) && ! defined (PDUMP)
else
/* obviously no-one uses this because where it was before initialized was
*always* true */
be too dangerous), and if we get a crash somewhere within
this loop, we'll still autosave and won't try this again. */
- LIST_LOOP_DELETING(concons, nextcons, Vconsole_list)
+ LIST_LOOP_DELETING (concons, nextcons, Vconsole_list)
{
/* There is very little point in deleting the stream console.
It uses stdio, which should flush any buffered output and
UNGCPRO;
+#ifdef HAVE_MS_WINDOWS
+ /* If we displayed a message on the console, then we must allow the
+ user to see this message. This may be unnecessary, but can't hurt,
+ and we can't necessarily check arg; e.g. xemacs --help kills with
+ argument 0. */
+ if (mswindows_message_outputted)
+ Fmswindows_message_box (build_string ("Messages outputted. XEmacs is exiting."),
+ Qnil, Qnil);
+#endif
+
shut_down_emacs (0, STRINGP (arg) ? arg : Qnil, 0);
#if defined(GNU_MALLOC)
if you want the dumped XEmacs to process its command line
and announce itself normally when it is run.
*/
- (intoname, symname))
+ (filename, symfile))
{
/* This function can GC */
struct gcpro gcpro1, gcpro2;
int opurify;
- GCPRO2 (intoname, symname);
+ GCPRO2 (filename, symfile);
#ifdef FREE_CHECKING
Freally_free (Qnil);
disable_free_hook ();
#endif
- CHECK_STRING (intoname);
- intoname = Fexpand_file_name (intoname, Qnil);
- if (!NILP (symname))
+ CHECK_STRING (filename);
+ filename = Fexpand_file_name (filename, Qnil);
+ if (!NILP (symfile))
{
- CHECK_STRING (symname);
- if (XSTRING_LENGTH (symname) > 0)
- symname = Fexpand_file_name (symname, Qnil);
+ CHECK_STRING (symfile);
+ if (XSTRING_LENGTH (symfile) > 0)
+ symfile = Fexpand_file_name (symfile, Qnil);
else
- symname = Qnil;
+ symfile = Qnil;
}
opurify = purify_flag;
UNGCPRO;
-#if defined (MSDOS) && defined (EMX)
- {
- int fd = open ((char *) XSTRING_DATA (intoname),
- O_WRONLY|O_CREAT|O_TRUNC, S_IREAD|S_IWRITE);
- if (!fd) {
- error ("Failure operating on %s", XSTRING_DATA (intoname));
- } else {
- _core (fd);
- close (fd);
- }
- }
-#else /* not MSDOS and EMX */
{
- char *intoname_ext;
- char *symname_ext;
+ char *filename_ext;
+ char *symfile_ext;
- TO_EXTERNAL_FORMAT (LISP_STRING, intoname,
- C_STRING_ALLOCA, intoname_ext,
- Qfile_name);
+ LISP_STRING_TO_EXTERNAL (filename, filename_ext, Qfile_name);
- if (STRINGP (symname))
- TO_EXTERNAL_FORMAT (LISP_STRING, symname,
- C_STRING_ALLOCA, symname_ext,
- Qfile_name);
+ if (STRINGP (symfile))
+ LISP_STRING_TO_EXTERNAL (symfile, symfile_ext, Qfile_name);
else
- symname_ext = 0;
+ symfile_ext = 0;
garbage_collect_1 ();
modify all the unexec routines to ensure that filename
conversion is applied everywhere. Don't worry about memory
leakage because this call only happens once. */
- unexec (intoname_ext, symname_ext, (uintptr_t) my_edata, 0, 0);
+ unexec (filename_ext, symfile_ext, (uintptr_t) my_edata, 0, 0);
#ifdef DOUG_LEA_MALLOC
free (malloc_state_ptr);
#endif
#endif /* not PDUMP */
}
-#endif /* not MSDOS and EMX */
purify_flag = opurify;
#undef abort /* avoid infinite #define loop... */
-#if defined (WINDOWSNT) && defined (DEBUG_XEMACS)
+#if defined (WIN32_NATIVE) && defined (DEBUG_XEMACS)
#define enter_debugger() DebugBreak ()
#else
#define enter_debugger()
assert_failed_file = file;
assert_failed_line = line;
assert_failed_expr = expr;
-
+
if (!initialized)
fprintf (stderr,
"Fatal error: assertion failed, file %s, line %d, %s\n",
#ifndef XEMACS_CODENAME
#define XEMACS_CODENAME "Noname"
#endif
+#ifdef MULE
+ {
+ char dest[129];
+ char src[64] = XEMACS_CODENAME;
+ unsigned char* sp = (unsigned char*)src;
+ int i = 0, chr;
+
+ while ( (chr = *sp++) && (i < 128) )
+ {
+ if (chr <= 0x7F)
+ dest[i++] = chr;
+ else
+ {
+#ifdef UTF2000
+ dest[i++] = (chr >> 6) | 0xC0;
+ dest[i++] = (chr & 0x3F) | 0x80;
+#else
+ dest[i++] = LEADING_BYTE_LATIN_ISO8859_1;
+ dest[i++] = chr;
+#endif
+ }
+ }
+ dest[i] = 0;
+ Vxemacs_codename = build_string (dest);
+ }
+#else
Vxemacs_codename = build_string (XEMACS_CODENAME);
+#endif
+
+ /* Lisp variables which contain command line flags.
+ The portable dumper stomps on these; they must be saved and restored
+ if they are processed before the call to pdump_load() in main_1().
+ */
DEFVAR_BOOL ("noninteractive", &noninteractive1 /*
Non-nil means XEmacs is running without interactive terminal.
*/ );
DEFVAR_LISP ("emacs-program-version", &Vemacs_program_version /*
*Version of the Emacs variant.
-This typically has the form XX.XX[-bXX].
+This typically has the form NN.NN-bNN.
This is mainly meant for use in path searching.
*/ );
Vemacs_program_version = build_string ((char *) PATH_VERSION);
DEFVAR_LISP ("configure-exec-directory", &Vconfigure_exec_directory /*
For internal use by the build procedure only.
-configure's idea of what EXEC-DIRECTORY will be.
+configure's idea of what `exec-directory' will be.
*/ );
#ifdef PATH_EXEC
Vconfigure_exec_directory = Ffile_name_as_directory
DEFVAR_LISP ("configure-lisp-directory", &Vconfigure_lisp_directory /*
For internal use by the build procedure only.
-configure's idea of what LISP-DIRECTORY will be.
+configure's idea of what `lisp-directory' will be.
*/ );
#ifdef PATH_LOADSEARCH
Vconfigure_lisp_directory = Ffile_name_as_directory
DEFVAR_LISP ("configure-module-directory", &Vconfigure_module_directory /*
For internal use by the build procedure only.
-configure's idea of what MODULE-DIRECTORY will be.
+configure's idea of what `module-directory' will be.
*/ );
#ifdef PATH_MODULESEARCH
Vconfigure_module_directory = Ffile_name_as_directory
DEFVAR_LISP ("configure-data-directory", &Vconfigure_data_directory /*
For internal use by the build procedure only.
-configure's idea of what DATA-DIRECTORY will be.
+configure's idea of what `data-directory' will be.
*/ );
#ifdef PATH_DATA
Vconfigure_data_directory = Ffile_name_as_directory
DEFVAR_LISP ("configure-site-directory", &Vconfigure_site_directory /*
For internal use by the build procedure only.
-configure's idea of what SITE-DIRECTORY will be.
+configure's idea of what `site-directory' will be.
*/ );
#ifdef PATH_SITE
Vconfigure_site_directory = Ffile_name_as_directory
DEFVAR_LISP ("configure-site-module-directory", &Vconfigure_site_module_directory /*
For internal use by the build procedure only.
-configure's idea of what SITE-DIRECTORY will be.
+configure's idea of what `site-directory' will be.
*/ );
#ifdef PATH_SITE_MODULES
Vconfigure_site_module_directory = Ffile_name_as_directory
DEFVAR_LISP ("doc-directory", &Vdoc_directory /*
*Directory containing the DOC file that comes with XEmacs.
-This is usually the same as exec-directory.
+This is usually the same as `exec-directory'.
*/ );
Vdoc_directory = Qnil;
DEFVAR_LISP ("configure-doc-directory", &Vconfigure_doc_directory /*
For internal use by the build procedure only.
-configure's idea of what DOC-DIRECTORY will be.
+configure's idea of what `doc-directory' will be.
*/ );
#ifdef PATH_DOC
Vconfigure_doc_directory = Ffile_name_as_directory
DEFVAR_LISP ("configure-exec-prefix-directory", &Vconfigure_exec_prefix_directory /*
For internal use by the build procedure only.
-configure's idea of what EXEC-PREFIX-DIRECTORY will be.
+configure's idea of what `exec-prefix-directory' will be.
*/ );
#ifdef PATH_EXEC_PREFIX
Vconfigure_exec_prefix_directory = Ffile_name_as_directory
DEFVAR_LISP ("configure-prefix-directory", &Vconfigure_prefix_directory /*
For internal use by the build procedure only.
-configure's idea of what PREFIX-DIRECTORY will be.
+configure's idea of what `prefix-directory' will be.
*/ );
#ifdef PATH_PREFIX
Vconfigure_prefix_directory = Ffile_name_as_directory
#if defined(__sgi) && !defined(PDUMP)
/* This is so tremendously ugly I'd puke. But then, it works.
* The target is to override the static constructor from the
- * libiflPNG.so library which is maskerading as libz, and
+ * libiflPNG.so library which is masquerading as libz, and
* cores on us when re-started from the dumped executable.
* This will have to go for 21.1 -- OG.
*/
-void __sti__iflPNGFile_c___(void);
-void __sti__iflPNGFile_c___()
+void __sti__iflPNGFile_c___ (void);
+void
+__sti__iflPNGFile_c___ (void)
{
}