#include <sys/types.h>
#include <sys/file.h>
-#ifdef VMS
-#include <ssdef.h>
-#endif
-
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include "w32heap.h" /* for prototype of sbrk */
#endif
+#ifdef NS_IMPL_GNUSTEP
+/* At least under Debian, GSConfig is in a subdirectory. --Stef */
+#include <GNUstepBase/GSConfig.h>
+#endif
+
#include "lisp.h"
#include "commands.h"
#include "intervals.h"
extern int inherited_pgroup;
#endif
-#ifdef HAVE_X_WINDOWS
+#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
/* If non-zero, -d was specified, meaning we're using some window system. */
int display_arg;
#endif
extern Lisp_Object Vinhibit_redisplay;
-#ifdef USG_SHARED_LIBRARIES
-/* If nonzero, this is the place to put the end of the writable segment
- at startup. */
-
-unsigned int bss_end = 0;
-#endif
-
/* Nonzero means running Emacs without interactive terminal. */
int noninteractive;
void (*fatal_error_signal_hook) P_ ((void));
#ifdef FORWARD_SIGNAL_TO_MAIN_THREAD
-/* When compiled with GTK and running under Gnome, or Carbon under Mac
- OS X, multiple threads may be created. Keep track of our main
+/* When compiled with GTK and running under Gnome,
+ multiple threads may be created. Keep track of our main
thread to make sure signals are delivered to it (see syssignal.h). */
pthread_t main_thread;
shut_down_emacs (sig, 0, Qnil);
}
-#ifdef VMS
- LIB$STOP (SS$_ABORT);
-#else
/* Signal the same code; this time it will really be fatal.
Remember that since we're in a signal handler, the signal we're
going to send is probably blocked, so we have to unblock it if we
fatal_error_signal_hook ();
kill (getpid (), fatal_error_code);
-#endif /* not VMS */
}
#ifdef SIGDANGER
}
\f
-#ifdef VMS
-#ifdef LINK_CRTL_SHARE
-#ifdef SHARABLE_LIB_BUG
-extern noshare char **environ;
-#endif /* SHARABLE_LIB_BUG */
-#endif /* LINK_CRTL_SHARE */
-#endif /* VMS */
-
#ifdef HAVE_TZSET
/* A valid but unlikely value for the TZ environment value.
It is OK (though a bit slower) if the user actually chooses this value. */
/* ARGSUSED */
int
-main (argc, argv
-#ifdef VMS
-, envp
-#endif
-)
- int argc;
- char **argv;
-#ifdef VMS
- char **envp;
-#endif
+main (int argc, char **argv)
{
#if GC_MARK_STACK
Lisp_Object dummy;
}
#ifdef LINUX_SBRK_BUG
+ /* This is only used GNU/LINUX running on alpha when using libc5 */
__sbrk (1);
#endif
run_time_remap (argv[0]);
#endif
-#ifdef MAC_OSX
+#if defined (NS_IMPL_COCOA)
if (!initialized)
unexec_init_emacs_zone ();
#endif
}
#endif
-#ifdef MAC_OSX
- /* Skip process serial number passed in the form -psn_x_y as
- command-line argument. The WindowServer adds this option when
- Emacs is invoked from the Finder or by the `open' command. In
- these cases, the working directory becomes `/', so we change it
- to the user's home directory. */
- if (argc > skip_args + 1 && strncmp (argv[skip_args+1], "-psn_", 5) == 0)
- {
- chdir (getenv ("HOME"));
- skip_args++;
- }
-#endif /* MAC_OSX */
-
-#ifdef VMS
- /* If -map specified, map the data file in. */
- {
- char *file;
- if (argmatch (argv, argc, "-map", "--map-data", 3, &file, &skip_args))
- mapin_data (file);
- }
-
-#ifdef LINK_CRTL_SHARE
-#ifdef SHARABLE_LIB_BUG
- /* Bletcherous shared libraries! */
- if (!stdin)
- stdin = fdopen (0, "r");
- if (!stdout)
- stdout = fdopen (1, "w");
- if (!stderr)
- stderr = fdopen (2, "w");
- if (!environ)
- environ = envp;
-#endif /* SHARABLE_LIB_BUG */
-#endif /* LINK_CRTL_SHARE */
-#endif /* VMS */
-
#if defined (HAVE_SETRLIMIT) && defined (RLIMIT_STACK)
/* Extend the stack space available.
Don't do that if dumping, since some systems (e.g. DJGPP)
/* Record (approximately) where the stack begins. */
stack_bottom = &stack_bottom_variable;
-#ifdef USG_SHARED_LIBRARIES
- if (bss_end)
- brk ((void *)bss_end);
-#endif
-
clearerr (stdin);
#ifndef SYSTEM_MALLOC
CANNOT_DUMP is defined. */
syms_of_keyboard ();
-#ifdef MAC_OS8
- /* init_window_once calls make_terminal_frame which on Mac OS
- creates a full-fledge output_mac type frame. This does not
- work correctly before syms_of_textprop, syms_of_macfns,
- syms_of_ccl, syms_of_fontset, syms_of_xterm, syms_of_search,
- syms_of_frame, mac_term_init, and init_keyboard have already
- been called. */
- syms_of_textprop ();
- syms_of_macfns ();
- syms_of_ccl ();
- syms_of_fontset ();
- syms_of_macterm ();
- syms_of_macmenu ();
- syms_of_macselect ();
- syms_of_search ();
- syms_of_frame ();
-
- init_atimer ();
- mac_term_init (build_string ("Mac"), NULL, NULL);
- init_keyboard ();
-#endif
/* Called before syms_of_fileio, because it sets up Qerror_condition. */
syms_of_data ();
syms_of_fileio ();
no_loadup
= argmatch (argv, argc, "-nl", "--no-loadup", 6, NULL, &skip_args);
+#ifdef HAVE_NS
+ ns_alloc_autorelease_pool();
+ if (!noninteractive)
+ {
+ char *tmp;
+ display_arg = 4;
+#ifdef NS_IMPL_COCOA
+ if (skip_args < argc)
+ {
+ if (!strncmp(argv[skip_args], "-psn", 4))
+ {
+ skip_args += 1;
+ }
+ else
+ {
+ if (skip_args+1 < argc && !strncmp(argv[skip_args+1], "-psn", 4))
+ skip_args += 2;
+ }
+ }
+#endif
+ /* This used for remote operation.. not fully implemented yet. */
+ if (argmatch (argv, argc, "-_NSMachLaunch", 0, 3, &tmp, &skip_args))
+ display_arg = 4;
+ else if (argmatch (argv, argc, "-MachLaunch", 0, 3, &tmp, &skip_args))
+ display_arg = 4;
+ else if (argmatch (argv, argc, "-macosx", 0, 2, NULL, &skip_args))
+ display_arg = 4;
+ else if (argmatch (argv, argc, "-NSHost", 0, 3, &tmp, &skip_args))
+ display_arg = 4;
+ }
+#endif /* HAVE_NS */
+
#ifdef HAVE_X_WINDOWS
/* Stupid kludge to catch command-line display spec. We can't
handle this argument entirely in window system dependent code
init_ntproc (); /* must precede init_editfns. */
#endif
-#if defined (MAC_OSX) && defined (HAVE_CARBON)
+#ifdef HAVE_NS
+#ifndef CANNOT_DUMP
if (initialized)
- init_mac_osx_environment ();
+#endif
+ ns_init_paths ();
#endif
/* egetenv is a pretty low-level facility, which may get called in
/* The basic levels of Lisp must come first. */
/* And data must come first of all
for the sake of symbols like error-message. */
- /* Called before init_window_once for Mac OS Classic. */
syms_of_data ();
syms_of_chartab ();
syms_of_lread ();
#endif
syms_of_textprop ();
syms_of_composite ();
-#ifdef VMS
- syms_of_vmsproc ();
-#endif /* VMS */
#ifdef WINDOWSNT
syms_of_ntproc ();
#endif /* WINDOWSNT */
#ifdef HAVE_X_WINDOWS
syms_of_xterm ();
syms_of_xfns ();
+ syms_of_xmenu ();
syms_of_fontset ();
#ifdef HAVE_X_SM
syms_of_xsmfns ();
syms_of_menu ();
-#ifndef HAVE_NTGUI
-#ifndef MAC_OS
- /* Called before init_window_once for Mac OS Classic. */
- syms_of_xmenu ();
-#endif
-#endif
-
#ifdef HAVE_NTGUI
syms_of_w32term ();
syms_of_w32fns ();
syms_of_fontset ();
#endif /* HAVE_NTGUI */
-#if defined (MAC_OSX) && defined (HAVE_CARBON)
- syms_of_macterm ();
- syms_of_macfns ();
- syms_of_macmenu ();
- syms_of_macselect ();
+#ifdef HAVE_NS
+ syms_of_nsterm ();
+ syms_of_nsfns ();
+ syms_of_nsmenu ();
+ syms_of_nsselect ();
syms_of_fontset ();
-#endif /* MAC_OSX && HAVE_CARBON */
+#endif /* HAVE_NS */
#ifdef HAVE_DBUS
syms_of_dbusbind ();
init_editfns (); /* init_process uses Voperating_system_release. */
init_process (); /* init_display uses add_keyboard_wait_descriptor. */
init_keyboard (); /* This too must precede init_sys_modes. */
-#ifdef VMS
- init_vmsproc (); /* And this too. */
-#endif /* VMS */
if (!noninteractive)
- {
-#ifdef VMS
- init_vms_input ();/* init_display calls get_tty_size, that needs this. */
-#endif /* VMS */
- init_display (); /* Determine terminal type. Calls init_sys_modes. */
- }
+ init_display (); /* Determine terminal type. Calls init_sys_modes. */
init_fns ();
init_xdisp ();
#ifdef HAVE_WINDOW_SYSTEM
#endif /* HAVE_WINDOW_SYSTEM */
init_macros ();
init_floatfns ();
-#ifdef VMS
- init_vmsfns ();
-#endif /* VMS */
#ifdef HAVE_SOUND
init_sound ();
#endif
{ "-version", "--version", 150, 0 },
#ifdef HAVE_SHM
{ "-nl", "--no-shared-memory", 140, 0 },
-#endif
-#ifdef VMS
- { "-map", "--map-data", 130, 0 },
#endif
{ "-t", "--terminal", 120, 1 },
{ "-nw", "--no-window-system", 110, 0 },
{ "-color", "--color", 5, 0},
{ "-no-splash", "--no-splash", 3, 0 },
{ "-no-desktop", "--no-desktop", 3, 0 },
+#ifdef HAVE_NS
+ { "-NSAutoLaunch", 0, 5, 1 },
+ { "-NXAutoLaunch", 0, 5, 1 },
+ { "-disable-font-backend", "--disable-font-backend", 65, 0 },
+ { "-_NSMachLaunch", 0, 85, 1 },
+ { "-MachLaunch", 0, 85, 1 },
+ { "-macosx", 0, 85, 0 },
+ { "-NSHost", 0, 85, 1 },
+#endif
/* These have the same priority as ordinary file name args,
so they are not reordered with respect to those. */
{ "-L", "--directory", 0, 1 },
{ "-visit", "--visit", 0, 1 },
{ "-file", "--file", 0, 1 },
{ "-insert", "--insert", 0, 1 },
+#ifdef HAVE_NS
+ { "-NXOpen", 0, 0, 1 },
+ { "-NXOpenTemp", 0, 0, 1 },
+ { "-NSOpen", 0, 0, 1 },
+ { "-NSOpenTemp", 0, 0, 1 },
+ { "-GSFilePath", 0, 0, 1 },
+#endif
/* This should be processed after ordinary file name args and the like. */
{ "-kill", "--kill", -10, 0 },
};
UNGCPRO;
-/* Is it really necessary to do this deassign
- when we are going to exit anyway? */
-/* #ifdef VMS
- stop_vms_input ();
- #endif */
-
shut_down_emacs (0, 0, STRINGP (arg) ? arg : Qnil);
/* If we have an auto-save list file,
unlock_all_files ();
#endif
-#ifdef VMS
- kill_vms_processes ();
-#endif
-
#if 0 /* This triggers a bug in XCloseDisplay and is not needed. */
#ifdef HAVE_X_WINDOWS
/* It's not safe to call intern here. Maybe we are crashing. */
#ifdef MSDOS
dos_cleanup ();
#endif
+
+#ifdef HAVE_NS
+ ns_term_shutdown (sig);
+#endif
}
#endif
fflush (stdout);
-#ifdef VMS
- mapout_data (SDATA (filename));
-#else
/* Tell malloc where start of impure now is. */
/* Also arrange for warnings when nearly out of space. */
#ifndef SYSTEM_MALLOC
#ifdef DOUG_LEA_MALLOC
free (malloc_state_ptr);
#endif
-#endif /* not VMS */
Vpurify_flag = tem;
DEFVAR_LISP ("system-type", &Vsystem_type,
doc: /* Value is symbol indicating type of operating system you are using.
Special values:
+ `gnu' compiled for a GNU Hurd system.
`gnu/linux' compiled for a GNU/Linux system.
`darwin' compiled for Darwin (GNU-Darwin, Mac OS X, ...).
- `macos' compiled for Mac OS 9.
`ms-dos' compiled as an MS-DOS application.
`windows-nt' compiled as a native W32 application.
`cygwin' compiled using the Cygwin library.
- `vax-vms' or
- `axp-vms' compiled for a (Open)VMS system.
Anything else indicates some sort of Unix system. */);
Vsystem_type = intern (SYSTEM_TYPE);