annotate =PROBLEMS @ 2657:cddb75caa9c5

* systime.h: Doc fix. (EMACS_SET_USECS): Remember that a `usec' is a microsecond, not a millisecond. What's three orders of magnitude between friends? * dispnew.c (Fsit_for, Fsleep_for): Remember to multiply the `milliseconds' argument by 1000 to get microseconds. Changes for Emacs 19 from Thorsten Ohl <ohl@chico.harvard.edu>: * s/mach2.h: copied from the Emacs 18.59 distribution. Don't define NO_REMAP, define START_FILES as `pre-crt0.o' instead. Define LIB_MATH as `-lm', to override the default `-lm -lc' (there is no libc on the NeXT). * ymakefile (STARTFILES): Allow config.h to set this value even if ORDINARY_LINK is defined. * unexnext.c: Fix subdirectories for the machine dependent include files for NeXTStep 3.0; #include <mach/mach.h> and <mach-o/loader.h> instead of <mach.h> and <sys/loader.h>. (getsectbyname): Remove prototype for this; the system #include files take care of that. (malloc_cookie): New variable. (unexec_doit): Set malloc_cookie to the result returned by malloc_freezedry. * emacs.c (main): Declare malloc_cookie to be extern, so that we can get the value set when we dumped and pass it to malloc_jumpstart. * systime.h: The NeXT has a timezone function.
author Jim Blandy <jimb@redhat.com>
date Tue, 04 May 1993 02:36:45 +0000
parents 8e274cb78360
children c93004d53e7a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1858
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 This file describes various problems that have been encountered
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2 in compiling, installing and running GNU Emacs.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
1950
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
4 * `Pid xxx killed due to text modification or page I/O error'
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
5
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
6 On HP/UX, you can get that error when the Emacs executable is on an NFS
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
7 file system. HP/UX responds this way if it tries to swap in a page and
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
8 does not get a response from the server within a timeout whose default
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
9 value is just ten seconds.
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
10
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
11 If this happens to you, extend the timeout period.
049a892e6398 Formerly PROBLEMS.~3~
Richard M. Stallman <rms@gnu.org>
parents: 1949
diff changeset
12
1949
a81c98f793b6 Formerly PROBLEMS.~2~
Richard M. Stallman <rms@gnu.org>
parents: 1858
diff changeset
13 * `expand-file-name' fails to work on any but the machine you dumped Emacs on.
a81c98f793b6 Formerly PROBLEMS.~2~
Richard M. Stallman <rms@gnu.org>
parents: 1858
diff changeset
14
2098
8e274cb78360 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1950
diff changeset
15 On Ultrix, if you use any of the functions which look up information
8e274cb78360 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1950
diff changeset
16 in the passwd database before dumping Emacs (say, by using
1949
a81c98f793b6 Formerly PROBLEMS.~2~
Richard M. Stallman <rms@gnu.org>
parents: 1858
diff changeset
17 expand-file-name in site-init.el), then those functions will not work
a81c98f793b6 Formerly PROBLEMS.~2~
Richard M. Stallman <rms@gnu.org>
parents: 1858
diff changeset
18 in the dumped Emacs on any host but the one Emacs was dumped on.
a81c98f793b6 Formerly PROBLEMS.~2~
Richard M. Stallman <rms@gnu.org>
parents: 1858
diff changeset
19
2098
8e274cb78360 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1950
diff changeset
20 The solution? Don't use expand-file-name in site-init.el, or in
8e274cb78360 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1950
diff changeset
21 anything it loads. Yuck - some solution.
1949
a81c98f793b6 Formerly PROBLEMS.~2~
Richard M. Stallman <rms@gnu.org>
parents: 1858
diff changeset
22
2098
8e274cb78360 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1950
diff changeset
23 I'm not sure why this happens; if you can find out exactly what is
8e274cb78360 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1950
diff changeset
24 going on, and perhaps find a fix or a workaround, please let us know.
8e274cb78360 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1950
diff changeset
25 Perhaps the YP functions cache some information, the cache is included
8e274cb78360 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1950
diff changeset
26 in the dumped Emacs, and is then inaccurate on any other host.
1949
a81c98f793b6 Formerly PROBLEMS.~2~
Richard M. Stallman <rms@gnu.org>
parents: 1858
diff changeset
27
1858
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 * On some variants of SVR4, Emacs does not work at all with X.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 Try defining BROKEN_FIONREAD in your config.h file. If this solves
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 the problem, please send a bug report to tell us this is needed; be
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 sure to say exactly what type of machine and system you are using.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 * Linking says that the functions insque and remque are undefined.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 Change oldXMenu/Makefile by adding insque.o to the variable OBJS.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 * Emacs fails to understand most Internet host names, even though
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 the names work properly with other programs on the same system.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 This typically happens on Suns and other systems that use shared
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 libraries. The cause is that the site has installed a version of the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 shared library which uses a name server--but has not installed a
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 similiar version of the unshared library which Emacs uses.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 The result is that most programs, using the shared library, work with
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 the nameserver, but Emacs does not.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 The fix is to install an unshared library that corresponds to what you
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 installed in the shared library, and then relink Emacs.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 * On a Sun running SunOS 4.1.1, you get this error message from GNU ld:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 The problem is in the Sun shared C library, not in GNU ld.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 The solution is to install Patch-ID# 100267-03 from Sun.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 * Self documentation messages are garbled.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 This means that the file `etc/DOC-...' doesn't properly correspond
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 with the Emacs executable. Redumping Emacs and then installing the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 corresponding pair of files should fix the problem.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 * M-x shell immediately responds "Process shell exited abnormally with code 1".
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 This is often due to inability to run the program `env'.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 This should be in the `etc' subdirectory of the directory
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 where Emacs is installed, and it should be marked executable.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 * Trouble using ptys on AIX.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 People often instll the pty devices on AIX incorrectly.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 Use `smit pty' to reinstall them properly.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 * Shell mode on HP/UX gives the message, "`tty`: Ambiguous".
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 christos@theory.tn.cornell.edu says:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 The problem is that in your .cshrc you have something that tries to
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 execute `tty`. If you are not running the shell on a real tty then
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 tty will print "not a tty". Csh expects one word in some places,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 but tty is giving it back 3.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 The solution is to add a pair of quotes around `tty` to make it a single
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 word:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 if (`tty` == "/dev/console")
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 should be changed to:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 if ("`tty`" == "/dev/console")
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 Even better, move things that set up terminal sections out of .cshrc
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 and into .login.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 * Using X Windows, control-shift-leftbutton makes Emacs hang.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 Use the shell command `xset bc' to make the old X Menu package work.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 * Emacs running under X Windows does not handle mouse clicks.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 * `emacs -geometry 80x20' finds a file named `80x20'.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 One cause of such problems is having (setq term-file-prefix nil) in
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 your .emacs file. Another cause is a bad value of EMACSLOADPATH in
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 the environment.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 * Emacs starts in a directory other than the one that is current in the shell.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 If the PWD environment variable exists, Emacs uses this variable as
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 the initial working directory.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 Some shells automatically update this variable, while other shells fail
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 to do so. If you use two such shells in combination, the variable can
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 end up wrong. This confuses Emacs.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 The solution is to put something in the start-up file for the shell
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 that does not update PWD, to get rid of that environment variable.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 For example, in csh, use `unsetenv PWD'.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 * Emacs gets error message from linker on Sun.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 If the error message says that a symbol such as `f68881_used' or
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 `ffpa_used' or `start_float' is undefined, this probably indicates
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 that you have compiled some libraries, such as the X libraries,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 with a floating point option other than the default.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 It's not terribly hard to make this work with small changes in
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 crt0.c together with linking with Fcrt1.o, Wcrt1.o or Mcrt1.o.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 However, the easiest approach is to build Xlib with the default
1949
a81c98f793b6 Formerly PROBLEMS.~2~
Richard M. Stallman <rms@gnu.org>
parents: 1858
diff changeset
132 floating point option: -fsoft.
1858
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 * Emacs fails to get default settings from X Windows server.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 The X library in X11R4 has a bug; it interchanges the 2nd and 3rd
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 arguments to XGetDefaults. Define the macro XBACKWARDS in config.h to
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 tell Emacs to compensate for this.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 I don't believe there is any way Emacs can determine for itself
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 whether this problem is present on a given system.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 * Keyboard input gets confused after a beep when using a DECserver
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 as a concentrator.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 This problem seems to be a matter of configuring the DECserver to use
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 7 bit characters rather than 8 bit characters.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 * M-x shell persistently reports "Process shell exited abnormally with code 1".
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 This happened on Suns as a result of what is said to be a bug in Sunos
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 version 4.0.x. The only fix was to reboot the machine.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 * Programs running under terminal emulator do not recognize `emacs'
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 terminal type.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 The cause of this is a shell startup file that sets the TERMCAP
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 environment variable. The terminal emulator uses that variable to
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 provide the information on the special terminal type that Emacs
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 emulates.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 Rewrite your shell startup file so that it does not change TERMCAP
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 in such a case. You could use the following conditional which sets
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 it only if it is undefined.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 if ( ! ${?TERMCAP} ) setenv TERMCAP ~/my-termcap-file
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 Or you could set TERMCAP only when you set TERM--which should not
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 happen in a non-login shell.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 * Error compiling sysdep.c, "sioctl.h: no such file or directory".
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 Among USG systems with TIOCGWINSZ, some require sysdep.c to include
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 the file sioctl.h; on others, sioctl.h does not exist. We don't know
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 how to distinguish these two kind of systems, so currently we try to
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 include sioctl.h on all of them. If this #include gets an error, just
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 delete it.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 * X Windows doesn't work if DISPLAY uses a hostname.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 People have reported kernel bugs in certain systems that cause Emacs
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 not to work with X Windows if DISPLAY is set using a host name. But
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 the problem does not occur if DISPLAY is set to `unix:0.0'. I think
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 the bug has to do with SIGIO or FIONREAD.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 You may be able to compensate for the bug by doing (set-input-mode nil nil).
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 However, that has the disadvantage of turning off interrupts, so that
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 you are unable to quit out of a Lisp program by typing C-g.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 The easy way to do this is to put
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 (setq x-sigio-bug t)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 in your site-init.el file.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 * Problem with remote X server on Suns.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 On a Sun, running Emacs on one machine with the X server on another
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 may not work if you have used the unshared system libraries. This
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 is because the unshared libraries fail to use YP for host name lookup.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 As a result, the host name you specify may not be recognized.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 * Watch out for .emacs files and EMACSLOADPATH environment vars
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 These control the actions of Emacs.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 ~/.emacs is your Emacs init file.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 EMACSLOADPATH overrides which directories the function
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 "load" will search.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 If you observe strange problems, check for these and get rid
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 of them, then try again.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 * Shell mode ignores interrupts on Apollo Domain
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 You may find that M-x shell prints the following message:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 Warning: no access to tty; thus no job control in this shell...
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 This can happen if there are not enough ptys on your system.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 Here is how to make more of them.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 % cd /dev
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 % ls pty*
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 # shows how many pty's you have. I had 8, named pty0 to pty7)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 % /etc/crpty 8
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 # creates eight new pty's
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 * Fatal signal in the command temacs -l loadup inc dump
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 This command is the final stage of building Emacs. It is run by the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 Makefile in the src subdirectory, or by build.com on VMS.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 It has been known to get fatal errors due to insufficient swapping
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 space available on the machine.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 On 68000's, it has also happened because of bugs in the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 subroutine `alloca'. Verify that `alloca' works right, even
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 for large blocks (many pages).
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 * test-distrib says that the distribution has been clobbered
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 * or, temacs prints "Command key out of range 0-127"
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 * or, temacs runs and dumps xemacs, but xemacs totally fails to work.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 * or, temacs gets errors dumping xemacs
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 This can be because the .elc files have been garbled. Do not be
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 fooled by the fact that most of a .elc file is text: these are
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 binary files and can contain all 256 byte values.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 In particular `shar' cannot be used for transmitting GNU Emacs.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 It typically truncates "lines". What appear to be "lines" in
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 a binary file can of course be of any length. Even once `shar'
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 itself is made to work correctly, `sh' discards null characters
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 when unpacking the shell archive.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 I have also seen character \177 changed into \377. I do not know
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 what transfer means caused this problem. Various network
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 file transfer programs are suspected of clobbering the high bit.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 The only verified ways to transfer GNU Emacs are `tar', kermit (in
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 binary mode on Unix), and rcp or internet ftp between two Unix systems,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 or chaosnet cftp using raw mode.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 If you have a copy of Emacs that has been damaged in its
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 nonprinting characters, you can fix them:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 1) Record the names of all the .elc files.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 2) Delete all the .elc files.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 3) Recompile alloc.c with a value of PURESIZE twice as large.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 You might as well save the old alloc.o.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 4) Remake xemacs. It should work now.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 5) Running xemacs, do Meta-x byte-compile-file repeatedly
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 to recreate all the .elc files that used to exist.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 You may need to increase the value of the variable
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 max-lisp-eval-depth to succeed in running the compiler interpreted
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 on certain .el files. 400 was sufficient as of last report.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 6) Reinstall the old alloc.o (undoing changes to alloc.c if any)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 and remake temacs.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 7) Remake xemacs. It should work now, with valid .elc files.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 * temacs prints "Pure Lisp storage exhausted"
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 This means that the Lisp code loaded from the .elc and .el
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 files during temacs -l loadup inc dump took up more
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 space than was allocated.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 This could be caused by
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 1) adding code to the preloaded Lisp files
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 2) adding more preloaded files in loadup.el
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 3) having a site-init.el or site-load.el which loads files.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 Note that ANY site-init.el or site-load.el is nonstandard;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 if you have received Emacs from some other site
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 and it contains a site-init.el or site-load.el file, consider
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 deleting that file.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 4) getting the wrong .el or .elc files
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 (not from the directory you expected).
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 5) deleting some .elc files that are supposed to exist.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 This would cause the source files (.el files) to be
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 loaded instead. They take up more room, so you lose.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 6) a bug in the Emacs distribution which underestimates
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 the space required.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 If the need for more space is legitimate, change the definition
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 of PURESIZE in puresize.h.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 But in some of the cases listed above, this problem is a consequence
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 of something else that is wrong. Be sure to check and fix the real
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 problem.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 * Changes made to .el files do not take effect.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 You may have forgotten to recompile them into .elc files.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 Then the old .elc files will be loaded, and your changes
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 will not be seen. To fix this, do M-x byte-recompile-directory
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 and specify the directory that contains the Lisp files.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 * The dumped Emacs (xemacs) crashes when run, trying to write pure data.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 Two causes have been seen for such problems.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 1) On a system where getpagesize is not a system call, it is defined
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 as a macro. If the definition (in both unexec.c and malloc.c) is wrong,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 it can cause problems like this. You might be able to find the correct
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 value in the man page for a.out (5).
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 2) Some systems allocate variables declared static among the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 initialized variables. Emacs makes all initialized variables in most
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 of its files pure after dumping, but the variables declared static and
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 not initialized are not supposed to be pure. On these systems you
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 may need to add "#define static" to the m- or the s- file.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 * Compilation errors on VMS.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 You will get warnings when compiling on VMS because there are
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 variable names longer than 32 (or whatever it is) characters.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 This is not an error. Ignore it.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 VAX C does not support #if defined(foo). Uses of this construct
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 were removed, but some may have crept back in. They must be rewritten.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 There is a bug in the C compiler which fails to sign extend characters
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 in conditional expressions. The bug is:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 char c = -1, d = 1;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 int i;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 i = d ? c : d;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 The result is i == 255; the fix is to typecast the char in the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 conditional expression as an (int). Known occurrences of such
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 constructs in Emacs have been fixed.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 * rmail gets error getting new mail
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 rmail gets new mail from /usr/spool/mail/$USER using a program
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 called `movemail'. This program interlocks with /bin/mail using
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 the protocol defined by /bin/mail.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 There are two different protocols in general use. One of them uses
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 the `flock' system call. The other involves creating a lock file;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 `movemail' must be able to write in /usr/spool/mail in order to do
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 this. You control which one is used by defining, or not defining,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 the macro MAIL_USE_FLOCK in config.h or the m- or s- file it includes.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 SYSTEM, YOU CAN LOSE MAIL!
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 If your system uses the lock file protocol, and fascist restrictions
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 prevent ordinary users from writing the lock files in /usr/spool/mail,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 you may need to make `movemail' setgid to a suitable group such as
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 `mail'. You can use these commands (as root):
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 chgrp mail movemail
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 chmod 2755 movemail
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 * Emacs won't work with X-windows if the value of DISPLAY is HOSTNAME:0.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 * GNUs can't make contact with the specified host for nntp.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 Some people have found that Emacs was unable to connect to the local
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 host by name, as in DISPLAY=prep:0 if you are running on prep, but
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 could handle DISPLAY=unix:0. Here is what tale@rpi.edu said:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 Seems as
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 though gethostbyname was bombing somewhere along the way. Well, we
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 had just upgrade from SunOS 3.5 (which X11 was built under) to SunOS
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 4.0.1. Any new X applications which tried to be built with the pre
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 OS-upgrade libraries had the same problems which Emacs was having.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 Missing /etc/resolv.conf for a little while (when one of the libraries
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 was built?) also might have had a hand in it.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 The result of all of this (with some speculation) was that we rebuilt
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 X and then rebuilt Emacs with the new libraries. Works as it should
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 now. Hoorah.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 If you have already installed the name resolver in the file libresolv.a,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 then you need to compile Emacs to use that library. The easiest way to
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 do this is to add to config.h a definition of LIBS_SYSTEM, LIBS_MACHINE
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 or LIB_STANDARD which uses -lresolv. Watch out! If you redefine a macro
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 that is already in use in your configuration to supply some other libraries,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 be careful not to lose the others.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 Thus, you could start by adding this to config.h:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 #define LIBS_SYSTEM -lresolv
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 Then if this gives you an error for redefining a macro, and you see that
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 the s- file defines LIBS_SYSTEM as -lfoo -lbar, you could change config.h
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 again to say this:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 #define LIBS_SYSTEM -lresolv -lfoo -lbar
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 * Emacs spontaneously displays "I-search: " at the bottom of the screen.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 This means that Control-S/Control-Q "flow control" is being used.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 C-s/C-q flow control is bad for Emacs editors because it takes away
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 C-s and C-q as user commands. Since editors do not output long streams
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 of text without user commands, there is no need for a user-issuable
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 "stop output" command in an editor; therefore, a properly designed
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 flow control mechanism would transmit all possible input characters
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 without interference. Designing such a mechanism is easy, for a person
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 with at least half a brain.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 There are three possible reasons why flow control could be taking place:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 1) Terminal has not been told to disable flow control
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 2) Insufficient padding for the terminal in use
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 3) Some sort of terminal concentrator or line switch is responsible
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 First of all, many terminals have a set-up mode which controls
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 whether they generate flow control characters. This must be
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 set to "no flow control" in order for Emacs to work. Sometimes
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 there is an escape sequence that the computer can send to turn
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 flow control off and on. If so, perhaps the termcap `ti' string
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 should turn flow control off, and the `te' string should turn it on.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 Once the terminal has been told "no flow control", you may find it
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 needs more padding. The amount of padding Emacs sends is controlled
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 by the termcap entry for the terminal in use, and by the output baud
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 rate as known by the kernel. The shell command `stty' will print
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 your output baud rate; `stty' with suitable arguments will set it if
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 it is wrong. Setting to a higher speed causes increased padding. If
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 the results are wrong for the correct speed, there is probably a
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 problem in the termcap entry. You must speak to a local Unix wizard
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 to fix this. Perhaps you are just using the wrong terminal type.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 For terminals that lack a "no flow control" mode, sometimes just
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 giving lots of padding will prevent actual generation of flow control
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 codes. You might as well try it.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 If you are really unlucky, your terminal is connected to the computer
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 through a concentrator which sends flow control to the computer, or it
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 insists on sending flow control itself no matter how much padding you
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 give it. You are screwed! You should replace the terminal or
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 concentrator with a properly designed one. In the mean time,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 some drastic measures can make Emacs semi-work.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 One drastic measure to ignore C-s and C-q, while sending enough
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 padding that the terminal will not really lose any output.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 Ignoring C-s and C-q can be done by using keyboard-translate-table
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 to map them into an undefined character such as C-^ or C-\. Sending
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 lots of padding is done by changing the termcap entry. Here is how
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 to make such a keyboard-translate-table:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 (let ((the-table (make-string 128 0)))
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 ;; Default is to translate each character into itself.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 (let ((i 0))
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 (while (< i 128)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 (aset the-table i i)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 (setq i (1+ i))))
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 ;; Swap C-s with C-\
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 (aset the-table ?\C-\\ ?\C-s)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 (aset the-table ?\C-s ?\C-\\)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 ;; Swap C-q with C-^
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 (aset the-table ?\C-^ ?\C-q)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 (aset the-table ?\C-q ?\C-^)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 (setq keyboard-translate-table the-table))
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 An even more drastic measure is to make Emacs use flow control.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 To do this, evaluate the Lisp expression (set-input-mode nil t).
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 Emacs will then interpret C-s and C-q as flow control commands. (More
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477 precisely, it will allow the kernel to do so as it usually does.) You
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 will lose the ability to use them for Emacs commands. Also, as a
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 consequence of using CBREAK mode, the terminal's Meta-key, if any,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 will not work, and C-g will be liable to cause a loss of output which
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 will produce garbage on the screen. (These problems apply to 4.2BSD;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 they may not happen in 4.3 or VMS, and I don't know what would happen
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 in sysV.) You can use keyboard-translate-table, as shown above,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 to map two other input characters (such as C-^ and C-\) into C-s and
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485 C-q, so that you can still search and quote.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487 I have no intention of ever redisigning the Emacs command set for
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 the assumption that terminals use C-s/C-q flow control. This
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 flow control technique is a bad design, and terminals that need
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 it are bad merchandise and should not be purchased. If you can
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 get some use out of GNU Emacs on inferior terminals, I am glad,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 but I will not make Emacs worse for properly designed systems
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 for the sake of inferior systems.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 * Control-S and Control-Q commands are ignored completely.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 For some reason, your system is using brain-damaged C-s/C-q flow
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 control despite Emacs's attempts to turn it off. Perhaps your
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 terminal is connected to the computer through a concentrator
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 that wants to use flow control.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 You should first try to tell the concentrator not to use flow control.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 If you succeed in this, try making the terminal work without
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 flow control, as described in the preceding section.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 If that line of approach is not successful, map some other characters
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 into C-s and C-q using keyboard-translate-table. The example above
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 shows how to do this with C-^ and C-\.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 * Control-S and Control-Q commands are ignored completely on a net connection.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 Some versions of rlogin (and possibly telnet) do not pass flow
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 control characters to the remote system to which they connect.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 On such systems, emacs on the remote system cannot disable flow
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 control on the local system.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 One way to cure this is to disable flow control on the local host
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 (the one running rlogin, not the one running rlogind) using the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 stty command, before starting the rlogin process. On many systems,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 "stty start u stop u" will do this.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 Some versions of tcsh will prevent even this from working. One way
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 around this is to start another shell before starting rlogin, and
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 issue the stty command to disable flow control from that shell.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 * Screen is updated wrong, but only on one kind of terminal.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 This could mean that the termcap entry you are using for that
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 terminal is wrong, or it could mean that Emacs has a bug handing
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 the combination of features specified for that terminal.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
531
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532 The first step in tracking this down is to record what characters
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 Emacs is sending to the terminal. Execute the Lisp expression
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 (open-termscript "./emacs-script") to make Emacs write all
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 terminal output into the file ~/emacs-script as well; then do
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 what makes the screen update wrong, and look at the file
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 and decode the characters using the manual for the terminal.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 There are several possibilities:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540 1) The characters sent are correct, according to the terminal manual.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 In this case, there is no obvious bug in Emacs, and most likely you
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 need more padding, or possibly the terminal manual is wrong.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 2) The characters sent are incorrect, due to an obscure aspect
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 of the terminal behavior not described in an obvious way
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 by termcap.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 This case is hard. It will be necessary to think of a way for
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 Emacs to distinguish between terminals with this kind of behavior
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 and other terminals that behave subtly differently but are
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 classified the same by termcap; or else find an algorithm for
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553 Emacs to use that avoids the difference. Such changes must be
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 tested on many kinds of terminals.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 3) The termcap entry is wrong.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 See the file etc/TERMS for information on changes
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 that are known to be needed in commonly used termcap entries
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 for certain terminals.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 4) The characters sent are incorrect, and clearly cannot be
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 right for any terminal with the termcap entry you were using.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 This is unambiguously an Emacs bug, and can probably be fixed
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 in termcap.c, tparam.c, term.c, scroll.c, cm.c or dispnew.c.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 * Output from Control-V is slow.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 On many bit-map terminals, scrolling operations are fairly slow.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571 Often the termcap entry for the type of terminal in use fails
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
572 to inform Emacs of this. The two lines at the bottom of the screen
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 before a Control-V command are supposed to appear at the top after
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 the Control-V command. If Emacs thinks scrolling the lines is fast,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575 it will scroll them to the top of the screen.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577 If scrolling is slow but Emacs thinks it is fast, the usual reason is
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578 that the termcap entry for the terminal you are using does not
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
579 specify any padding time for the `al' and `dl' strings. Emacs
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
580 concludes that these operations take only as much time as it takes to
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 send the commands at whatever line speed you are using. You must
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
582 fix the termcap entry to specify, for the `al' and `dl', as much
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
583 time as the operations really take.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 Currently Emacs thinks in terms of serial lines which send characters
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
586 at a fixed rate, so that any operation which takes time for the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 terminal to execute must also be padded. With bit-map terminals
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588 operated across networks, often the network provides some sort of
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589 flow control so that padding is never needed no matter how slow
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590 an operation is. You must still specify a padding time if you want
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591 Emacs to realize that the operation takes a long time. This will
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592 cause padding characters to be sent unnecessarily, but they do
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 not really cost much. They will be transmitted while the scrolling
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 is happening and then discarded quickly by the terminal.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596 Most bit-map terminals provide commands for inserting or deleting
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 multiple lines at once. Define the `AL' and `DL' strings in the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 termcap entry to say how to do these things, and you will have
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 fast output without wasted padding characters. These strings should
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600 each contain a single %-spec saying how to send the number of lines
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 to be scrolled. These %-specs are like those in the termcap
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
602 `cm' string.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
603
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 You should also define the `IC' and `DC' strings if your terminal
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
605 has a command to insert or delete multiple characters. These
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
606 take the number of positions to insert or delete as an argument.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
608 A `cs' string to set the scrolling region will reduce the amount
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
609 of motion you see on the screen when part of the screen is scrolled.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
610
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 * Your Delete key sends a Backspace to the terminal, using an AIXterm.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
613 The solution is to include in your .Xdefaults the lines:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
614
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
615 *aixterm.Translations: #override <Key>BackSpace: string(0x7f)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
616 aixterm*ttyModes: erase ^?
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
617
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
618 This makes your Backspace key send DEL (ASCII 127).
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
619
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
620 * You type Control-H (Backspace) expecting to delete characters.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
621
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622 Put `stty dec' in your .login file and your problems will disappear
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 after a day or two.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 The choice of Backspace for erasure was based on confusion, caused by
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 the fact that backspacing causes erasure (later, when you type another
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627 character) on most display terminals. But it is a mistake. Deletion
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 of text is not the same thing as backspacing followed by failure to
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 overprint. I do not wish to propagate this confusion by conforming
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
630 to it.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
631
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
632 For this reason, I believe `stty dec' is the right mode to use,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
633 and I have designed Emacs to go with that. If there were a thousand
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
634 other control characters, I would define Control-h to delete as well;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
635 but there are not very many other control characters, and I think
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
636 that providing the most mnemonic possible Help character is more
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
637 important than adapting to people who don't use `stty dec'.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
638
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
639 If you are obstinate about confusing buggy overprinting with deletion,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
640 you can redefine Backspace in your .emacs file:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
641 (global-set-key "\b" 'delete-backward-char)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642 You may then wish to put the function help-command on some
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 other key. I leave to you the task of deciding which key.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645 * Editing files through RFS gives spurious "file has changed" warnings.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 It is possible that a change in Emacs 18.37 gets around this problem,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647 but in case not, here is a description of how to fix the RFS bug that
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
648 causes it.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
649
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650 There was a serious pair of bugs in the handling of the fsync() system
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 call in the RFS server.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 The first is that the fsync() call is handled as another name for the
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 close() system call (!!). It appears that fsync() is not used by very
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 many programs; Emacs version 18 does an fsync() before closing files
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 to make sure that the bits are on the disk.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658 This is fixed by the enclosed patch to the RFS server.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660 The second, more serious problem, is that fsync() is treated as a
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 non-blocking system call (i.e., it's implemented as a message that
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 gets sent to the remote system without waiting for a reply). Fsync is
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 a useful tool for building atomic file transactions. Implementing it
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 as a non-blocking RPC call (when the local call blocks until the sync
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 is done) is a bad idea; unfortunately, changing it will break the RFS
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 protocol. No fix was supplied for this problem.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
667
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
668 (as always, your line numbers may vary)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
669
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
670 % rcsdiff -c -r1.2 serversyscall.c
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
671 RCS file: RCS/serversyscall.c,v
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
672 retrieving revision 1.2
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
673 diff -c -r1.2 serversyscall.c
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
674 *** /tmp/,RCSt1003677 Wed Jan 28 15:15:02 1987
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
675 --- serversyscall.c Wed Jan 28 15:14:48 1987
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
676 ***************
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
677 *** 163,169 ****
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
678 /*
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
679 * No return sent for close or fsync!
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 */
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681 ! if (syscall == RSYS_close || syscall == RSYS_fsync)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 proc->p_returnval = deallocate_fd(proc, msg->m_args[0]);
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683 else
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 {
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685 --- 166,172 ----
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 /*
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687 * No return sent for close or fsync!
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 */
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689 ! if (syscall == RSYS_close)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 proc->p_returnval = deallocate_fd(proc, msg->m_args[0]);
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 else
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692 {
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 * ld complains because `alloca' is not defined on your system.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 Alloca is a library function in 4.2bsd, which is used very heavily by
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 GNU Emacs. Use of malloc instead is very difficult, as you would have
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698 to arrange for the storage to be freed, and do so even in the case of
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699 a longjmp happening inside a subroutine. Many subroutines in Emacs
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 can do longjmp.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 If your system does not support alloca, try defining the symbol
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 C_ALLOCA in the m-...h file for that machine. This will enable the use
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 in Emacs of a portable simulation for alloca. But you will find that
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 Emacs's performance and memory use improve if you write a true
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 alloca in assembler language.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 alloca (N) should return the address of an N-byte block of memory
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 added dynamically to the current stack frame.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 * Vax C compiler bugs affecting Emacs.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 You may get one of these problems compiling Emacs:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 foo.c line nnn: compiler error: no table entry for op STASG
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 foo.c: fatal error in /lib/ccom
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 These are due to bugs in the C compiler; the code is valid C.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 Unfortunately, the bugs are unpredictable: the same construct
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 may compile properly or trigger one of these bugs, depending
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 on what else is in the source file being compiled. Even changes
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 in header files that should not affect the file being compiled
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 can affect whether the bug happens. In addition, sometimes files
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 that compile correctly on one machine get this bug on another machine.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 As a result, it is hard for me to make sure this bug will not affect
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 you. I have attempted to find and alter these constructs, but more
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 can always appear. However, I can tell you how to deal with it if it
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 should happen. The bug comes from having an indexed reference to an
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 array of Lisp_Objects, as an argument in a function call:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 Lisp_Object *args;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 ...
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 ... foo (5, args[i], ...)...
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 putting the argument into a temporary variable first, as in
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 Lisp_Object *args;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736 Lisp_Object tem;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 ...
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 tem = args[i];
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 ... foo (r, tem, ...)...
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 causes the problem to go away.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 The `contents' field of a Lisp vector is an array of Lisp_Objects,
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 so you may see the problem happening with indexed references to that.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 * 68000 C compiler problems
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 Various 68000 compilers have different problems.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 These are some that have been observed.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 ** Using value of assignment expression on union type loses.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 This means that x = y = z; or foo (x = z); does not work
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 if x is of type Lisp_Object.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 ** "cannot reclaim" error.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 This means that an expression is too complicated. You get the correct
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 line number in the error message. The code must be rewritten with
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 simpler expressions.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759 ** XCONS, XSTRING, etc macros produce incorrect code.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 If temacs fails to run at all, this may be the cause.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762 Compile this test program and look at the assembler code:
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 struct foo { char x; unsigned int y : 24; };
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 lose (arg)
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 struct foo arg;
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 {
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 test ((int *) arg.y);
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 }
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 If the code is incorrect, your compiler has this problem.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 In the XCONS, etc., macros in lisp.h you must replace (a).u.val with
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774 ((a).u.val + coercedummy) where coercedummy is declared as int.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776 This problem will not happen if the m-...h file for your type
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 of machine defines NO_UNION_TYPE. That is the recommended setting now.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 * C compilers lose on returning unions
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 I hear that some C compilers cannot handle returning
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 a union type. Most of the functions in GNU Emacs return
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 type Lisp_Object, which is currently defined as a union.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 This problem will not happen if the m-...h file for your type
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 of machine defines NO_UNION_TYPE. That is the recommended setting now.
794bd24d1415 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787