1. 28 Nov, 2011 1 commit
  2. 26 Nov, 2011 1 commit
    • Paul Eggert's avatar
      Rename locals to avoid shadowing. · 5b76caa4
      Paul Eggert authored
      * 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.
      5b76caa4
  3. 25 Nov, 2011 1 commit
  4. 21 Nov, 2011 2 commits
  5. 20 Nov, 2011 1 commit
  6. 17 Nov, 2011 1 commit
  7. 15 Nov, 2011 1 commit
  8. 07 Nov, 2011 1 commit
  9. 29 Oct, 2011 1 commit
  10. 27 Oct, 2011 2 commits
    • Chong Yidong's avatar
      More gnutls memory fixes. · 435c1d67
      Chong Yidong authored
      * 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.
      435c1d67
    • Chong Yidong's avatar
      Fix a memory leak in the built-in GnuTLS support. · 9c6c6f49
      Chong Yidong authored
      * 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.
      9c6c6f49
  11. 09 Sep, 2011 1 commit
  12. 29 Aug, 2011 1 commit
  13. 24 Aug, 2011 1 commit
  14. 18 Aug, 2011 1 commit
  15. 14 Aug, 2011 2 commits
  16. 13 Aug, 2011 1 commit
    • Jan Djärv's avatar
      Fix network-interface-list|info on newer BSD derived OS:es. · 377538cb
      Jan Djärv authored
      * 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.
      377538cb
  17. 05 Aug, 2011 1 commit
  18. 29 Jul, 2011 1 commit
  19. 16 Jul, 2011 1 commit
  20. 06 Jul, 2011 1 commit
    • Paul Eggert's avatar
      Use pthread_sigmask, not sigprocmask. · 123403e4
      Paul Eggert authored
      * 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.
      123403e4
  21. 01 Jul, 2011 1 commit
    • Jan Djärv's avatar
      * process.c: Add defined (HAVE_GSETTINGS) for xgselect.h · 0949d2b6
      Jan Djärv authored
      (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
      0949d2b6
  22. 26 Jun, 2011 1 commit
  23. 24 Jun, 2011 1 commit
  24. 20 Jun, 2011 1 commit
  25. 19 Jun, 2011 1 commit
  26. 14 Jun, 2011 1 commit
    • Paul Eggert's avatar
      Variadic C functions now count arguments with ptrdiff_t. · f66c7cf8
      Paul Eggert authored
      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.
      f66c7cf8
  27. 11 Jun, 2011 1 commit
    • Paul Eggert's avatar
      * buffer.c (Qclone_number): Remove for now, as it's unused. · 4475bec4
      Paul Eggert authored
      (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.
      4475bec4
  28. 28 May, 2011 1 commit
    • Paul Eggert's avatar
      [ChangeLog] · 55d4c1b2
      Paul Eggert authored
      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__.
      55d4c1b2
  29. 09 May, 2011 1 commit
    • Eli Zaretskii's avatar
      Backport revisions... · 14fe7b53
      Eli Zaretskii authored
      Backport revisions 2011-04-24T05:30:24Z!eggert@cs.ucla.edu..2011-04-25T19:40:22Z!eggert@cs.ucla.edu (inclusive) from trunk (bug#8623)
      
      	The next log entry shows the actual changes by Paul Eggert.
      
       Fix a problem with aliasing and vector headers.
       GCC 4.6.0 optimizes based on type-based alias analysis.  For
       example, if b is of type struct buffer * and v of type struct
       Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size
       != &v->size, and therefore "v->size = 1; b->size = 2; return
       v->size;" must therefore return 1.  This assumption is incorrect
       for Emacs, since it type-puns struct Lisp_Vector * with many other
       types.  To fix this problem, this patch adds a new type struct
       vector_header that documents the constraints on layout of vectors
       and pseudovectors, and helps optimizing compilers not get fooled
       by Emacs's type punning.  It also adds the macros XSETTYPED_PVECTYPE
       XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
       src/lisp.h (XVECTOR_SIZE): New convenience macro.  All previous uses of
       XVECTOR (foo)->size replaced to use this macro, to avoid the hassle
       of writing XVECTOR (foo)->header.size.
       src/lisp.h: Say "vectorlike header" rather than "vector header.
       (struct vectorlike_header): Rename from struct vector_header.
       (XVECTORLIKE_HEADER_SIZE): Renamed from XVECTOR_HEADER_SIZE.
       All uses changed.
       (XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
       (XSETTYPED_PVECTYPE): New macro, specifying the name of the size
       member.
       (XSETPVECTYPE): Rewrite in terms of new macro.
       (XSETPVECTYPESIZE): New macro, specifying both type and size.
       This is a bit clearer, and further avoids the possibility of
       undesirable aliasing.
       (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
       (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
       and XVECTOR_HEADER_SIZE.
       (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
       since Lisp_Subr is a special case (no "next" field).
       (ASIZE): Rewrite in terms of XVECTOR_SIZE.
       (struct vector_header): New type.
       (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
       object, to help avoid aliasing.
       (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
       (SUBRP): Likewise, since Lisp_Subr is a special case.
       src/lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
       (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
       (struct Lisp_Hash_Table): Combine first two members into a single
       struct vector_header member.  All uses of "size" and "next" members
       changed to be "header.size" and "header.next".
       src/buffer.h (struct buffer): Likewise.
       src/font.h (struct font_spec, struct font_entity, struct font): Likewise.
       src/frame.h (struct frame): Likewise.
       src/process.h (struct Lisp_Process): Likewise.
       src/termhooks.h (struct terminal): Likewise.
       src/window.c (struct save_window_data, struct saved_window): Likewise.
       src/window.h (struct window): Likewise.
       src/alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
       Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
       src/buffer.c (init_buffer_once): Likewise.
       src/lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
       special case.
       src/process.c (Fformat_network_address): Use local var for size,
       for brevity.
       src/fns.c (vector): Remove; this old hack is no longer needed.
       src/bytecode.c (exec_byte_code): Don't use XVECTOR before CHECK_VECTOR.
      14fe7b53
  30. 04 May, 2011 2 commits
    • Juanma Barranquero's avatar
      src/gnutls.c: Remove unused parameter `fildes'. · e968f4f3
      Juanma Barranquero authored
      * gnutls.h (emacs_gnutls_write, emacs_gnutls_read):
      * gnutls.c (emacs_gnutls_write, emacs_gnutls_read):
        Remove unused parameter `fildes'.
      * process.c (read_process_output, send_process): Don't pass it.
      e968f4f3
    • Juanma Barranquero's avatar
      Implement dynamic loading of GnuTLS on Windows. · 0898ca10
      Juanma Barranquero authored
      * lisp/term/w32-win.el (dynamic-library-alist): Add `gnutls'.
      
      * nt/INSTALL: Clarify GnuTLS support.
      
      * src/callproc.c, src/emacs.c: Include lisp.h before src/w32.h, not after.
      
      * src/gnutls.c (Qgnutls_dll): Define.
        (DEF_GNUTLS_FN, LOAD_GNUTLS_FN): New macros.
        (gnutls_*): Declare function pointers.
        (init_gnutls_functions): New function to initialize function pointers.
        (emacs_gnutls_handshake, Fgnutls_error_string, Fgnutls_deinit)
        (emacs_gnutls_global_init, Fgnutls_bye): Use function pointers.
        (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno):
        Wrappers for gnutls_record_check_pending and gnutls_transport_set_errno.
        (emacs_gnutls_write, emacs_gnutls_read)
        (emacs_gnutls_handle_error, Fgnutls_error_fatalp)
        (Fgnutls_available_p): New function.
        (Fgnutls_boot): Call Fgnutls_available_p.  Use function pointers.
        (syms_of_gnutls) <Qgnutls_dll>: Initialize and staticpro it.
        (syms_of_gnutls) <Sgnutls_available_p>: defsubr it.
      
      * src/gnutls.h (GNUTLS_EMACS_ERROR_NOT_LOADED): New macro.
        (emacs_gnutls_write, emacs_gnutls_read): Mark as extern.
        (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno):
        Declare.
      
      * src/w32.c (QCloaded_from, Vlibrary_cache): Define.
        (w32_delayed_load): Move from image.c.  When loading a library, record
        its filename in the :loaded-from property of the library id.
        (globals_of_w32) <QCloaded_from, Vlibrary_cache>:
        Initialize and staticpro them.
        (emacs_gnutls_pull, emacs_gnutls_push): Call emacs_gnutls_* functions.
      
      * src/image.c: Include w32.h.
        (Vimage_type_cache): Delete.
        (syms_of_image) <Vimage_type_cache>: Don't initialize and staticpro it.
        (CACHE_IMAGE_TYPE, Finit_image_library): Use Vlibrary_cache instead.
        (w32_delayed_load): Move to w32.c.
      
      * src/process.c: Include lisp.h before src/w32.h, not after.
        (wait_reading_process_output): Call emacs_gnutls_record_check_pending
        instead of gnutls_record_check_pending.
      
      * src/w32.h (VlibraryCache, QCloaded_from, w32_delayed_load): Declare.
      0898ca10
  31. 03 May, 2011 1 commit
  32. 30 Apr, 2011 1 commit
  33. 29 Apr, 2011 1 commit
  34. 25 Apr, 2011 2 commits
    • Paul Eggert's avatar
      lisp.h: Fix a problem with aliasing and vector headers. · eab3844f
      Paul Eggert authored
      GCC 4.6.0 optimizes based on type-based alias analysis.  For
      example, if b is of type struct buffer * and v of type struct
      Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size
      != &v->size, and therefore "v->size = 1; b->size = 2; return
      v->size;" must therefore return 1.  This assumption is incorrect
      for Emacs, since it type-puns struct Lisp_Vector * with many other
      types.  To fix this problem, this patch adds a new type struct
      vector_header that documents the constraints on layout of vectors
      and pseudovectors, and helps optimizing compilers not get fooled
      by Emacs's type punning.  It also adds the macros XSETTYPED_PVECTYPE
      XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
      * lisp.h (XVECTOR_SIZE): New convenience macro.  All previous uses of
      XVECTOR (foo)->size replaced to use this macro, to avoid the hassle
      of writing XVECTOR (foo)->header.size.
      (XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
      (XSETTYPED_PVECTYPE): New macro, specifying the name of the size
      member.
      (XSETPVECTYPE): Rewrite in terms of new macro.
      (XSETPVECTYPESIZE): New macro, specifying both type and size.
      This is a bit clearer, and further avoids the possibility of
      undesirable aliasing.
      (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
      (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
      and XVECTOR_HEADER_SIZE.
      (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
      since Lisp_Subr is a special case (no "next" field).
      (ASIZE): Rewrite in terms of XVECTOR_SIZE.
      (struct vector_header): New type.
      (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
      object, to help avoid aliasing.
      (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
      (SUBRP): Likewise, since Lisp_Subr is a special case.
      * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
      (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
      (struct Lisp_Hash_Table): Combine first two members into a single
      struct vector_header member.  All uses of "size" and "next" members
      changed to be "header.size" and "header.next".
      * buffer.h (struct buffer): Likewise.
      * font.h (struct font_spec, struct font_entity, struct font): Likewise.
      * frame.h (struct frame): Likewise.
      * process.h (struct Lisp_Process): Likewise.
      * termhooks.h (struct terminal): Likewise.
      * window.c (struct save_window_data, struct saved_window): Likewise.
      * window.h (struct window): Likewise.
      * alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
      Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
      * buffer.c (init_buffer_once): Likewise.
      * lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
      special case.
      * process.c (Fformat_network_address): Use local var for size,
      for brevity.
      eab3844f
    • Ted Zlatanov's avatar
      Add GnuTLS support for W32 and certificate and hostname verification in GnuTLS. · e061a11b
      Ted Zlatanov authored
      * src/gnutls.c: Renamed global_initialized to
      gnutls_global_initialized.  Added internals for the
      :verify-hostname-error, :verify-error, and :verify-flags
      parameters of `gnutls-boot' and documented those parameters in the
      docstring.  Start callback support.
      (emacs_gnutls_handshake): Add Woe32 support. Retry handshake
      unless a fatal error occured. Call gnutls_alert_send_appropriate
      on error. Return error code.
      (emacs_gnutls_write): Call emacs_gnutls_handle_error.
      (emacs_gnutls_read): Likewise.
      (Fgnutls_boot): Return handshake error code.
      (emacs_gnutls_handle_error): New function.
      (wsaerror_to_errno): Likewise.
      
      * src/gnutls.h: Add GNUTLS_STAGE_CALLBACKS enum to denote we're in the
      callbacks stage.
      
      * src/w32.c (emacs_gnutls_pull): New function for GnuTLS on Woe32.
      (emacs_gnutls_push): Likewise.
      
      * src/w32.h (emacs_gnutls_pull): Add prototype.
      (emacs_gnutls_push): Likewise.
      e061a11b
  35. 19 Apr, 2011 1 commit