#include <ssdef.h>
#endif
-#ifdef USG5
-#include <fcntl.h>
-#endif
-
#ifdef BSD
#include <sys/ioctl.h>
#endif
#include "lisp.h"
#include "commands.h"
+#include "intervals.h"
-#include "systerm.h"
+#include "systty.h"
#ifndef O_RDWR
#define O_RDWR 2
but instead should use the virtual terminal under which it was started */
int inhibit_window_system;
+/* If nonzero, set Emacs to run at this priority. This is also used
+ in child_setup and sys_suspend to make sure subshells run at normal
+ priority; Those functions have their own extern declaration. */
+int emacs_priority;
+
#ifdef HAVE_X_WINDOWS
/* If non-zero, -d was specified, meaning we're using some window system. */
int display_arg;
#endif /* LINK_CRTL_SHARE */
#endif /* VMS */
+/* We don't include crtbegin.o and crtend.o in the link,
+ so these functions and variables might be missed.
+ Provide dummy definitions to avoid error.
+ (We don't have any real constructors or destructors.) */
+#ifdef __GNUC__
+__do_global_ctors ()
+{}
+__do_global_ctors_aux ()
+{}
+__do_global_dtors ()
+{}
+char * __CTOR_LIST__[2] = { (char *) (-1), 0 };
+char * __DTOR_LIST__[2] = { (char *) (-1), 0 };
+__main ()
+{}
+#endif /* __GNUC__ */
+
/* ARGSUSED */
main (argc, argv, envp)
int argc;
}
#endif
+#ifdef NeXT
+ static int malloc_cookie;
+
+ /* This helps out unexnext.c. */
+ if (initialized)
+ if (malloc_jumpstart (malloc_cookie) != 0)
+ printf ("malloc jumpstart failed!\n");
+#endif /* NeXT */
+
#ifdef HAVE_X_WINDOWS
/* Stupid kludge to catch command-line display spec. We can't
handle this argument entirely in window system dependent code
malloc_init (0, malloc_warning);
#endif /* not SYSTEM_MALLOC */
-#ifdef HIGHPRI
- setpriority (PRIO_PROCESS, getpid (), HIGHPRI);
+#ifdef PRIO_PROCESS
+ if (emacs_priority)
+ nice (emacs_priority);
setuid (getuid ());
-#endif /* HIGHPRI */
+#endif /* PRIO_PROCESS */
#ifdef BSD
/* interrupt_input has trouble if we aren't in a separate process group. */
syms_of_mocklisp ();
syms_of_process ();
syms_of_search ();
-#ifdef MULTI_FRAME
syms_of_frame ();
-#endif
syms_of_syntax ();
syms_of_undo ();
+
+ /* Only defined if Emacs is compiled with USE_TEXT_PROPERTIES */
+ syms_of_textprop ();
#ifdef VMS
syms_of_vmsproc ();
#endif /* VMS */
#ifdef HAVE_X11
syms_of_xselect ();
#endif
-#ifdef HAVE_X_MENU
+#ifdef HAVE_X_WINDOW
+#ifndef NO_X_MENU
syms_of_xmenu ();
+#endif /* not NO_X_MENU */
#endif /* HAVE_X_MENU */
#endif /* HAVE_X_WINDOWS */
initialized = 1;
+#ifdef sun
+ /* sun's localtime() has a bug. it caches the value of the time
+ zone rather than looking it up every time. Since localtime() is
+ called to bolt the undumping time into the undumped emacs, this
+ results in localtime() ignoring the TZ environment variable.
+ This flushes the new TZ value into localtime(). */
+ tzset();
+#endif /* sun */
+
/* Enter editor command loop. This never returns. */
Frecursive_edit ();
/* NOTREACHED */
}
\f
DEFUN ("kill-emacs", Fkill_emacs, Skill_emacs, 0, 1, "P",
- "Exit the Emacs job and kill it. Ask for confirmation, without argument.\n\
+ "Exit the Emacs job and kill it.\n\
If ARG is an integer, return ARG as the exit program code.\n\
If ARG is a string, stuff it as keyboard input.\n\n\
The value of `kill-emacs-hook', if not void,\n\
DEFVAR_BOOL ("noninteractive", &noninteractive1,
"Non-nil means Emacs is running without interactive terminal.");
+ DEFVAR_LISP ("kill-emacs-hook", &Vkill_emacs_hook,
+ "Hook to be run whenever kill-emacs is called.\n\
+Since kill-emacs may be invoked when the terminal is disconnected (or\n\
+in other similar situations), functions placed on this hook should not\n\
+not expect to be able to interact with the user.");
Vkill_emacs_hook = Qnil;
- DEFVAR_LISP ("kill-emacs-hook", &Vkill_emacs_hook,
- "Hook to be run whenever kill-emacs is called.");
+ DEFVAR_INT ("emacs-priority", &emacs_priority,
+ "Priority for Emacs to run at.\n\
+This value is effective only if set before Emacs is dumped,\n\
+and only if the Emacs executable is installed with setuid to permit\n\
+it to change priority. (Emacs sets its uid back to the real uid.)");
+ emacs_priority = 0;
}