Commit graph

939 commits

Author SHA1 Message Date
Chong Yidong
c07a4c0b59 Merge from emacs-24 branch 2012-04-20 16:48:50 +08:00
Chong Yidong
f30d612a7a Fixes for pty handling in gdb-mi.el and process.c.
* lisp/progmodes/gdb-mi.el (gdb): Revert 2012-04-19 change.
(gdb-inferior-io--init-proc): New function.
(gdb-init-1): Use it.
(gdb-inferior-io-sentinel): New sentinel for the gdb-inferior pty,
responsible for allocating a new pty and hooking it to gdb when
the old pty gets an EIO due to process exit.
(gdb-delchar-or-quit): New command.  Bind it in gdb-mi buffers.
(gdb-tooltip-print): Don't use obsolete tooltip-use-echo-area.
(gdb-inferior-io--maybe-delete-pty): Move into gdb-reset.

* src/process.c (wait_reading_process_output): If EIO occurs on a pty,
set the status to "failed" and ensure that sentinel is run.

* doc/lispref/processes.texi (Asynchronous Processes): Mention nil
argument to start-process.
2012-04-20 14:39:29 +08:00
Glenn Morris
4373fd4326 More small doc and lispref edits related to processes
* doc/lispref/processes.texi (Serial Ports, Byte Packing, Bindat Spec)
(Bindat Functions): Copyedits.

* src/process.c (Fset_process_inherit_coding_system_flag)
(Fset_process_query_on_exit_flag): Doc fix (mention return value).
(Fmake_network_process, Fmake_serial_process): Doc fix.

* admin/FOR-RELEASE: Related markup.
2012-04-18 00:21:18 -07:00
Glenn Morris
016a35dfa7 More process-related doc and manual small edits
* doc/lispref/processes.texi (Output from Processes, Filter Functions):
Mention waiting-for-user-input-p.
(Sentinels, Query Before Exit, System Processes, Transaction Queues):
(Network Servers, Datagrams, Network Processes, Network Options)
(Network Feature Testing, Serial Ports): Copyedits.
(Network): Add encrypted network overview paragraph.
Cross-reference the Emacs-GnuTLS manual.  Use @acronym.

* lisp/net/network-stream.el (open-network-stream): Doc fix.

* src/process.c (Fset_process_inherit_coding_system_flag)
(Fset_process_query_on_exit_flag): Doc fix (mention return value).
(Fmake_network_process): Doc fix.
2012-04-17 20:48:43 -07:00
Chong Yidong
e63c261b77 Merge 2012-04-09 GnuTLS fix from trunk 2012-04-10 16:00:43 +08:00
Paul Eggert
9f46df23a3 Merge from trunk; add Bug#. 2012-04-09 12:51:06 -07:00
Chong Yidong
fb7ada5f94 Remove * characters from the front of variable docstrings. 2012-04-09 21:05:48 +08:00
Ted Zlatanov
a18ecafa99 Limit number of GnuTLS handshakes per connection.
* gnutls.c (gnutls_log_function2i): Convenience log function.
(emacs_gnutls_read): Use new log functions,
`gnutls_handshakes_tried' process member, and
`GNUTLS_EMACS_HANDSHAKES_LIMIT' to limit the number of handshake
attempts per process (connection).

* gnutls.h: Add `GNUTLS_EMACS_HANDSHAKES_LIMIT' upper limit.  Add
convenience `GNUTLS_LOG2i' macro.

