X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/597cfb3fbc57114062f12dfdfa37c0157fff1e97..cd0cf71c4f41023a8d9c20b3a26e44b980992b5a:/src/emacs.c?ds=sidebyside diff --git a/src/emacs.c b/src/emacs.c index d5ae652d6e..33941ae922 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1,6 +1,6 @@ /* Fully extensible Emacs, running on Unix, intended for GNU. - Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2001, - 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1998, 1999, + 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -16,8 +16,8 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ #include @@ -42,6 +42,9 @@ Boston, MA 02111-1307, USA. */ #ifdef WINDOWSNT #include +#include /* just for w32.h */ +#include "w32.h" +#include "w32heap.h" /* for prototype of sbrk */ #endif #include "lisp.h" @@ -146,7 +149,7 @@ void *malloc_state_ptr; /* From glibc, a routine that returns a copy of the malloc internal state. */ extern void *malloc_get_state (); /* From glibc, a routine that overwrites the malloc internal state. */ -extern void malloc_set_state (); +extern int malloc_set_state (); /* Non-zero if the MALLOC_CHECK_ enviroment variable was set while dumping. Used to work around a bug in glibc's malloc. */ int malloc_using_checking; @@ -249,7 +252,7 @@ Run Emacs, the extensible, customizable, self-documenting real-time\n\ display editor. The recommended way to start Emacs for normal editing\n\ is with no options at all.\n\ \n\ -Run M-x info RET m emacs RET m command arguments RET inside Emacs to\n\ +Run M-x info RET m emacs RET m emacs invocation RET inside Emacs to\n\ read the main documentation for these command-line arguments.\n\ \n\ Initialization options:\n\ @@ -263,7 +266,8 @@ Initialization options:\n\ --no-shared-memory, -nl do not use shared memory\n\ --no-site-file do not load site-start.el\n\ --no-splash do not display a splash screen on startup\n\ ---no-window-system, -nw don't communicate with X, ignoring $DISPLAY\n\ +--no-window-system, -nw do not communicate with X, ignoring $DISPLAY\n\ +--quick, -Q equivalent to -q --no-site-file --no-splash\n\ --script FILE run FILE as an Emacs Lisp script\n\ --terminal, -t DEVICE use DEVICE for terminal I/O\n\ --unibyte, --no-multibyte run Emacs in unibyte mode\n\ @@ -293,9 +297,11 @@ FILE visit FILE using find-file\n\ Display options:\n\ \n\ --background-color, -bg COLOR window background color\n\ +--basic-display, -D disable many display features;\n\ + used for debugging Emacs\n\ --border-color, -bd COLOR main border color\n\ --border-width, -bw WIDTH width of main border\n\ ---color MODE color mode for character terminals;\n\ +--color, --color=MODE color mode for character terminals;\n\ MODE defaults to `auto', and can also\n\ be `never', `auto', `always',\n\ or a mode name like `ansi8'\n\ @@ -306,28 +312,29 @@ Display options:\n\ --fullscreen, -fs make first frame fullscreen\n\ --fullwidth, -fw make the first frame wide as the screen\n\ --geometry, -g GEOMETRY window geometry\n\ ---icon-type, -i use picture of gnu for Emacs icon\n\ +--no-bitmap-icon, -nbi do not use picture of gnu for Emacs icon\n\ --iconic start Emacs in iconified state\n\ --internal-border, -ib WIDTH width between text and main border\n\ --line-spacing, -lsp PIXELS additional space to put between lines\n\ --mouse-color, -ms COLOR mouse cursor color in Emacs window\n\ --name NAME title for initial Emacs frame\n\ +--no-blinking-cursor, -nbc disable blinking cursor\n\ --reverse-video, -r, -rv switch foreground and background\n\ --title, -T TITLE title for initial Emacs frame\n\ --vertical-scroll-bars, -vb enable vertical scroll bars\n\ --xrm XRESOURCES set additional X resources\n\ --help display this help and exit\n\ --version output version information and exit\n\ -\n\ +\n" + +#define USAGE4 "\ You can generally also specify long option names with a single -; for\n\ example, -batch as well as --batch. You can use any unambiguous\n\ abbreviation for a --option.\n\ \n\ Various environment variables and window system resources also affect\n\ Emacs' operation. See the main documentation.\n\ -\n" - -#define USAGE4 "\ +\n\ Report bugs to %s. First, please see the Bugs\n\ section of the Emacs manual or the file BUGS.\n" @@ -779,7 +786,7 @@ void (*__malloc_initialize_hook) () = malloc_initialize_hook; #define REPORT_EMACS_BUG_ADDRESS "bug-gnu-emacs@gnu.org" -#define REPORT_EMACS_BUG_PRETEST_ADDRESS "emacs-pretest-bug@gnu.org" +#define REPORT_EMACS_BUG_PRETEST_ADDRESS "multi-tty@lists.fnord.hu" /* This function is used to determine an address to which bug report should be sent. */ @@ -890,7 +897,7 @@ main (argc, argv else { printf ("GNU Emacs %s\n", SDATA (tem)); - printf ("Copyright (C) 2004 Free Software Foundation, Inc.\n"); + printf ("Copyright (C) 2005 Free Software Foundation, Inc.\n"); printf ("GNU Emacs comes with ABSOLUTELY NO WARRANTY.\n"); printf ("You may redistribute copies of Emacs\n"); printf ("under the terms of the GNU General Public License.\n"); @@ -912,7 +919,13 @@ main (argc, argv { /* Set this so we only do this once. */ putenv("EMACS_HEAP_EXEC=true"); - personality (PER_LINUX32); + + /* A flag to turn off address randomization which is introduced + in linux kernel shipped with fedora core 4 */ +#define ADD_NO_RANDOMIZE 0x0040000 + personality (PER_LINUX32 | ADD_NO_RANDOMIZE); +#undef ADD_NO_RANDOMIZE + execvp (argv[0], argv); /* If the exec fails, try to dump anyway. */ @@ -989,7 +1002,7 @@ main (argc, argv && !getrlimit (RLIMIT_STACK, &rlim)) { long newlim; - extern int re_max_failures; + extern size_t re_max_failures; /* Approximate the amount regex.c needs per unit of re_max_failures. */ int ratio = 20 * sizeof (char *); /* Then add 33% to cover the size of the smaller stacks that regex.c @@ -1141,9 +1154,9 @@ main (argc, argv if (argmatch (argv, argc, "-script", "--script", 3, &junk, &skip_args)) { noninteractive = 1; /* Set batch mode. */ - /* Convert --script to -l, un-skip it, and sort again so that -l will be - handled in proper sequence. */ - argv[skip_args - 1] = "-l"; + /* Convert --script to --scriptload, un-skip it, and sort again + so that it will be handled in proper sequence. */ + argv[skip_args - 1] = "-scriptload"; skip_args -= 2; sort_args (argc, argv); } @@ -1296,6 +1309,9 @@ main (argc, argv faces, and the face implementation uses some symbols as face names. */ syms_of_xfaces (); + /* XXX syms_of_keyboard uses some symbols in keymap.c. It would + be better to arrange things not to have this dependency. */ + syms_of_keymap (); /* Call syms_of_keyboard before init_window_once because keyboard sets up symbols that include some face names that the X support will want to use. This can happen when @@ -1315,10 +1331,12 @@ main (argc, argv syms_of_fontset (); syms_of_macterm (); syms_of_macmenu (); + syms_of_macselect (); syms_of_data (); syms_of_search (); syms_of_frame (); + init_atimer (); mac_term_init (build_string ("Mac"), NULL, NULL); init_keyboard (); #endif @@ -1344,7 +1362,9 @@ main (argc, argv #ifdef CLASH_DETECTION init_filelock (); #endif +#ifndef MAC_OS8 init_atimer (); +#endif running_asynch_code = 0; /* Handle --unibyte and the EMACS_UNIBYTE envvar, @@ -1481,7 +1501,7 @@ main (argc, argv init_ntproc (); /* must precede init_editfns. */ #endif -#ifdef HAVE_CARBON +#if defined (MAC_OSX) && defined (HAVE_CARBON) if (initialized) init_mac_osx_environment (); #endif @@ -1563,7 +1583,7 @@ main (argc, argv #endif /* CLASH_DETECTION */ syms_of_indent (); syms_of_insdel (); - syms_of_keymap (); + /* syms_of_keymap (); */ syms_of_macros (); syms_of_marker (); syms_of_minibuf (); @@ -1608,14 +1628,12 @@ main (argc, argv #endif #endif /* HAVE_X_WINDOWS */ -#ifdef HAVE_MENUS #ifndef HAVE_NTGUI #ifndef MAC_OS /* Called before init_window_once for Mac OS Classic. */ syms_of_xmenu (); #endif #endif -#endif #ifdef HAVE_NTGUI syms_of_w32term (); @@ -1625,12 +1643,13 @@ main (argc, argv syms_of_fontset (); #endif /* HAVE_NTGUI */ -#ifdef HAVE_CARBON +#if defined (MAC_OSX) && defined (HAVE_CARBON) syms_of_macterm (); syms_of_macfns (); syms_of_macmenu (); + syms_of_macselect (); syms_of_fontset (); -#endif /* HAVE_CARBON */ +#endif /* MAC_OSX && HAVE_CARBON */ #ifdef SYMS_SYSTEM SYMS_SYSTEM; @@ -1655,6 +1674,7 @@ main (argc, argv #ifdef HAVE_NTGUI globals_of_w32fns (); globals_of_w32menu (); + globals_of_w32select (); #endif /* HAVE_NTGUI */ } @@ -1802,6 +1822,8 @@ struct standard_args standard_args[] = { "-d", "--display", 60, 1 }, { "-display", 0, 60, 1 }, /* Now for the options handled in startup.el. */ + { "-Q", "--quick", 55, 0 }, + { "-quick", 0, 55, 0 }, { "-q", "--no-init-file", 50, 0 }, { "-no-init-file", 0, 50, 0 }, { "-no-site-file", "--no-site-file", 40, 0 }, @@ -1809,9 +1831,10 @@ struct standard_args standard_args[] = { "-u", "--user", 30, 1 }, { "-user", 0, 30, 1 }, { "-debug-init", "--debug-init", 20, 0 }, - { "-i", "--icon-type", 15, 0 }, - { "-itype", 0, 15, 0 }, + { "-nbi", "--no-bitmap-icon", 15, 0 }, { "-iconic", "--iconic", 15, 0 }, + { "-D", "--basic-display", 12, 0}, + { "-basic-display", 0, 12, 0}, { "-bg", "--background-color", 10, 1 }, { "-background", 0, 10, 1 }, { "-fg", "--foreground-color", 10, 1 }, @@ -1821,6 +1844,7 @@ struct standard_args standard_args[] = { "-ib", "--internal-border", 10, 1 }, { "-ms", "--mouse-color", 10, 1 }, { "-cr", "--cursor-color", 10, 1 }, + { "-nbc", "--no-blinking-cursor", 10, 0 }, { "-fn", "--font", 10, 1 }, { "-font", 0, 10, 1 }, { "-fs", "--fullscreen", 10, 0 }, @@ -1844,6 +1868,7 @@ struct standard_args standard_args[] = { "-directory", 0, 0, 1 }, { "-l", "--load", 0, 1 }, { "-load", 0, 0, 1 }, + { "-scriptload", "--scriptload", 0, 1 }, { "-f", "--funcall", 0, 1 }, { "-funcall", 0, 0, 1 }, { "-eval", "--eval", 0, 1 }, @@ -2049,14 +2074,9 @@ all of which are called before Emacs is actually killed. */) if (STRINGP (Vauto_save_list_file_name)) unlink (SDATA (Vauto_save_list_file_name)); - exit (INTEGERP (arg) ? XINT (arg) -#ifdef VMS - : 1 -#else - : 0 -#endif - ); + exit (INTEGERP (arg) ? XINT (arg) : EXIT_SUCCESS); /* NOTREACHED */ + return Qnil; } @@ -2429,16 +2449,16 @@ syms_of_emacs () Many arguments are deleted from the list as they are processed. */); DEFVAR_LISP ("system-type", &Vsystem_type, -+ doc: /* Value is symbol indicating type of operating system you are using. -+Special values: -+ `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. */); + doc: /* Value is symbol indicating type of operating system you are using. +Special values: + `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); DEFVAR_LISP ("system-configuration", &Vsystem_configuration,