aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src
diff options
context:
space:
mode:
authorKaroly Lorentey2006-12-03 15:03:30 +0000
committerKaroly Lorentey2006-12-03 15:03:30 +0000
commit974b73e83842d63b14512aa225cc53983a9b5d14 (patch)
tree462170d38cbb7057e98f08e8c612a9d30eeea0fd /lib-src
parentd0104e754a241cf83811fef30195d41201de533c (diff)
parentf5be22a273892218aad1db32c43ba562a08f3925 (diff)
downloademacs-974b73e83842d63b14512aa225cc53983a9b5d14.tar.gz
emacs-974b73e83842d63b14512aa225cc53983a9b5d14.zip
Merged from emacs@sv.gnu.org. Last-minute emacsclient rewrites be damned!
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-490 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-491 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-492 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-493 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-494 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-495 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-496 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-497 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-498 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-499 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-500 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-501 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-502 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-503 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-504 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-505 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-506 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-507 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-508 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-509 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-510 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-511 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-512 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-513 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-514 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-515 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-516 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-517 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-518 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-519 Update from CVS: etc/TUTORIAL.cn: Updated. * emacs@sv.gnu.org/emacs--devo--0--patch-520 Merge from erc--emacs--22 * emacs@sv.gnu.org/emacs--devo--0--patch-521 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-522 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-523 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-524 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-525 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-526 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-527 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-528 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-529 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-530 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-531 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-532 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-533 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-534 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-535 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-161 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-162 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-163 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-164 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-165 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-166 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-167 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-168 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-169 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-170 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-588
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/ChangeLog605
-rw-r--r--lib-src/Makefile.in5
-rw-r--r--lib-src/emacsclient.c1034
-rw-r--r--lib-src/etags.c17
-rwxr-xr-xlib-src/grep-changelog49
-rw-r--r--lib-src/makefile.w32-in73
6 files changed, 1219 insertions, 564 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index e78d3fefa48..8de03606271 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,217 @@
12006-11-30 Juanma Barranquero <lekktu@gmail.com>
2
3 * emacsclient.c (emacs_pid): New variable.
4 (message): Remove leftover code.
5 (get_server_config): Set emacs_pid. Don't allow Emacs to grab the
6 focus yet; emacsclient can still display an informational message
7 before sending requests to Emacs.
8 (main): Allow Emacs to grab the focus. Simplify message() call.
9
102006-11-30 Michael Mauger <mmaug@yahoo.com>
11
12 * emacsclient.c (message): Make sure the message is properly
13 written even if it contains printf escapes, and flush the result.
14 (set_tcp_socket): Make the message for non-local connections
15 informational rather than an error.
16
172006-11-28 Kevin Ryde <user42@zip.com.au> (tiny change)
18
19 * etags.c (readline): Check for double quote after #line.
20
212006-11-28 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> (tiny change)
22
23 * etags.c (readline): sscanf could in principle return 2.
24
252006-11-28 Francesco Potort,Al(B <pot@gnu.org>
26
27 * etags.c (readline): lno is unsigned.
28 (TeX_commands): Use p++ (rather than *p++) to increment p.
29 (Lua_functions): Explicitly discard LOOKING_AT's return value.
30
312006-11-27 Juanma Barranquero <lekktu@gmail.com>
32
33 * makefile.w32-in (TRES): New macro (copied from nt/makefile.w32-in).
34 ($(TRES)): New rule (copied from nt/makefile.w32-in).
35 ($(BLD)/emacsclientw.exe): Add dependency.
36
372006-11-27 Eli Zaretskii <eliz@gnu.org>
38
39 * makefile.w32-in ($(BLD)/emacsclient.$(O)): Depend on
40 makefile.w32-in.
41
422006-11-25 Juanma Barranquero <lekktu@gmail.com>
43
44 * makefile.w32-in (VERSION): New macro.
45 (ECLIENT_CFLAGS): Add -DVERSION.
46
472006-11-25 Jason Rumney <jasonr@gnu.org>
48
49 * emacsclient.c (file_name_absolute_p) [WINDOWSNT]: Use isalpha().
50
512006-11-24 Michael Mauger <mmaug@yahoo.com>
52
53 * emacsclient.c (file_name_absolute_p) [WINDOWSNT]: Support
54 absolute file names with forward slashes.
55
562006-11-23 Juanma Barranquero <lekktu@gmail.com>
57
58 * emacsclient.c (print_help_and_exit): Tweak message contents and
59 tabs/spaces to improve alignment in message boxes.
60
612006-11-22 Lennart Borgman <lennart.borgman.073@student.lu.se>
62
63 * emacsclient.c: Include <stdarg.h>.
64 [WINDOWSNT]: Include <windows.h>.
65 (w32_check_console_app): New function.
66 (message): New function.
67 (decode_options, print_help_and_exit, fail, main)
68 (initialize_sockets, get_server_config, set_tcp_socket)
69 (set_local_socket, set_socket): Use message().
70
712006-11-13 Jason Rumney <jasonr@gnu.org>
72
73 * emacsclient.c [WINDOWSNT]: Let config.h define HAVE_SOCKETS and
74 HAVE_INET_SOCKETS.
75
762006-11-13 Juanma Barranquero <lekktu@gmail.com>
77
78 * makefile.w32-in (emacsclient): Depend also on emacsclientw.exe.
79 ($(BLD)/emacsclientw.exe): New target.
80 (install): Install emacsclientw.exe.
81 ($(BLD)/cvtmail.$(O), $(BLD)/emacstool.$(O)): Remove obsolete targets.
82 (ECLIENT_CFLAGS): Remove redundant flags.
83
84 * emacsclient.c [WINDOWSNT]: Undef _WINSOCKAPI_ and _WINSOCK_H.
85
862006-11-13 Jason Rumney <jasonr@gnu.org>
87
88 * makefile.w32-in ($(BLD)/emacsclient.$(O)): Use CFLAGS.
89
902006-11-10 David Reitter <david.reitter@gmail.com>
91
92 * emacsclient.c [!WINDOWSNT]: Include <sys/types.h>.
93
942006-11-08 Juanma Barranquero <lekktu@gmail.com>
95
96 * emacsclient.c (get_server_config) [WINDOWSNT]: Declare set_fg as
97 FARPROC to avoid a compiler warning.
98
992006-11-07 Juanma Barranquero <lekktu@gmail.com>
100
101 * emacsclient.c (get_server_config) [WINDOWSNT]: Look for the server
102 file on APPDATA if it doesn't exist on HOME, even if HOME is defined.
103
104 * emacsclient.c (get_server_config): Extract also the Emacs pid
105 from the server file. On Windows, try to force the Emacs frame to
106 the foreground.
107
1082006-11-06 Juanma Barranquero <lekktu@gmail.com>
109
110 * emacsclient.c (longopts) [!NO_SOCKETS_IN_FILE_SYSTEM]: Don't show
111 option --socket-name.
112 (decode_options): Don't get EMACS_SERVER_FILE here, it could override
113 command line options.
114 (decode_options) [!NO_SOCKETS_IN_FILE_SYSTEM]: Don't parse "-s" option.
115 (fail): Don't check for missing arguments, it is now done in set_socket.
116 (file_name_absolute_p): New function (loosely based on the one in
117 fileio.c).
118 (initialize_sockets): Don't check for duplicate loading of Winsock.
119 (get_server_config): Only try relative paths in the default
120 directory locations.
121 (set_tcp_socket): Don't call INITIALIZE(). Warn when connecting to
122 a remote server.
123 (set_socket): Call INITIALIZE(). Search explicit command-line
124 arguments, then environment variable EMACS_SERVER_FILE, then implicit
125 socket paths, before trying the alternate editor.
126 (main): Use file_name_absolute_p.
127
1282006-11-04 Eli Zaretskii <eliz@gnu.org>
129
130 * makefile.w32-in (../src/$(BLD)/temacs.exe): Create as temporary
131 file if it doesn't already exist.
132
1332006-11-03 Juanma Barranquero <lekktu@gmail.com>
134
135 * emacsclient.c (initialize_sockets): Don't initialize Winsock
136 more than once.
137
1382006-11-03 Mark Davies <mark@mcs.vuw.ac.nz>
139
140 * Makefile.in (INSTALL_SCRIPT): New macro.
141 ($(DESTDIR)${archlibdir}, install): Use it, instead of INSTALL_PROGRAM.
142
1432006-11-02 Juanma Barranquero <lekktu@gmail.com>
144
145 * grep-changelog: When called with no arguments (not even a
146 filter), show help instead of blindingly dumping every single
147 ChangeLog available. Doc fix. Update version.
148
1492006-11-02 Tim Van Holder <tim.vanholder@gmail.com> (tiny change)
150
151 * emacsclient.c [WINDOWSNT]: Define HAVE_INET_SOCKETS.
152 [!WINDOWSNT]: Include <netinet/in.h> if available.
153 [HAVE_SOCKETS]: Also require HAVE_INET_SOCKETS.
154 (IOCTL, IOCTL_BOOL_ARG): Remove.
155 (set_tcp_socket): Don't set the socket in blocking mode.
156 Remove c_arg.
157
1582006-11-01 Juanma Barranquero <lekktu@gmail.com>
159
160 * emacsclient.c (fail) [WINDOWSNT]: Force the first argv passed to
161 execvp to point to alternate_editor (otherwise .BAT scripts can't run).
162
1632006-10-31 ,bS(Bscar Fuentes <ofv@wanadoo.es> (tiny change)
164
165 * emacsclient.c [WINDOWSNT]: Include <malloc.h> and <stdlib.h>.
166 (close_winsock): Declare as __cdecl.
167
1682006-10-31 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
169
170 * emacsclient.c [!WINDOWSNT]: Include <fcntl.h> if available.
171 (set_tcp_socket): Prefer O_NONBLOCK, then O_NDELAY, then FIONBIO
172 to set the socket in non-blocking mode.
173
1742006-10-31 Tim Van Holder <tim.vanholder@gmail.com> (tiny change)
175
176 * emacsclient.c [!WINDOWSNT]: Include <netinet/in.h> and <sys/ioctl.h>.
177 (INVALID_SOCKET): Define.
178 (initialize_sockets): Put #endif at the right place.
179 (set_local_socket): Use progname, not argv[0].
180
1812006-10-31 Juanma Barranquero <lekktu@gmail.com>
182
183 * makefile.w32-in (ALL): Add emacsclient.
184 (ECLIENT_CFLAGS, ECLIENTOBJS): New macros.
185 (emacsclient, $(BLD)/emacsclient.exe): New targets.
186 (install): Install emacsclient.
187
188 * emacsclient.c: Add support for TCP sockets.
189 (SEND_STRING, SEND_QUOTED, HSOCKET, CLOSE_SOCKET, IOCTL)
190 (INITIALIZE): New macros.
191 (IOCTL_BOOL_ARG): New typedef.
192 (server_file): New global variable.
193 (longopts): New option --server-file.
194 (decode_options): Process new option --server-file and environment
195 variable EMACS_SERVER_FILE.
196 (print_help_and_exit): Document new option.
197 (fail): If no connection available and no alternate editor,
198 suggest using options to make them explicit.
199 (AUTH_KEY_LENGTH, SEND_BUFFER_SIZE): New constants.
200 (send_buffer, sblen): New variables.
201 (send_to_emacs): New function to buffer output and send it with
202 send().
203 (quote_file_name): Use SEND_STRING.
204 (close_winsock, initialize_sockets): New functions to load and
205 unload Winsock.
206 (get_server_config, set_tcp_socket): New functions to create and
207 set up TCP sockets.
208 (set_local_socket): New function to create and set up Unix
209 socket (code moved from previous implementation).
210 (set_socket): New function to chose between TCP and Unix sockets.
211 (main): Use SEND_STRING and SEND_QUOTED. Most code moved to
212 set_local_socket. Use set_socket. Get answers from server.el with
213 recv(), not file stream functions.
214
12006-10-09 Eli Zaretskii <eliz@gnu.org> 2152006-10-09 Eli Zaretskii <eliz@gnu.org>
2 216
3 * makefile.w32-in (../src/config.h): Fix error message. 217 * makefile.w32-in (../src/config.h): Fix error message.
@@ -13,14 +227,13 @@
13 227
142006-08-09 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 2282006-08-09 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
15 229
16 * etags.c (readline): expect sscanf returns >= 1. 230 * etags.c (readline): Expect sscanf returns >= 1.
17 (readline): Change position on %n and \" in sscanf. 231 (readline): Change position on %n and \" in sscanf.
18 232
192006-08-07 Masatake YAMATO <jet@gyve.org> 2332006-08-07 Masatake YAMATO <jet@gyve.org>
20 234
21 * etags.c (readline): expect sscanf returns 2, 235 * etags.c (readline): Expect sscanf returns 2, not 1.
22 not 1. 236
23
242006-08-07 Masatake YAMATO <jet@gyve.org> 2372006-08-07 Masatake YAMATO <jet@gyve.org>
25 238
26 * etags.c (TEX_mode): Check getc returns EOF. 239 * etags.c (TEX_mode): Check getc returns EOF.
@@ -28,7 +241,7 @@
28 241
292002-07-30 Adrian Aichner <adrian@xemacs.org> (tiny change) 2422002-07-30 Adrian Aichner <adrian@xemacs.org> (tiny change)
30 243
31 * etags.c: It's XEmacs, not Xemacs: change all the occurences. 244 * etags.c: It's XEmacs, not Xemacs: change all the occurrences.
32 245
332006-07-30 Francesco Potort,Al(B <pot@gnu.org> 2462006-07-30 Francesco Potort,Al(B <pot@gnu.org>
34 247
@@ -162,7 +375,7 @@
162 375
163 * Makefile.in (update-game-score.o): Delete spurious final `\'. 376 * Makefile.in (update-game-score.o): Delete spurious final `\'.
164 377
1652005-11-18 Hideki IWAMOTO <h-iwamoto@kit.hi-ho.ne.jp> (tiny change) 3782005-11-18 Hideki IWAMOTO <h-iwamoto@kit.hi-ho.ne.jp> (tiny change)
166 379
167 * etags.c (main): Cxref mode writes to stdout: do not close tagf, 380 * etags.c (main): Cxref mode writes to stdout: do not close tagf,
168 which was never opened. 381 which was never opened.
@@ -199,7 +412,7 @@
199 412
2002005-09-11 Jason Rumney <jasonr@gnu.org> 4132005-09-11 Jason Rumney <jasonr@gnu.org>
201 414
202 * makefile.w32-in (../src/config.h): Don't overwrite. Print a 415 * makefile.w32-in (../src/config.h): Don't overwrite. Print a
203 message instead. 416 message instead.
204 (../src/paths.h): Removed. 417 (../src/paths.h): Removed.
205 418
@@ -335,12 +548,12 @@
335 548
3362004-09-13 David A. Capello <dacap@users.sourceforge.net> (tiny change) 5492004-09-13 David A. Capello <dacap@users.sourceforge.net> (tiny change)
337 550
338 * etags.c: (Lua_suffixes, Lua_help, lang_names, Lua_functions): 551 * etags.c (Lua_suffixes, Lua_help, lang_names, Lua_functions):
339 Support the Lua scripting language <http://www.lua.org>. 552 Support the Lua scripting language <http://www.lua.org>.
340 553
3412004-09-08 Francesco Potort,Al(B <pot@gnu.org> 5542004-09-08 Francesco Potort,Al(B <pot@gnu.org>
342 555
343 * etags.c: [LONG_OPTIONS]: make it TRUE (ifdef) or FALSE (ifndef) 556 * etags.c [LONG_OPTIONS]: Make it TRUE (ifdef) or FALSE (ifndef)
344 for ease of use. 557 for ease of use.
345 558
3462004-07-17 Richard M. Stallman <rms@gnu.org> 5592004-07-17 Richard M. Stallman <rms@gnu.org>
@@ -702,12 +915,12 @@
702 * emacsclient.c (quote_file_name): Quote \n. 915 * emacsclient.c (quote_file_name): Quote \n.
703 (main): Print a final \n when needed. 916 (main): Print a final \n when needed.
704 917
7052002-09-03 Francesco Potorti` <pot@gnu.org> 9182002-09-03 Francesco Potort,Al(B <pot@gnu.org>
706 919
707 * etags.c (regex_tag_multiline, readline): Never pass pfnote a 920 * etags.c (regex_tag_multiline, readline): Never pass pfnote a
708 string that cannot be freed. 921 string that cannot be freed.
709 922
7102002-08-30 Francesco Potorti` <pot@gnu.org> 9232002-08-30 Francesco Potort,Al(B <pot@gnu.org>
711 924
712 * etags.c (consider_token, C_entries): Switch to C++ parsing when 925 * etags.c (consider_token, C_entries): Switch to C++ parsing when
713 auto-detection is enabled and the `::' qualifier is met. 926 auto-detection is enabled and the `::' qualifier is met.
@@ -718,21 +931,21 @@
718 (C_entries): Several cosmetic changes. 931 (C_entries): Several cosmetic changes.
719 (C_entries): Invalidate the token is some cases. 932 (C_entries): Invalidate the token is some cases.
720 933
7212002-08-29 Francesco Potorti` <pot@gnu.org> 9342002-08-29 Francesco Potort,Al(B <pot@gnu.org>
722 935
723 * etags.c (C_entries): Correct a problem with const C++ funcs. 936 * etags.c (C_entries): Correct a problem with const C++ funcs.
724 (ignoreindent): Renamed from noindentypedefs. 937 (ignoreindent): Renamed from noindentypedefs.
725 (cjava, cplpl): They are now macros instead of local vars. 938 (cjava, cplpl): They are now macros instead of local vars.
726 939
7272002-08-28 Francesco Potorti` <pot@gnu.org> 9402002-08-28 Francesco Potort,Al(B <pot@gnu.org>
728 941
729 * etags.c (HTML_labels): Tag ID= also. 942 * etags.c (HTML_labels): Tag ID= also.
730 943
7312002-08-27 Francesco Potorti` <pot@gnu.org> 9442002-08-27 Francesco Potort,Al(B <pot@gnu.org>
732 945
733 * etags.c (Ada_funcs): Do not tag "use type Xxxx;". 946 * etags.c (Ada_funcs): Do not tag "use type Xxxx;".
734 947
735 * etags.c: (HTML_labels): New language HTML. 948 * etags.c (HTML_labels): New language HTML.
736 (etags_strcasecmp): Like BSD's, for compatibility. 949 (etags_strcasecmp): Like BSD's, for compatibility.
737 (strcaseeq): Make it into a macro. 950 (strcaseeq): Make it into a macro.
738 951
@@ -784,9 +997,9 @@
784 997
785 * b2m.pl: New file. 998 * b2m.pl: New file.
786 999
7872002-06-21 Francesco Potorti` <pot@gnu.org> 10002002-06-21 Francesco Potort,Al(B <pot@gnu.org>
788 1001
789 * etags.c: (F_getit, Fortran_functions, Ada_getit, Asm_labels) 1002 * etags.c (F_getit, Fortran_functions, Ada_getit, Asm_labels)
790 (Python_functions, PHP_functions, PHP_functions, PHP_functions) 1003 (Python_functions, PHP_functions, PHP_functions, PHP_functions)
791 (PHP_functions, PHP_functions, Cobol_paragraphs) 1004 (PHP_functions, PHP_functions, Cobol_paragraphs)
792 (Makefile_targets, Postscript_functions, Texinfo_nodes) 1005 (Makefile_targets, Postscript_functions, Texinfo_nodes)
@@ -795,7 +1008,7 @@
795 (TeX_commands, get_tag): Use make_tag instead of pfnote. 1008 (TeX_commands, get_tag): Use make_tag instead of pfnote.
796 (get_tag): Prototype changed, all callers changed. 1009 (get_tag): Prototype changed, all callers changed.
797 1010
7982002-06-20 Francesco Potorti` <pot@gnu.org> 10112002-06-20 Francesco Potort,Al(B <pot@gnu.org>
799 1012
800 * etags.c: Implement implicit tag names, that is, unnamed tags 1013 * etags.c: Implement implicit tag names, that is, unnamed tags
801 whose name is automatically deduced by etags.el. The advantage is 1014 whose name is automatically deduced by etags.el. The advantage is
@@ -805,13 +1018,13 @@
805 (make_tag): New function (was the disabled function new_pfnote). 1018 (make_tag): New function (was the disabled function new_pfnote).
806 (make_C_tag): Use it. 1019 (make_C_tag): Use it.
807 1020
8082002-06-19 Francesco Potorti` <pot@gnu.org> 10212002-06-19 Francesco Potort,Al(B <pot@gnu.org>
809 1022
810 * etags.c (add_regex): Invalid regexp modifiers are ignored. 1023 * etags.c (add_regex): Invalid regexp modifiers are ignored.
811 (Makefile_targets): Tag variables unless --no-globals. 1024 (Makefile_targets): Tag variables unless --no-globals.
812 (LOOP_ON_INPUT_LINES): Serious bug corrected. 1025 (LOOP_ON_INPUT_LINES): Serious bug corrected.
813 1026
8142002-06-13 Francesco Potorti` <pot@gnu.org> 10272002-06-13 Francesco Potort,Al(B <pot@gnu.org>
815 1028
816 * etags.c (erlang_atom, erlang_attribute): Bugs corrected. 1029 * etags.c (erlang_atom, erlang_attribute): Bugs corrected.
817 (invalidate_nodes): Bug corrected. 1030 (invalidate_nodes): Bug corrected.
@@ -822,7 +1035,7 @@
822 * makefile.w32-in (lisp): Add international/ucs-tables.elc and 1035 * makefile.w32-in (lisp): Add international/ucs-tables.elc and
823 font-core.elc. 1036 font-core.elc.
824 1037
8252002-06-12 Francesco Potorti` <pot@gnu.org> 10382002-06-12 Francesco Potort,Al(B <pot@gnu.org>
826 1039
827 * etags.c: New multi-line regexp and new regexp syntax. 1040 * etags.c: New multi-line regexp and new regexp syntax.
828 (arg_type): at_icregexp label removed (obsolete). 1041 (arg_type): at_icregexp label removed (obsolete).
@@ -844,13 +1057,13 @@
844 (readline_internal): If necessary, copy the whole file into filebuf. 1057 (readline_internal): If necessary, copy the whole file into filebuf.
845 (readline): Skip multi-line regexps, leave them to regex_tag_multiline. 1058 (readline): Skip multi-line regexps, leave them to regex_tag_multiline.
846 1059
8472002-06-11 Francesco Potorti` <pot@gnu.org> 10602002-06-11 Francesco Potort,Al(B <pot@gnu.org>
848 1061
849 * etags.c (add_regex): Better check for null regexps. 1062 * etags.c (add_regex): Better check for null regexps.
850 (readline): Check for regex matching null string. 1063 (readline): Check for regex matching null string.
851 (find_entries): Reorganisation. 1064 (find_entries): Reorganisation.
852 1065
8532002-06-07 Francesco Potorti` <pot@gnu.org> 10662002-06-07 Francesco Potort,Al(B <pot@gnu.org>
854 1067
855 * etags.c (scan_separators): Support all character escape 1068 * etags.c (scan_separators): Support all character escape
856 sequences supported by Gcc. 1069 sequences supported by Gcc.
@@ -865,7 +1078,7 @@
865 (readline): Conditionally undo readline_internal increment. 1078 (readline): Conditionally undo readline_internal increment.
866 (readline): Do not return a value. 1079 (readline): Do not return a value.
867 1080
8682002-06-06 Francesco Potorti` <pot@gnu.org> 10812002-06-06 Francesco Potort,Al(B <pot@gnu.org>
869 1082
870 * etags.c: New option --parse-stdin=FILE. 1083 * etags.c: New option --parse-stdin=FILE.
871 (enum arg_type): New label at_stdin. 1084 (enum arg_type): New label at_stdin.
@@ -888,7 +1101,7 @@
888 (TEX_tabent, TEX_token): Deleted. 1101 (TEX_tabent, TEX_token): Deleted.
889 (TeX_commands, TEX_decode_env): Streamlined. 1102 (TeX_commands, TEX_decode_env): Streamlined.
890 1103
8912002-06-05 Francesco Potorti` <pot@gnu.org> 11042002-06-05 Francesco Potort,Al(B <pot@gnu.org>
892 1105
893 * etags.c (main): Avoid a buffer overrun with sprintf. 1106 * etags.c (main): Avoid a buffer overrun with sprintf.
894 1107
@@ -936,9 +1149,9 @@
936 * update-game-score.c (read_score) [HAVE_GETDELIM]: Trim trailing 1149 * update-game-score.c (read_score) [HAVE_GETDELIM]: Trim trailing
937 space. 1150 space.
938 1151
9392002-04-22 Francesco Potorti` <pot@gnu.org> 11522002-04-22 Francesco Potort,Al(B <pot@gnu.org>
940 1153
941 * etags.c: (last_node): Make it a global variable. 1154 * etags.c (last_node): Make it a global variable.
942 (process_file): Print the tags from the nodes as soon as 1155 (process_file): Print the tags from the nodes as soon as
943 possible, and delete the nodes. This brings down the memory 1156 possible, and delete the nodes. This brings down the memory
944 occupancy as etags to almost the same level as when the #line 1157 occupancy as etags to almost the same level as when the #line
@@ -957,11 +1170,11 @@
957 * update-game-score.c: Move config.h before the other headers, to 1170 * update-game-score.c: Move config.h before the other headers, to
958 avoid compiler warnings. 1171 avoid compiler warnings.
959 1172
9602002-04-16 Francesco Potorti` <pot@gnu.org> 11732002-04-16 Francesco Potort,Al(B <pot@gnu.org>
961 1174
962 * etags.c (find_entries): Bug fix in list management. 1175 * etags.c (find_entries): Bug fix in list management.
963 1176
9642002-04-15 Francesco Potorti` <pot@gnu.org> 11772002-04-15 Francesco Potort,Al(B <pot@gnu.org>
965 1178
966 * etags.c (get_language_from_filename): Add one argument. 1179 * etags.c (get_language_from_filename): Add one argument.
967 (strcaseeq): New function. 1180 (strcaseeq): New function.
@@ -970,7 +1183,7 @@
970 (find_entries): Try with case insensitive match. 1183 (find_entries): Try with case insensitive match.
971 (process_file): Bug fixed. 1184 (process_file): Bug fixed.
972 1185
9732002-04-13 Francesco Potorti` <pot@gnu.org> 11862002-04-13 Francesco Potort,Al(B <pot@gnu.org>
974 1187
975 * etags.c (find_entries): Delete tags previously obtained from 1188 * etags.c (find_entries): Delete tags previously obtained from
976 file xxx.c's #line directives when parsing file xxx.y. This is 1189 file xxx.c's #line directives when parsing file xxx.y. This is
@@ -1017,7 +1230,7 @@
1017 1230
10182002-04-10 Colin Walters <walters@verbum.org> 12312002-04-10 Colin Walters <walters@verbum.org>
1019 1232
1020 * update-game-score.c: (toplevel): Include stdarg.h. 1233 * update-game-score.c (toplevel): Include stdarg.h.
1021 (MAX_DATA_LEN, MAX_SCORES): New. 1234 (MAX_DATA_LEN, MAX_SCORES): New.
1022 (SCORE_FILE_PREFIX): If HAVE_SHARED_GAME_DIR is not defined, 1235 (SCORE_FILE_PREFIX): If HAVE_SHARED_GAME_DIR is not defined,
1023 default to ~/.emacs.d/games. 1236 default to ~/.emacs.d/games.
@@ -1081,7 +1294,7 @@
1081 `sort TAGFILE -o TAGFILE', as POSIX 1003.1-2001 disallows 1294 `sort TAGFILE -o TAGFILE', as POSIX 1003.1-2001 disallows
1082 the latter usage. 1295 the latter usage.
1083 1296
10842002-03-12 Francesco Potorti` <pot@gnu.org> 12972002-03-12 Francesco Potort,Al(B <pot@gnu.org>
1085 1298
1086 * etags.c (Python_functions): Skip spaces at beginning of lines. 1299 * etags.c (Python_functions): Skip spaces at beginning of lines.
1087 (Python_functions, PHP_functions): Name tags, for ctags' sake. 1300 (Python_functions, PHP_functions): Name tags, for ctags' sake.
@@ -1096,7 +1309,7 @@
1096 * etags.c (put_entries): Use #if !CTAGS, to fix link error on 1309 * etags.c (put_entries): Use #if !CTAGS, to fix link error on
1097 compilers that don't optimize out dead code. 1310 compilers that don't optimize out dead code.
1098 1311
10992002-03-05 Francesco Potorti` <pot@gnu.org> 13122002-03-05 Francesco Potort,Al(B <pot@gnu.org>
1100 1313
1101 * etags.c: Honour #line directives. 1314 * etags.c: Honour #line directives.
1102 (no_line_directive): New global var; set it for old behaviour. 1315 (no_line_directive): New global var; set it for old behaviour.
@@ -1165,7 +1378,7 @@
1165 * cvtmail.c, emacsclient.c, emacsserver.c, pop.c, sorted-doc.c, 1378 * cvtmail.c, emacsclient.c, emacsserver.c, pop.c, sorted-doc.c,
1166 * yow.c: Include <config.h>. 1379 * yow.c: Include <config.h>.
1167 1380
11682001-12-21 Francesco Potorti` <pot@gnu.org> 13812001-12-21 Francesco Potort,Al(B <pot@gnu.org>
1169 1382
1170 * etags.c (Perl_functions): Tag packages and use them in sub tags. 1383 * etags.c (Perl_functions): Tag packages and use them in sub tags.
1171 (get_tag): Return a pointer to the tag that is found. 1384 (get_tag): Return a pointer to the tag that is found.
@@ -1185,13 +1398,13 @@
1185 (L_isdef, L_isquote): Removed. 1398 (L_isdef, L_isquote): Removed.
1186 (Lisp_functions, L_getit): Clarified. 1399 (Lisp_functions, L_getit): Clarified.
1187 1400
1188 * etags.c: (P_): Renamed to __P for consistency with config.h. 1401 * etags.c (P_): Renamed to __P for consistency with config.h.
1189 [HAVE_CONFIG_H]: Let config.h deal with __P. 1402 [HAVE_CONFIG_H]: Let config.h deal with __P.
1190 [__STDC__] [!HAVE_CONFIG_H]: Define PTR as in config.h. 1403 [__STDC__] [!HAVE_CONFIG_H]: Define PTR as in config.h.
1191 [!__STDC__] [!HAVE_CONFIG_H]: Do not undefine static, because 1404 [!__STDC__] [!HAVE_CONFIG_H]: Do not undefine static, because
1192 gperf code needs it. 1405 gperf code needs it.
1193 [HAVE_CONFIG_H] [!PTR]: Define PTR (for use with Xemacs). 1406 [HAVE_CONFIG_H] [!PTR]: Define PTR (for use with XEmacs).
1194 [HAVE_CONFIG_H] [!__P]: Define __P (for use with Xemacs). 1407 [HAVE_CONFIG_H] [!__P]: Define __P (for use with XEmacs).
1195 (xmalloc, xrealloc): Use PTR instead of long *. 1408 (xmalloc, xrealloc): Use PTR instead of long *.
1196 (bool): Make it a define, not a typedef, for C++ compilers. 1409 (bool): Make it a define, not a typedef, for C++ compilers.
1197 (pattern): Members renamed to avoid name clash in some C++ compilers. 1410 (pattern): Members renamed to avoid name clash in some C++ compilers.
@@ -1237,7 +1450,7 @@
1237 not <../src/epaths.h>. 1450 not <../src/epaths.h>.
1238 (malloc, realloc) [!HAVE_STDLIB_H]: Prototype. 1451 (malloc, realloc) [!HAVE_STDLIB_H]: Prototype.
1239 1452
12402001-12-12 Francesco Potorti` <pot@gnu.org> 14532001-12-12 Francesco Potort,Al(B <pot@gnu.org>
1241 1454
1242 * etags.c (PHP_functions): New function for parsing PHP. 1455 * etags.c (PHP_functions): New function for parsing PHP.
1243 (LOOKING_AT): New macro. 1456 (LOOKING_AT): New macro.
@@ -1472,11 +1685,11 @@
1472 * ebrowse.c (main): Check that the output file exists and 1685 * ebrowse.c (main): Check that the output file exists and
1473 is non-empty if invoked with `--append'. 1686 is non-empty if invoked with `--append'.
1474 1687
14752001-05-14 Francesco Potorti` <pot@gnu.org> 16882001-05-14 Francesco Potort,Al(B <pot@gnu.org>
1476 1689
1477 * etags.c (add_regex): Reset the whole newly allocated pattern 1690 * etags.c (add_regex): Reset the whole newly allocated pattern
1478 buffer instead of the individual members. It's safer and works 1691 buffer instead of the individual members. It's safer and works
1479 with Xemacs. 1692 with XEmacs.
1480 1693
1481 * etags.1: Markups corrected. 1694 * etags.1: Markups corrected.
1482 1695
@@ -1514,7 +1727,7 @@
1514 1727
1515 * makefile.w32-in: Fix copyright notice. 1728 * makefile.w32-in: Fix copyright notice.
1516 1729
15172001-02-23 Francesco Potorti` <pot@gnu.org> 17302001-02-23 Francesco Potort,Al(B <pot@gnu.org>
1518 1731
1519 * etags.c (enum sym_type): New label st_C_template. 1732 * etags.c (enum sym_type): New label st_C_template.
1520 (gperf input): Use it for switching to C++ from C. 1733 (gperf input): Use it for switching to C++ from C.
@@ -1541,9 +1754,9 @@
1541 1754
1542 * etags.c (in_word_set): Use `static' in definition (for pcc). 1755 * etags.c (in_word_set): Use `static' in definition (for pcc).
1543 1756
15442001-01-31 Francesco Potorti` <pot@gnu.org> 17572001-01-31 Francesco Potort,Al(B <pot@gnu.org>
1545 1758
1546 * etags.c: [NDEBUG] #undef assert and #define it as ((void)0), for 1759 * etags.c [NDEBUG]: #undef assert and #define it as ((void)0), for
1547 the sake of some buggy assert.h (e.g. in MinGW and sunos4 pcc). 1760 the sake of some buggy assert.h (e.g. in MinGW and sunos4 pcc).
1548 (C_entries): Tag token renamed to still_in_token because sunos4 1761 (C_entries): Tag token renamed to still_in_token because sunos4
1549 pcc wants to expand it as the token() macro even though it has no 1762 pcc wants to expand it as the token() macro even though it has no
@@ -1554,10 +1767,10 @@
1554 * etags.c (assert) [__MINGW32__]: Redefine assert to work around a 1767 * etags.c (assert) [__MINGW32__]: Redefine assert to work around a
1555 bug in the Mingw32 assert.h header file. 1768 bug in the Mingw32 assert.h header file.
1556 1769
15572001-01-30 Francesco Potorti` <pot@gnu.org> 17702001-01-30 Francesco Potort,Al(B <pot@gnu.org>
1558 1771
1559 * etags.c: [WIN32-NATIVE]: #undef MSDOS, #undef WINDOWSNT and 1772 * etags.c [WIN32-NATIVE]: #undef MSDOS, #undef WINDOWSNT and
1560 #define it for the sake of Xemacs. 1773 #define it for the sake of XEmacs.
1561 [WINDOWSNT]: #undef HAVE_NTGUI even if built without 1774 [WINDOWSNT]: #undef HAVE_NTGUI even if built without
1562 HAVE_CONFIG_H. This change only affects a standalone etags. 1775 HAVE_CONFIG_H. This change only affects a standalone etags.
1563 [WINDOWSNT]: #undef DOS_NT and #define it even if built with 1776 [WINDOWSNT]: #undef DOS_NT and #define it even if built with
@@ -1566,7 +1779,7 @@
1566 [!HAVE_UNISTD_H]: use defined(WINDOWSNT) instead of the bare 1779 [!HAVE_UNISTD_H]: use defined(WINDOWSNT) instead of the bare
1567 WINDOWSNT, as this is the correct way to use it. 1780 WINDOWSNT, as this is the correct way to use it.
1568 1781
15692001-01-28 Francesco Potorti` <pot@gnu.org> 17822001-01-28 Francesco Potort,Al(B <pot@gnu.org>
1570 1783
1571 * etags.c: Be capable to parse nested struct-like structures. 1784 * etags.c: Be capable to parse nested struct-like structures.
1572 (structdef, structtag): Struct state machine revisited. 1785 (structdef, structtag): Struct state machine revisited.
@@ -1600,7 +1813,7 @@
1600 (matching_regexp): Use them instead of static variables in 1813 (matching_regexp): Use them instead of static variables in
1601 function scope. 1814 function scope.
1602 1815
16032001-01-25 Francesco Potorti` <pot@gnu.org> 18162001-01-25 Francesco Potort,Al(B <pot@gnu.org>
1604 1817
1605 * etags.c (struct tok): Renamed from struct token. 1818 * etags.c (struct tok): Renamed from struct token.
1606 (token): Renamed from tok. 1819 (token): Renamed from tok.
@@ -1629,12 +1842,12 @@
1629 * ebrowse.c (xfree): New function. 1842 * ebrowse.c (xfree): New function.
1630 (member, declaration, globals): Use xmalloc instead of alloca. 1843 (member, declaration, globals): Use xmalloc instead of alloca.
1631 1844
16322001-01-15 Francesco Potorti` <pot@gnu.org> 18452001-01-15 Francesco Potort,Al(B <pot@gnu.org>
1633 1846
1634 * etags.c (print_language_names): Print filenames in addition to 1847 * etags.c (print_language_names): Print filenames in addition to
1635 suffixes. 1848 suffixes.
1636 1849
16372001-01-14 Francesco Potorti` <pot@gnu.org> 18502001-01-14 Francesco Potort,Al(B <pot@gnu.org>
1638 1851
1639 * etags.c (get_language_from_langname): Renamed from 1852 * etags.c (get_language_from_langname): Renamed from
1640 get_language_from_name. 1853 get_language_from_name.
@@ -1873,14 +2086,14 @@
1873 2086
1874 * etags.c (lisp_suffixes) Add `LSP'. 2087 * etags.c (lisp_suffixes) Add `LSP'.
1875 2088
18762000-02-10 Francesco Potorti` <pot@gnu.org> 20892000-02-10 Francesco Potort,Al(B <pot@gnu.org>
1877 2090
1878 * etags.c (iswhite): Redefine not to consider '\0' as white 2091 * etags.c (iswhite): Redefine not to consider '\0' as white
1879 space, and use it throughout in place of isspace, thus preventing a 2092 space, and use it throughout in place of isspace, thus preventing a
1880 potential signed char to int conversion problem. 2093 potential signed char to int conversion problem.
1881 (MSDOS): #undefine befere redefining 2094 (MSDOS): #undefine befere redefining
1882 2095
18832000-02-04 Francesco Potorti` <pot@gnu.org> 20962000-02-04 Francesco Potort,Al(B <pot@gnu.org>
1884 2097
1885 * etags.c (many functions): Add prototypes. 2098 * etags.c (many functions): Add prototypes.
1886 2099
@@ -1889,7 +2102,7 @@
1889 * etags.c (pfnote, new_pfnote, C_entries, prolog_pred) 2102 * etags.c (pfnote, new_pfnote, C_entries, prolog_pred)
1890 (erlang_func): Add `static' to definitions to keep pcc happy. 2103 (erlang_func): Add `static' to definitions to keep pcc happy.
1891 2104
18922000-01-31 Francesco Potorti` <pot@gnu.org> 21052000-01-31 Francesco Potort,Al(B <pot@gnu.org>
1893 2106
1894 * etags.c [MSDOS]: Set MSDOS to 1 if #defined, 0 otherwise. 2107 * etags.c [MSDOS]: Set MSDOS to 1 if #defined, 0 otherwise.
1895 (get_compressor_from_suffix, process_file): Use MSDOS in if clause. 2108 (get_compressor_from_suffix, process_file): Use MSDOS in if clause.
@@ -1928,7 +2141,7 @@
1928 * movemail.c (popmail): Allow mailbox specifications of the 2141 * movemail.c (popmail): Allow mailbox specifications of the
1929 form `po:username:hostname'. 2142 form `po:username:hostname'.
1930 2143
19311999-11-19 Francesco Potorti` <pot@gnu.org> 21441999-11-19 Francesco Potort,Al(B <pot@gnu.org>
1932 2145
1933 * etags.c (_GNU_SOURCE): Define only if undefined. 2146 * etags.c (_GNU_SOURCE): Define only if undefined.
1934 (get_scheme): Declaration deleted. 2147 (get_scheme): Declaration deleted.
@@ -1949,7 +2162,7 @@
1949 2162
1950 * etags.c (print_help): Change email address to send bugs to. 2163 * etags.c (print_help): Change email address to send bugs to.
1951 2164
19521999-11-01 Francesco Potorti` <pot@gnu.org>> 21651999-11-01 Francesco Potort,Al(B <pot@gnu.org>>
1953 2166
1954 * etags.c: Add suffix psw for PSWrap. 2167 * etags.c: Add suffix psw for PSWrap.
1955 (L_getit): Generalize a "cp!=' '" into "!isspace(*cp)". 2168 (L_getit): Generalize a "cp!=' '" into "!isspace(*cp)".
@@ -2003,7 +2216,7 @@
2003 [MSDOS]: Support DOS file names by handling e.g. foo.cgz as if it 2216 [MSDOS]: Support DOS file names by handling e.g. foo.cgz as if it
2004 were foo.c.gz. 2217 were foo.c.gz.
2005 2218
20061999-11-01 Francesco Potorti` <pot@gnu.org> 22191999-11-01 Francesco Potort,Al(B <pot@gnu.org>
2007 2220
2008 * etags.c (sym_type, C_stab_entry): New constant st_C_operator. 2221 * etags.c (sym_type, C_stab_entry): New constant st_C_operator.
2009 (fvdev): New constant foperator. 2222 (fvdev): New constant foperator.
@@ -2037,7 +2250,7 @@
2037 (add_regex): New arg determining whether to use translation table. 2250 (add_regex): New arg determining whether to use translation table.
2038 (analyse_regex): New arg. Use it for add_regex. 2251 (analyse_regex): New arg. Use it for add_regex.
2039 2252
20401999-11-01 Francesco Potorti` <pot@gnu.org> 22531999-11-01 Francesco Potort,Al(B <pot@gnu.org>
2041 2254
2042 * etags.c (init): Cosmetic change: NULL --> '\0'. 2255 * etags.c (init): Cosmetic change: NULL --> '\0'.
2043 (erlang_attribute): Bug corrected (uninitialized variable). 2256 (erlang_attribute): Bug corrected (uninitialized variable).
@@ -2073,7 +2286,7 @@
2073 Change name of local vars to avoid clashes with typedef linebuffer. 2286 Change name of local vars to avoid clashes with typedef linebuffer.
2074 (readline): Rewritten for new functionality. 2287 (readline): Rewritten for new functionality.
2075 2288
2076 * etags.c: (Scheme_suffixes): New suffix ".ss". 2289 * etags.c (Scheme_suffixes): New suffix ".ss".
2077 (print_help): --globals is now used for more than C-type languages. 2290 (print_help): --globals is now used for more than C-type languages.
2078 (Perl_functions): Tag global variables ("my" and "local"). 2291 (Perl_functions): Tag global variables ("my" and "local").
2079 2292
@@ -2101,10 +2314,9 @@
2101 characters and compilers with default signed chars. 2314 characters and compilers with default signed chars.
2102 (L_getit): Tag "(defstruct (foo", "(defun (operator" and similar 2315 (L_getit): Tag "(defstruct (foo", "(defun (operator" and similar
2103 constructs. 2316 constructs.
2317 (C_stab_entry): "interface" in Java behaves like "class".
2104 2318
2105 * (C_stab_entry): "interface" in Java behaves like "class". 2319 * etags.c (HAVE_NTGUI) [WINDOWSNT]: #undef if HAVE_CONFIG_H.
2106
2107 * etags.c: (HAVE_NTGUI) [WINDOWSNT]: #undef if HAVE_CONFIG_H.
2108 (main): Put interval syntax here. 2320 (main): Put interval syntax here.
2109 (add_regex): And remove it from here. 2321 (add_regex): And remove it from here.
2110 2322
@@ -2461,9 +2673,9 @@
2461 2673
24621997-10-16 Dave Love <d.love@dl.ac.uk> 26741997-10-16 Dave Love <d.love@dl.ac.uk>
2463 2675
2464 * etags.c (L_getit): Always make named tags so that Emacs 2676 * etags.c (L_getit): Always make named tags so that Emacs
2465 completion on symbols containing `:' etc. works. 2677 completion on symbols containing `:' etc. works.
2466 (get_scheme): Likewise. 2678 (get_scheme): Likewise.
2467 2679
24681997-09-24 Jonathan I. Kamens <jik@kamens.brookline.ma.us> 26801997-09-24 Jonathan I. Kamens <jik@kamens.brookline.ma.us>
2469 2681
@@ -2523,19 +2735,19 @@
25231997-07-22 Jonathan I. Kamens <jik@kamens.brookline.ma.us> 27351997-07-22 Jonathan I. Kamens <jik@kamens.brookline.ma.us>
2524 2736
2525 * pop.c: Support auto-configuration of both Kerberos V4 and 2737 * pop.c: Support auto-configuration of both Kerberos V4 and
2526 Kerberos V5 for movemail, including detection of V4 and V5 header 2738 Kerberos V5 for movemail, including detection of V4 and V5 header
2527 files and libraries. 2739 files and libraries.
2528 Include <string.h> when STDC_HEADERS is defined, to get 2740 Include <string.h> when STDC_HEADERS is defined, to get
2529 declarations of string functions. 2741 declarations of string functions.
2530 [KERBEROS5] (socket_connection): Support the current MIT Kerberos 2742 [KERBEROS5] (socket_connection): Support the current MIT Kerberos
2531 V5 API rather than the old one. 2743 V5 API rather than the old one.
2532 [KERBEROS] (socket_connection): Change a constant name from 2744 [KERBEROS] (socket_connection): Change a constant name from
2533 SOCKET_ERROR to POP_SOCKET_ERROR to avoid a namespace conflict 2745 SOCKET_ERROR to POP_SOCKET_ERROR to avoid a namespace conflict
2534 with a constant in a header file. 2746 with a constant in a header file.
2535 2747
2536 * Makefile.in: Support auto-configuration of both Kerberos V4 and 2748 * Makefile.in: Support auto-configuration of both Kerberos V4 and
2537 Kerberos V5 for movemail, including detection of V4 and V5 header 2749 Kerberos V5 for movemail, including detection of V4 and V5 header
2538 files and libraries. 2750 files and libraries.
2539 2751
25401997-07-17 Richard Stallman <rms@psilocin.gnu.ai.mit.edu> 27521997-07-17 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
2541 2753
@@ -2551,7 +2763,7 @@
2551 2763
2552 * movemail.c (rindex): Add declaration. 2764 * movemail.c (rindex): Add declaration.
2553 2765
2554Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu> 27661997-07-01 Geoff Voelker <voelker@cs.washington.edu>
2555 2767
2556 * makefile.nt (GETOPTOBJS, GETOPTDEFS, MOVEMAILOBJS): Define. 2768 * makefile.nt (GETOPTOBJS, GETOPTDEFS, MOVEMAILOBJS): Define.
2557 (movemail.exe): Depend upon and link with getopt files. 2769 (movemail.exe): Depend upon and link with getopt files.
@@ -2572,14 +2784,14 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2572 * b2m.c (readline): Terminate buffer properly when EOF seen. 2784 * b2m.c (readline): Terminate buffer properly when EOF seen.
2573 Test for valid pointer before dereferencing it. 2785 Test for valid pointer before dereferencing it.
2574 2786
25751997-05-30 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 27871997-05-30 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2576 2788
2577 * Makefile.in (etags): Remove -DETAGS_REGEXPS, because now it is 2789 * Makefile.in (etags): Remove -DETAGS_REGEXPS, because now it is
2578 defined inside etags.c if HAVE_CONFIG_H is defined. 2790 defined inside etags.c if HAVE_CONFIG_H is defined.
2579 2791
25801997-05-29 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 27921997-05-29 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2581 2793
2582 * etags.c: (logical): Type name changed to bool. 2794 * etags.c (logical): Type name changed to bool.
2583 (ETAGS_REGEXPS, LONG_OPTIONS) [HAVE_CONFIG_H]: #define them. 2795 (ETAGS_REGEXPS, LONG_OPTIONS) [HAVE_CONFIG_H]: #define them.
2584 (<getopt.h>) [LONG_OPTIONS]: Include conditionally. 2796 (<getopt.h>) [LONG_OPTIONS]: Include conditionally.
2585 (getopt_long) [!LONG_OPTIONS]: Redefine as macro. 2797 (getopt_long) [!LONG_OPTIONS]: Redefine as macro.
@@ -2589,7 +2801,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2589 defined conditionally to ETAGS_REGEXPS. 2801 defined conditionally to ETAGS_REGEXPS.
2590 (print_help): Updated. 2802 (print_help): Updated.
2591 2803
25921997-05-22 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 28041997-05-22 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2593 2805
2594 * etags.c (C_entries): Use "." instead of "::" for Java. 2806 * etags.c (C_entries): Use "." instead of "::" for Java.
2595 (consider_token): is_func renamed to is_func_or_var. 2807 (consider_token): is_func renamed to is_func_or_var.
@@ -2604,7 +2816,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2604 (main, C_entries): Use them. 2816 (main, C_entries): Use them.
2605 (make_C_tag, C_entries): Make tok a global variable. 2817 (make_C_tag, C_entries): Make tok a global variable.
2606 2818
26071997-05-16 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 28191997-05-16 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2608 2820
2609 * etags.c (funcdef): New vignore constant. 2821 * etags.c (funcdef): New vignore constant.
2610 (consider_token, C_entries): Use it to tag global variables. 2822 (consider_token, C_entries): Use it to tag global variables.
@@ -2614,7 +2826,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2614 (Cobol_suffixes, lang_names, Cobol_paragraphs): Cobol support. 2826 (Cobol_suffixes, lang_names, Cobol_paragraphs): Cobol support.
2615 (prolog_white, erlang_white): Renamed to eat_white, callers changed. 2827 (prolog_white, erlang_white): Renamed to eat_white, callers changed.
2616 2828
26171997-05-15 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 28291997-05-15 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2618 2830
2619 * etags.c (CHARS, CHAR): New constant and macro. 2831 * etags.c (CHARS, CHAR): New constant and macro.
2620 (iswhite, begtoken, intoken, endtoken): Use them. 2832 (iswhite, begtoken, intoken, endtoken): Use them.
@@ -2624,13 +2836,13 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2624 (make_C_tag) [traditional_tag_style]: Use it. 2836 (make_C_tag) [traditional_tag_style]: Use it.
2625 (traditional_tag_style): Costant set to TRUE for now. 2837 (traditional_tag_style): Costant set to TRUE for now.
2626 2838
26271997-05-14 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 28391997-05-14 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2628 2840
2629 * etags.c (C_entries, Pascal_functions): Cleanup. 2841 * etags.c (C_entries, Pascal_functions): Cleanup.
2630 (TeX_functions): NULL as a function arg needs a cast. 2842 (TeX_functions): NULL as a function arg needs a cast.
2631 (Erlang_functions, erlang_func, erlang_attribute): Cleanup. 2843 (Erlang_functions, erlang_func, erlang_attribute): Cleanup.
2632 2844
26331997-05-13 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 28451997-05-13 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2634 2846
2635 * etags.c (TeX_functions): Cleaned up. 2847 * etags.c (TeX_functions): Cleaned up.
2636 (tex_getit): Removed. 2848 (tex_getit): Removed.
@@ -2638,9 +2850,9 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
26381997-05-13 Paul Eggert <eggert@twinsun.com> 28501997-05-13 Paul Eggert <eggert@twinsun.com>
2639 2851
2640 * rcs2log (files): When computing arguments automatically, ignore 2852 * rcs2log (files): When computing arguments automatically, ignore
2641 non-files within the RCS subdirectory. 2853 non-files within the RCS subdirectory.
2642 2854
26431997-05-13 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 28551997-05-13 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2644 2856
2645 * etags.c (C_JAVA): New #define. 2857 * etags.c (C_JAVA): New #define.
2646 (Cjava_suffixes): .java is Java. 2858 (Cjava_suffixes): .java is Java.
@@ -2650,9 +2862,9 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2650 (C_stab_entry): Add `extends' and `implements' keywords. 2862 (C_stab_entry): Add `extends' and `implements' keywords.
2651 (consider_token, C_entries): Recognise Java structures. 2863 (consider_token, C_entries): Recognise Java structures.
2652 2864
26531997-05-12 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 28651997-05-12 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2654 2866
2655 * etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax. 2867 * etags.c (Cplusplus_suffixes): .pdb is Postscript with C syntax.
2656 (Postscript_suffixes): .ps is Postscript. 2868 (Postscript_suffixes): .ps is Postscript.
2657 (lang_names): Add Postscript. 2869 (lang_names): Add Postscript.
2658 (Postscript_functions): New function. 2870 (Postscript_functions): New function.
@@ -2662,10 +2874,10 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
26621997-05-11 Paul Eggert <eggert@twinsun.com> 28741997-05-11 Paul Eggert <eggert@twinsun.com>
2663 2875
2664 * rcs2log (loginFullnameMailaddrs, logins, rlog_options, files): 2876 * rcs2log (loginFullnameMailaddrs, logins, rlog_options, files):
2665 Don't prepend $nl since this causes some shells to generate the 2877 Don't prepend $nl since this causes some shells to generate the
2666 empty string when IFS is $nl. 2878 empty string when IFS is $nl.
2667 (printlogline): Use SOH (octal code 1), not CR, since some 2879 (printlogline): Use SOH (octal code 1), not CR, since some
2668 PC-based shells mishandle CR. 2880 PC-based shells mishandle CR.
2669 (initialize_fullname): Set NIS_PATH to the empty string before invoking 2881 (initialize_fullname): Set NIS_PATH to the empty string before invoking
2670 nismatch, in case it's set to some nonstandard value. 2882 nismatch, in case it's set to some nonstandard value.
2671 2883
@@ -2674,7 +2886,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2674 * pop.c (getline): Don't miss CRLF pairs when the CR and LF are 2886 * pop.c (getline): Don't miss CRLF pairs when the CR and LF are
2675 read in separate blocks. 2887 read in separate blocks.
2676 2888
26771997-04-30 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 28891997-04-30 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2678 2890
2679 * etags.c [TeX_named_tokens]: Set to FALSE if undefined. 2891 * etags.c [TeX_named_tokens]: Set to FALSE if undefined.
2680 (struct linebuffer): New member `len' is the length of the string. 2892 (struct linebuffer): New member `len' is the length of the string.
@@ -2692,14 +2904,14 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2692 * makefile.nt: Change references of windowsnt.h to ms-w32.h. 2904 * makefile.nt: Change references of windowsnt.h to ms-w32.h.
2693 (obj): Change references of nt*.c files to w32*.c files. 2905 (obj): Change references of nt*.c files to w32*.c files.
2694 2906
26951997-04-15 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 29071997-04-15 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2696 2908
2697 * etags.c (xnew): Add support for debugging with chkmalloc. 2909 * etags.c (xnew): Add support for debugging with chkmalloc.
2698 (error): Use this instead of printf whenever possible. 2910 (error): Use this instead of printf whenever possible.
2699 (main): Only call xnew after having initialised progname. 2911 (main): Only call xnew after having initialised progname.
2700 (substitute): Bad memory corruption error corrected. 2912 (substitute): Bad memory corruption error corrected.
2701 2913
27021997-04-08 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 29141997-04-08 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2703 2915
2704 * etags.c (add_regex): Undo previous change. 2916 * etags.c (add_regex): Undo previous change.
2705 (relative_filename): Small memory leak closed. 2917 (relative_filename): Small memory leak closed.
@@ -2709,11 +2921,11 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
27091997-03-21 Paul Eggert <eggert@twinsun.com> 29211997-03-21 Paul Eggert <eggert@twinsun.com>
2710 2922
2711 * rcs2log (files): Ignore files in RCS directory whose names are 2923 * rcs2log (files): Ignore files in RCS directory whose names are
2712 of the form ,*, or *_; they are probably RCS lock files. 2924 of the form ,*, or *_; they are probably RCS lock files.
2713 Also, ignore files named .rcsfreeze.log or .rcsfreeze.ver; 2925 Also, ignore files named .rcsfreeze.log or .rcsfreeze.ver;
2714 they are used by rcsfreeze. 2926 they are used by rcsfreeze.
2715 2927
27161997-03-14 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 29281997-03-14 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2717 2929
2718 * etags.c (add_regex): reset *putbuf before using it. 2930 * etags.c (add_regex): reset *putbuf before using it.
2719 2931
@@ -2743,7 +2955,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2743 2955
27441997-01-20 Paul Eggert <eggert@twinsun.com> 29561997-01-20 Paul Eggert <eggert@twinsun.com>
2745 2957
2746 * rcs2log: (--help, --version): New options, per GNU coding standards. 2958 * rcs2log (--help, --version): New options, per GNU coding standards.
2747 (Copyright, Help, Id): New variables, for above. 2959 (Copyright, Help, Id): New variables, for above.
2748 (rlog): Use -q option with cvs log, to avoid useless chatter. 2960 (rlog): Use -q option with cvs log, to avoid useless chatter.
2749 2961
@@ -2764,26 +2976,26 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
27641996-12-18 Jonathan I. Kamens <jik@annex-1-slip-jik.cam.ov.com> 29761996-12-18 Jonathan I. Kamens <jik@annex-1-slip-jik.cam.ov.com>
2765 2977
2766 * Makefile.in (LIBMAIL): New macro. Conditionally includes -lmail. 2978 * Makefile.in (LIBMAIL): New macro. Conditionally includes -lmail.
2767 (movemail): Use LIBMAIL, to link against -lmail. 2979 (movemail): Use LIBMAIL, to link against -lmail.
2768 2980
2769 * movemail.c: Include maillock.h (conditionally). 2981 * movemail.c: Include maillock.h (conditionally).
2770 Remove a redundant inclusion of <stdio.h>. 2982 Remove a redundant inclusion of <stdio.h>.
2771 (MAIL_USE_MAILLOCK): New macro, conditionally defined. 2983 (MAIL_USE_MAILLOCK): New macro, conditionally defined.
2772 (main): Add variable spool_name. 2984 (main): Add variable spool_name.
2773 Support the usage of maillock and mailunlock to 2985 Support the usage of maillock and mailunlock to
2774 lock and unlock mailboxes. 2986 lock and unlock mailboxes.
2775 (mail_spool_name): New function. 2987 (mail_spool_name): New function.
2776 2988
2777 * movemail.c: Fix an uninitialized variable which could cause 2989 * movemail.c: Fix an uninitialized variable which could cause
2778 movemail to exit with an error status incorrectly on systems which 2990 movemail to exit with an error status incorrectly on systems which
2779 use lock files rather than a system locking function to lock 2991 use lock files rather than a system locking function to lock
2780 mailboxes. 2992 mailboxes.
2781 2993
27821996-12-16 Richard Stallman <rms@psilocin.gnu.ai.mit.edu> 29941996-12-16 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
2783 2995
2784 * pop.c (socket_connection): Free realhost after using it. 2996 * pop.c (socket_connection): Free realhost after using it.
2785 2997
27861996-12-04 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 29981996-12-04 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2787 2999
2788 * etags.c (C_entries): Test tok.valid. This handles some 3000 * etags.c (C_entries): Test tok.valid. This handles some
2789 particular cases involving function declarations that failed. 3001 particular cases involving function declarations that failed.
@@ -2794,14 +3006,14 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2794 gethostbyname may return a pointer to static data. 3006 gethostbyname may return a pointer to static data.
2795 krb_realmofhost can clobber it. So copy it. 3007 krb_realmofhost can clobber it. So copy it.
2796 3008
27971996-11-14 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 30091996-11-14 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2798 3010
2799 * etags.c (pfnote, fatal, error): Callers using a NULL pointer 3011 * etags.c (pfnote, fatal, error): Callers using a NULL pointer
2800 must cast it to (char *) because we have no prototypes. 3012 must cast it to (char *) because we have no prototypes.
2801 (make_C_tag): Macro deleted, new function. 3013 (make_C_tag): Macro deleted, new function.
2802 (C_entries): Calls to make_C_tag macro changed to call function. 3014 (C_entries): Calls to make_C_tag macro changed to call function.
2803 3015
28041996-11-13 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 30161996-11-13 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2805 3017
2806 * etags.c (grow_linebuffer): New function. 3018 * etags.c (grow_linebuffer): New function.
2807 (GROW_LINEBUFFER): Macro deleted. All callers changed. 3019 (GROW_LINEBUFFER): Macro deleted. All callers changed.
@@ -2811,7 +3023,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2811 number of arguments. 3023 number of arguments.
2812 (xrealloc): fatal was called with wrong number of arguments 3024 (xrealloc): fatal was called with wrong number of arguments
2813 3025
28141996-11-08 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 30261996-11-08 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2815 3027
2816 * etags.c (relative_filename): Bug corrected. 3028 * etags.c (relative_filename): Bug corrected.
2817 (etags_getcwd): Avoid warning of unused variable. 3029 (etags_getcwd): Avoid warning of unused variable.
@@ -2820,7 +3032,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
28201996-11-03 Paul Eggert <eggert@twinsun.com> 30321996-11-03 Paul Eggert <eggert@twinsun.com>
2821 3033
2822 * rcs2log: When processing cvs log output, remove `Attic/' from 3034 * rcs2log: When processing cvs log output, remove `Attic/' from
2823 repository file names. 3035 repository file names.
2824 3036
28251996-10-22 Karl Heuer <kwzh@gnu.ai.mit.edu> 30371996-10-22 Karl Heuer <kwzh@gnu.ai.mit.edu>
2826 3038
@@ -2829,7 +3041,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
28291996-10-12 Paul Eggert <eggert@twinsun.com> 30411996-10-12 Paul Eggert <eggert@twinsun.com>
2830 3042
2831 * rcs2log (rlog_options): Look for ' option' rather than 'unknown 3043 * rcs2log (rlog_options): Look for ' option' rather than 'unknown
2832 option', since CVS says 'invalid option'. 3044 option', since CVS says 'invalid option'.
2833 (datearg): Use the empty string, not '-d>1970-01-01', to extract all 3045 (datearg): Use the empty string, not '-d>1970-01-01', to extract all
2834 revisions, since some hosts reject 1970-01-01 when east of UTC. 3046 revisions, since some hosts reject 1970-01-01 when east of UTC.
2835 (date): Remove. 3047 (date): Remove.
@@ -2838,7 +3050,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2838 3050
2839 * etags.c (etags_getcwd) [WINDOWSNT]: Convert backslashes to slashes. 3051 * etags.c (etags_getcwd) [WINDOWSNT]: Convert backslashes to slashes.
2840 3052
28411996-10-02 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 30531996-10-02 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
2842 3054
2843 * etags.c (print_version): Print copyright info. 3055 * etags.c (print_version): Print copyright info.
2844 3056
@@ -2850,7 +3062,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
28501996-09-29 Dave Love <d.love@dl.ac.uk> 30621996-09-29 Dave Love <d.love@dl.ac.uk>
2851 3063
2852 * rcs2log (date): Make default format acceptable to CVS post v1.8 3064 * rcs2log (date): Make default format acceptable to CVS post v1.8
2853 as well as earlier CVSs and RCS. 3065 as well as earlier CVSs and RCS.
2854 3066
28551996-09-29 Richard Stallman <rms@ethanol.gnu.ai.mit.edu> 30671996-09-29 Richard Stallman <rms@ethanol.gnu.ai.mit.edu>
2856 3068
@@ -2860,7 +3072,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
28601996-09-25 Paul Eggert <eggert@twinsun.com> 30721996-09-25 Paul Eggert <eggert@twinsun.com>
2861 3073
2862 * rcs2log (rlog_options): Use $rlog, not rlog, when deciding 3074 * rcs2log (rlog_options): Use $rlog, not rlog, when deciding
2863 whether to append -zLT. 3075 whether to append -zLT.
2864 3076
28651996-09-16 Karl Heuer <kwzh@gnu.ai.mit.edu> 30771996-09-16 Karl Heuer <kwzh@gnu.ai.mit.edu>
2866 3078
@@ -2890,7 +3102,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2890 3102
2891 * emacsserver.c: On fatal signal, delete socket-file: 3103 * emacsserver.c: On fatal signal, delete socket-file:
2892 * emacsserver.c: Include signal.h. 3104 * emacsserver.c: Include signal.h.
2893 (xmalloc, fatal, error): New functions. 3105 (xmalloc, fatal, error): New functions.
2894 (delete_socket, handle_signals): New functions. 3106 (delete_socket, handle_signals): New functions.
2895 (progname, socket_name): New variables. 3107 (progname, socket_name): New variables.
2896 [HAVE_SOCKETS] (main): Call handle_signals; set the new variables. 3108 [HAVE_SOCKETS] (main): Call handle_signals; set the new variables.
@@ -2984,7 +3196,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2984 3196
29851996-07-15 David Mosberger-Tang <davidm@AZStarNet.com> 31971996-07-15 David Mosberger-Tang <davidm@AZStarNet.com>
2986 3198
2987 * cvtmail.c, sorted-doc.c, yow.c: [__GNU_LIBRARY__]: Use <string.h>. 3199 * cvtmail.c, sorted-doc.c, yow.c [__GNU_LIBRARY__]: Use <string.h>.
2988 * emacsserver.c (main) [__GNU_LIBRARY__]: Use size_t for fromlen. 3200 * emacsserver.c (main) [__GNU_LIBRARY__]: Use size_t for fromlen.
2989 * etags.c, fakemail.c, profile.c: Declare main as int, not void. 3201 * etags.c, fakemail.c, profile.c: Declare main as int, not void.
2990 3202
@@ -3002,7 +3214,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3002 3214
3003 * makefile.nt: Remove all references to wakeup. 3215 * makefile.nt: Remove all references to wakeup.
3004 3216
30051996-06-28 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 32171996-06-28 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
3006 3218
3007 * etags.c (C_stab_entry): New keywords for C++ namespace, bool, 3219 * etags.c (C_stab_entry): New keywords for C++ namespace, bool,
3008 explicit, mutable, typename. 3220 explicit, mutable, typename.
@@ -3033,7 +3245,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3033 3245
3034 * Version 19.31 released. 3246 * Version 19.31 released.
3035 3247
30361996-05-17 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 32481996-05-17 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
3037 3249
3038 * etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline. 3250 * etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
3039 (Pascal_functions): Increase linecharno by the correct number of 3251 (Pascal_functions): Increase linecharno by the correct number of
@@ -3146,21 +3358,21 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3146 3358
3147 * makefile.nt: Change uses of del to $(DEL). 3359 * makefile.nt: Change uses of del to $(DEL).
3148 3360
31491996-03-22 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 33611996-03-22 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
3150 3362
3151 * etags.c (just_read_file): Reset lineno and charno on entry. 3363 * etags.c (just_read_file): Reset lineno and charno on entry.
3152 3364
31531996-03-15 Anders Lindgren <andersl@csd.uu.se> 33651996-03-15 Anders Lindgren <andersl@csd.uu.se>
3154 3366
3155 * etags.c: Prolog language totaly rewritten. 3367 * etags.c: Prolog language totaly rewritten.
3156 (Prolog_functions): Rewritten from scratch. 3368 (Prolog_functions): Rewritten from scratch.
3157 (skip_comment, prolog_getit): Removed. 3369 (skip_comment, prolog_getit): Removed.
3158 (prolog_skip_comment): New function, like old skip_comment. 3370 (prolog_skip_comment): New function, like old skip_comment.
3159 (prolog_pred, prolog_atom, prolog_white): New functions. 3371 (prolog_pred, prolog_atom, prolog_white): New functions.
3160 (erlang_func, erlang_attributes): Forward declarations added. 3372 (erlang_func, erlang_attributes): Forward declarations added.
3161 (erlang_atom): Check if backslash ends line inside quoted atom. 3373 (erlang_atom): Check if backslash ends line inside quoted atom.
3162 3374
31631996-03-14 Francesco Potorti` <F.Potorti@cnuce.cnr.it> 33751996-03-14 Francesco Potort,Al(B <F.Potorti@cnuce.cnr.it>
3164 3376
3165 * etags.c (absolutefn): DOS_NT version corrected. 3377 * etags.c (absolutefn): DOS_NT version corrected.
3166 (main): Append "/" to the dir name only if not already there. 3378 (main): Append "/" to the dir name only if not already there.
@@ -3248,7 +3460,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3248 3460
3249 * Makefile.in (THIS_IS_MAKEFILE): Renamed from THIS_IS_YMAKEFILE. 3461 * Makefile.in (THIS_IS_MAKEFILE): Renamed from THIS_IS_YMAKEFILE.
3250 3462
32511995-12-07 Francesco Potorti` <pot@cnuce.cnr.it> 34631995-12-07 Francesco Potort,Al(B <pot@cnuce.cnr.it>
3252 3464
3253 * etags.c (pfnote): Don't make a tag for ctags if there is no name. 3465 * etags.c (pfnote): Don't make a tag for ctags if there is no name.
3254 (getit, Asm_labels, Perl_functions, Pascal_functions, L_getit, 3466 (getit, Asm_labels, Perl_functions, Pascal_functions, L_getit,
@@ -3260,7 +3472,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3260 (main): Let get_language_from_name make language existence check. 3472 (main): Let get_language_from_name make language existence check.
3261 (streq, strneq): Check the arguments #if DEBUG. 3473 (streq, strneq): Check the arguments #if DEBUG.
3262 3474
32631995-12-06 Francesco Potorti` <pot@cnuce.cnr.it> 34751995-12-06 Francesco Potort,Al(B <pot@cnuce.cnr.it>
3264 3476
3265 * etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++. 3477 * etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
3266 (gperf): Added keywords for Objective C and GNU macros. 3478 (gperf): Added keywords for Objective C and GNU macros.
@@ -3277,10 +3489,10 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3277 (C_entries): Consider // as a comment start even in plain C for 3489 (C_entries): Consider // as a comment start even in plain C for
3278 the sake of Objective C parsing. 3490 the sake of Objective C parsing.
3279 3491
32801995-12-04 Francesco Potorti` <pot@cnuce.cnr.it> 34921995-12-04 Francesco Potort,Al(B <pot@cnuce.cnr.it>
3281 3493
3282 * Makefile.in (ctags): depend on etags only for simplicity; 3494 * Makefile.in (ctags): depend on etags only for simplicity;
3283 compile with regexp support enabled. 3495 compile with regexp support enabled.
3284 3496
32851995-11-24 Richard Stallman <rms@mole.gnu.ai.mit.edu> 34971995-11-24 Richard Stallman <rms@mole.gnu.ai.mit.edu>
3286 3498
@@ -3306,7 +3518,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3306 w32fns.c, w32faces.c, w32select.c, w32menu.c, w32reg.c; remove 3518 w32fns.c, w32faces.c, w32select.c, w32menu.c, w32reg.c; remove
3307 Windows 95 conditional. 3519 Windows 95 conditional.
3308 3520
33091995-11-06 Francesco Potorti` (pot@cnuce.cnr.it) 35211995-11-06 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3310 3522
3311 * etags.c (get_lang_from_name, get_lang_from_interpreter, 3523 * etags.c (get_lang_from_name, get_lang_from_interpreter,
3312 get_lang_from_suffix): New functions. 3524 get_lang_from_suffix): New functions.
@@ -3319,7 +3531,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3319 (Perl_functions): New function. 3531 (Perl_functions): New function.
3320 (lang_suffixes): .pl and .pm are Perl suffixes. 3532 (lang_suffixes): .pl and .pm are Perl suffixes.
3321 3533
33221995-11-02 Francesco Potorti` (pot@cnuce.cnr.it) 35341995-11-02 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3323 3535
3324 * etags.c (lowcase): Use the standard tolower function. 3536 * etags.c (lowcase): Use the standard tolower function.
3325 (substitute): Remove some wrong and some useless code related with 3537 (substitute): Remove some wrong and some useless code related with
@@ -3347,7 +3559,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3347 [! O_RDONLY]: Define it to zero. 3559 [! O_RDONLY]: Define it to zero.
3348 (main): Use O_RDONLY instead of explicit zero. 3560 (main): Use O_RDONLY instead of explicit zero.
3349 3561
33501995-08-17 Francesco Potorti` (pot@cnuce.cnr.it) 35621995-08-17 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3351 3563
3352 * etags.c (Pascal_functions): Close comment bug corrected. 3564 * etags.c (Pascal_functions): Close comment bug corrected.
3353 (add_node): Correctly compare node file names. 3565 (add_node): Correctly compare node file names.
@@ -3402,7 +3614,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3402 * Makefile.in.in (install, maybe-blessmail): Don't cd ..; 3614 * Makefile.in.in (install, maybe-blessmail): Don't cd ..;
3403 configure has already set $(INSTALL) to the proper relative path. 3615 configure has already set $(INSTALL) to the proper relative path.
3404 3616
34051995-06-27 Francesco Potorti` (pot@cnuce.cnr.it) 36171995-06-27 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3406 3618
3407 * etags.c (plain_C_entries): new function. 3619 * etags.c (plain_C_entries): new function.
3408 (lowcase): new macro. 3620 (lowcase): new macro.
@@ -3433,14 +3645,14 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
34331995-06-28 Richard Stallman <rms@mole.gnu.ai.mit.edu> 36451995-06-28 Richard Stallman <rms@mole.gnu.ai.mit.edu>
3434 3646
3435 * emacsserver.c: Make all error messages start with `Error: '. 3647 * emacsserver.c: Make all error messages start with `Error: '.
3436 (fatal_error, perror_1): New functions, use throughout. 3648 (fatal_error, perror_1): New functions, use throughout.
3437 3649
34381995-06-28 Paul Eggert <eggert@twinsun.com> 36501995-06-28 Paul Eggert <eggert@twinsun.com>
3439 3651
3440 * rcs2log (CVSROOT, repository): 3652 * rcs2log (CVSROOT, repository):
3441 Allow remote repositories a la CVS 1.4. 3653 Allow remote repositories a la CVS 1.4.
3442 3654
34431995-06-27 Francesco Potorti` (pot@cnuce.cnr.it) 36551995-06-27 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3444 3656
3445 * etags.c (plain_C_entries): new function. 3657 * etags.c (plain_C_entries): new function.
3446 (lowcase): new macro. 3658 (lowcase): new macro.
@@ -3458,7 +3670,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3458 3670
3459 * make-docfile.c (scan_file): Make sure it never looks at filename[-1]. 3671 * make-docfile.c (scan_file): Make sure it never looks at filename[-1].
3460 3672
34611995-06-21 Francesco Potorti` (pot@cnuce.cnr.it) 36731995-06-21 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3462 3674
3463 * etags.c (find_entries): Rewind before rereading the input file. 3675 * etags.c (find_entries): Rewind before rereading the input file.
3464 3676
@@ -3490,7 +3702,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3490 * rcs2log (output_authors): Allow ':' in time zone, 3702 * rcs2log (output_authors): Allow ':' in time zone,
3491 as per ISO 8601 and RCS 5.6.8 beta. 3703 as per ISO 8601 and RCS 5.6.8 beta.
3492 3704
34931995-05-29 Francesco Potorti` (pot@cnuce.cnr.it) 37051995-05-29 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3494 3706
3495 * etags.c (etags_getcwd): Undo the /bin/pwd change. It may raise 3707 * etags.c (etags_getcwd): Undo the /bin/pwd change. It may raise
3496 compatibility problems. 3708 compatibility problems.
@@ -3513,7 +3725,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3513 (make-docfile.obj): Depend upon config.h. 3725 (make-docfile.obj): Depend upon config.h.
3514 Clean up comments. 3726 Clean up comments.
3515 3727
35161995-05-23 Francesco Potorti` (pot@cnuce.cnr.it) 37281995-05-23 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3517 3729
3518 * etags.c (etags_getcwd): Use /bin/pwd instead of pwd because the 3730 * etags.c (etags_getcwd): Use /bin/pwd instead of pwd because the
3519 former gives the true path even in the presence of simlinks. 3731 former gives the true path even in the presence of simlinks.
@@ -3623,12 +3835,12 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3623 even if HAVE_SYSVIPC. 3835 even if HAVE_SYSVIPC.
3624 * emacsclient.c (main): Use getcwd if not BSD. 3836 * emacsclient.c (main): Use getcwd if not BSD.
3625 3837
36261995-03-13 Francesco Potorti` (pot@cnuce.cnr.it) 38381995-03-13 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3627 3839
3628 * etags.c (process_file): free (filename) after using it. 3840 * etags.c (process_file): free (filename) after using it.
3629 (readline_internal): Do not access the char before start of line. 3841 (readline_internal): Do not access the char before start of line.
3630 3842
36311995-02-22 Francesco Potorti` (pot@cnuce.cnr.it) 38431995-02-22 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3632 3844
3633 * etags.c (C_entries): token_saved removed. Initialise tok.valid and 3845 * etags.c (C_entries): token_saved removed. Initialise tok.valid and
3634 savetok.valid. Mark token as valid when it is initialised. 3846 savetok.valid. Mark token as valid when it is initialised.
@@ -3636,12 +3848,12 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3636 (CNL_SAVE_DEFINEDEF): Test for savetok.valid instead of token_saved. 3848 (CNL_SAVE_DEFINEDEF): Test for savetok.valid instead of token_saved.
3637 (TOKEN): Added a new member: valid. 3849 (TOKEN): Added a new member: valid.
3638 3850
36391995-02-15 Francesco Potorti` (pot@cnuce.cnr.it) 38511995-02-15 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3640 3852
3641 * etags.c (C_entries): Bug corrected in xrealloc of token_str. 3853 * etags.c (C_entries): Bug corrected in xrealloc of token_str.
3642 (main): Do not read twice the last filename in the stdin file list. 3854 (main): Do not read twice the last filename in the stdin file list.
3643 3855
36441995-02-14 Francesco Potorti` (pot@cnuce.cnr.it) 38561995-02-14 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3645 3857
3646 * etags.c (C_entries): Initialise the new members of TOKEN. 3858 * etags.c (C_entries): Initialise the new members of TOKEN.
3647 (C_entries): Do not allocate a new space for each token found by 3859 (C_entries): Do not allocate a new space for each token found by
@@ -3658,18 +3870,18 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3658 3870
3659 * Makefile.in.in (maintainer-clean): Renamed from realclean. 3871 * Makefile.in.in (maintainer-clean): Renamed from realclean.
3660 3872
36611995-02-01 Francesco Potorti` (pot@cnuce.cnr.it) 38731995-02-01 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3662 3874
3663 * etags.c (pfnote): Initialise been_warned in the node. 3875 * etags.c (pfnote): Initialise been_warned in the node.
3664 (C_entries): Removed a speed hack for the sake of clarity. 3876 (C_entries): Removed a speed hack for the sake of clarity.
3665 3877
36661995-01-18 Francesco Potorti` (pot@cnuce.cnr.it) 38781995-01-18 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3667 3879
3668 * etags.c (longopts, print_help, main): Use -I as abbreviation 3880 * etags.c (longopts, print_help, main): Use -I as abbreviation
3669 for the --ignore-indentation option. 3881 for the --ignore-indentation option.
3670 (main): Do not print an error message for unknown options. 3882 (main): Do not print an error message for unknown options.
3671 3883
36721995-01-12 Francesco Potorti` (pot@cnuce.cnr.it) 38841995-01-12 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3673 3885
3674 * etags.c (FILEPOS, GET_CHARNO, GET_FILEPOS, max, LINENO): Deleted. 3886 * etags.c (FILEPOS, GET_CHARNO, GET_FILEPOS, max, LINENO): Deleted.
3675 (append_to_tagfile, typedefs, typedefs_and_cplusplus, 3887 (append_to_tagfile, typedefs, typedefs_and_cplusplus,
@@ -3701,13 +3913,13 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3701 3913
3702 * movemail.c (main): Skip past the colon in inname. 3914 * movemail.c (main): Skip past the colon in inname.
3703 3915
37041995-01-10 Francesco Potorti` (pot@cnuce.cnr.it) 39161995-01-10 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3705 3917
3706 * etags.c (pfatal): New function. 3918 * etags.c (pfatal): New function.
3707 (main, etags_getcwd): Use pfatal. 3919 (main, etags_getcwd): Use pfatal.
3708 (etags_getcwd): Corrected another bug in the HAVE_GETCWD version. 3920 (etags_getcwd): Corrected another bug in the HAVE_GETCWD version.
3709 3921
37101995-01-10 Francesco Potorti` (pot@cnuce.cnr.it) 39221995-01-10 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3711 3923
3712 * etags.c (Lang_function): Use void instead to declare the 3924 * etags.c (Lang_function): Use void instead to declare the
3713 language functions, because many compilers are buggy. 3925 language functions, because many compilers are buggy.
@@ -3715,7 +3927,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3715 (readline_internal): Discard possible \r before \n here. 3927 (readline_internal): Discard possible \r before \n here.
3716 (C_entries): Do not deal with \r here: undo previous fix. 3928 (C_entries): Do not deal with \r here: undo previous fix.
3717 3929
37181995-01-09 Francesco Potorti` (pot@fly) 39301995-01-09 Francesco Potort,Al(B (pot@fly)
3719 3931
3720 * b2m.c (concat, xmalloc, xrealloc, readline, xnew): Four new 3932 * b2m.c (concat, xmalloc, xrealloc, readline, xnew): Four new
3721 functions and a macro that allow the program to work on input 3933 functions and a macro that allow the program to work on input
@@ -3756,12 +3968,12 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3756 3968
3757 * emacsclient.c [!HAVE_SYSVIPC] (main): Fix error message diction. 3969 * emacsclient.c [!HAVE_SYSVIPC] (main): Fix error message diction.
3758 3970
37591994-11-22 Francesco Potorti` (pot@cnuce.cnr.it) 39711994-11-22 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3760 3972
3761 * etags.c (print_help): print --regex usage for ctags also. 3973 * etags.c (print_help): print --regex usage for ctags also.
3762 (main): use -h in addition to -H as abbreviation for --help. 3974 (main): use -h in addition to -H as abbreviation for --help.
3763 3975
37641994-11-16 Francesco Potorti` (pot@cnuce.cnr.it) 39761994-11-16 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3765 3977
3766 * etags.c [ETAGS_REGEXP]: All the new code that deals with regexps 3978 * etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
3767 is compiled if this is defined. The new functions and variables 3979 is compiled if this is defined. The new functions and variables
@@ -3790,7 +4002,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3790 (prolog_getit, skip_comment): Rewritten for speed. 4002 (prolog_getit, skip_comment): Rewritten for speed.
3791 (readline): Rewritten to deal with regexps. 4003 (readline): Rewritten to deal with regexps.
3792 4004
37931994-11-16 Francesco Potorti` (pot@cnuce.cnr.it) 40051994-11-16 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3794 4006
3795 * etags.c (<errno.h>): #include added. 4007 * etags.c (<errno.h>): #include added.
3796 (etags_getcwd): Check return value from getcwd. 4008 (etags_getcwd): Check return value from getcwd.
@@ -3800,7 +4012,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3800 * profile.c (TV1, TV2): Use EMACS_TIME as type. 4012 * profile.c (TV1, TV2): Use EMACS_TIME as type.
3801 (get_time): Use EMACS_SUB_TIME. 4013 (get_time): Use EMACS_SUB_TIME.
3802 4014
38031994-10-30 voelker <voelker@cs.washington.edu> 40151994-10-30 Geoff Voelker <voelker@cs.washington.edu>
3804 4016
3805 * ntlib.c: New file. 4017 * ntlib.c: New file.
3806 * makefile.nt: New file. 4018 * makefile.nt: New file.
@@ -3822,7 +4034,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3822 to grow the input buffer, take into account the null that's stored 4034 to grow the input buffer, take into account the null that's stored
3823 at the end of already-read input in the buffer. 4035 at the end of already-read input in the buffer.
3824 4036
38251994-10-21 Francesco Potorti` (pot@cnuce.cnr.it) 40371994-10-21 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3826 4038
3827 * etags.c (prestr, substr): return a logical type. 4039 * etags.c (prestr, substr): return a logical type.
3828 (consider_token): Comment out "EXFUN". Use "DEFUN" instead of "DEF". 4040 (consider_token): Comment out "EXFUN". Use "DEFUN" instead of "DEF".
@@ -3845,7 +4057,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
38451994-10-19 David J. MacKenzie <djm@duality.gnu.ai.mit.edu> 40571994-10-19 David J. MacKenzie <djm@duality.gnu.ai.mit.edu>
3846 4058
3847 * rcs-checkin: Use test -r instead of < to check readability, to 4059 * rcs-checkin: Use test -r instead of < to check readability, to
3848 avoid syntax error. 4060 avoid syntax error.
3849 4061
38501994-10-19 Jonathan I. Kamens (jik@cam.ov.com) 40621994-10-19 Jonathan I. Kamens (jik@cam.ov.com)
3851 4063
@@ -3907,7 +4119,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3907 4119
3908 * Makefile.in.in (regex.o): Use full path to find regex.c. 4120 * Makefile.in.in (regex.o): Use full path to find regex.c.
3909 4121
39101994-10-17 Francesco Potorti` (pot@fly.cnuce.cnr.it) 41221994-10-17 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it)
3911 4123
3912 * Makefile.in.in (etags): add dependency on regex.o, link with it. 4124 * Makefile.in.in (etags): add dependency on regex.o, link with it.
3913 (REGEXPOBJ, REGEXPDEPS, regex.o): target and macros added. 4125 (REGEXPOBJ, REGEXPDEPS, regex.o): target and macros added.
@@ -3934,7 +4146,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3934 4146
3935 * Makefile.in.in (libexecdir): Renamed from libdir. 4147 * Makefile.in.in (libexecdir): Renamed from libdir.
3936 4148
39371994-10-11 Francesco Potorti` (pot@cnuce.cnr.it) 41491994-10-11 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3938 4150
3939 * etags.c (C_entries): Name the #define's that are macros. 4151 * etags.c (C_entries): Name the #define's that are macros.
3940 4152
@@ -3943,7 +4155,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3943 * emacsserver.c [! SYSVIPC] (main): Fix uses of FD_* macros: 4155 * emacsserver.c [! SYSVIPC] (main): Fix uses of FD_* macros:
3944 fd_set arg is a pointer, descriptor arg comes first. 4156 fd_set arg is a pointer, descriptor arg comes first.
3945 4157
39461994-09-29 Francesco Potorti` (pot@cnuce.cnr.it) 41581994-09-29 Francesco Potort,Al(B (pot@cnuce.cnr.it)
3947 4159
3948 * etags.c (C_entries): Recognise typedef of ANSI style functions. 4160 * etags.c (C_entries): Recognise typedef of ANSI style functions.
3949 (C_entries): Recognise #define inside a struct. 4161 (C_entries): Recognise #define inside a struct.
@@ -4060,12 +4272,12 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4060 4272
40611994-07-08 Dave Love (d.love@dl.ac.uk) 42731994-07-08 Dave Love (d.love@dl.ac.uk)
4062 4274
4063 * etags.c (takeprec): recognise `character*(*) function' 4275 * etags.c (takeprec): recognise `character*(*) function'
4064 4276
40651994-07-08 Francesco Potorti` (pot@cnuce.cnr.it) 42771994-07-08 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4066 4278
4067 * etags.c (main): Don't barf on obsolete -t and -T switches. 4279 * etags.c (main): Don't barf on obsolete -t and -T switches.
4068 (main): Print an explicative message when a switch is not known. 4280 (main): Print an explicative message when a switch is not known.
4069 4281
40701994-06-23 Richard Stallman (rms@mole.gnu.ai.mit.edu) 42821994-06-23 Richard Stallman (rms@mole.gnu.ai.mit.edu)
4071 4283
@@ -4078,12 +4290,12 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4078 4290
4079 * Makefile.in.in (test-distrib): Use ALL_CFLAGS. 4291 * Makefile.in.in (test-distrib): Use ALL_CFLAGS.
4080 4292
40811994-06-03 Francesco Potorti` (pot@fly.cnuce.cnr.it) 42931994-06-03 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it)
4082 4294
4083 * etags.c (absolute_filename): Remove infinite loop bug when 4295 * etags.c (absolute_filename): Remove infinite loop bug when
4084 accessing files in directories whose name begins with a dot. 4296 accessing files in directories whose name begins with a dot.
4085 4297
40861994-06-03 Francesco Potorti` (pot@fly.cnuce.cnr.it) 42981994-06-03 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it)
4087 4299
4088 * etags.c (etags_getcwd): Delete the trailing newline from cwd. 4300 * etags.c (etags_getcwd): Delete the trailing newline from cwd.
4089 4301
@@ -4206,11 +4418,11 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4206 * fakemail.c (readline): When extending the buffer, 4418 * fakemail.c (readline): When extending the buffer,
4207 calculate end afresh using the new size. 4419 calculate end afresh using the new size.
4208 4420
42091994-04-18 Francesco Potorti` (pot@fly.cnuce.cnr.it) 44211994-04-18 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it)
4210 4422
4211 * etags.c (main, print_help): eliminate the -F option. 4423 * etags.c (main, print_help): eliminate the -F option.
4212 4424
42131994-04-18 Francesco Potorti` (pot@fly.cnuce.cnr.it) 44251994-04-18 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it)
4214 4426
4215 * etags.c (absolute_filename): compare against '\0' instead of NULL. 4427 * etags.c (absolute_filename): compare against '\0' instead of NULL.
4216 4428
@@ -4227,7 +4439,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4227 4439
4228 * movemail.c [HAVE_UNISTD_H]: Include unistd.h. 4440 * movemail.c [HAVE_UNISTD_H]: Include unistd.h.
4229 4441
42301994-04-12 Francesco Potorti` (pot@fly.cnuce.cnr.it) 44421994-04-12 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it)
4231 4443
4232 * etags.c (etags_getcwd): Initialize bufsize. 4444 * etags.c (etags_getcwd): Initialize bufsize.
4233 4445
@@ -4244,7 +4456,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4244 4456
4245 * etags.c: #undef static. 4457 * etags.c: #undef static.
4246 4458
42471994-04-08 Francesco Potorti` (pot@fly.cnuce.cnr.it) 44591994-04-08 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it)
4248 4460
4249 * etags.c (outf, outfiledir): renamed to tagf, tagfiledir. 4461 * etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
4250 (PF_funcs, Asm_funcs, L_funcs, PAS_funcs, TEX_funcs, 4462 (PF_funcs, Asm_funcs, L_funcs, PAS_funcs, TEX_funcs,
@@ -4257,7 +4469,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4257 (find_entries): added more suffixes for assembler files. 4469 (find_entries): added more suffixes for assembler files.
4258 (Asm_funcs): Now finds labels even without an ending colon. 4470 (Asm_funcs): Now finds labels even without an ending colon.
4259 4471
42601994-03-30 Francesco Potorti` (pot@fly.cnuce.cnr.it) 44721994-03-30 Francesco Potort,Al(B (pot@fly.cnuce.cnr.it)
4261 4473
4262 * etags.c (main): use etags_getcwd for compatibility. 4474 * etags.c (main): use etags_getcwd for compatibility.
4263 (etags_getcwd): new function. 4475 (etags_getcwd): new function.
@@ -4266,7 +4478,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4266 4478
4267 * Makefile.in (etags, ctags): Pass -D for VERSION. 4479 * Makefile.in (etags, ctags): Pass -D for VERSION.
4268 4480
42691994-03-25 Francesco Potorti` (pot@cnuce.cnr.it) 44811994-03-25 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4270 4482
4271 * etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead. 4483 * etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
4272 (main): don't allow the use of -t and -T in etags mode. 4484 (main): don't allow the use of -t and -T in etags mode.
@@ -4274,7 +4486,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4274 (print_version): show the emacs version number if VERSION is #defined. 4486 (print_version): show the emacs version number if VERSION is #defined.
4275 (find_entries): add "ss" as suffix for Chez Scheme. 4487 (find_entries): add "ss" as suffix for Chez Scheme.
4276 4488
42771994-03-23 Francesco Potorti` (pot@cnuce.cnr.it) 44891994-03-23 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4278 4490
4279 * etags.c (cwd, outfiledir): vars added. 4491 * etags.c (cwd, outfiledir): vars added.
4280 (relative_filename, absolute_filename, absolute_dirname): 4492 (relative_filename, absolute_filename, absolute_dirname):
@@ -4296,7 +4508,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4296 * Makefile.in (install, ${archlibdir}): Switch back to .. 4508 * Makefile.in (install, ${archlibdir}): Switch back to ..
4297 before running INSTALL_PROGRAM. 4509 before running INSTALL_PROGRAM.
4298 4510
42991994-03-14 Francesco Potorti` (pot@cnuce.cnr.it) 45111994-03-14 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4300 4512
4301 * etags.c (TYPEDST): added the `tignore' value. 4513 * etags.c (TYPEDST): added the `tignore' value.
4302 (C_entries): corrected various bugs, now correctly parses the 4514 (C_entries): corrected various bugs, now correctly parses the
@@ -4342,7 +4554,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4342 * profile.c (get_time): Simplify; avoid calling index. 4554 * profile.c (get_time): Simplify; avoid calling index.
4343 (main): exit on EOF. 4555 (main): exit on EOF.
4344 4556
43451994-02-17 Francesco Potorti` (pot@cnuce.cnr.it) 45571994-02-17 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4346 4558
4347 * etags.c (--absolute-pathnames): Option removed. 4559 * etags.c (--absolute-pathnames): Option removed.
4348 4560
@@ -4350,7 +4562,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4350 4562
4351 * fakemail.c (put_line): Don't break the line if it all fits. 4563 * fakemail.c (put_line): Don't break the line if it all fits.
4352 4564
43531994-02-14 Francesco Potorti` (pot@fly) 45651994-02-14 Francesco Potort,Al(B (pot@fly)
4354 4566
4355 * etags.c (absolute_pathnames, cwd): added global vars. 4567 * etags.c (absolute_pathnames, cwd): added global vars.
4356 (longopts, print_help, main, process_file): put absolute filenames 4568 (longopts, print_help, main, process_file): put absolute filenames
@@ -4382,7 +4594,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4382 look like lisp call prototypes: (function ARG1 ARG2), upcasing args. 4594 look like lisp call prototypes: (function ARG1 ARG2), upcasing args.
4383 (scan_c_file): Pass BUF to write_c_args for FUNC arg. 4595 (scan_c_file): Pass BUF to write_c_args for FUNC arg.
4384 4596
43851994-01-14 Francesco Potorti` (pot@cnuce.cnr.it) 45971994-01-14 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4386 4598
4387 * etags.c (stab_entry, stab_create, stab_find, stab_search, 4599 * etags.c (stab_entry, stab_create, stab_find, stab_search,
4388 stab_type, add_keyword, C_reate_stab, C_create_stabs): deleted. 4600 stab_type, add_keyword, C_reate_stab, C_create_stabs): deleted.
@@ -4526,7 +4738,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4526 4738
45271993-11-08 Tom Hageman (tom@basil.icce.rug.nl) 47391993-11-08 Tom Hageman (tom@basil.icce.rug.nl)
4528 4740
4529 * etags.c: (C_entries): Keep track of ()-parenthesis level so that 4741 * etags.c (C_entries): Keep track of ()-parenthesis level so that
4530 functions returning a pointer to a function, a la `signal', can be 4742 functions returning a pointer to a function, a la `signal', can be
4531 parsed. This also required new state `fstartlist' to `FUNCST'. 4743 parsed. This also required new state `fstartlist' to `FUNCST'.
4532 (SAVE_TOKEN, RESTORE_TOKEN, TOKEN_SAVED_P): 1-deep token save stack. 4744 (SAVE_TOKEN, RESTORE_TOKEN, TOKEN_SAVED_P): 1-deep token save stack.
@@ -4534,7 +4746,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4534 from the other state engines. 4746 from the other state engines.
4535 (begtk): add '~', for C++ class destructors. 4747 (begtk): add '~', for C++ class destructors.
4536 4748
45371993-11-02 Francesco Potorti` (pot@cnuce.cnr.it) 47491993-11-02 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4538 4750
4539 * etags.c (consider_token): removed unused variable firsttok. 4751 * etags.c (consider_token): removed unused variable firsttok.
4540 (prolog_getit): call pfnote with the right number of arguments. 4752 (prolog_getit): call pfnote with the right number of arguments.
@@ -4554,7 +4766,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4554 * Makefile.in: Fixed typos or brainos of whoever thought `@' was 4766 * Makefile.in: Fixed typos or brainos of whoever thought `@' was
4555 the comment character. 4767 the comment character.
4556 4768
45571993-10-01 Francesco Potorti` (pot@cnuce.cnr.it) 47691993-10-01 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4558 4770
4559 * etags.c (process_file): dead code removed. 4771 * etags.c (process_file): dead code removed.
4560 (S_ISREG): #define it using S_IFREG if not defined. 4772 (S_ISREG): #define it using S_IFREG if not defined.
@@ -4585,7 +4797,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4585 By default, look for *,v files as well as RCS/*,v files. 4797 By default, look for *,v files as well as RCS/*,v files.
4586 Use $TMPDIR (default /tmp) instead of /tmp. 4798 Use $TMPDIR (default /tmp) instead of /tmp.
4587 4799
45881993-09-20 Francesco Potorti` (pot@fly) 48001993-09-20 Francesco Potort,Al(B (pot@fly)
4589 4801
4590 * etags.c (C_entries): is_func is initialised here instead of in 4802 * etags.c (C_entries): is_func is initialised here instead of in
4591 consider_token for the sake of the yacc rules section. 4803 consider_token for the sake of the yacc rules section.
@@ -4639,7 +4851,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4639 4851
4640 * Version 19.18 released. 4852 * Version 19.18 released.
4641 4853
46421993-08-04 Francesco Potorti` (pot@spiff.gnu.ai.mit.edu) 48541993-08-04 Francesco Potort,Al(B (pot@spiff.gnu.ai.mit.edu)
4643 4855
4644 * etags.c (L_isdef, L_isquote, L_getit): small optimisations. 4856 * etags.c (L_isdef, L_isquote, L_getit): small optimisations.
4645 (L_funcs): the (foo::defmumble stuff now should work. 4857 (L_funcs): the (foo::defmumble stuff now should work.
@@ -4655,9 +4867,9 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4655 4867
4656 * timer.c (main): Generate a SIGIO as soon as we've initialized. 4868 * timer.c (main): Generate a SIGIO as soon as we've initialized.
4657 4869
46581993-07-30 Francesco Potorti` (pot@cnuce.cnr.it) 48701993-07-30 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4659 4871
4660 * etags.c (FINCST): added the fignore status. Means we are 4872 * etags.c (FINCST): Added the fignore status. Means we are
4661 after the parameter list and before the open curly brace. 4873 after the parameter list and before the open curly brace.
4662 Allows correct parsing of C++ constructors. 4874 Allows correct parsing of C++ constructors.
4663 (C_entries, consider_token): make use of fignore. 4875 (C_entries, consider_token): make use of fignore.
@@ -4683,7 +4895,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4683 4895
46841993-07-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) 48961993-07-18 Richard Stallman (rms@mole.gnu.ai.mit.edu)
4685 4897
4686 * Version 19.17 released. 4898 * Version 19.17 released.
4687 4899
46881993-07-15 Jim Blandy (jimb@totoro.cs.oberlin.edu) 49001993-07-15 Jim Blandy (jimb@totoro.cs.oberlin.edu)
4689 4901
@@ -4694,14 +4906,14 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4694 * wakeup.c: Use CPP tangle from autoconf manual to #include the 4906 * wakeup.c: Use CPP tangle from autoconf manual to #include the
4695 correct combination of <time.h> and <sys/time.h>. 4907 correct combination of <time.h> and <sys/time.h>.
4696 4908
46971993-07-08 Francesco Potorti` (pot@cnuce.cnr.it) 49091993-07-08 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4698 4910
4699 * etags.c (alloca): removed all references to it. 4911 * etags.c (alloca): removed all references to it.
4700 (main): now calls xnew instead of alloca for portability. 4912 (main): now calls xnew instead of alloca for portability.
4701 (../src/config.h): included only if HAVE_CONFIG_H. 4913 (../src/config.h): included only if HAVE_CONFIG_H.
4702 (const): void definition removed--config.h takes care of it. 4914 (const): void definition removed--config.h takes care of it.
4703 4915
47041993-07-08 Francesco Potorti` (pot@cnuce.cnr.it) 49161993-07-08 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4705 4917
4706 * etags.c (consider_token): was `==', now is `='. 4918 * etags.c (consider_token): was `==', now is `='.
4707 (consider_token): DEFUNs now treated like funcs in ctags mode. 4919 (consider_token): DEFUNs now treated like funcs in ctags mode.
@@ -4748,7 +4960,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4748 4960
47491993-06-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) 49611993-06-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
4750 4962
4751 Bring mumbleclean targets into conformance with GNU coding standards. 4963 Bring mumbleclean targets into conformance with GNU coding standards.
4752 * Makefile.in (distclean): Call clean to do most of the work. 4964 * Makefile.in (distclean): Call clean to do most of the work.
4753 Delete aixcc.c and TAGS. 4965 Delete aixcc.c and TAGS.
4754 (realclean): Just call distclean. 4966 (realclean): Just call distclean.
@@ -4805,7 +5017,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4805 5017
48061993-05-30 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) 50181993-05-30 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
4807 5019
4808 * Makefile.in: (${archlibdir}): Use `(cd foo && pwd)' instead of 5020 * Makefile.in (${archlibdir}): Use `(cd foo && pwd)' instead of
4809 `(cd foo ; pwd)' to get the canonical name of a directory; cd 5021 `(cd foo ; pwd)' to get the canonical name of a directory; cd
4810 might fail, and have pwd print out the current directory. 5022 might fail, and have pwd print out the current directory.
4811 5023
@@ -4891,7 +5103,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4891 5103
48921993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu) 51041993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu)
4893 5105
4894 * Version 19.7 released. 5106 * Version 19.7 released.
4895 5107
48961993-05-22 Richard Stallman (rms@mole.gnu.ai.mit.edu) 51081993-05-22 Richard Stallman (rms@mole.gnu.ai.mit.edu)
4897 5109
@@ -4983,7 +5195,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4983 (CFLAGS): Include C_SWITCH_SYSTEM in the flags to pass to the 5195 (CFLAGS): Include C_SWITCH_SYSTEM in the flags to pass to the
4984 compiler. 5196 compiler.
4985 5197
49861993-03-22 Francesco Potorti` (pot@cnuce.cnr.it) 51981993-03-22 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4987 5199
4988 * etags.c (YACC): flag added to c_ext. 5200 * etags.c (YACC): flag added to c_ext.
4989 (c_ext): no more a synonim for c_ext&C_PLPL because of YACC. 5201 (c_ext): no more a synonim for c_ext&C_PLPL because of YACC.
@@ -4994,13 +5206,13 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4994 (C_entries): logical yacc_rules means we are after the first %%. 5206 (C_entries): logical yacc_rules means we are after the first %%.
4995 (C_entries): added logic for yacc files. 5207 (C_entries): added logic for yacc files.
4996 5208
49971993-03-16 Francesco Potorti` (pot@cnuce.cnr.it) 52091993-03-16 Francesco Potort,Al(B (pot@cnuce.cnr.it)
4998 5210
4999 * etags.c (C_entries): ':' case moved to the second switch. 5211 * etags.c (C_entries): ':' case moved to the second switch.
5000 (C_entries): do not examine token if structdef==scolonseen. 5212 (C_entries): do not examine token if structdef==scolonseen.
5001 (consider_token): structtag set to null string for enum. 5213 (consider_token): structtag set to null string for enum.
5002 5214
50031993-03-12 Francesco Potorti` (pot@cnuce.cnr.it) 52151993-03-12 Francesco Potort,Al(B (pot@cnuce.cnr.it)
5004 5216
5005 * etags.c (GET_COOKIE): and related macros removed. 5217 * etags.c (GET_COOKIE): and related macros removed.
5006 (logical): is now int, no more a char. 5218 (logical): is now int, no more a char.
@@ -5018,19 +5230,19 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5018 (condider_token): complete rewrite. 5230 (condider_token): complete rewrite.
5019 (getline): deleted. 5231 (getline): deleted.
5020 5232
50211993-03-01 Francesco Potorti` (pot@fly.CNUCE.CNR.IT) 52331993-03-01 Francesco Potort,Al(B (pot@fly.CNUCE.CNR.IT)
5022 5234
5023 * etags.c (C_entries): Added the quotednl logical variable. 5235 * etags.c (C_entries): Added the quotednl logical variable.
5024 Used for parsing of #define's spanning multiple lines. 5236 Used for parsing of #define's spanning multiple lines.
5025 5237
50261993-02-23 Francesco Potorti` (pot@fly.CNUCE.CNR.IT) 52381993-02-23 Francesco Potort,Al(B (pot@fly.CNUCE.CNR.IT)
5027 5239
5028 * etags.c (C_entries): Save the definedef status even when a 5240 * etags.c (C_entries): Save the definedef status even when a
5029 newline is met inside a string. 5241 newline is met inside a string.
5030 5242
50311993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) 52431993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
5032 5244
5033 * Makefile.in (EXECUTABLES): added rcs-checkin. 5245 * Makefile.in (EXECUTABLES): added rcs-checkin.
5034 5246
5035 * Makefile.in (unlock, relock): New productions. 5247 * Makefile.in (unlock, relock): New productions.
5036 5248
@@ -5054,7 +5266,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5054 5266
5055 * b2m.c (main): Don't exit upon reading a blank line. 5267 * b2m.c (main): Don't exit upon reading a blank line.
5056 5268
50571993-03-01 Francesco Potorti` (pot@fly.CNUCE.CNR.IT) 52691993-03-01 Francesco Potort,Al(B (pot@fly.CNUCE.CNR.IT)
5058 5270
5059 * etags.c (C_entries): New local variable quotednl. Used for 5271 * etags.c (C_entries): New local variable quotednl. Used for
5060 parsing of #define's spanning multiple lines. 5272 parsing of #define's spanning multiple lines.
@@ -5066,7 +5278,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5066 5278
5067 * timer.c (notify): Initialize waitfor properly. 5279 * timer.c (notify): Initialize waitfor properly.
5068 5280
50691993-02-22 Francesco Potorti` (pot@CNUCE.CNR.IT) 52811993-02-22 Francesco Potort,Al(B (pot@CNUCE.CNR.IT)
5070 5282
5071 * etags.c (C_entries): Don't reset definedef when a newline inside a 5283 * etags.c (C_entries): Don't reset definedef when a newline inside a
5072 comment is met. 5284 comment is met.
@@ -5395,7 +5607,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5395 5607
53961992-03-31 Jim Blandy (jimb@pogo.cs.oberlin.edu) 56081992-03-31 Jim Blandy (jimb@pogo.cs.oberlin.edu)
5397 5609
5398 * lib-src/Makefile, etc/MACHINES, etc/NEWS: Changed references to 5610 * lib-src/Makefile, etc/MACHINES, etc/NEWS: Changed references to
5399 `config.emacs' to `configure'. 5611 `config.emacs' to `configure'.
5400 5612
5401 * lib-src/Makefile: Adjusted for renaming of share-lib to etc. 5613 * lib-src/Makefile: Adjusted for renaming of share-lib to etc.
@@ -5562,7 +5774,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5562 5774
55631990-08-30 David Lawrence (tale@pogo.ai.mit.edu) 57751990-08-30 David Lawrence (tale@pogo.ai.mit.edu)
5564 5776
5565 * emacs.1: Add break before -nw option. 5777 * emacs.1: Add break before -nw option.
5566 5778
55671990-08-19 David J. MacKenzie (djm@apple-gunkies) 57791990-08-19 David J. MacKenzie (djm@apple-gunkies)
5568 5780
@@ -5769,8 +5981,8 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5769 5981
57701988-12-31 Richard Mlynarik (mly@rice-chex.ai.mit.edu) 59821988-12-31 Richard Mlynarik (mly@rice-chex.ai.mit.edu)
5771 5983
5772 * env.c: Add decl for my-index 5984 * env.c: Add decl for my-index
5773 * etags.c (file-entries): .oak => scheme 5985 * etags.c (file-entries): .oak => scheme
5774 5986
57751988-12-30 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 59871988-12-30 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
5776 5988
@@ -5814,8 +6026,8 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5814 6026
58151988-11-29 Richard Mlynarik (mly@pickled-brain.ai.mit.edu) 60271988-11-29 Richard Mlynarik (mly@pickled-brain.ai.mit.edu)
5816 6028
5817 * movemail.c: Better error message when can't create tempname. 6029 * movemail.c: Better error message when can't create tempname.
5818 This file needs a great deal of extra error-checking and lucid reporting... 6030 This file needs a great deal of extra error-checking and lucid reporting...
5819 6031
58201988-11-16 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 60321988-11-16 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
5821 6033
@@ -5933,6 +6145,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5933 6145
5934;; Local Variables: 6146;; Local Variables:
5935;; coding: iso-2022-7bit 6147;; coding: iso-2022-7bit
6148;; add-log-time-zone-rule: t
5936;; End: 6149;; End:
5937 6150
5938 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 6151 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index 4eb1658ac0a..75ab5e192d1 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -94,6 +94,7 @@ gameuser=@gameuser@
94INSTALL = @INSTALL@ 94INSTALL = @INSTALL@
95INSTALL_PROGRAM = @INSTALL_PROGRAM@ 95INSTALL_PROGRAM = @INSTALL_PROGRAM@
96INSTALL_DATA = @INSTALL_DATA@ 96INSTALL_DATA = @INSTALL_DATA@
97INSTALL_SCRIPT = @INSTALL_SCRIPT@
97# By default, we uphold the dignity of our programs. 98# By default, we uphold the dignity of our programs.
98INSTALL_STRIP = 99INSTALL_STRIP =
99 100
@@ -319,7 +320,7 @@ $(DESTDIR)${archlibdir}: all
319 if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` \ 320 if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` \
320 != `(cd ${srcdir} && /bin/pwd)` ]; then \ 321 != `(cd ${srcdir} && /bin/pwd)` ]; then \
321 for file in ${SCRIPTS}; do \ 322 for file in ${SCRIPTS}; do \
322 $(INSTALL_PROGRAM) ${srcdir}/$$file $(DESTDIR)${archlibdir}/$$file; \ 323 $(INSTALL_SCRIPT) ${srcdir}/$$file $(DESTDIR)${archlibdir}/$$file; \
323 done ; \ 324 done ; \
324 fi 325 fi
325 326
@@ -331,7 +332,7 @@ install: $(DESTDIR)${archlibdir}
331 chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \ 332 chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \
332 done 333 done
333 for file in ${INSTALLABLE_SCRIPTS} ; do \ 334 for file in ${INSTALLABLE_SCRIPTS} ; do \
334 $(INSTALL_PROGRAM) ${srcdir}/$${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \ 335 $(INSTALL_SCRIPT) ${srcdir}/$${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \
335 chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \ 336 chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \
336 done 337 done
337 338
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 3d15a06b147..64a0e00d5b9 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -26,19 +26,55 @@ Boston, MA 02110-1301, USA. */
26#include <config.h> 26#include <config.h>
27#endif 27#endif
28 28
29#ifdef WINDOWSNT
30
31/* config.h defines these, which disables sockets altogether! */
32# undef _WINSOCKAPI_
33# undef _WINSOCK_H
34
35# include <malloc.h>
36# include <stdlib.h>
37# include <windows.h>
38
39# define NO_SOCKETS_IN_FILE_SYSTEM
40
41# define HSOCKET SOCKET
42# define CLOSE_SOCKET closesocket
43# define INITIALIZE() (initialize_sockets ())
44
45#else /* !WINDOWSNT */
46
47# include <sys/types.h>
48
49# ifdef HAVE_INET_SOCKETS
50# include <netinet/in.h>
51# endif
52
53# define INVALID_SOCKET -1
54# define HSOCKET int
55# define CLOSE_SOCKET close
56# define INITIALIZE()
57
58#endif /* !WINDOWSNT */
59
29#undef signal 60#undef signal
30 61
62#include <stdarg.h>
31#include <ctype.h> 63#include <ctype.h>
32#include <stdio.h> 64#include <stdio.h>
33#include <getopt.h> 65#include "getopt.h"
34#ifdef HAVE_UNISTD_H 66#ifdef HAVE_UNISTD_H
35#include <unistd.h> 67#include <unistd.h>
36#endif 68#endif
37 69
38#ifdef VMS 70#ifdef VMS
39# include "vms-pwd.h" 71# include "vms-pwd.h"
40#else 72#else /* not VMS */
73#ifdef WINDOWSNT
74# include <io.h>
75#else /* not WINDOWSNT */
41# include <pwd.h> 76# include <pwd.h>
77#endif /* not WINDOWSNT */
42#endif /* not VMS */ 78#endif /* not VMS */
43#include <sys/stat.h> 79#include <sys/stat.h>
44 80
@@ -72,6 +108,29 @@ char *(getcwd) ();
72#define VERSION "unspecified" 108#define VERSION "unspecified"
73#endif 109#endif
74 110
111#define SEND_STRING(data) (send_to_emacs (s, (data)))
112#define SEND_QUOTED(data) (quote_argument (s, (data)))
113
114#ifndef EXIT_SUCCESS
115#define EXIT_SUCCESS 0
116#endif
117
118#ifndef EXIT_FAILURE
119#define EXIT_FAILURE 1
120#endif
121
122#ifndef FALSE
123#define FALSE 0
124#endif
125
126#ifndef TRUE
127#define TRUE 1
128#endif
129
130#ifndef NO_RETURN
131#define NO_RETURN
132#endif
133
75/* Name used to invoke this program. */ 134/* Name used to invoke this program. */
76char *progname; 135char *progname;
77 136
@@ -101,11 +160,20 @@ int tty = 0;
101 160
102/* If non-NULL, the name of an editor to fallback to if the server 161/* If non-NULL, the name of an editor to fallback to if the server
103 is not running. --alternate-editor. */ 162 is not running. --alternate-editor. */
104const char * alternate_editor = NULL; 163const char *alternate_editor = NULL;
105 164
106/* If non-NULL, the filename of the UNIX socket. */ 165/* If non-NULL, the filename of the UNIX socket. */
107char *socket_name = NULL; 166char *socket_name = NULL;
108 167
168/* If non-NULL, the filename of the authentication file. */
169char *server_file = NULL;
170
171/* PID of the Emacs server process. */
172int emacs_pid = 0;
173
174/* File handles for communicating with Emacs. */
175FILE *out, *in;
176
109void print_help_and_exit () NO_RETURN; 177void print_help_and_exit () NO_RETURN;
110 178
111struct option longopts[] = 179struct option longopts[] =
@@ -117,11 +185,166 @@ struct option longopts[] =
117 { "tty", no_argument, NULL, 't' }, 185 { "tty", no_argument, NULL, 't' },
118 { "current-frame", no_argument, NULL, 'c' }, 186 { "current-frame", no_argument, NULL, 'c' },
119 { "alternate-editor", required_argument, NULL, 'a' }, 187 { "alternate-editor", required_argument, NULL, 'a' },
188#ifndef NO_SOCKETS_IN_FILE_SYSTEM
120 { "socket-name", required_argument, NULL, 's' }, 189 { "socket-name", required_argument, NULL, 's' },
190#endif
191 { "server-file", required_argument, NULL, 'f' },
121 { "display", required_argument, NULL, 'd' }, 192 { "display", required_argument, NULL, 'd' },
122 { 0, 0, 0, 0 } 193 { 0, 0, 0, 0 }
123}; 194};
124 195
196
197/* Like malloc but get fatal error if memory is exhausted. */
198
199long *
200xmalloc (size)
201 unsigned int size;
202{
203 long *result = (long *) malloc (size);
204 if (result == NULL)
205 {
206 perror ("malloc");
207 exit (EXIT_FAILURE);
208 }
209 return result;
210}
211
212/* Like strdup but get a fatal error if memory is exhausted. */
213
214char *
215xstrdup (const char *s)
216{
217 char *result = strdup (s);
218 if (result == NULL)
219 {
220 perror ("strdup");
221 exit (EXIT_FAILURE);
222 }
223 return result;
224}
225
226/* From sysdep.c */
227#if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME)
228
229/* Return the current working directory. Returns NULL on errors.
230 Any other returned value must be freed with free. This is used
231 only when get_current_dir_name is not defined on the system. */
232char*
233get_current_dir_name ()
234{
235 char *buf;
236 char *pwd;
237 struct stat dotstat, pwdstat;
238 /* If PWD is accurate, use it instead of calling getwd. PWD is
239 sometimes a nicer name, and using it may avoid a fatal error if a
240 parent directory is searchable but not readable. */
241 if ((pwd = getenv ("PWD")) != 0
242 && (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1])))
243 && stat (pwd, &pwdstat) == 0
244 && stat (".", &dotstat) == 0
245 && dotstat.st_ino == pwdstat.st_ino
246 && dotstat.st_dev == pwdstat.st_dev
247#ifdef MAXPATHLEN
248 && strlen (pwd) < MAXPATHLEN
249#endif
250 )
251 {
252 buf = (char *) xmalloc (strlen (pwd) + 1);
253 if (!buf)
254 return NULL;
255 strcpy (buf, pwd);
256 }
257#ifdef HAVE_GETCWD
258 else
259 {
260 size_t buf_size = 1024;
261 buf = (char *) xmalloc (buf_size);
262 if (!buf)
263 return NULL;
264 for (;;)
265 {
266 if (getcwd (buf, buf_size) == buf)
267 break;
268 if (errno != ERANGE)
269 {
270 int tmp_errno = errno;
271 free (buf);
272 errno = tmp_errno;
273 return NULL;
274 }
275 buf_size *= 2;
276 buf = (char *) realloc (buf, buf_size);
277 if (!buf)
278 return NULL;
279 }
280 }
281#else
282 else
283 {
284 /* We need MAXPATHLEN here. */
285 buf = (char *) xmalloc (MAXPATHLEN + 1);
286 if (!buf)
287 return NULL;
288 if (getwd (buf) == NULL)
289 {
290 int tmp_errno = errno;
291 free (buf);
292 errno = tmp_errno;
293 return NULL;
294 }
295 }
296#endif
297 return buf;
298}
299#endif
300
301/* Message functions. */
302
303#ifdef WINDOWSNT
304/* I first tried to check for STDOUT. The check did not work,
305 I get a valid handle also in nonconsole apps.
306 Instead I test for console title, which seems to work. */
307int
308w32_window_app()
309{
310 static int window_app = -1;
311 char szTitle[MAX_PATH];
312
313 if (window_app < 0)
314 window_app = (GetConsoleTitleA (szTitle, MAX_PATH) == 0);
315
316 return window_app;
317}
318#endif
319
320void
321message (int is_error, char *message, ...)
322{
323 char msg [2048];
324 va_list args;
325
326 va_start (args, message);
327 vsprintf (msg, message, args);
328 va_end (args);
329
330#ifdef WINDOWSNT
331 if (w32_window_app ())
332 {
333 if (is_error)
334 MessageBox (NULL, msg, "Emacsclient ERROR", MB_ICONERROR);
335 else
336 MessageBox (NULL, msg, "Emacsclient", MB_ICONINFORMATION);
337 }
338 else
339#endif
340 {
341 FILE *f = is_error ? stderr : stdout;
342
343 fputs (msg, f);
344 fflush (f);
345 }
346}
347
125/* Decode the options from argv and argc. 348/* Decode the options from argv and argc.
126 The global variable `optind' will say how many arguments we used up. */ 349 The global variable `optind' will say how many arguments we used up. */
127 350
@@ -138,7 +361,12 @@ decode_options (argc, argv)
138 while (1) 361 while (1)
139 { 362 {
140 int opt = getopt_long (argc, argv, 363 int opt = getopt_long (argc, argv,
141 "VHnea:s:d:tc", longopts, 0); 364#ifndef NO_SOCKETS_IN_FILE_SYSTEM
365 "VHnea:s:f:d:tc",
366#else
367 "VHnea:f:d:tc",
368#endif
369 longopts, 0);
142 370
143 if (opt == EOF) 371 if (opt == EOF)
144 break; 372 break;
@@ -154,9 +382,15 @@ decode_options (argc, argv)
154 alternate_editor = optarg; 382 alternate_editor = optarg;
155 break; 383 break;
156 384
385#ifndef NO_SOCKETS_IN_FILE_SYSTEM
157 case 's': 386 case 's':
158 socket_name = optarg; 387 socket_name = optarg;
159 break; 388 break;
389#endif
390
391 case 'f':
392 server_file = optarg;
393 break;
160 394
161 case 'd': 395 case 'd':
162 display = optarg; 396 display = optarg;
@@ -171,7 +405,7 @@ decode_options (argc, argv)
171 break; 405 break;
172 406
173 case 'V': 407 case 'V':
174 printf ("emacsclient %s\n", VERSION); 408 message (FALSE, "emacsclient %s\n", VERSION);
175 exit (EXIT_SUCCESS); 409 exit (EXIT_SUCCESS);
176 break; 410 break;
177 411
@@ -188,7 +422,7 @@ decode_options (argc, argv)
188 break; 422 break;
189 423
190 default: 424 default:
191 fprintf (stderr, "Try `%s --help' for more information\n", progname); 425 message (TRUE, "Try `%s --help' for more information\n", progname);
192 exit (EXIT_FAILURE); 426 exit (EXIT_FAILURE);
193 break; 427 break;
194 } 428 }
@@ -214,24 +448,29 @@ decode_options (argc, argv)
214 window_system = 0; 448 window_system = 0;
215} 449}
216 450
451
217void 452void
218print_help_and_exit () 453print_help_and_exit ()
219{ 454{
220 printf ( 455 message (FALSE,
221 "Usage: %s [OPTIONS] FILE...\n\ 456 "Usage: %s [OPTIONS] FILE...\n\
222Tell the Emacs server to visit the specified files.\n\ 457Tell the Emacs server to visit the specified files.\n\
223Every FILE can be either just a FILENAME or [+LINE[:COLUMN]] FILENAME.\n\ 458Every FILE can be either just a FILENAME or [+LINE[:COLUMN]] FILENAME.\n\
224\n\ 459\n\
225The following OPTIONS are accepted:\n\ 460The following OPTIONS are accepted:\n\
226-V, --version Just print a version info and return\n\ 461-V, --version Just print version info and return\n\
227-H, --help Print this usage information message\n\ 462-H, --help Print this usage information message\n\
228-t, --tty Open a new Emacs frame on the current terminal\n\ 463-t, --tty Open a new Emacs frame on the current terminal\n\
229-c, --current-frame Do not create a new frame; use the current Emacs frame\n\ 464-c, --current-frame Do not create a new frame; use the current Emacs frame\n\
230-n, --no-wait Don't wait for the server to return\n\
231-e, --eval Evaluate the FILE arguments as ELisp expressions\n\ 465-e, --eval Evaluate the FILE arguments as ELisp expressions\n\
232-d, --display=DISPLAY Visit the file in the given display\n\ 466-n, --no-wait Don't wait for the server to return\n\
233-s, --socket-name=FILENAME\n\ 467-d, --display=DISPLAY Visit the file in the given display\n"
234 Set the filename of the UNIX socket for communication\n\ 468#ifndef NO_SOCKETS_IN_FILE_SYSTEM
469"-s, --socket-name=FILENAME\n\
470 Set filename of the UNIX socket for communication\n"
471#endif
472"-f, --server-file=FILENAME\n\
473 Set filename of the TCP authentication file\n\
235-a, --alternate-editor=EDITOR\n\ 474-a, --alternate-editor=EDITOR\n\
236 Editor to fallback to if the server is not running\n\ 475 Editor to fallback to if the server is not running\n\
237\n\ 476\n\
@@ -239,110 +478,103 @@ Report bugs to bug-gnu-emacs@gnu.org.\n", progname);
239 exit (EXIT_SUCCESS); 478 exit (EXIT_SUCCESS);
240} 479}
241 480
242/* Like malloc but get fatal error if memory is exhausted. */ 481/*
243 482 Try to run a different command, or --if no alternate editor is
244long * 483 defined-- exit with an errorcode.
245xmalloc (size) 484*/
246 unsigned int size; 485void
486fail (void)
247{ 487{
248 long *result = (long *) malloc (size); 488 if (alternate_editor)
249 if (result == NULL)
250 { 489 {
251 perror ("malloc"); 490 int i = optind - 1;
252 exit (EXIT_FAILURE); 491#ifdef WINDOWSNT
492 main_argv[i] = (char *)alternate_editor;
493#endif
494 execvp (alternate_editor, main_argv + i);
495 message (TRUE, "%s: error executing alternate editor \"%s\"\n",
496 progname, alternate_editor);
253 } 497 }
254 return result; 498 exit (EXIT_FAILURE);
255} 499}
256 500
257/* Like strdup but get a fatal error if memory is exhausted. */ 501
502#if !defined (HAVE_SOCKETS) || !defined (HAVE_INET_SOCKETS)
258 503
259char * 504int
260xstrdup (const char *s) 505main (argc, argv)
506 int argc;
507 char **argv;
261{ 508{
262 char *result = strdup (s); 509 main_argc = argc;
263 if (result == NULL) 510 main_argv = argv;
264 { 511 progname = argv[0];
265 perror ("strdup"); 512 message (TRUE, "%s: Sorry, the Emacs server is supported only\n"
266 exit (EXIT_FAILURE); 513 "on systems with Berkeley sockets.\n",
267 } 514 argv[0]);
268 return result; 515 fail ();
269} 516}
270 517
271/* From sysdep.c */ 518#else /* HAVE_SOCKETS && HAVE_INET_SOCKETS */
272#if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME)
273 519
274/* Return the current working directory. Returns NULL on errors. 520#ifdef WINDOWSNT
275 Any other returned value must be freed with free. This is used 521# include <winsock2.h>
276 only when get_current_dir_name is not defined on the system. */
277char*
278get_current_dir_name ()
279{
280 char *buf;
281 char *pwd;
282 struct stat dotstat, pwdstat;
283 /* If PWD is accurate, use it instead of calling getwd. PWD is
284 sometimes a nicer name, and using it may avoid a fatal error if a
285 parent directory is searchable but not readable. */
286 if ((pwd = getenv ("PWD")) != 0
287 && (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1])))
288 && stat (pwd, &pwdstat) == 0
289 && stat (".", &dotstat) == 0
290 && dotstat.st_ino == pwdstat.st_ino
291 && dotstat.st_dev == pwdstat.st_dev
292#ifdef MAXPATHLEN
293 && strlen (pwd) < MAXPATHLEN
294#endif
295 )
296 {
297 buf = (char *) malloc (strlen (pwd) + 1);
298 if (!buf)
299 return NULL;
300 strcpy (buf, pwd);
301 }
302#ifdef HAVE_GETCWD
303 else
304 {
305 size_t buf_size = 1024;
306 buf = (char *) malloc (buf_size);
307 if (!buf)
308 return NULL;
309 for (;;)
310 {
311 if (getcwd (buf, buf_size) == buf)
312 break;
313 if (errno != ERANGE)
314 {
315 int tmp_errno = errno;
316 free (buf);
317 errno = tmp_errno;
318 return NULL;
319 }
320 buf_size *= 2;
321 buf = (char *) realloc (buf, buf_size);
322 if (!buf)
323 return NULL;
324 }
325 }
326#else 522#else
327 else 523# include <sys/types.h>
524# include <sys/socket.h>
525# include <sys/un.h>
526# include <sys/stat.h>
527# include <errno.h>
528#endif
529
530#define AUTH_KEY_LENGTH 64
531#define SEND_BUFFER_SIZE 4096
532
533extern char *strerror ();
534extern int errno;
535
536/* Buffer to accumulate data to send in TCP connections. */
537char send_buffer[SEND_BUFFER_SIZE + 1];
538int sblen = 0; /* Fill pointer for the send buffer. */
539
540/* Let's send the data to Emacs when either
541 - the data ends in "\n", or
542 - the buffer is full (but this shouldn't happen)
543 Otherwise, we just accumulate it. */
544void
545send_to_emacs (s, data)
546 HSOCKET s;
547 char *data;
548{
549 while (data)
328 { 550 {
329 /* We need MAXPATHLEN here. */ 551 int dlen = strlen (data);
330 buf = (char *) malloc (MAXPATHLEN + 1); 552 if (dlen + sblen >= SEND_BUFFER_SIZE)
331 if (!buf) 553 {
332 return NULL; 554 int part = SEND_BUFFER_SIZE - sblen;
333 if (getwd (buf) == NULL) 555 strncpy (&send_buffer[sblen], data, part);
334 { 556 data += part;
335 int tmp_errno = errno; 557 sblen = SEND_BUFFER_SIZE;
336 free (buf); 558 }
337 errno = tmp_errno; 559 else if (dlen)
338 return NULL; 560 {
339 } 561 strcpy (&send_buffer[sblen], data);
562 data = NULL;
563 sblen += dlen;
564 }
565 else
566 break;
567
568 if (sblen == SEND_BUFFER_SIZE
569 || (sblen > 0 && send_buffer[sblen-1] == '\n'))
570 {
571 int sent = send (s, send_buffer, sblen, 0);
572 if (sent != sblen)
573 strcpy (send_buffer, &send_buffer[sent]);
574 sblen -= sent;
575 }
340 } 576 }
341#endif
342 return buf;
343} 577}
344#endif
345
346 578
347 579
348/* In STR, insert a & before each &, each space, each newline, and 580/* In STR, insert a & before each &, each space, each newline, and
@@ -350,11 +582,10 @@ get_current_dir_name ()
350 return value never contains a space. 582 return value never contains a space.
351 583
352 Does not change the string. Outputs the result to STREAM. */ 584 Does not change the string. Outputs the result to STREAM. */
353
354void 585void
355quote_argument (str, stream) 586quote_argument (s, str)
587 HSOCKET s;
356 char *str; 588 char *str;
357 FILE *stream;
358{ 589{
359 char *copy = (char *) xmalloc (strlen (str) * 2 + 1); 590 char *copy = (char *) xmalloc (strlen (str) * 2 + 1);
360 char *p, *q; 591 char *p, *q;
@@ -384,7 +615,7 @@ quote_argument (str, stream)
384 } 615 }
385 *q++ = 0; 616 *q++ = 0;
386 617
387 fprintf (stream, "%s", copy); 618 SEND_STRING (copy);
388 619
389 free (copy); 620 free (copy);
390} 621}
@@ -425,31 +656,196 @@ unquote_argument (str)
425} 656}
426 657
427 658
659int
660file_name_absolute_p (filename)
661 const unsigned char *filename;
662{
663 /* Sanity check, it shouldn't happen. */
664 if (! filename) return FALSE;
665
666 /* /xxx is always an absolute path. */
667 if (filename[0] == '/') return TRUE;
668
669 /* Empty filenames (which shouldn't happen) are relative. */
670 if (filename[0] == '\0') return FALSE;
671
672#ifdef WINDOWSNT
673 /* X:\xxx is always absolute; X:xxx is an error and will fail. */
674 if (isalpha (filename[0])
675 && filename[1] == ':' && (filename[2] == '\\' || filename[2] == '/'))
676 return TRUE;
677
678 /* Both \xxx and \\xxx\yyy are absolute. */
679 if (filename[0] == '\\') return TRUE;
680#endif
681
682 return FALSE;
683}
684
685#ifdef WINDOWSNT
686/* Wrapper to make WSACleanup a cdecl, as required by atexit(). */
687void
688__cdecl close_winsock ()
689{
690 WSACleanup ();
691}
692
693/* Initialize the WinSock2 library. */
694void
695initialize_sockets ()
696{
697 WSADATA wsaData;
698
699 if (WSAStartup (MAKEWORD (2, 0), &wsaData))
700 {
701 message (TRUE, "%s: error initializing WinSock2", progname);
702 exit (EXIT_FAILURE);
703 }
704
705 atexit (close_winsock);
706}
707#endif /* WINDOWSNT */
708
709
428/* 710/*
429 Try to run a different command, or --if no alternate editor is 711 * Read the information needed to set up a TCP comm channel with
430 defined-- exit with an errorcode. 712 * the Emacs server: host, port, pid and authentication string.
431*/ 713*/
432void 714int
433fail (void) 715get_server_config (server, authentication)
716 struct sockaddr_in *server;
717 char *authentication;
434{ 718{
435 if (alternate_editor) 719 char dotted[32];
720 char *port;
721 char *pid;
722 FILE *config = NULL;
723
724 if (file_name_absolute_p (server_file))
725 config = fopen (server_file, "rb");
726 else
436 { 727 {
437 int i = optind - 1; 728 char *home = getenv ("HOME");
438 execvp (alternate_editor, main_argv + i); 729
439 return; 730 if (home)
731 {
732 char *path = alloca (32 + strlen (home) + strlen (server_file));
733 sprintf (path, "%s/.emacs.d/server/%s", home, server_file);
734 config = fopen (path, "rb");
735 }
736#ifdef WINDOWSNT
737 if (!config && (home = getenv ("APPDATA")))
738 {
739 char *path = alloca (32 + strlen (home) + strlen (server_file));
740 sprintf (path, "%s/.emacs.d/server/%s", home, server_file);
741 config = fopen (path, "rb");
742 }
743#endif
744 }
745
746 if (! config)
747 return FALSE;
748
749 if (fgets (dotted, sizeof dotted, config)
750 && (port = strchr (dotted, ':'))
751 && (pid = strchr (port, ' ')))
752 {
753 *port++ = '\0';
754 *pid++ = '\0';
440 } 755 }
441 else 756 else
442 { 757 {
758 message (TRUE, "%s: invalid configuration info", progname);
443 exit (EXIT_FAILURE); 759 exit (EXIT_FAILURE);
444 } 760 }
761
762 server->sin_family = AF_INET;
763 server->sin_addr.s_addr = inet_addr (dotted);
764 server->sin_port = htons (atoi (port));
765
766 if (! fread (authentication, AUTH_KEY_LENGTH, 1, config))
767 {
768 message (TRUE, "%s: cannot read authentication info", progname);
769 exit (EXIT_FAILURE);
770 }
771
772 fclose (config);
773
774 emacs_pid = atoi (pid);
775
776 return TRUE;
445} 777}
446 778
447/* The process id of Emacs. */ 779HSOCKET
448int emacs_pid; 780set_tcp_socket ()
781{
782 HSOCKET s;
783 struct sockaddr_in server;
784 struct linger l_arg = {1, 1};
785 char auth_string[AUTH_KEY_LENGTH + 1];
449 786
450/* File handles for communicating with Emacs. */ 787 if (! get_server_config (&server, auth_string))
451FILE *out, *in; 788 return INVALID_SOCKET;
789
790 if (server.sin_addr.s_addr != inet_addr ("127.0.0.1"))
791 message (FALSE, "%s: connected to remote socket at %s\n",
792 progname, inet_ntoa (server.sin_addr));
793
794 /*
795 * Open up an AF_INET socket
796 */
797 if ((s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
798 {
799 message (TRUE, "%s: socket: %s\n", progname, strerror (errno));
800 return INVALID_SOCKET;
801 }
802
803 /*
804 * Set up the socket
805 */
806 if (connect (s, (struct sockaddr *) &server, sizeof server) < 0)
807 {
808 message (TRUE, "%s: connect: %s\n", progname, strerror (errno));
809 return INVALID_SOCKET;
810 }
811
812 setsockopt (s, SOL_SOCKET, SO_LINGER, (char *) &l_arg, sizeof l_arg);
813
814 /*
815 * Send the authentication
816 */
817 auth_string[AUTH_KEY_LENGTH] = '\0';
818
819 SEND_STRING ("-auth ");
820 SEND_STRING (auth_string);
821 SEND_STRING ("\n");
822
823 return s;
824}
825
826#if !defined (NO_SOCKETS_IN_FILE_SYSTEM)
827
828/* Three possibilities:
829 2 - can't be `stat'ed (sets errno)
830 1 - isn't owned by us
831 0 - success: none of the above */
832
833static int
834socket_status (socket_name)
835 char *socket_name;
836{
837 struct stat statbfr;
838
839 if (stat (socket_name, &statbfr) == -1)
840 return 2;
841
842 if (statbfr.st_uid != geteuid ())
843 return 1;
452 844
845 return 0;
846}
847
848
453/* A signal handler that passes the signal to the Emacs process. 849/* A signal handler that passes the signal to the Emacs process.
454 Useful for SIGWINCH. */ 850 Useful for SIGWINCH. */
455 851
@@ -542,51 +938,7 @@ init_signals (void)
542 signal (SIGTTOU, handle_sigtstp); 938 signal (SIGTTOU, handle_sigtstp);
543} 939}
544 940
545
546#if !defined (HAVE_SOCKETS) || defined (NO_SOCKETS_IN_FILE_SYSTEM)
547
548int
549main (argc, argv)
550 int argc;
551 char **argv;
552{
553 fprintf (stderr, "%s: Sorry, the Emacs server is supported only\n",
554 argv[0]);
555 fprintf (stderr, "on systems with Berkeley sockets.\n");
556
557 fail ();
558}
559
560#else /* HAVE_SOCKETS */
561 941
562#include <sys/types.h>
563#include <sys/socket.h>
564#include <sys/un.h>
565#include <sys/stat.h>
566#include <errno.h>
567
568extern char *strerror ();
569extern int errno;
570
571/* Three possibilities:
572 2 - can't be `stat'ed (sets errno)
573 1 - isn't owned by us
574 0 - success: none of the above */
575
576static int
577socket_status (socket_name)
578 char *socket_name;
579{
580 struct stat statbfr;
581
582 if (stat (socket_name, &statbfr) == -1)
583 return 2;
584
585 if (statbfr.st_uid != geteuid ())
586 return 1;
587
588 return 0;
589}
590 942
591/* Returns 1 if PREFIX is a prefix of STRING. */ 943/* Returns 1 if PREFIX is a prefix of STRING. */
592static int 944static int
@@ -605,29 +957,12 @@ strprefix (char *prefix, char *string)
605 return 1; 957 return 1;
606} 958}
607 959
608int 960
609main (argc, argv) 961HSOCKET
610 int argc; 962set_local_socket ()
611 char **argv;
612{ 963{
613 int s, i, needlf = 0; 964 HSOCKET s;
614 struct sockaddr_un server; 965 struct sockaddr_un server;
615 char *cwd, *str;
616 char string[BUFSIZ];
617
618 main_argc = argc;
619 main_argv = argv;
620 progname = argv[0];
621
622 /* Process options. */
623 decode_options (argc, argv);
624
625 if ((argc - optind < 1) && !eval && !tty && !window_system)
626 {
627 fprintf (stderr, "%s: file name or argument required\n", progname);
628 fprintf (stderr, "Try `%s --help' for more information\n", progname);
629 exit (EXIT_FAILURE);
630 }
631 966
632 /* 967 /*
633 * Open up an AF_UNIX socket in this person's home directory 968 * Open up an AF_UNIX socket in this person's home directory
@@ -635,9 +970,8 @@ main (argc, argv)
635 970
636 if ((s = socket (AF_UNIX, SOCK_STREAM, 0)) < 0) 971 if ((s = socket (AF_UNIX, SOCK_STREAM, 0)) < 0)
637 { 972 {
638 fprintf (stderr, "%s: ", argv[0]); 973 message (TRUE, "%s: socket: %s\n", progname, strerror (errno));
639 perror ("socket"); 974 return INVALID_SOCKET;
640 fail ();
641 } 975 }
642 976
643 server.sun_family = AF_UNIX; 977 server.sun_family = AF_UNIX;
@@ -647,16 +981,16 @@ main (argc, argv)
647 int default_sock = !socket_name; 981 int default_sock = !socket_name;
648 int saved_errno = 0; 982 int saved_errno = 0;
649 983
650 char *server_name = "server"; 984 char *server_name = "server";
651 985
652 if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\')) 986 if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\'))
653 { /* socket_name is a file name component. */ 987 { /* socket_name is a file name component. */
654 server_name = socket_name; 988 server_name = socket_name;
655 socket_name = NULL; 989 socket_name = NULL;
656 default_sock = 1; /* Try both UIDs. */ 990 default_sock = 1; /* Try both UIDs. */
657 } 991 }
658 992
659 if (default_sock) 993 if (default_sock)
660 { 994 {
661 socket_name = alloca (100 + strlen (server_name)); 995 socket_name = alloca (100 + strlen (server_name));
662 sprintf (socket_name, "/tmp/emacs%d/%s", 996 sprintf (socket_name, "/tmp/emacs%d/%s",
@@ -667,8 +1001,8 @@ main (argc, argv)
667 strcpy (server.sun_path, socket_name); 1001 strcpy (server.sun_path, socket_name);
668 else 1002 else
669 { 1003 {
670 fprintf (stderr, "%s: socket-name %s too long", 1004 message (TRUE, "%s: socket-name %s too long",
671 argv[0], socket_name); 1005 progname, socket_name);
672 fail (); 1006 fail ();
673 } 1007 }
674 1008
@@ -702,8 +1036,8 @@ main (argc, argv)
702 strcpy (server.sun_path, socket_name); 1036 strcpy (server.sun_path, socket_name);
703 else 1037 else
704 { 1038 {
705 fprintf (stderr, "%s: socket-name %s too long", 1039 message (TRUE, "%s: socket-name %s too long",
706 argv[0], socket_name); 1040 progname, socket_name);
707 exit (EXIT_FAILURE); 1041 exit (EXIT_FAILURE);
708 } 1042 }
709 1043
@@ -715,81 +1049,165 @@ main (argc, argv)
715 } 1049 }
716 } 1050 }
717 1051
718 switch (sock_status) 1052 switch (sock_status)
719 { 1053 {
720 case 1: 1054 case 1:
721 /* There's a socket, but it isn't owned by us. This is OK if 1055 /* There's a socket, but it isn't owned by us. This is OK if
722 we are root. */ 1056 we are root. */
723 if (0 != geteuid ()) 1057 if (0 != geteuid ())
724 { 1058 {
725 fprintf (stderr, "%s: Invalid socket owner\n", argv[0]); 1059 message (TRUE, "%s: Invalid socket owner\n", progname);
726 fail (); 1060 return INVALID_SOCKET;
727 } 1061 }
728 break; 1062 break;
729 1063
730 case 2: 1064 case 2:
731 /* `stat' failed */ 1065 /* `stat' failed */
732 if (saved_errno == ENOENT) 1066 if (saved_errno == ENOENT)
733 fprintf (stderr, 1067 message (TRUE,
734 "%s: can't find socket; have you started the server?\n\ 1068 "%s: can't find socket; have you started the server?\n\
735To start the server in Emacs, type \"M-x server-start\".\n", 1069To start the server in Emacs, type \"M-x server-start\".\n",
736 argv[0]); 1070 progname);
737 else 1071 else
738 fprintf (stderr, "%s: can't stat %s: %s\n", 1072 message (TRUE, "%s: can't stat %s: %s\n",
739 argv[0], server.sun_path, strerror (saved_errno)); 1073 progname, server.sun_path, strerror (saved_errno));
740 fail (); 1074 return INVALID_SOCKET;
741 break; 1075 }
742 }
743 } 1076 }
744 1077
745 if (connect (s, (struct sockaddr *) &server, strlen (server.sun_path) + 2) 1078 if (connect (s, (struct sockaddr *) &server, strlen (server.sun_path) + 2)
746 < 0) 1079 < 0)
747 { 1080 {
748 fprintf (stderr, "%s: ", argv[0]); 1081 message (TRUE, "%s: connect: %s\n", progname, strerror (errno));
749 perror ("connect"); 1082 return INVALID_SOCKET;
750 fail ();
751 } 1083 }
752 1084
753 /* We use the stream OUT to send our commands to the server. */ 1085 return s;
754 if ((out = fdopen (s, "r+")) == NULL) 1086}
1087#endif /* ! NO_SOCKETS_IN_FILE_SYSTEM */
1088
1089HSOCKET
1090set_socket ()
1091{
1092 HSOCKET s;
1093
1094 INITIALIZE ();
1095
1096#ifndef NO_SOCKETS_IN_FILE_SYSTEM
1097 /* Explicit --socket-name argument. */
1098 if (socket_name)
755 { 1099 {
756 fprintf (stderr, "%s: ", argv[0]); 1100 s = set_local_socket ();
757 perror ("fdopen"); 1101 if ((s != INVALID_SOCKET) || alternate_editor)
758 fail (); 1102 return s;
1103 message (TRUE, "%s: error accessing socket \"%s\"",
1104 progname, socket_name);
1105 exit (EXIT_FAILURE);
759 } 1106 }
1107#endif
1108
1109 /* Explicit --server-file arg or EMACS_SERVER_FILE variable. */
1110 if (!server_file)
1111 server_file = getenv ("EMACS_SERVER_FILE");
760 1112
761 /* We use the stream IN to read the responses. 1113 if (server_file)
762 We used to use just one stream for both output and input
763 on the socket, but reversing direction works nonportably:
764 on some systems, the output appears as the first input;
765 on other systems it does not. */
766 if ((in = fdopen (s, "r+")) == NULL)
767 { 1114 {
768 fprintf (stderr, "%s: ", argv[0]); 1115 s = set_tcp_socket ();
769 perror ("fdopen"); 1116 if ((s != INVALID_SOCKET) || alternate_editor)
770 fail (); 1117 return s;
1118
1119 message (TRUE, "%s: error accessing server file \"%s\"",
1120 progname, server_file);
1121 exit (EXIT_FAILURE);
771 } 1122 }
1123
1124#ifndef NO_SOCKETS_IN_FILE_SYSTEM
1125 /* Implicit local socket. */
1126 s = set_local_socket ();
1127 if (s != INVALID_SOCKET)
1128 return s;
1129#endif
772 1130
773#ifdef HAVE_GETCWD 1131 /* Implicit server file. */
774 cwd = getcwd (string, sizeof string); 1132 server_file = "server";
775#else 1133 s = set_tcp_socket ();
776 cwd = getwd (string); 1134 if ((s != INVALID_SOCKET) || alternate_editor)
1135 return s;
1136
1137 /* No implicit or explicit socket, and no alternate editor. */
1138 message (TRUE, "%s: No socket or alternate editor. Please use:\n\n"
1139#ifndef NO_SOCKETS_IN_FILE_SYSTEM
1140"\t--socket-name\n"
777#endif 1141#endif
1142"\t--server-file (or environment variable EMACS_SERVER_FILE)\n\
1143\t--alternate-editor (or environment variable ALTERNATE_EDITOR)\n",
1144 progname);
1145 exit (EXIT_FAILURE);
1146}
1147
1148int
1149main (argc, argv)
1150 int argc;
1151 char **argv;
1152{
1153 HSOCKET s;
1154 int i, rl, needlf = 0;
1155 char *cwd, *str;
1156 char string[BUFSIZ+1];
1157
1158 main_argc = argc;
1159 main_argv = argv;
1160 progname = argv[0];
1161
1162 /* Process options. */
1163 decode_options (argc, argv);
1164
1165 if ((argc - optind < 1) && !eval && !tty && !window_system)
1166 {
1167 message (TRUE, "%s: file name or argument required\n"
1168 "Try `%s --help' for more information\n",
1169 progname, progname);
1170 exit (EXIT_FAILURE);
1171 }
1172
1173 if ((s = set_socket ()) == INVALID_SOCKET)
1174 fail ();
1175
1176
1177 cwd = get_current_dir_name ();
778 if (cwd == 0) 1178 if (cwd == 0)
779 { 1179 {
780 /* getwd puts message in STRING if it fails. */ 1180 /* getwd puts message in STRING if it fails. */
781 1181 message (TRUE, "%s: %s\n", progname,
782#ifdef HAVE_GETCWD 1182 "Cannot get current working directory");
783 fprintf (stderr, "%s: %s (%s)\n", argv[0],
784 "cannot get current working directory", strerror (errno));
785#else
786 fprintf (stderr, "%s: %s (%s)\n", argv[0], string, strerror (errno));
787#endif
788 fail (); 1183 fail ();
789 } 1184 }
790 1185
1186#ifdef WINDOWSNT
1187 /*
1188 Modern Windows restrict which processes can set the foreground window.
1189 emacsclient can allow Emacs to grab the focus by calling the function
1190 AllowSetForegroundWindow(). Unfortunately, older Windows (W95, W98
1191 and NT) lack this function, so we have to check its availability.
1192 */
1193 if (emacs_pid)
1194 {
1195 HMODULE hUser32;
1196
1197 if (hUser32 = LoadLibrary ("user32.dll"))
1198 {
1199 FARPROC set_fg;
1200 if (set_fg = GetProcAddress (hUser32, "AllowSetForegroundWindow"))
1201 set_fg (emacs_pid);
1202 FreeLibrary (hUser32);
1203 }
1204 }
1205#endif
1206
791 /* First of all, send our version number for verification. */ 1207 /* First of all, send our version number for verification. */
792 fprintf (out, "-version %s ", VERSION); 1208 SEND_STRING ("-version ");
1209 SEND_STRING (VERSION);
1210 SEND_STRING (" ");
793 1211
794 /* Send over our environment. */ 1212 /* Send over our environment. */
795 if (!current_frame) 1213 if (!current_frame)
@@ -800,38 +1218,33 @@ To start the server in Emacs, type \"M-x server-start\".\n",
800 { 1218 {
801 char *name = xstrdup (environ[i]); 1219 char *name = xstrdup (environ[i]);
802 char *value = strchr (name, '='); 1220 char *value = strchr (name, '=');
803 fprintf (out, "-env "); 1221 SEND_STRING ("-env ");
804 quote_argument (environ[i], out); 1222 SEND_QUOTED (environ[i]);
805 fprintf (out, " "); 1223 SEND_STRING (" ");
806 } 1224 }
807 } 1225 }
808 1226
809 /* Send over our current directory. */ 1227 /* Send over our current directory. */
810 if (!current_frame) 1228 if (!current_frame)
811 { 1229 {
812 char *dir = get_current_dir_name (); 1230 SEND_STRING ("-dir ");
813 if (dir) 1231 SEND_QUOTED (cwd);
814 { 1232 SEND_STRING ("/");
815 fprintf (out, "-dir "); 1233 SEND_STRING (" ");
816 quote_argument (dir, out);
817 fprintf (out, "/");
818 fprintf (out, " ");
819 free (dir);
820 }
821 } 1234 }
822 1235
823 retry: 1236 retry:
824 if (nowait) 1237 if (nowait)
825 fprintf (out, "-nowait "); 1238 SEND_STRING ("-nowait ");
826 1239
827 if (current_frame) 1240 if (current_frame)
828 fprintf (out, "-current-frame "); 1241 SEND_STRING ("-current-frame ");
829 1242
830 if (display) 1243 if (display)
831 { 1244 {
832 fprintf (out, "-display "); 1245 SEND_STRING ("-display ");
833 quote_argument (display, out); 1246 SEND_QUOTED (display);
834 fprintf (out, " "); 1247 SEND_STRING (" ");
835 } 1248 }
836 1249
837 if (tty) 1250 if (tty)
@@ -841,13 +1254,13 @@ To start the server in Emacs, type \"M-x server-start\".\n",
841 1254
842 if (! tty_name) 1255 if (! tty_name)
843 { 1256 {
844 fprintf (stderr, "%s: could not get terminal name\n", progname); 1257 message (TRUE, "%s: could not get terminal name\n", progname);
845 fail (); 1258 fail ();
846 } 1259 }
847 1260
848 if (! type) 1261 if (! type)
849 { 1262 {
850 fprintf (stderr, "%s: please set the TERM variable to your terminal type\n", 1263 message (TRUE, "%s: please set the TERM variable to your terminal type\n",
851 progname); 1264 progname);
852 fail (); 1265 fail ();
853 } 1266 }
@@ -855,22 +1268,22 @@ To start the server in Emacs, type \"M-x server-start\".\n",
855 if (! strcmp (type, "eterm")) 1268 if (! strcmp (type, "eterm"))
856 { 1269 {
857 /* This causes nasty, MULTI_KBOARD-related input lockouts. */ 1270 /* This causes nasty, MULTI_KBOARD-related input lockouts. */
858 fprintf (stderr, "%s: opening a frame in an Emacs term buffer" 1271 message (TRUE, "%s: opening a frame in an Emacs term buffer"
859 " is not supported\n", progname); 1272 " is not supported\n", progname);
860 fail (); 1273 fail ();
861 } 1274 }
862 1275
863 init_signals (); 1276 init_signals ();
864 1277
865 fprintf (out, "-tty "); 1278 SEND_STRING ("-tty ");
866 quote_argument (tty_name, out); 1279 SEND_QUOTED (tty_name);
867 fprintf (out, " "); 1280 SEND_STRING (" ");
868 quote_argument (type, out); 1281 SEND_QUOTED (type);
869 fprintf (out, " "); 1282 SEND_STRING (" ");
870 } 1283 }
871 1284
872 if (window_system) 1285 if (window_system)
873 fprintf (out, "-window-system "); 1286 SEND_STRING ("-window-system ");
874 1287
875 if ((argc - optind > 0)) 1288 if ((argc - optind > 0))
876 { 1289 {
@@ -880,10 +1293,10 @@ To start the server in Emacs, type \"M-x server-start\".\n",
880 1293
881 if (eval) 1294 if (eval)
882 { 1295 {
883 /* Don't prepend any cwd or anything like that. */ 1296 /* Don't prepend cwd or anything like that. */
884 fprintf (out, "-eval "); 1297 SEND_STRING ("-eval ");
885 quote_argument (argv[i], out); 1298 SEND_QUOTED (argv[i]);
886 fprintf (out, " "); 1299 SEND_STRING (" ");
887 continue; 1300 continue;
888 } 1301 }
889 1302
@@ -893,25 +1306,25 @@ To start the server in Emacs, type \"M-x server-start\".\n",
893 while (isdigit ((unsigned char) *p) || *p == ':') p++; 1306 while (isdigit ((unsigned char) *p) || *p == ':') p++;
894 if (*p == 0) 1307 if (*p == 0)
895 { 1308 {
896 fprintf (out, "-position "); 1309 SEND_STRING ("-position ");
897 quote_argument (argv[i], out); 1310 SEND_QUOTED (argv[i]);
898 fprintf (out, " "); 1311 SEND_STRING (" ");
899 continue; 1312 continue;
900 } 1313 }
901 else 1314 else
902 relative = 1; 1315 relative = 1;
903 } 1316 }
904 else if (*argv[i] != '/') 1317 else if (! file_name_absolute_p (argv[i]))
905 relative = 1; 1318 relative = 1;
906 1319
907 fprintf (out, "-file "); 1320 SEND_STRING ("-file ");
908 if (relative) 1321 if (relative)
909 { 1322 {
910 quote_argument (cwd, out); 1323 SEND_QUOTED (cwd);
911 fprintf (out, "/"); 1324 SEND_STRING ("/");
912 } 1325 }
913 quote_argument (argv[i], out); 1326 SEND_QUOTED (argv[i]);
914 fprintf (out, " "); 1327 SEND_STRING (" ");
915 } 1328 }
916 } 1329 }
917 else 1330 else
@@ -921,18 +1334,16 @@ To start the server in Emacs, type \"M-x server-start\".\n",
921 while ((str = fgets (string, BUFSIZ, stdin))) 1334 while ((str = fgets (string, BUFSIZ, stdin)))
922 { 1335 {
923 if (eval) 1336 if (eval)
924 fprintf (out, "-eval "); 1337 SEND_STRING ("-eval ");
925 else 1338 else
926 fprintf (out, "-file "); 1339 SEND_STRING ("-file ");
927 quote_argument (str, out); 1340 SEND_QUOTED (out);
928 } 1341 }
929 fprintf (out, " "); 1342 SEND_STRING (" ");
930 } 1343 }
931 } 1344 }
932 1345
933 fprintf (out, "\n"); 1346 SEND_STRING ("\n");
934 fflush (out);
935 fsync (fileno (out));
936 1347
937 /* Wait for an answer. */ 1348 /* Wait for an answer. */
938 if (!eval && !tty && !nowait) 1349 if (!eval && !tty && !nowait)
@@ -944,22 +1355,25 @@ To start the server in Emacs, type \"M-x server-start\".\n",
944 fsync (1); 1355 fsync (1);
945 1356
946 /* Now, wait for an answer and print any messages. */ 1357 /* Now, wait for an answer and print any messages. */
947 while ((str = fgets (string, BUFSIZ, in))) 1358 while ((rl = recv (s, string, BUFSIZ, 0)) > 0)
948 { 1359 {
949 char *p = str + strlen (str) - 1; 1360 char *p;
950 while (p > str && *p == '\n') 1361 string[rl] = '\0';
1362
1363 p = string + strlen (string) - 1;
1364 while (p > string && *p == '\n')
951 *p-- = 0; 1365 *p-- = 0;
952 1366
953 if (strprefix ("-good-version ", str)) 1367 if (strprefix ("-good-version ", string))
954 { 1368 {
955 /* -good-version: The versions match. */ 1369 /* -good-version: The versions match. */
956 } 1370 }
957 else if (strprefix ("-emacs-pid ", str)) 1371 else if (strprefix ("-emacs-pid ", string))
958 { 1372 {
959 /* -emacs-pid PID: The process id of the Emacs process. */ 1373 /* -emacs-pid PID: The process id of the Emacs process. */
960 emacs_pid = strtol (string + strlen ("-emacs-pid"), NULL, 10); 1374 emacs_pid = strtol (string + strlen ("-emacs-pid"), NULL, 10);
961 } 1375 }
962 else if (strprefix ("-window-system-unsupported ", str)) 1376 else if (strprefix ("-window-system-unsupported ", string))
963 { 1377 {
964 /* -window-system-unsupported: Emacs was compiled without X 1378 /* -window-system-unsupported: Emacs was compiled without X
965 support. Try again on the terminal. */ 1379 support. Try again on the terminal. */
@@ -968,22 +1382,22 @@ To start the server in Emacs, type \"M-x server-start\".\n",
968 tty = 1; 1382 tty = 1;
969 goto retry; 1383 goto retry;
970 } 1384 }
971 else if (strprefix ("-print ", str)) 1385 else if (strprefix ("-print ", string))
972 { 1386 {
973 /* -print STRING: Print STRING on the terminal. */ 1387 /* -print STRING: Print STRING on the terminal. */
974 str = unquote_argument (str + strlen ("-print ")); 1388 str = unquote_argument (string + strlen ("-print "));
975 if (needlf) 1389 if (needlf)
976 printf ("\n"); 1390 printf ("\n");
977 printf ("%s", str); 1391 printf ("%s", str);
978 needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; 1392 needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n';
979 } 1393 }
980 else if (strprefix ("-error ", str)) 1394 else if (strprefix ("-error ", string))
981 { 1395 {
982 /* -error DESCRIPTION: Signal an error on the terminal. */ 1396 /* -error DESCRIPTION: Signal an error on the terminal. */
983 str = unquote_argument (str + strlen ("-error ")); 1397 str = unquote_argument (string + strlen ("-error "));
984 if (needlf) 1398 if (needlf)
985 printf ("\n"); 1399 printf ("\n");
986 printf ("*ERROR*: %s", str); 1400 fprintf (stderr, "*ERROR*: %s", str);
987 needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; 1401 needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n';
988 } 1402 }
989 else if (strprefix ("-suspend ", str)) 1403 else if (strprefix ("-suspend ", str))
@@ -999,8 +1413,8 @@ To start the server in Emacs, type \"M-x server-start\".\n",
999 /* Unknown command. */ 1413 /* Unknown command. */
1000 if (needlf) 1414 if (needlf)
1001 printf ("\n"); 1415 printf ("\n");
1002 printf ("*ERROR*: Unknown message: %s", str); 1416 printf ("*ERROR*: Unknown message: %s", string);
1003 needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; 1417 needlf = string[0] == '\0' ? needlf : string[strlen (string) - 1] != '\n';
1004 } 1418 }
1005 } 1419 }
1006 1420
@@ -1009,10 +1423,12 @@ To start the server in Emacs, type \"M-x server-start\".\n",
1009 fflush (stdout); 1423 fflush (stdout);
1010 fsync (1); 1424 fsync (1);
1011 1425
1426 CLOSE_SOCKET (s);
1012 return EXIT_SUCCESS; 1427 return EXIT_SUCCESS;
1013} 1428}
1014 1429
1015#endif /* HAVE_SOCKETS */ 1430#endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */
1431
1016 1432
1017#ifndef HAVE_STRERROR 1433#ifndef HAVE_STRERROR
1018char * 1434char *
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 49a18be1df5..26dac368b4d 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -41,7 +41,7 @@
41 * configuration file containing regexp definitions for etags. 41 * configuration file containing regexp definitions for etags.
42 */ 42 */
43 43
44char pot_etags_version[] = "@(#) pot revision number is 17.20"; 44char pot_etags_version[] = "@(#) pot revision number is $Revision: 3.61 $";
45 45
46#define TRUE 1 46#define TRUE 1
47#define FALSE 0 47#define FALSE 0
@@ -4955,7 +4955,7 @@ Lua_functions (inf)
4955 if (bp[0] != 'f' && bp[0] != 'l') 4955 if (bp[0] != 'f' && bp[0] != 'l')
4956 continue; 4956 continue;
4957 4957
4958 LOOKING_AT (bp, "local"); /* skip possible "local" */ 4958 (void)LOOKING_AT (bp, "local"); /* skip possible "local" */
4959 4959
4960 if (LOOKING_AT (bp, "function")) 4960 if (LOOKING_AT (bp, "function"))
4961 get_tag (bp, NULL); 4961 get_tag (bp, NULL);
@@ -5137,7 +5137,7 @@ TeX_commands (inf)
5137 if (!opgrp || *p == TEX_clgrp) 5137 if (!opgrp || *p == TEX_clgrp)
5138 { 5138 {
5139 while (*p != '\0' && *p != TEX_opgrp && *p != TEX_clgrp) 5139 while (*p != '\0' && *p != TEX_opgrp && *p != TEX_clgrp)
5140 *p++; 5140 p++;
5141 linelen = p - lb.buffer + 1; 5141 linelen = p - lb.buffer + 1;
5142 } 5142 }
5143 make_tag (cp, namelen, TRUE, 5143 make_tag (cp, namelen, TRUE,
@@ -6256,15 +6256,14 @@ readline (lbp, stream)
6256 /* Check whether this is a #line directive. */ 6256 /* Check whether this is a #line directive. */
6257 if (result > 12 && strneq (lbp->buffer, "#line ", 6)) 6257 if (result > 12 && strneq (lbp->buffer, "#line ", 6))
6258 { 6258 {
6259 int start, lno; 6259 unsigned int lno;
6260 int start = 0;
6260 6261
6261 if (DEBUG) start = 0; /* shut up the compiler */ 6262 if (sscanf (lbp->buffer, "#line %u \"%n", &lno, &start) >= 1
6262 if (sscanf (lbp->buffer, "#line %d %n\"", &lno, &start) >= 1 6263 && start > 0) /* double quote character found */
6263 && lbp->buffer[start] == '"')
6264 { 6264 {
6265 char *endp = lbp->buffer + ++start; 6265 char *endp = lbp->buffer + start;
6266 6266
6267 assert (start > 0);
6268 while ((endp = etags_strchr (endp, '"')) != NULL 6267 while ((endp = etags_strchr (endp, '"')) != NULL
6269 && endp[-1] == '\\') 6268 && endp[-1] == '\\')
6270 endp++; 6269 endp++;
diff --git a/lib-src/grep-changelog b/lib-src/grep-changelog
index e3d3af2c577..8c19486ea2e 100755
--- a/lib-src/grep-changelog
+++ b/lib-src/grep-changelog
@@ -36,22 +36,33 @@ use vars qw($author $regexp $exclude $from_date $to_date
36 @entries); 36 @entries);
37 37
38use Getopt::Long; 38use Getopt::Long;
39my $result = GetOptions ("author=s" => \$author, 39
40 "text=s" => \$regexp, 40my $result;
41 "exclude=s" => \$exclude, 41
42 "from-date=s" => \$from_date, 42if (@ARGV == 0) {
43 "to-date=s" => \$to_date, 43
44 "rcs-log" => \$rcs_log, 44 # No arguments cannot posibly mean "show everything"!!
45 "with-date" => \$with_date, 45 $result = 0;
46 "reverse!" => \$reverse, 46
47 "version" => \$version, 47} else {
48 "help" => \$help); 48
49 49 $result = GetOptions ("author=s" => \$author,
50# If date options are specified, check that they have the format 50 "text=s" => \$regexp,
51# YYYY-MM-DD. 51 "exclude=s" => \$exclude,
52 52 "from-date=s" => \$from_date,
53$result = 0 if $from_date && $from_date !~ /^\d\d\d\d-\d\d-\d\d$/; 53 "to-date=s" => \$to_date,
54$result = 0 if $to_date && $to_date !~ /^\d\d\d\d-\d\d-\d\d$/; 54 "rcs-log" => \$rcs_log,
55 "with-date" => \$with_date,
56 "reverse!" => \$reverse,
57 "version" => \$version,
58 "help" => \$help);
59
60 # If date options are specified, check that they have the format
61 # YYYY-MM-DD.
62
63 $result = 0 if $from_date && $from_date !~ /^\d\d\d\d-\d\d-\d\d$/;
64 $result = 0 if $to_date && $to_date !~ /^\d\d\d\d-\d\d-\d\d$/;
65}
55 66
56# Print usage information and exit when necessary. 67# Print usage information and exit when necessary.
57 68
@@ -77,7 +88,7 @@ Valid options are:
77 --help Print this help 88 --help Print this help
78 89
79If no CHANGELOG is specified scan the files "ChangeLog" and 90If no CHANGELOG is specified scan the files "ChangeLog" and
80"ChangeLog.1+" in the current directory. Old-style dates in ChangeLogs 91"ChangeLog.N+" in the current directory. Old-style dates in ChangeLogs
81are not recognized. 92are not recognized.
82USAGE 93USAGE
83 exit !$help; 94 exit !$help;
@@ -86,7 +97,7 @@ USAGE
86# Print version info and exit if `--version' was specified. 97# Print version info and exit if `--version' was specified.
87 98
88if ($version) { 99if ($version) {
89 print "0.2\n"; 100 print "0.3\n";
90 exit 0; 101 exit 0;
91} 102}
92 103
@@ -233,7 +244,7 @@ sub parse_changelog {
233 244
234# If files were specified on the command line, parse those files in the 245# If files were specified on the command line, parse those files in the
235# order supplied by the user; otherwise parse default files ChangeLog and 246# order supplied by the user; otherwise parse default files ChangeLog and
236# ChangeLog.1+ according to $reverse. 247# ChangeLog.NNN according to $reverse.
237unless (@ARGV > 0) { 248unless (@ARGV > 0) {
238 @ARGV = ("ChangeLog"); 249 @ARGV = ("ChangeLog");
239 250
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index 0deb0012f88..7f3fc12ac1e 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -20,22 +20,17 @@
20# Boston, MA 02110-1301, USA. 20# Boston, MA 02110-1301, USA.
21# 21#
22 22
23ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc 23ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacsclient
24 24
25.PHONY: $(ALL) 25.PHONY: $(ALL)
26 26
27VERSION = 22.0.91
28
27LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \ 29LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
28 -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \ 30 -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
29 -I../src 31 -I../src
30
31# don't know what (if) to do with these yet...
32#
33# $(BLD)/server.exe \
34# $(BLD)/emacstool.exe \
35# $(BLD)/emacsclient.exe \
36# $(BLD)/cvtmail.exe \
37 32
38LIBS = $(BASE_LIBS) $(ADVAPI32) 33LIBS = $(BASE_LIBS) $(ADVAPI32)
39 34
40$(BLD)/make-docfile.exe: $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O) 35$(BLD)/make-docfile.exe: $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O)
41 $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O) $(LIBS) 36 $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O) $(LIBS)
@@ -59,6 +54,7 @@ movemail: $(BLD) $(BLD)/movemail.exe
59fakemail: $(BLD) $(BLD)/fakemail.exe 54fakemail: $(BLD) $(BLD)/fakemail.exe
60sorted-doc: $(BLD) $(BLD)/sorted-doc.exe 55sorted-doc: $(BLD) $(BLD)/sorted-doc.exe
61digest-doc: $(BLD) $(BLD)/digest-doc.exe 56digest-doc: $(BLD) $(BLD)/digest-doc.exe
57emacsclient: $(BLD) $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe
62 58
63test-distrib: $(BLD) $(BLD)/test-distrib.exe 59test-distrib: $(BLD) $(BLD)/test-distrib.exe
64 "$(BLD)/test-distrib.exe" "$(SRC)/testfile" 60 "$(BLD)/test-distrib.exe" "$(SRC)/testfile"
@@ -74,6 +70,29 @@ $(BLD)/movemail.exe: $(MOVEMAILOBJS) getopt.h
74# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib 70# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
75 $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(MOVEMAILOBJS) $(WSOCK32) $(LIBS) 71 $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(MOVEMAILOBJS) $(WSOCK32) $(LIBS)
76 72
73ECLIENT_CFLAGS = -DHAVE_GETCWD -DHAVE_STRERROR -DVERSION="\"$(VERSION)\""
74ECLIENTOBJS = $(BLD)/emacsclient.$(O) \
75 $(BLD)/getopt.$(O) \
76 $(BLD)/getopt1.$(O) \
77 $(BLD)/ntlib.$(O)
78TRES = ../nt/$(BLD)/emacs.res
79
80$(TRES): ../nt/emacs.rc
81 $(RC) $(RC_OUT)../nt/$(BLD)/emacs.res $(ALL_DEPS)
82
83$(BLD)/emacsclient.exe: $(ECLIENTOBJS)
84# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
85 $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(LIBS)
86
87$(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(TRES)
88# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
89 $(LINK) $(LINK_OUT)$@ $(TRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(LIBS)
90
91# emacsclient.$(O) depends on makefile.w32-in because makefile.w32-in
92# can be edited to define VERSION string, which is part of ECLIENT_CFLAGS.
93$(BLD)/emacsclient.$(O): emacsclient.c makefile.w32-in
94 $(CC) $(CFLAGS) $(ECLIENT_CFLAGS) $(CC_OUT)$@ emacsclient.c
95
77ETAGSOBJ = $(BLD)/etags.$(O) \ 96ETAGSOBJ = $(BLD)/etags.$(O) \
78 $(BLD)/getopt.$(O) \ 97 $(BLD)/getopt.$(O) \
79 $(BLD)/getopt1.$(O) \ 98 $(BLD)/getopt1.$(O) \
@@ -85,9 +104,9 @@ $(BLD)/etags.exe: $(ETAGSOBJ)
85 104
86 105
87EBROWSEOBJ = $(BLD)/ebrowse.$(O) \ 106EBROWSEOBJ = $(BLD)/ebrowse.$(O) \
88 $(BLD)/getopt.$(O) \ 107 $(BLD)/getopt.$(O) \
89 $(BLD)/getopt1.$(O) \ 108 $(BLD)/getopt1.$(O) \
90 $(BLD)/ntlib.$(O) 109 $(BLD)/ntlib.$(O)
91 110
92$(BLD)/ebrowse.exe: $(EBROWSEOBJ) 111$(BLD)/ebrowse.exe: $(EBROWSEOBJ)
93 $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(EBROWSEOBJ) $(LIBS) 112 $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(EBROWSEOBJ) $(LIBS)
@@ -118,14 +137,6 @@ $(BLD)/ctags.$(O): ctags.c
118 $(CC) $(CFLAGS) $(CTAGS_CFLAGS) $(CC_OUT)$@ ctags.c 137 $(CC) $(CFLAGS) $(CTAGS_CFLAGS) $(CC_OUT)$@ ctags.c
119 138
120# 139#
121# don't know what to do with these yet...
122#
123# $(BLD)/emacstool.exe: $(BLD)/emacstool.$(O)
124# $(BLD)/server.exe: $(BLD)/server.$(O)
125# $(BLD)/cvtmail.exe: $(BLD)/cvtmail.$(O)
126# $(BLD)/emacsclient.exe: $(BLD)/emacsclient.$(O)
127
128#
129# From ..\src\Makefile.in 140# From ..\src\Makefile.in
130# It doesn't matter if the real name is *.obj for the files in this list, 141# It doesn't matter if the real name is *.obj for the files in this list,
131# make-docfile blindly replaces .o with .c anyway. Keep .o in this list 142# make-docfile blindly replaces .o with .c anyway. Keep .o in this list
@@ -263,6 +274,15 @@ lisp2 = \
263 $(lispsource)window.elc \ 274 $(lispsource)window.elc \
264 $(lispsource)version.el 275 $(lispsource)version.el
265 276
277# This is needed the first time we build the tree, since temacs.exe
278# does not exist yet, and the DOC rule needs it to rebuild DOC whenever
279# Emacs is rebuilt.
280../src/$(BLD)/temacs.exe:
281 - mkdir "../src/$(OBJDIR)"
282 - mkdir "../src/$(BLD)"
283 @echo temacs > temacs.exe
284 $(CP) temacs.exe ../src/$(BLD)
285 - $(DEL) temacs.exe
266 286
267DOC = DOC 287DOC = DOC
268$(DOC): $(BLD) $(BLD)/make-docfile.exe ../src/$(BLD)/temacs.exe $(lisp1) $(lisp2) 288$(DOC): $(BLD) $(BLD)/make-docfile.exe ../src/$(BLD)/temacs.exe $(lisp1) $(lisp2)
@@ -296,6 +316,8 @@ install: $(INSTALL_FILES)
296 $(CP) $(BLD)/movemail.exe $(INSTALL_DIR)/bin 316 $(CP) $(BLD)/movemail.exe $(INSTALL_DIR)/bin
297 $(CP) $(BLD)/sorted-doc.exe $(INSTALL_DIR)/bin 317 $(CP) $(BLD)/sorted-doc.exe $(INSTALL_DIR)/bin
298 $(CP) $(BLD)/digest-doc.exe $(INSTALL_DIR)/bin 318 $(CP) $(BLD)/digest-doc.exe $(INSTALL_DIR)/bin
319 $(CP) $(BLD)/emacsclient.exe $(INSTALL_DIR)/bin
320 $(CP) $(BLD)/emacsclientw.exe $(INSTALL_DIR)/bin
299 - mkdir "$(INSTALL_DIR)/etc" 321 - mkdir "$(INSTALL_DIR)/etc"
300 $(CP) $(DOC) $(INSTALL_DIR)/etc 322 $(CP) $(DOC) $(INSTALL_DIR)/etc
301 323
@@ -351,9 +373,6 @@ $(BLD)/ctags.$(O) : \
351 $(SRC)/ntlib.h \ 373 $(SRC)/ntlib.h \
352 $(SRC)/getopt.h 374 $(SRC)/getopt.h
353 375
354$(BLD)/cvtmail.$(O) : \
355 $(SRC)/cvtmail.c
356
357$(BLD)/digest-doc.$(O) : \ 376$(BLD)/digest-doc.$(O) : \
358 $(SRC)/digest-doc.c 377 $(SRC)/digest-doc.c
359 378
@@ -363,10 +382,6 @@ $(BLD)/emacsclient.$(O) : \
363 $(EMACS_ROOT)/src/m/intel386.h \ 382 $(EMACS_ROOT)/src/m/intel386.h \
364 $(EMACS_ROOT)/lib-src/../src/config.h 383 $(EMACS_ROOT)/lib-src/../src/config.h
365 384
366$(BLD)/emacstool.$(O) : \
367 $(SRC)/emacstool.c \
368 $(EMACS_ROOT)/nt/inc/sys/file.h
369
370$(BLD)/etags.$(O) : \ 385$(BLD)/etags.$(O) : \
371 $(SRC)/etags.c \ 386 $(SRC)/etags.c \
372 $(EMACS_ROOT)/nt/inc/sys/param.h \ 387 $(EMACS_ROOT)/nt/inc/sys/param.h \
@@ -428,7 +443,7 @@ $(BLD)/movemail.$(O) : \
428 $(EMACS_ROOT)/lib-src/../src/syswait.h \ 443 $(EMACS_ROOT)/lib-src/../src/syswait.h \
429 $(EMACS_ROOT)/nt/inc/pwd.h \ 444 $(EMACS_ROOT)/nt/inc/pwd.h \
430 $(SRC)/ntlib.h 445 $(SRC)/ntlib.h
431 $(CC) $(CFLAGS) -DUSG $(CC_OUT)$@ movemail.c 446 $(CC) $(CFLAGS) -DUSG $(CC_OUT)$@ movemail.c
432 447
433$(BLD)/ntlib.$(O) : \ 448$(BLD)/ntlib.$(O) : \
434 $(SRC)/ntlib.c \ 449 $(SRC)/ntlib.c \