* process.c (make_process):
* process.h: Add integer `gnutls_handshakes_tried' member to
process struct.
2012-04-09 08:46:16 -04:00
Paul Eggert
b8df54ffbe configure: new option --enable-gcc-warnings
I have been using this change for many months in my private copy
of Emacs, and have used it to find several bugs.  It's mature
enough to publish now.
* Makefile.in (GNULIB_MODULES): Add warnings, manywarnings.
* configure.in: Support --enable-gcc-warnings, in the style of
other GNU packages such as coreutils.
(C_WARNINGS_SWITCH): Remove, replacing with...
(WARN_CFLAGS, GNULIB_WARN_CFLAGS): New variable.
(PKG_CHECK_MODULES, C_SWITCH_X_SITE): Use -isystem rather than -I,
when including system files with GCC.
* etc/NEWS: Mention --enable-gcc-warnings.
* lib/Makefile.am (AM_CFLAGS): New macro.
* m4/manywarnings.m4, m4/warnings.m4: New files, from gnulib.
* lib-src/Makefile.in (C_WARNINGS_SWITCH): Remove.
(WARN_CFLAGS, WERROR_CFLAGS): New macros.
(BASE_CFLAGS): Use new macros rather than old.
* lwlib/Makefile.in (C_WARNINGS_SWITCH): Remove.
(WARN_CFLAGS, WERROR_CFLAGS): New macros.
(ALL_CFLAGS): Use new macros rather than old.
* oldXMenu/Makefile.in (C_WARNINGS_SWITCH): Remove.
(WARN_CFLAGS, WERROR_CFLAGS): New macros.
(ALL_CFLAGS): Use new macros rather than old.
* src/Makefile.in (C_WARNINGS_SWITCH): Remove.
(WARN_CFLAGS, WERROR_CFLAGS): New macros.
(ALL_CFLAGS): Use new macros rather than old.
* src/process.c: Ignore -Wstrict-overflow to work around GCC bug 52904.
* src/regex.c: Ignore -Wstrict-overflow.  If !emacs, also ignore
-Wunused-but-set-variable, -Wunused-function, -Wunused-macros,
-Wunused-result, -Wunused-variable.  This should go away once
the Emacs and Gnulib regex code is merged.
(xmalloc, xrealloc): Now static.
2012-04-09 00:45:59 -07:00
Troels Nielsen
5063c0e1a2 * src/process.c (wait_reading_process_output): Handle pty disconnect
by refraining from sending oneself a SIGCHLD.

Fixes: debbugs:10933
2012-03-23 08:23:14 -04:00
Andreas Schwab
959ad23fb9 * process.c (read_process_output): Use p instead of XPROCESS (proc).
(send_process): Likewise.
2012-01-21 11:54:19 +01:00
Glenn Morris
acaf905b11 Add 2012 to FSF copyright years for Emacs files 2012-01-05 01:46:05 -08:00
Paul Eggert
9858f6c326 Spelling fixes. 2011-12-29 18:52:49 -08:00
Glenn Morris
2bf2618007 * src/process.c (start_process_unwind): Treat any pid <= 0, except -2,
as an error, not just -1.
For example, make_process inits the pid to 0.

Fixes: debbugs:10217
2011-12-06 00:17:35 -08:00
Paul Eggert
dbf312256d Remove GCPRO-related macros that exist only to avoid shadowing locals.
* lisp.h (GCPRO1_VAR, GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR, GCPRO5_VAR)
(GCPRO6_VAR, UNGCPRO_VAR): Remove.  See
<http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
All uses changed to use GCPRO1 etc.
(GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6, UNGCPRO):
Revert to old implementation (i.e., before 2011-03-11).
2011-11-28 00:20:58 -08:00
Paul Eggert
5b76caa476 Rename locals to avoid shadowing.
* fileio.c (Finsert_file_contents):
Rename inner 'gcpro1' to 'inner_gcpro1' to avoid shadowing.
* process.c (wait_reading_process_output):
Rename inner 'proc' to 'p' to avoid shadowing.
Indent for consistency with usual Emacs style.
2011-11-25 23:42:44 -08:00
Paul Eggert
e4920bc99d Spelling fixes. 2011-11-24 23:14:48 -08:00
Lars Magne Ingebrigtsen
16c1ad08dc (wait_reading_process_output): Add comment and URL. 2011-11-21 21:39:44 +01:00
Lars Magne Ingebrigtsen
261b6fd466 Fix asynchrounous GnuTLS socket handling on some versions of the GnuTLS library.
Some versions of the GnuTLS library doesn't respons to poll reliably.
Work around this by checking all GnuTLS sockets explicitly from the
idle loop.
2011-11-21 19:21:42 +01:00
Paul Eggert
e1dbe924b5 Spelling fixes. 2011-11-19 18:29:42 -08:00
Paul Eggert
c5e87d104b Spelling fixes. 2011-11-17 09:40:48 -08:00
Paul Eggert
da6062e6ea Spelling fixes. 2011-11-14 23:55:13 -08:00
Kenichi Handa
a0241d014e Set members of the struct coding_system before accessing them (bug#9910,9911,9912). 2011-11-07 10:57:07 +09:00
Glenn Morris
83ed7b5c7e Revert problematic change to wait_reading_process_output.
* src/process.c (wait_reading_process_output): Revert 2009-08-30 change.
Not clear what it was for, and it causes various bugs.  (Bug#9839)
2011-10-28 20:12:02 -04:00
Chong Yidong
435c1d6793 More gnutls memory fixes.
* src/gnutls.c (emacs_gnutls_deinit): Deinit the gnutls_state if it is
non-NULL, regardless of GNUTLS_INITSTAGE.
(Fgnutls_boot): Cleanups.  Call emacs_gnutls_deinit if we signal
an error.  Set process slots as soon as we allocate them.

* src/gnutls.h (GNUTLS_LOG, GNUTLS_LOG2): Fix macros.

* src/process.c (make_process): Set gnutls_state to NULL.
2011-10-27 16:07:28 +08:00
Chong Yidong
9c6c6f495b Fix a memory leak in the built-in GnuTLS support.
* src/gnutls.c (emacs_gnutls_deinit): New function.  Deallocate
credentials structures as well as calling gnutls_deinit.
(Fgnutls_deinit, Fgnutls_boot): Use it.

* src/process.c (make_process): Initialize GnuTLS credentials to NULL.
(deactivate_process): Call emacs_gnutls_deinit.
2011-10-27 14:07:09 +08:00
Juanma Barranquero
5e617bc2b6 Whitespace changes. 2011-09-09 03:06:52 +02:00
Paul Eggert
31c286f79d * process.c (make_process): Use printmax_t, not int, to format
process-name gensyms.
2011-08-29 12:46:15 -07:00
Paul Eggert
011ba6eaac Merge from trunk. 2011-08-24 14:20:36 -07:00
Stefan Monnier
963b492b63 * lisp/mpc.el (mpc--proc-filter): Don't signal mpc-proc-error since signals
from process filters aren't reliably transmitted to the surrounding
accept-process-output.
(mpc-proc-check): New function.
(mpc-proc-sync): Use it

Fixes: debbugs:8293
2011-08-23 21:55:10 -04:00
Paul Eggert
76667214e7 Merge from trunk. 2011-08-18 10:01:52 -07:00
Andreas Schwab
156bffbe26 * src/process.c (Fnetwork_interface_list): Correctly determine buffer
size.
2011-08-18 17:33:22 +02:00
Paul Eggert
c881564470 Merge from trunk. 2011-08-14 22:30:45 -07:00
Kenichi Handa
5cf2b69bdb Avoid crash with invalid default-process-coding-system.
* src/process.c (create_process): Call setup_process_coding_systems
after the pid of the process is set to -1.
2011-08-14 13:51:08 -04:00
Paul Eggert
70c60eb2f9 Merge from trunk. 2011-08-13 23:40:45 -07:00
Paul Eggert
0a0d27fb45 * process.c (Fnetwork_interface_info): Declare local only if needed. 2011-08-13 22:23:51 -07:00
Jan Djärv
377538cbcf Fix network-interface-list|info on newer BSD derived OS:es.
* configure.in: Add header check: sys/socket.h,
ifaddrs.h, net/if_dl.h.  Check for getifaddrs and freeifaddrs.
Check for sa_len in struct ifreq.ifr_addr (Bug#8477).

* src/process.c: Include ifaddrs.h and net/if_dl.h if available (Bug#8477).
(Fnetwork_interface_list): Allocate in increments of bytes instead
of sizeof (struct ifreq).  Iterate over ifconf.ifc_req by counting
bytes (Bug#8477).  Count bytes correctly when ifr_addr is a struct
sockaddr.
(struct ifflag_def): notrailers is smart on OSX.
(Fnetwork_interface_info): Handle case when ifr_flags is negative.
Get hardware address with getifaddrs if available.
2011-08-13 12:48:03 +02:00
Paul Eggert
0065d05491 Adjust in response to jan.h.d's comments.
See, for example <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9196#26>.
2011-08-04 19:15:35 -07:00
Paul Eggert
bf2da747e9 * process.c (Fnetwork_interface_list): Check for overflow
in size calculation.
2011-07-28 18:05:39 -07:00
Lars Magne Ingebrigtsen
dd88932771 Use the same condition for POLL_FOR_INPUT in both keyboard.c and process.c
Fixes: debbugs:1858
2011-07-16 20:27:08 +02:00
Paul Eggert
123403e42f Use pthread_sigmask, not sigprocmask.
* callproc.c (Fcall_process):
* sysdep.c (sys_sigblock, sys_sigunblock, sys_sigsetmask):
* process.c (create_process):
sigprocmask is portable only for single-threaded applications, and
Emacs can be multi-threaded when it uses GTK.
2011-07-06 11:04:23 -07:00
Jan Djärv
0949d2b6ba * process.c: Add defined (HAVE_GSETTINGS) for xgselect.h
(wait_reading_process_output): Add defined (HAVE_GSETTINGS) for
xg_select.

* xgselect.c: Add defined (HAVE_GSETTINGS).
(xgselect_initialize): Ditto.

* xsettings.c (store_monospaced_changed): Take new font as arg and
check for change against current_mono_font.
(EMACS_TYPE_SETTINGS): Remove this and related defines.
(emacs_settings_constructor, emacs_settings_get_property)
(emacs_settings_set_property, emacs_settings_class_init)
(emacs_settings_init, gsettings_obj): Remove.
(something_changedCB): New function for HAVE_GSETTINGS.
(something_changedCB): HAVE_GCONF: Call store_monospaced_changed
with value as argument.
(init_gsettings): Check that GSETTINGS_SCHEMA exists before calling
g_settings_new.  Do not create gsettings_obj.
Remove calls to g_settings_bind. Connect something_changedCB to
"changed".

Fixes: debbugs:8967
2011-07-01 11:18:46 +02:00
Chong Yidong
029529ac6f Fix handling of pending signals in wait_reading_process_output (Bug#8869).
* process.c (wait_reading_process_output): Bypass select if
waiting for a cell while ignoring keyboard input, and input is
pending.  Suggested by Jan Djärv.
2011-06-25 23:40:40 -04:00
Juanma Barranquero
cd3520a41d Move DEFSYM to lisp.h and use everywhere. 2011-06-24 23:25:22 +02:00
Paul Eggert
51cab52b05 Merge from trunk. 2011-06-20 17:59:02 -07:00
Deniz Dogan
76147d94eb * src/process.c (Fset_process_buffer): Clarify return value in docstring. 2011-06-20 14:54:05 +02:00
Paul Eggert
3d1e65a18a * process.c (Fformat_network_address): Use EMACS_INT, not EMACS_UINT.
We prefer signed integers, even for size calculations.
2011-06-19 11:38:58 -07:00
Paul Eggert
f66c7cf8f7 Variadic C functions now count arguments with ptrdiff_t.
This partly undoes my 2011-03-30 change, which replaced int with size_t.
Back then I didn't know that the Emacs coding style prefers signed int.
Also, in the meantime I found a few more instances where arguments
were being counted with int, which may truncate counts on 64-bit
machines, or EMACS_INT, which may be unnecessarily wide.
* lisp.h (struct Lisp_Subr.function.aMANY)
(DEFUN_ARGS_MANY, internal_condition_case_n, safe_call):
Arg counts are now ptrdiff_t, not size_t.
All variadic functions and their callers changed accordingly.
(struct gcpro.nvars): Now size_t, not size_t.  All uses changed.
* bytecode.c (exec_byte_code): Check maxdepth for overflow,
to avoid potential buffer overrun.  Don't assume arg counts fit in 'int'.
* callint.c (Fcall_interactively): Check arg count for overflow,
to avoid potential buffer overrun.  Use signed char, not 'int',
for 'varies' array, so that we needn't bother to check its size
calculation for overflow.
* editfns.c (Fformat): Use ptrdiff_t, not EMACS_INT, to count args.
* eval.c (apply_lambda):
* fns.c (Fmapconcat): Use XFASTINT, not XINT, to get args length.
(struct textprop_rec.argnum): Now ptrdiff_t, not int.  All uses changed.
(mapconcat): Use ptrdiff_t, not int and EMACS_INT, to count args.
2011-06-14 11:57:19 -07:00
Paul Eggert
4475bec4dd * buffer.c (Qclone_number): Remove for now, as it's unused.
(record_buffer, Funrecord_buffer): Rename local to avoid shadowing.
(record_buffer): Remove unused local.
* frame.c (other_visible_frames, frame_buffer_list): Now static.
(set_frame_buffer_list): Remove; unused.
* frame.h (other_visible_frames): Remove decl.
* keyboard.h (menu_items_inuse): Declare only if USE_GTK || USE_MOTIF.
* lisp.h (frame_buffer_list, set_frame_buffer_list): Remove decls.
(add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Declare only
if HAVE_GPM.
* menu.c (menu_items_inuse): Now static unless USE_GTK || USE_MOTIF.
* process.c (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
Define only if HAVE_GPM.
* widget.c (EmacsFrameResize, emacsFrameClassRec): Now static.
(update_hints_inhibit): Remove; never set.  All uses removed.
* widgetprv.h (emacsFrameClassRec): Remove decl.
* window.c (delete_deletable_window): Now returns void, since it
wasn't returning anything.
(compare_window_configurations): Remove unused locals.
* xfns.c (x_set_scroll_bar_default_width): Remove unused locals.
* xmenu.c (x_menu_set_in_use): Define only if USE_GTK || USE_MOTIF.
Omit no-longer-needed #ifdef USE_X_TOOLKIT, since USE_X_TOOLKIT is
implied by USE_GTK || USE_MOTIF.
(dialog_selection_callback) [!USE_GTK]: Prefer intptr_t for integers
the same widths as pointers.  This follows up on the 2011-05-06 patch.
* xterm.c (x_alloc_lighter_color_for_widget): Define only if USE_LUCID.
* xterm.h: Likewise.
(x_menu_set_in_use): Declare only if USE_GTK || USE_MOTIF.
2011-06-11 14:31:32 -07:00
Paul Eggert
55d4c1b248 [ChangeLog]
Use 'inline', not 'INLINE'.
* configure.in, autogen/config.in (INLINE): Remove.
[lib-src/ChangeLog]
Use 'inline', not 'INLINE'.
* etags.c (hash): Now inline unconditionally.
* make-docfile.c (put_char): inline, not INLINE.
[nt/ChangeLog]
Use 'inline', not 'INLINE'.
* config.nt (INLINE): Remove.
[src/ChangeLog]
Use 'inline', not 'INLINE'.
* alloc.c, fontset.c (INLINE): Remove.
* alloc.c, bidi.c, charset.c, coding.c, dispnew.c, fns.c, image.c:
* intervals.c, keyboard.c, process.c, syntax.c, textprop.c, w32term.c:
* xdisp.c, xfaces.c, xterm.c: Replace all uses of INLINE with inline.
* gmalloc.c (register_heapinfo): Use inline unconditionally.
* lisp.h (LISP_MAKE_RVALUE): Use inline, not __inline__.
2011-05-28 15:39:39 -07:00