diff options
author | Paul Eggert <[email protected]> | 2011-08-14 22:30:45 -0700 |
---|---|---|
committer | Paul Eggert <[email protected]> | 2011-08-14 22:30:45 -0700 |
commit | c881564470ef15bf3f1908c1ee9eb4c3e92953fd (patch) | |
tree | 9ba76bf1f20a84f2de8f37ab930e2f45bb6a6405 | |
parent | 70c60eb2f9e5120f609ba5b6f2d82eef26d21c15 (diff) | |
parent | de148fee1a02003faedf49b831abecfec15f60e7 (diff) |
Merge from trunk.
-rw-r--r-- | autogen/config.in | 15 | ||||
-rwxr-xr-x | autogen/configure | 187 | ||||
-rw-r--r-- | lisp/ChangeLog | 7 | ||||
-rw-r--r-- | lisp/ibuf-ext.el | 15 | ||||
-rw-r--r-- | src/ChangeLog | 43 | ||||
-rw-r--r-- | src/gnutls.c | 416 | ||||
-rw-r--r-- | src/nsfns.m | 42 | ||||
-rw-r--r-- | src/nsterm.h | 3 | ||||
-rw-r--r-- | src/nsterm.m | 10 | ||||
-rw-r--r-- | src/process.c | 5 | ||||
-rw-r--r-- | src/xdisp.c | 8 | ||||
-rw-r--r-- | src/xfaces.c | 138 |
12 files changed, 556 insertions, 333 deletions
diff --git a/autogen/config.in b/autogen/config.in index ca44b80c91..24dd54db43 100644 --- a/autogen/config.in +++ b/autogen/config.in @@ -218,6 +218,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you have the `fpathconf' function. */ #undef HAVE_FPATHCONF +/* Define to 1 if you have the `freeifaddrs' function. */ +#undef HAVE_FREEIFADDRS + /* Define to 1 if using the freetype and fontconfig libraries. */ #undef HAVE_FREETYPE @@ -254,6 +257,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME +/* Define to 1 if you have the `getifaddrs' function. */ +#undef HAVE_GETIFADDRS + /* Define to 1 if you have the `getline' function. */ #undef HAVE_GETLINE @@ -351,6 +357,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if netdb.h declares h_errno. */ #undef HAVE_H_ERRNO +/* Define to 1 if you have the <ifaddrs.h> header file. */ +#undef HAVE_IFADDRS_H + /* Define to 1 if using imagemagick. */ #undef HAVE_IMAGEMAGICK @@ -551,6 +560,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you have the `mremap' function. */ #undef HAVE_MREMAP +/* Define to 1 if you have the <net/if_dl.h> header file. */ +#undef HAVE_NET_IF_DL_H + /* Define to 1 if you have the <net/if.h> header file. */ #undef HAVE_NET_IF_H @@ -705,6 +717,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if `ifr_addr' is a member of `struct ifreq'. */ #undef HAVE_STRUCT_IFREQ_IFR_ADDR +/* Define to 1 if `ifr_addr.sa_len' is a member of `struct ifreq'. */ +#undef HAVE_STRUCT_IFREQ_IFR_ADDR_SA_LEN + /* Define to 1 if `ifr_broadaddr' is a member of `struct ifreq'. */ #undef HAVE_STRUCT_IFREQ_IFR_BROADADDR diff --git a/autogen/configure b/autogen/configure index 351937c35a..02fa5abb62 100755 --- a/autogen/configure +++ b/autogen/configure @@ -2468,63 +2468,6 @@ $as_echo "$ac_res" >&6; } } # ac_fn_c_check_header_preproc -# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES -# ---------------------------------------------------- -# Tries to find if the field MEMBER exists in type AGGR, after including -# INCLUDES, setting cache variable VAR accordingly. -ac_fn_c_check_member () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if { as_var=$4; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main () -{ -static $2 ac_aggr; -if (ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$4=yes" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main () -{ -static $2 ac_aggr; -if (sizeof ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$4=yes" -else - eval "$4=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_member - # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly @@ -2592,6 +2535,63 @@ $as_echo "$ac_res" >&6; } } # ac_fn_c_check_func +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +$as_echo_n "checking for $2.$3... " >&6; } +if { as_var=$4; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$4 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_member + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -8359,6 +8359,18 @@ $as_echo "#define NO_MATHERR 1" >>confdefs.h fi +for ac_header in sys/socket.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_socket_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_SOCKET_H 1 +_ACEOF + +fi + +done + for ac_header in net/if.h do : ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "$ac_includes_default @@ -8375,6 +8387,51 @@ fi done +for ac_header in ifaddrs.h +do : + ac_fn_c_check_header_compile "$LINENO" "ifaddrs.h" "ac_cv_header_ifaddrs_h" "$ac_includes_default +#if HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif +" +if test "x$ac_cv_header_ifaddrs_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_IFADDRS_H 1 +_ACEOF + +fi + +done + +for ac_header in net/if_dl.h +do : + ac_fn_c_check_header_compile "$LINENO" "net/if_dl.h" "ac_cv_header_net_if_dl_h" "$ac_includes_default +#if HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif +" +if test "x$ac_cv_header_net_if_dl_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NET_IF_DL_H 1 +_ACEOF + +fi + +done + +for ac_func in getifaddrs freeifaddrs +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } @@ -8566,6 +8623,22 @@ _ACEOF fi +ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_addr.sa_len" "ac_cv_member_struct_ifreq_ifr_addr_sa_len" "$ac_includes_default +#if HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif +#if HAVE_NET_IF_H +#include <net/if.h> +#endif +" +if test "x$ac_cv_member_struct_ifreq_ifr_addr_sa_len" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IFREQ_IFR_ADDR_SA_LEN 1 +_ACEOF + + +fi diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 07f45b34a5..b9459a4cfd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2011-08-14 Chong Yidong <[email protected]> + + * ibuf-ext.el (ibuffer-filter-disable): New arg for deleting + filter groups. + (ibuffer-included-in-filter-p-1): Use it. Suggested by Rafaël + Fourquet (Bug#8804). + 2011-08-12 Juanma Barranquero <[email protected]> * startup.el (argi): Declare as global variable (bug#9275). diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index f4b729458e..073efaeee2 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -505,7 +505,7 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." (assoc (cdr filter) ibuffer-saved-filters))) (unless data - (ibuffer-filter-disable) + (ibuffer-filter-disable t) (error "Unknown saved filter %s" (cdr filter))) (ibuffer-included-in-filters-p buf (cadr data)))) (t @@ -514,7 +514,7 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." ;; filterdat should be like (TYPE DESCRIPTION FUNC) ;; just a sanity check (unless filterdat - (ibuffer-filter-disable) + (ibuffer-filter-disable t) (error "Undefined filter %s" (car filter))) (not (not @@ -768,11 +768,14 @@ The value from `ibuffer-saved-filter-groups' is used." (ibuffer-update nil t)) ;;;###autoload -(defun ibuffer-filter-disable () - "Disable all filters currently in effect in this buffer." +(defun ibuffer-filter-disable (&optional delete-filter-groups) + "Disable all filters currently in effect in this buffer. +With optional arg DELETE-FILTER-GROUPS non-nil, delete all filter +group definitions by setting `ibuffer-filter-groups' to nil." (interactive) - (setq ibuffer-filtering-qualifiers nil - ibuffer-filter-groups nil) + (setq ibuffer-filtering-qualifiers nil) + (if delete-filter-groups + (setq ibuffer-filter-groups nil)) (let ((buf (ibuffer-current-buffer))) (ibuffer-update nil t) (when buf diff --git a/src/ChangeLog b/src/ChangeLog index 9d7834fd05..0a1d11f58f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,4 +1,4 @@ -2011-08-14 Paul Eggert <[email protected]> +2011-08-15 Paul Eggert <[email protected]> Integer and memory overflow issues (Bug#9196). @@ -409,6 +409,47 @@ (gs_load): Use printmax_t to print the widest integers possible. Check for integer overflow when computing image height and width. +2011-08-14 Kenichi Handa <[email protected]> + + * process.c (create_process): Call setup_process_coding_systems + after the pid of the process is set to -1. + +2011-08-14 Eli Zaretskii <[email protected]> + + * xdisp.c (move_it_in_display_line_to): Don't invoke + IT_RESET_X_ASCENT_DESCENT when iterator position was restored from + ppos_it. Fixes vertical cursor motion when line beginning is + covered by an image. (Bug#9296) + +2011-08-14 Jan Djärv <[email protected]> + + * nsterm.h (ns_run_ascript): Declare. + (NSAPP_DATA2_RUNASSCRIPT): Define. + + * nsfns.m (as_script, as_result, as_status): New static variables. + (ns_run_ascript): New function. + (Fns_do_applescript): Set variables as_*. Make an NSApplicationDefined + event with data2 set to NSAPP_DATA2_RUNASSCRIPT, post it and then start + the event loop. Get status from as_status (Bug#7276). + + * nsterm.m (sendEvent): If event is NSApplicationDefined and + data2 is NSAPP_DATA2_RUNASSCRIPT, call ns_run_ascript and then exit + the event loop (Bug#7276). + +2011-08-14 Andreas Schwab <[email protected]> + + * gnutls.c (QCgnutls_bootprop_priority) + (QCgnutls_bootprop_trustfiles, QCgnutls_bootprop_keylist) + (QCgnutls_bootprop_crlfiles, QCgnutls_bootprop_callbacks) + (QCgnutls_bootprop_loglevel, QCgnutls_bootprop_hostname) + (QCgnutls_bootprop_min_prime_bits, QCgnutls_bootprop_verify_flags) + (QCgnutls_bootprop_verify_hostname_error) + (QCgnutls_bootprop_callbacks_verify): Rename from + Qgnutls_bootprop_..., all uses changed. + + * xfaces.c (QCignore_defface): Rename from Qignore_defface, all + uses changed. + 2011-08-14 Paul Eggert <[email protected]> * xfaces.c (Qframe_set_background_mode): Now static. diff --git a/src/gnutls.c b/src/gnutls.c index fc651d2c7e..0743ef3f4e 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -42,19 +42,19 @@ static Lisp_Object Qgnutls_e_interrupted, Qgnutls_e_again, static int gnutls_global_initialized; /* The following are for the property list of `gnutls-boot'. */ -static Lisp_Object Qgnutls_bootprop_priority; -static Lisp_Object Qgnutls_bootprop_trustfiles; -static Lisp_Object Qgnutls_bootprop_keylist; -static Lisp_Object Qgnutls_bootprop_crlfiles; -static Lisp_Object Qgnutls_bootprop_callbacks; -static Lisp_Object Qgnutls_bootprop_loglevel; -static Lisp_Object Qgnutls_bootprop_hostname; -static Lisp_Object Qgnutls_bootprop_min_prime_bits; -static Lisp_Object Qgnutls_bootprop_verify_flags; -static Lisp_Object Qgnutls_bootprop_verify_hostname_error; +static Lisp_Object QCgnutls_bootprop_priority; +static Lisp_Object QCgnutls_bootprop_trustfiles; +static Lisp_Object QCgnutls_bootprop_keylist; +static Lisp_Object QCgnutls_bootprop_crlfiles; +static Lisp_Object QCgnutls_bootprop_callbacks; +static Lisp_Object QCgnutls_bootprop_loglevel; +static Lisp_Object QCgnutls_bootprop_hostname; +static Lisp_Object QCgnutls_bootprop_min_prime_bits; +static Lisp_Object QCgnutls_bootprop_verify_flags; +static Lisp_Object QCgnutls_bootprop_verify_hostname_error; /* Callback keys for `gnutls-boot'. Unused currently. */ -static Lisp_Object Qgnutls_bootprop_callbacks_verify; +static Lisp_Object QCgnutls_bootprop_callbacks_verify; static void gnutls_log_function (int, const char *); static void gnutls_log_function2 (int, const char*, const char*); @@ -72,41 +72,41 @@ static void gnutls_log_function2 (int, const char*, const char*); } DEF_GNUTLS_FN (gnutls_alert_description_t, gnutls_alert_get, - (gnutls_session_t)); + (gnutls_session_t)); DEF_GNUTLS_FN (const char *, gnutls_alert_get_name, - (gnutls_alert_description_t)); + (gnutls_alert_description_t)); DEF_GNUTLS_FN (int, gnutls_alert_send_appropriate, (gnutls_session_t, int)); DEF_GNUTLS_FN (int, gnutls_anon_allocate_client_credentials, - (gnutls_anon_client_credentials_t *)); + (gnutls_anon_client_credentials_t *)); DEF_GNUTLS_FN (void, gnutls_anon_free_client_credentials, - (gnutls_anon_client_credentials_t)); + (gnutls_anon_client_credentials_t)); DEF_GNUTLS_FN (int, gnutls_bye, (gnutls_session_t, gnutls_close_request_t)); DEF_GNUTLS_FN (int, gnutls_certificate_allocate_credentials, - (gnutls_certificate_credentials_t *)); + (gnutls_certificate_credentials_t *)); DEF_GNUTLS_FN (void, gnutls_certificate_free_credentials, - (gnutls_certificate_credentials_t)); + (gnutls_certificate_credentials_t)); DEF_GNUTLS_FN (const gnutls_datum_t *, gnutls_certificate_get_peers, - (gnutls_session_t, unsigned int *)); + (gnutls_session_t, unsigned int *)); DEF_GNUTLS_FN (void, gnutls_certificate_set_verify_flags, - (gnutls_certificate_credentials_t, unsigned int)); + (gnutls_certificate_credentials_t, unsigned int)); DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_crl_file, - (gnutls_certificate_credentials_t, const char *, - gnutls_x509_crt_fmt_t)); + (gnutls_certificate_credentials_t, const char *, + gnutls_x509_crt_fmt_t)); DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_key_file, - (gnutls_certificate_credentials_t, const char *, const char *, - gnutls_x509_crt_fmt_t)); + (gnutls_certificate_credentials_t, const char *, const char *, + gnutls_x509_crt_fmt_t)); DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_trust_file, - (gnutls_certificate_credentials_t, const char *, - gnutls_x509_crt_fmt_t)); + (gnutls_certificate_credentials_t, const char *, + gnutls_x509_crt_fmt_t)); DEF_GNUTLS_FN (gnutls_certificate_type_t, gnutls_certificate_type_get, - (gnutls_session_t)); + (gnutls_session_t)); DEF_GNUTLS_FN (int, gnutls_certificate_verify_peers2, - (gnutls_session_t, unsigned int *)); + (gnutls_session_t, unsigned int *)); DEF_GNUTLS_FN (int, gnutls_credentials_set, - (gnutls_session_t, gnutls_credentials_type_t, void *)); + (gnutls_session_t, gnutls_credentials_type_t, void *)); DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t)); DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits, - (gnutls_session_t, unsigned int)); + (gnutls_session_t, unsigned int)); DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); DEF_GNUTLS_FN (int, gnutls_global_init, (void)); DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func)); @@ -118,27 +118,27 @@ DEF_GNUTLS_FN (void, gnutls_global_set_mem_functions, DEF_GNUTLS_FN (int, gnutls_handshake, (gnutls_session_t)); DEF_GNUTLS_FN (int, gnutls_init, (gnutls_session_t *, gnutls_connection_end_t)); DEF_GNUTLS_FN (int, gnutls_priority_set_direct, - (gnutls_session_t, const char *, const char **)); + (gnutls_session_t, const char *, const char **)); DEF_GNUTLS_FN (size_t, gnutls_record_check_pending, (gnutls_session_t)); DEF_GNUTLS_FN (ssize_t, gnutls_record_recv, (gnutls_session_t, void *, size_t)); DEF_GNUTLS_FN (ssize_t, gnutls_record_send, - (gnutls_session_t, const void *, size_t)); + (gnutls_session_t, const void *, size_t)); DEF_GNUTLS_FN (const char *, gnutls_strerror, (int)); DEF_GNUTLS_FN (void, gnutls_transport_set_errno, (gnutls_session_t, int)); DEF_GNUTLS_FN (void, gnutls_transport_set_lowat, (gnutls_session_t, int)); DEF_GNUTLS_FN (void, gnutls_transport_set_ptr2, - (gnutls_session_t, gnutls_transport_ptr_t, - gnutls_transport_ptr_t)); + (gnutls_session_t, gnutls_transport_ptr_t, + gnutls_transport_ptr_t)); DEF_GNUTLS_FN (void, gnutls_transport_set_pull_function, - (gnutls_session_t, gnutls_pull_func)); + (gnutls_session_t, gnutls_pull_func)); DEF_GNUTLS_FN (void, gnutls_transport_set_push_function, - (gnutls_session_t, gnutls_push_func)); + (gnutls_session_t, gnutls_push_func)); DEF_GNUTLS_FN (int, gnutls_x509_crt_check_hostname, - (gnutls_x509_crt_t, const char *)); + (gnutls_x509_crt_t, const char *)); DEF_GNUTLS_FN (void, gnutls_x509_crt_deinit, (gnutls_x509_crt_t)); DEF_GNUTLS_FN (int, gnutls_x509_crt_import, - (gnutls_x509_crt_t, const gnutls_datum_t *, - gnutls_x509_crt_fmt_t)); + (gnutls_x509_crt_t, const gnutls_datum_t *, + gnutls_x509_crt_fmt_t)); DEF_GNUTLS_FN (int, gnutls_x509_crt_init, (gnutls_x509_crt_t *)); static int @@ -196,7 +196,7 @@ init_gnutls_functions (Lisp_Object libraries) max_log_level = global_gnutls_log_level; GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:", - SDATA (Fget (Qgnutls_dll, QCloaded_from))); + SDATA (Fget (Qgnutls_dll, QCloaded_from))); return 1; } @@ -267,29 +267,29 @@ emacs_gnutls_handshake (struct Lisp_Process *proc) { #ifdef WINDOWSNT /* On W32 we cannot transfer socket handles between different runtime - libraries, so we tell GnuTLS to use our special push/pull - functions. */ + libraries, so we tell GnuTLS to use our special push/pull + functions. */ fn_gnutls_transport_set_ptr2 (state, - (gnutls_transport_ptr_t) proc, - (gnutls_transport_ptr_t) proc); + (gnutls_transport_ptr_t) proc, + (gnutls_transport_ptr_t) proc); fn_gnutls_transport_set_push_function (state, &emacs_gnutls_push); fn_gnutls_transport_set_pull_function (state, &emacs_gnutls_pull); /* For non blocking sockets or other custom made pull/push - functions the gnutls_transport_set_lowat must be called, with - a zero low water mark value. (GnuTLS 2.10.4 documentation) + functions the gnutls_transport_set_lowat must be called, with + a zero low water mark value. (GnuTLS 2.10.4 documentation) - (Note: this is probably not strictly necessary as the lowat - value is only used when no custom pull/push functions are - set.) */ + (Note: this is probably not strictly necessary as the lowat + value is only used when no custom pull/push functions are + set.) */ fn_gnutls_transport_set_lowat (state, 0); #else /* This is how GnuTLS takes sockets: as file descriptors passed - in. For an Emacs process socket, infd and outfd are the - same but we use this two-argument version for clarity. */ + in. For an Emacs process socket, infd and outfd are the + same but we use this two-argument version for clarity. */ fn_gnutls_transport_set_ptr2 (state, - (gnutls_transport_ptr_t) (long) proc->infd, - (gnutls_transport_ptr_t) (long) proc->outfd); + (gnutls_transport_ptr_t) (long) proc->infd, + (gnutls_transport_ptr_t) (long) proc->outfd); #endif proc->gnutls_initstage = GNUTLS_STAGE_TRANSPORT_POINTERS_SET; @@ -352,12 +352,12 @@ emacs_gnutls_write (struct Lisp_Process *proc, const char *buf, EMACS_INT nbyte) rtnval = fn_gnutls_record_send (state, buf, nbyte); if (rtnval < 0) - { - if (rtnval == GNUTLS_E_AGAIN || rtnval == GNUTLS_E_INTERRUPTED) - continue; - else - break; - } + { + if (rtnval == GNUTLS_E_AGAIN || rtnval == GNUTLS_E_INTERRUPTED) + continue; + else + break; + } buf += rtnval; nbyte -= rtnval; @@ -716,17 +716,17 @@ one trustfile (usually a CA bundle). */) return gnutls_make_error (GNUTLS_EMACS_ERROR_NOT_LOADED); } - hostname = Fplist_get (proplist, Qgnutls_bootprop_hostname); - priority_string = Fplist_get (proplist, Qgnutls_bootprop_priority); - trustfiles = Fplist_get (proplist, Qgnutls_bootprop_trustfiles); - keylist = Fplist_get (proplist, Qgnutls_bootprop_keylist); - crlfiles = Fplist_get (proplist, Qgnutls_bootprop_crlfiles); - /* callbacks = Fplist_get (proplist, Qgnutls_bootprop_callbacks); */ - loglevel = Fplist_get (proplist, Qgnutls_bootprop_loglevel); - verify_flags = Fplist_get (proplist, Qgnutls_bootprop_verify_flags); - /* verify_error = Fplist_get (proplist, Qgnutls_bootprop_verify_error); */ - verify_hostname_error = Fplist_get (proplist, Qgnutls_bootprop_verify_hostname_error); - prime_bits = Fplist_get (proplist, Qgnutls_bootprop_min_prime_bits); + hostname = Fplist_get (proplist, QCgnutls_bootprop_hostname); + priority_string = Fplist_get (proplist, QCgnutls_bootprop_priority); + trustfiles = Fplist_get (proplist, QCgnutls_bootprop_trustfiles); + keylist = Fplist_get (proplist, QCgnutls_bootprop_keylist); + crlfiles = Fplist_get (proplist, QCgnutls_bootprop_crlfiles); + /* callbacks = Fplist_get (proplist, QCgnutls_bootprop_callbacks); */ + loglevel = Fplist_get (proplist, QCgnutls_bootprop_loglevel); + verify_flags = Fplist_get (proplist, QCgnutls_bootprop_verify_flags); + /* verify_error = Fplist_get (proplist, QCgnutls_bootprop_verify_error); */ + verify_hostname_error = Fplist_get (proplist, QCgnutls_bootprop_verify_hostname_error); + prime_bits = Fplist_get (proplist, QCgnutls_bootprop_min_prime_bits); if (!STRINGP (hostname)) error ("gnutls-boot: invalid :hostname parameter"); @@ -756,26 +756,26 @@ one trustfile (usually a CA bundle). */) if (EQ (type, Qgnutls_x509pki)) { - GNUTLS_LOG (2, max_log_level, "deallocating x509 credentials"); - x509_cred = XPROCESS (proc)->gnutls_x509_cred; - fn_gnutls_certificate_free_credentials (x509_cred); + GNUTLS_LOG (2, max_log_level, "deallocating x509 credentials"); + x509_cred = XPROCESS (proc)->gnutls_x509_cred; + fn_gnutls_certificate_free_credentials (x509_cred); } else if (EQ (type, Qgnutls_anon)) { - GNUTLS_LOG (2, max_log_level, "deallocating anon credentials"); - anon_cred = XPROCESS (proc)->gnutls_anon_cred; - fn_gnutls_anon_free_client_credentials (anon_cred); + GNUTLS_LOG (2, max_log_level, "deallocating anon credentials"); + anon_cred = XPROCESS (proc)->gnutls_anon_cred; + fn_gnutls_anon_free_client_credentials (anon_cred); } else { - error ("unknown credential type"); - ret = GNUTLS_EMACS_ERROR_INVALID_TYPE; + error ("unknown credential type"); + ret = GNUTLS_EMACS_ERROR_INVALID_TYPE; } if (GNUTLS_INITSTAGE (proc) >= GNUTLS_STAGE_INIT) { - GNUTLS_LOG (1, max_log_level, "deallocating x509 credentials"); - Fgnutls_deinit (proc); + GNUTLS_LOG (1, max_log_level, "deallocating x509 credentials"); + Fgnutls_deinit (proc); } } @@ -790,20 +790,20 @@ one trustfile (usually a CA bundle). */) fn_gnutls_certificate_allocate_credentials (&x509_cred); if (NUMBERP (verify_flags)) - { - gnutls_verify_flags = XINT (verify_flags); - GNUTLS_LOG (2, max_log_level, "setting verification flags"); - } + { + gnutls_verify_flags = XINT (verify_flags); + GNUTLS_LOG (2, max_log_level, "setting verification flags"); + } else if (NILP (verify_flags)) - { - /* The default is already GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT. */ - GNUTLS_LOG (2, max_log_level, "using default verification flags"); - } + { + /* The default is already GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT. */ + GNUTLS_LOG (2, max_log_level, "using default verification flags"); + } else - { - /* The default is already GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT. */ - GNUTLS_LOG (2, max_log_level, "ignoring invalid verify-flags"); - } + { + /* The default is already GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT. */ + GNUTLS_LOG (2, max_log_level, "ignoring invalid verify-flags"); + } fn_gnutls_certificate_set_verify_flags (x509_cred, gnutls_verify_flags); } else if (EQ (type, Qgnutls_anon)) @@ -828,76 +828,76 @@ one trustfile (usually a CA bundle). */) for (tail = trustfiles; !NILP (tail); tail = Fcdr (tail)) { Lisp_Object trustfile = Fcar (tail); - if (STRINGP (trustfile)) - { - GNUTLS_LOG2 (1, max_log_level, "setting the trustfile: ", - SSDATA (trustfile)); - ret = fn_gnutls_certificate_set_x509_trust_file - (x509_cred, - SSDATA (trustfile), - file_format); - - if (ret < GNUTLS_E_SUCCESS) - return gnutls_make_error (ret); - } - else - { - error ("Sorry, GnuTLS can't use non-string trustfile %s", - SDATA (trustfile)); - } - } + if (STRINGP (trustfile)) + { + GNUTLS_LOG2 (1, max_log_level, "setting the trustfile: ", + SSDATA (trustfile)); + ret = fn_gnutls_certificate_set_x509_trust_file + (x509_cred, + SSDATA (trustfile), + file_format); + + if (ret < GNUTLS_E_SUCCESS) + return gnutls_make_error (ret); + } + else + { + error ("Sorry, GnuTLS can't use non-string trustfile %s", + SDATA (trustfile)); + } + } for (tail = crlfiles; !NILP (tail); tail = Fcdr (tail)) { Lisp_Object crlfile = Fcar (tail); - if (STRINGP (crlfile)) - { - GNUTLS_LOG2 (1, max_log_level, "setting the CRL file: ", - SSDATA (crlfile)); - ret = fn_gnutls_certificate_set_x509_crl_file - (x509_cred, - SSDATA (crlfile), - file_format); - - if (ret < GNUTLS_E_SUCCESS) - return gnutls_make_error (ret); - } - else - { - error ("Sorry, GnuTLS can't use non-string CRL file %s", - SDATA (crlfile)); - } - } + if (STRINGP (crlfile)) + { + GNUTLS_LOG2 (1, max_log_level, "setting the CRL file: ", + SSDATA (crlfile)); + ret = fn_gnutls_certificate_set_x509_crl_file + (x509_cred, + SSDATA (crlfile), + file_format); + + if (ret < GNUTLS_E_SUCCESS) + return gnutls_make_error (ret); + } + else + { + error ("Sorry, GnuTLS can't use non-string CRL file %s", + SDATA (crlfile)); + } + } for (tail = keylist; !NILP (tail); tail = Fcdr (tail)) { Lisp_Object keyfile = Fcar (Fcar (tail)); Lisp_Object certfile = Fcar (Fcdr (tail)); - if (STRINGP (keyfile) && STRINGP (certfile)) - { - GNUTLS_LOG2 (1, max_log_level, "setting the client key file: ", - SSDATA (keyfile)); - GNUTLS_LOG2 (1, max_log_level, "setting the client cert file: ", - SSDATA (certfile)); - ret = fn_gnutls_certificate_set_x509_key_file - (x509_cred, - SSDATA (certfile), - SSDATA (keyfile), - file_format); - - if (ret < GNUTLS_E_SUCCESS) - return gnutls_make_error (ret); - } - else - { - if (STRINGP (keyfile)) - error ("Sorry, GnuTLS can't use non-string client cert file %s", - SDATA (certfile)); - else - error ("Sorry, GnuTLS can't use non-string client key file %s", - SDATA (keyfile)); - } - } + if (STRINGP (keyfile) && STRINGP (certfile)) + { + GNUTLS_LOG2 (1, max_log_level, "setting the client key file: ", + SSDATA (keyfile)); + GNUTLS_LOG2 (1, max_log_level, "setting the client cert file: ", + SSDATA (certfile)); + ret = fn_gnutls_certificate_set_x509_key_file + (x509_cred, + SSDATA (certfile), + SSDATA (keyfile), + file_format); + + if (ret < GNUTLS_E_SUCCESS) + return gnutls_make_error (ret); + } + else + { + if (STRINGP (keyfile)) + error ("Sorry, GnuTLS can't use non-string client cert file %s", + SDATA (certfile)); + else + error ("Sorry, GnuTLS can't use non-string client key file %s", + SDATA (keyfile)); + } + } } GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_FILES; @@ -925,19 +925,19 @@ one trustfile (usually a CA bundle). */) { priority_string_ptr = SSDATA (priority_string); GNUTLS_LOG2 (1, max_log_level, "got non-default priority string:", - priority_string_ptr); + priority_string_ptr); } else { GNUTLS_LOG2 (1, max_log_level, "using default priority string:", - priority_string_ptr); + priority_string_ptr); } GNUTLS_LOG (1, max_log_level, "setting the priority string"); ret = fn_gnutls_priority_set_direct (state, - priority_string_ptr, - NULL); + priority_string_ptr, + NULL); if (ret < GNUTLS_E_SUCCESS) return gnutls_make_error (ret); @@ -990,44 +990,44 @@ one trustfile (usually a CA bundle). */) if (XINT (loglevel) > 0 && peer_verification & GNUTLS_CERT_INVALID) message ("%s certificate could not be verified.", - c_hostname); + c_hostname); if (peer_verification & GNUTLS_CERT_REVOKED) GNUTLS_LOG2 (1, max_log_level, "certificate was revoked (CRL):", - c_hostname); + c_hostname); if (peer_verification & GNUTLS_CERT_SIGNER_NOT_FOUND) GNUTLS_LOG2 (1, max_log_level, "certificate signer was not found:", - c_hostname); + c_hostname); if (peer_verification & GNUTLS_CERT_SIGNER_NOT_CA) GNUTLS_LOG2 (1, max_log_level, "certificate signer is not a CA:", - c_hostname); + c_hostname); if (peer_verification & GNUTLS_CERT_INSECURE_ALGORITHM) GNUTLS_LOG2 (1, max_log_level, - "certificate was signed with an insecure algorithm:", - c_hostname); + "certificate was signed with an insecure algorithm:", + c_hostname); if (peer_verification & GNUTLS_CERT_NOT_ACTIVATED) GNUTLS_LOG2 (1, max_log_level, "certificate is not yet activated:", - c_hostname); + c_hostname); if (peer_verification & GNUTLS_CERT_EXPIRED) GNUTLS_LOG2 (1, max_log_level, "certificate has expired:", - c_hostname); + c_hostname); if (peer_verification != 0) { if (NILP (verify_hostname_error)) { - GNUTLS_LOG2 (1, max_log_level, "certificate validation failed:", - c_hostname); + GNUTLS_LOG2 (1, max_log_level, "certificate validation failed:", + c_hostname); } else { - error ("Certificate validation failed %s, verification code %d", - c_hostname, peer_verification); + error ("Certificate validation failed %s, verification code %d", + c_hostname, peer_verification); } } @@ -1039,41 +1039,41 @@ one trustfile (usually a CA bundle). */) ret = fn_gnutls_x509_crt_init (&gnutls_verify_cert); if (ret < GNUTLS_E_SUCCESS) - return gnutls_make_error (ret); + return gnutls_make_error (ret); gnutls_verify_cert_list = - fn_gnutls_certificate_get_peers (state, &gnutls_verify_cert_list_size); + fn_gnutls_certificate_get_peers (state, &gnutls_verify_cert_list_size); if (NULL == gnutls_verify_cert_list) - { - error ("No x509 certificate was found!\n"); - } + { + error ("No x509 certificate was found!\n"); + } /* We only check the first certificate in the given chain. */ ret = fn_gnutls_x509_crt_import (gnutls_verify_cert, - &gnutls_verify_cert_list[0], - GNUTLS_X509_FMT_DER); + &gnutls_verify_cert_list[0], + GNUTLS_X509_FMT_DER); if (ret < GNUTLS_E_SUCCESS) - { - fn_gnutls_x509_crt_deinit (gnutls_verify_cert); - return gnutls_make_error (ret); - } + { + fn_gnutls_x509_crt_deinit (gnutls_verify_cert); + return gnutls_make_error (ret); + } if (!fn_gnutls_x509_crt_check_hostname (gnutls_verify_cert, c_hostname)) - { - if (NILP (verify_hostname_error)) - { - GNUTLS_LOG2 (1, max_log_level, "x509 certificate does not match:", - c_hostname); - } - else - { - fn_gnutls_x509_crt_deinit (gnutls_verify_cert); - error ("The x509 certificate does not match \"%s\"", - c_hostname); - } - } + { + if (NILP (verify_hostname_error)) + { + GNUTLS_LOG2 (1, max_log_level, "x509 certificate does not match:", + c_hostname); + } + else + { + fn_gnutls_x509_crt_deinit (gnutls_verify_cert); + error ("The x509 certificate does not match \"%s\"", + c_hostname); + } + } fn_gnutls_x509_crt_deinit (gnutls_verify_cert); } @@ -1105,7 +1105,7 @@ This function may also return `gnutls-e-again', or state = XPROCESS (proc)->gnutls_state; ret = fn_gnutls_bye (state, - NILP (cont) ? GNUTLS_SHUT_RDWR : GNUTLS_SHUT_WR); + NILP (cont) ? GNUTLS_SHUT_RDWR : GNUTLS_SHUT_WR); return gnutls_make_error (ret); } @@ -1119,33 +1119,33 @@ syms_of_gnutls (void) DEFSYM (Qgnutls_code, "gnutls-code"); DEFSYM (Qgnutls_anon, "gnutls-anon"); DEFSYM (Qgnutls_x509pki, "gnutls-x509pki"); - DEFSYM (Qgnutls_bootprop_hostname, ":hostname"); - DEFSYM (Qgnutls_bootprop_priority, ":priority"); - DEFSYM (Qgnutls_bootprop_trustfiles, ":trustfiles"); - DEFSYM (Qgnutls_bootprop_keylist, ":keylist"); - DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles"); - DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks"); - DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify"); - DEFSYM (Qgnutls_bootprop_min_prime_bits, ":min-prime-bits"); - DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel"); - DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags"); - DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error"); + DEFSYM (QCgnutls_bootprop_hostname, ":hostname"); + DEFSYM (QCgnutls_bootprop_priority, ":priority"); + DEFSYM (QCgnutls_bootprop_trustfiles, ":trustfiles"); + DEFSYM (QCgnutls_bootprop_keylist, ":keylist"); + DEFSYM (QCgnutls_bootprop_crlfiles, ":crlfiles"); + DEFSYM (QCgnutls_bootprop_callbacks, ":callbacks"); + DEFSYM (QCgnutls_bootprop_callbacks_verify, "verify"); + DEFSYM (QCgnutls_bootprop_min_prime_bits, ":min-prime-bits"); + DEFSYM (QCgnutls_bootprop_loglevel, ":loglevel"); + DEFSYM (QCgnutls_bootprop_verify_flags, ":verify-flags"); + DEFSYM (QCgnutls_bootprop_verify_hostname_error, ":verify-hostname-error"); DEFSYM (Qgnutls_e_interrupted, "gnutls-e-interrupted"); Fput (Qgnutls_e_interrupted, Qgnutls_code, - make_number (GNUTLS_E_INTERRUPTED)); + make_number (GNUTLS_E_INTERRUPTED)); DEFSYM (Qgnutls_e_again, "gnutls-e-again"); Fput (Qgnutls_e_again, Qgnutls_code, - make_number (GNUTLS_E_AGAIN)); + make_number (GNUTLS_E_AGAIN)); DEFSYM (Qgnutls_e_invalid_session, "gnutls-e-invalid-session"); Fput (Qgnutls_e_invalid_session, Qgnutls_code, - make_number (GNUTLS_E_INVALID_SESSION)); + make_number (GNUTLS_E_INVALID_SESSION)); DEFSYM (Qgnutls_e_not_ready_for_handshake, "gnutls-e-not-ready-for-handshake"); Fput (Qgnutls_e_not_ready_for_handshake, Qgnutls_code, - make_number (GNUTLS_E_APPLICATION_ERROR_MIN)); + make_number (GNUTLS_E_APPLICATION_ERROR_MIN)); defsubr (&Sgnutls_get_initstage); defsubr (&Sgnutls_errorp); diff --git a/src/nsfns.m b/src/nsfns.m index 85246a4c25..a09011d846 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -97,6 +97,9 @@ Lisp_Object Fx_open_connection (Lisp_Object, Lisp_Object, Lisp_Object); extern BOOL ns_in_resize; +/* Static variables to handle applescript execution. */ +static Lisp_Object as_script, *as_result; +static int as_status; /* ========================================================================== @@ -2052,6 +2055,15 @@ ns_do_applescript (Lisp_Object script, Lisp_Object *result) return 0; } +/* Helper function called from sendEvent to run applescript + from within the main event loop. */ + +void +ns_run_ascript (void) +{ + as_status = ns_do_applescript (as_script, as_result); +} + DEFUN ("ns-do-applescript", Fns_do_applescript, Sns_do_applescript, 1, 1, 0, doc: /* Execute AppleScript SCRIPT and return the result. If compilation and execution are successful, the resulting script value @@ -2061,12 +2073,37 @@ In case the execution fails, an error is signaled. */) { Lisp_Object result; int status; + NSEvent *nxev; CHECK_STRING (script); check_ns (); BLOCK_INPUT; - status = ns_do_applescript (script, &result); + + as_script = script; + as_result = &result; + + /* executing apple script requires the event loop to run, otherwise + errors aren't returned and executeAndReturnError hangs forever. + Post an event that runs applescript and then start the event loop. + The event loop is exited when the script is done. */ + nxev = [NSEvent otherEventWithType: NSApplicationDefined + location: NSMakePoint (0, 0) + modifierFlags: 0 + timestamp: 0 + windowNumber: [[NSApp mainWindow] windowNumber] + context: [NSApp context] + subtype: 0 + data1: 0 + data2: NSAPP_DATA2_RUNASSCRIPT]; + + [NSApp postEvent: nxev atStart: NO]; + [NSApp run]; + + status = as_status; + as_status = 0; + as_script = Qnil; + as_result = 0; UNBLOCK_INPUT; if (status == 0) return result; @@ -2670,4 +2707,7 @@ be used as the image of the icon representing the frame. */); /* used only in fontset.c */ check_window_system_func = check_ns; + as_status = 0; + as_script = Qnil; + as_result = 0; } diff --git a/src/nsterm.h b/src/nsterm.h index 5bbc5329aa..188ec732e8 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -795,6 +795,9 @@ extern void x_set_tool_bar_lines (struct frame *f, extern void x_activate_menubar (struct frame *); extern void free_frame_menubar (struct frame *); +#define NSAPP_DATA2_RUNASSCRIPT 10 +extern void ns_run_ascript (void); + extern void ns_init_paths (void); extern void syms_of_nsterm (void); extern void syms_of_nsfns (void); diff --git a/src/nsterm.m b/src/nsterm.m index 484e8847dc..4c9574c35b 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -4254,6 +4254,16 @@ ns_term_shutdown (int sig) /* NSTRACE (sendEvent); */ /*fprintf (stderr, "received event of type %d\t%d\n", type);*/ +#ifdef NS_IMPL_COCOA + if (type == NSApplicationDefined + && [theEvent data2] == NSAPP_DATA2_RUNASSCRIPT) + { + ns_run_ascript (); + [self stop: self]; + return; + } +#endif + if (type == NSCursorUpdate && window == nil) { fprintf (stderr, "Dropping external cursor update event.\n"); diff --git a/src/process.c b/src/process.c index 887090df26..9f3bb0e580 100644 --- a/src/process.c +++ b/src/process.c @@ -1643,7 +1643,6 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) XPROCESS (process)->pty_flag = pty_flag; XPROCESS (process)->status = Qrun; - setup_process_coding_systems (process); /* Delay interrupts until we have a chance to store the new fork's pid in its process structure */ @@ -1678,6 +1677,10 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) processes to get their return values scrambled. */ XPROCESS (process)->pid = -1; + /* This must be called after the above line because it may signal an + error. */ + setup_process_coding_systems (process); + BLOCK_INPUT; { diff --git a/src/xdisp.c b/src/xdisp.c index 98bd25d1e4..124c3179a1 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -8034,8 +8034,12 @@ move_it_in_display_line_to (struct it *it, if (!saw_smaller_pos && IT_CHARPOS (*it) > to_charpos) { if (IT_CHARPOS (ppos_it) < ZV) - RESTORE_IT (it, &ppos_it, ppos_data); - goto buffer_pos_reached; + { + RESTORE_IT (it, &ppos_it, ppos_data); + result = MOVE_POS_MATCH_OR_ZV; + } + else + goto buffer_pos_reached; } else if (it->line_wrap == WORD_WRAP && atpos_it.sp >= 0 && IT_CHARPOS (*it) > to_charpos) diff --git a/src/xfaces.c b/src/xfaces.c index df40a6999f..fee4a6f9d6 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -293,7 +293,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Non-zero if face attribute ATTR is `ignore-defface'. */ -#define IGNORE_DEFFACE_P(ATTR) EQ ((ATTR), Qignore_defface) +#define IGNORE_DEFFACE_P(ATTR) EQ ((ATTR), QCignore_defface) /* Value is the number of elements of VECTOR. */ @@ -332,7 +332,7 @@ static Lisp_Object Qultra_expanded; static Lisp_Object Qreleased_button, Qpressed_button; static Lisp_Object QCstyle, QCcolor, QCline_width; Lisp_Object Qunspecified; /* used in dosfns.c */ -static Lisp_Object Qignore_defface; +static Lisp_Object QCignore_defface; char unspecified_fg[] = "unspecified-fg", unspecified_bg[] = "unspecified-bg"; @@ -458,11 +458,11 @@ struct table_entry; struct named_merge_point; static void map_tty_color (struct frame *, struct face *, - enum lface_attribute_index, int *); + enum lface_attribute_index, int *); static Lisp_Object resolve_face_name (Lisp_Object, int); static void set_font_frame_param (Lisp_Object, Lisp_Object); static int get_lface_attributes (struct frame *, Lisp_Object, Lisp_Object *, - int, struct named_merge_point *); + int, struct named_merge_point *); static ptrdiff_t load_pixmap (struct frame *, Lisp_Object, unsigned *, unsigned *); static struct frame *frame_or_selected_frame (Lisp_Object, int); @@ -470,9 +470,9 @@ static void load_face_colors (struct frame *, struct face *, Lisp_Object *); static void free_face_colors (struct frame *, struct face *); static int face_color_gray_p (struct frame *, const char *); static struct face *realize_face (struct face_cache *, Lisp_Object *, - int); + int); static struct face *realize_non_ascii_face (struct frame *, Lisp_Object, - struct face *); + struct face *); static struct face *realize_x_face (struct face_cache *, Lisp_Object *); static struct face *realize_tty_face (struct face_cache *, Lisp_Object *); static int realize_basic_faces (struct frame *); @@ -488,11 +488,11 @@ static void clear_face_gcs (struct face_cache *); static void free_face_cache (struct face_cache *); static int face_fontset (Lisp_Object *); static void merge_face_vectors (struct frame *, Lisp_Object *, Lisp_Object*, - struct named_merge_point *); + struct named_merge_point *); static int merge_face_ref (struct frame *, Lisp_Object, Lisp_Object *, - int, struct named_merge_point *); + int, struct named_merge_point *); static int set_lface_from_font (struct frame *, Lisp_Object, Lisp_Object, - int); + int); static Lisp_Object lface_from_face_name (struct frame *, Lisp_Object, int); static struct face *make_realized_face (Lisp_Object *); static void cache_face (struct face_cache *, struct face *, unsigned); @@ -623,7 +623,8 @@ x_free_colors (struct frame *f, long unsigned int *pixels, int npixels) is called. */ void -x_free_dpy_colors (Display *dpy, Screen *screen, Colormap cmap, long unsigned int *pixels, int npixels) +x_free_dpy_colors (Display *dpy, Screen *screen, Colormap cmap, + long unsigned int *pixels, int npixels) { struct x_display_info *dpyinfo = x_display_info_for_display (dpy); int class = dpyinfo->visual->class; @@ -698,8 +699,8 @@ x_free_gc (struct frame *f, GC gc) static inline GC x_create_gc (struct frame *f, - unsigned long mask, - XGCValues *xgcv) + unsigned long mask, + XGCValues *xgcv) { GC gc = xmalloc (sizeof (*gc)); if (gc) @@ -792,7 +793,7 @@ init_frame_faces (struct frame *f) if (!FRAME_NS_P (f) || FRAME_NS_WINDOW (f)) #endif if (!realize_basic_faces (f)) - abort (); + abort (); } @@ -963,7 +964,8 @@ the pixmap. Bits are stored row by row, each row occupies if these pointers are not null. */ static ptrdiff_t -load_pixmap (FRAME_PTR f, Lisp_Object name, unsigned int *w_ptr, unsigned int *h_ptr) +load_pixmap (FRAME_PTR f, Lisp_Object name, unsigned int *w_ptr, + unsigned int *h_ptr) { ptrdiff_t bitmap_id; @@ -1057,7 +1059,8 @@ parse_rgb_list (Lisp_Object rgb_list, XColor *color) returned in it. */ static int -tty_lookup_color (struct frame *f, Lisp_Object color, XColor *tty_color, XColor *std_color) +tty_lookup_color (struct frame *f, Lisp_Object color, XColor *tty_color, + XColor *std_color) { Lisp_Object frame, color_desc; @@ -1153,7 +1156,8 @@ tty_defined_color (struct frame *f, const char *color_name, This does the right thing for any type of frame. */ static int -defined_color (struct frame *f, const char *color_name, XColor *color_def, int alloc) +defined_color (struct frame *f, const char *color_name, XColor *color_def, + int alloc) { if (!FRAME_WINDOW_P (f)) return tty_defined_color (f, color_name, color_def, alloc); @@ -1240,7 +1244,8 @@ face_color_gray_p (struct frame *f, const char *color_name) color. */ static int -face_color_supported_p (struct frame *f, const char *color_name, int background_p) +face_color_supported_p (struct frame *f, const char *color_name, + int background_p) { Lisp_Object frame; XColor not_used; @@ -1313,7 +1318,8 @@ COLOR must be a valid color name. */) these colors. */ unsigned long -load_color (struct frame *f, struct face *face, Lisp_Object name, enum lface_attribute_index target_index) +load_color (struct frame *f, struct face *face, Lisp_Object name, + enum lface_attribute_index target_index) { XColor color; @@ -1721,7 +1727,8 @@ fonts to match. The first MAXIMUM fonts are reported. The optional fifth argument WIDTH, if specified, is a number of columns occupied by a character of a font. In that case, return only fonts the WIDTH times as wide as FACE on FRAME. */) - (Lisp_Object pattern, Lisp_Object face, Lisp_Object frame, Lisp_Object maximum, Lisp_Object width) + (Lisp_Object pattern, Lisp_Object face, Lisp_Object frame, + Lisp_Object maximum, Lisp_Object width) { struct frame *f; int size, avgwidth IF_LINT (= 0); @@ -2059,7 +2066,8 @@ resolve_face_name (Lisp_Object face_name, int signal_p) signal an error if FACE_NAME is not a valid face name. If SIGNAL_P is zero, value is nil if FACE_NAME is not a valid face name. */ static inline Lisp_Object -lface_from_face_name_no_resolve (struct frame *f, Lisp_Object face_name, int signal_p) +lface_from_face_name_no_resolve (struct frame *f, Lisp_Object face_name, + int signal_p) { Lisp_Object lface; @@ -2101,7 +2109,8 @@ lface_from_face_name (struct frame *f, Lisp_Object face_name, int signal_p) Otherwise, value is zero if FACE_NAME is not a face. */ static inline int -get_lface_attributes_no_remap (struct frame *f, Lisp_Object face_name, Lisp_Object *attrs, int signal_p) +get_lface_attributes_no_remap (struct frame *f, Lisp_Object face_name, + Lisp_Object *attrs, int signal_p) { Lisp_Object lface; @@ -2122,7 +2131,9 @@ get_lface_attributes_no_remap (struct frame *f, Lisp_Object face_name, Lisp_Obje Otherwise, value is zero if FACE_NAME is not a face. */ static inline int -get_lface_attributes (struct frame *f, Lisp_Object face_name, Lisp_Object *attrs, int signal_p, struct named_merge_point *named_merge_points) +get_lface_attributes (struct frame *f, Lisp_Object face_name, + Lisp_Object *attrs, int signal_p, + struct named_merge_point *named_merge_points) { Lisp_Object face_remapping; @@ -2165,7 +2176,7 @@ lface_fully_specified_p (Lisp_Object *attrs) for (i = 1; i < LFACE_VECTOR_SIZE; ++i) if (i != LFACE_FONT_INDEX && i != LFACE_INHERIT_INDEX) if ((UNSPECIFIEDP (attrs[i]) || IGNORE_DEFFACE_P (attrs[i]))) - break; + break; return i == LFACE_VECTOR_SIZE; } @@ -2178,7 +2189,8 @@ lface_fully_specified_p (Lisp_Object *attrs) of FORCE_P. */ static int -set_lface_from_font (struct frame *f, Lisp_Object lface, Lisp_Object font_object, int force_p) +set_lface_from_font (struct frame *f, Lisp_Object lface, + Lisp_Object font_object, int force_p) { Lisp_Object val; struct font *font = XFONT_OBJECT (font_object); @@ -2288,7 +2300,8 @@ merge_face_heights (Lisp_Object from, Lisp_Object to, Lisp_Object invalid) other places. */ static inline void -merge_face_vectors (struct frame *f, Lisp_Object *from, Lisp_Object *to, struct named_merge_point *named_merge_points) +merge_face_vectors (struct frame *f, Lisp_Object *from, Lisp_Object *to, + struct named_merge_point *named_merge_points) { int i; @@ -2355,7 +2368,8 @@ merge_face_vectors (struct frame *f, Lisp_Object *from, Lisp_Object *to, struct merging succeeded. */ static int -merge_named_face (struct frame *f, Lisp_Object face_name, Lisp_Object *to, struct named_merge_point *named_merge_points) +merge_named_face (struct frame *f, Lisp_Object face_name, Lisp_Object *to, + struct named_merge_point *named_merge_points) { struct named_merge_point named_merge_point; @@ -2405,7 +2419,8 @@ merge_named_face (struct frame *f, Lisp_Object face_name, Lisp_Object *to, struc specifications. */ static int -merge_face_ref (struct frame *f, Lisp_Object face_ref, Lisp_Object *to, int err_msgs, struct named_merge_point *named_merge_points) +merge_face_ref (struct frame *f, Lisp_Object face_ref, Lisp_Object *to, + int err_msgs, struct named_merge_point *named_merge_points) { int ok = 1; /* Succeed without an error? */ @@ -2836,7 +2851,7 @@ FRAME 0 means change the face on all frames, and change the default The value of that attribute will be inherited from some other face during face merging. See internal_merge_in_global_face. */ if (UNSPECIFIEDP (value)) - value = Qignore_defface; + value = QCignore_defface; } else { @@ -2883,7 +2898,8 @@ FRAME 0 means change the face on all frames, and change the default { /* The default face must have an absolute size. */ if (!INTEGERP (value) || XINT (value) <= 0) - signal_error ("Default face height not absolute and positive", value); + signal_error ("Default face height not absolute and positive", + value); } else { @@ -2893,7 +2909,8 @@ FRAME 0 means change the face on all frames, and change the default make_number (10), Qnil); if (!INTEGERP (test) || XINT (test) <= 0) - signal_error ("Face height does not produce a positive integer", value); + signal_error ("Face height does not produce a positive integer", + value); } } @@ -2972,7 +2989,7 @@ FRAME 0 means change the face on all frames, and change the default int valid_p; /* Allow t meaning a simple box of width 1 in foreground color - of the face. */ + of the face. */ if (EQ (value, Qt)) value = make_number (1); @@ -3317,7 +3334,8 @@ FRAME 0 means change the face on all frames, and change the default has been assigned the value NEW_VALUE. */ void -update_face_from_frame_parameter (struct frame *f, Lisp_Object param, Lisp_Object new_value) +update_face_from_frame_parameter (struct frame *f, Lisp_Object param, + Lisp_Object new_value) { Lisp_Object face = Qnil; Lisp_Object lface; @@ -3631,7 +3649,7 @@ the only relative value that users see is `unspecified'. However, for :height, floating point values are also relative. */) (Lisp_Object attribute, Lisp_Object value) { - if (EQ (value, Qunspecified) || (EQ (value, Qignore_defface))) + if (EQ (value, Qunspecified) || (EQ (value, QCignore_defface))) return Qt; else if (EQ (attribute, QCheight)) return INTEGERP (value) ? Qnil : Qt; @@ -3646,7 +3664,7 @@ If VALUE1 or VALUE2 are absolute (see `face-attribute-relative-p'), then the result will be absolute, otherwise it will be relative. */) (Lisp_Object attribute, Lisp_Object value1, Lisp_Object value2) { - if (EQ (value1, Qunspecified) || EQ (value1, Qignore_defface)) + if (EQ (value1, Qunspecified) || EQ (value1, QCignore_defface)) return value2; else if (EQ (attribute, QCheight)) return merge_face_heights (value1, value2, value1); @@ -4050,7 +4068,7 @@ lface_same_font_attributes_p (Lisp_Object *lface1, Lisp_Object *lface2) xassert (lface_fully_specified_p (lface1) && lface_fully_specified_p (lface2)); return (xstrcasecmp (SSDATA (lface1[LFACE_FAMILY_INDEX]), - SSDATA (lface2[LFACE_FAMILY_INDEX])) == 0 + SSDATA (lface2[LFACE_FAMILY_INDEX])) == 0 && xstrcasecmp (SSDATA (lface1[LFACE_FOUNDRY_INDEX]), SSDATA (lface2[LFACE_FOUNDRY_INDEX])) == 0 && EQ (lface1[LFACE_HEIGHT_INDEX], lface2[LFACE_HEIGHT_INDEX]) @@ -4062,7 +4080,7 @@ lface_same_font_attributes_p (Lisp_Object *lface1, Lisp_Object *lface2) || (STRINGP (lface1[LFACE_FONTSET_INDEX]) && STRINGP (lface2[LFACE_FONTSET_INDEX]) && ! xstrcasecmp (SSDATA (lface1[LFACE_FONTSET_INDEX]), - SSDATA (lface2[LFACE_FONTSET_INDEX])))) + SSDATA (lface2[LFACE_FONTSET_INDEX])))) ); } @@ -4167,10 +4185,10 @@ color_distance (XColor *x, XColor *y) /* This formula is from a paper title `Colour metric' by Thiadmer Riemersma. Quoting from that paper: - This formula has results that are very close to L*u*v* (with the - modified lightness curve) and, more importantly, it is a more even - algorithm: it does not have a range of colours where it suddenly - gives far from optimal results. + This formula has results that are very close to L*u*v* (with the + modified lightness curve) and, more importantly, it is a more even + algorithm: it does not have a range of colours where it suddenly + gives far from optimal results. See <http://www.compuphase.com/cmetric.htm> for more info. */ @@ -4693,7 +4711,8 @@ face_with_height (struct frame *f, int face_id, int height) default face. FACE_ID is assumed to be already realized. */ int -lookup_derived_face (struct frame *f, Lisp_Object symbol, int face_id, int signal_p) +lookup_derived_face (struct frame *f, Lisp_Object symbol, int face_id, + int signal_p) { Lisp_Object attrs[LFACE_VECTOR_SIZE]; Lisp_Object symbol_attrs[LFACE_VECTOR_SIZE]; @@ -4749,7 +4768,8 @@ DEFUN ("face-attributes-as-vector", Fface_attributes_as_vector, \(2) `close in spirit' to what the attributes specify, if not exact. */ static int -x_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs, struct face *def_face) +x_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs, + struct face *def_face) { Lisp_Object *def_attrs = def_face->lface; @@ -4850,7 +4870,8 @@ x_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs, struct face * substitution of a `dim' face for italic. */ static int -tty_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs, struct face *def_face) +tty_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs, + struct face *def_face) { int weight; Lisp_Object val, fg, bg; @@ -5002,7 +5023,8 @@ tty_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs, struct face /* See if the capabilities we selected above are supported, with the given colors. */ if (test_caps != 0 && - ! tty_capable_p (FRAME_TTY (f), test_caps, fg_tty_color.pixel, bg_tty_color.pixel)) + ! tty_capable_p (FRAME_TTY (f), test_caps, fg_tty_color.pixel, + bg_tty_color.pixel)) return 0; @@ -5274,8 +5296,8 @@ realize_basic_faces (struct frame *f) { FRAME_FACE_CACHE (f)->menu_face_changed_p = 0; #ifdef USE_X_TOOLKIT - if (FRAME_WINDOW_P (f)) - x_update_menu_appearance (f); + if (FRAME_WINDOW_P (f)) + x_update_menu_appearance (f); #endif } @@ -5395,14 +5417,14 @@ realize_default_face (struct frame *f) if (FRAME_X_P (f) && face->font != FRAME_FONT (f)) { /* This can happen when making a frame on a display that does - not support the default font. */ + not support the default font. */ if (!face->font) - return 0; + return 0; /* Otherwise, the font specified for the frame was not - acceptable as a font for the default face (perhaps because - auto-scaled fonts are rejected), so we must adjust the frame - font. */ + acceptable as a font for the default face (perhaps because + auto-scaled fonts are rejected), so we must adjust the frame + font. */ x_set_font (f, LFACE_FONT (lface), Qnil); } #endif /* HAVE_X_WINDOWS */ @@ -5493,7 +5515,8 @@ realize_face (struct face_cache *cache, Lisp_Object *attrs, int former_face_id) no-font. */ static struct face * -realize_non_ascii_face (struct frame *f, Lisp_Object font_object, struct face *base_face) +realize_non_ascii_face (struct frame *f, Lisp_Object font_object, + struct face *base_face) { struct face_cache *cache = FRAME_FACE_CACHE (f); struct face *face; @@ -5612,7 +5635,7 @@ realize_x_face (struct face_cache *cache, Lisp_Object *attrs) else if (INTEGERP (box)) { /* Simple box of specified line width in foreground color of the - face. */ + face. */ xassert (XINT (box) != 0); face->box = FACE_SIMPLE_BOX; face->box_line_width = XINT (box); @@ -5734,7 +5757,8 @@ realize_x_face (struct face_cache *cache, Lisp_Object *attrs) default foreground/background colors. */ static void -map_tty_color (struct frame *f, struct face *face, enum lface_attribute_index idx, int *defaulted) +map_tty_color (struct frame *f, struct face *face, + enum lface_attribute_index idx, int *defaulted) { Lisp_Object frame, color, def; int foreground_p = idx == LFACE_FOREGROUND_INDEX; @@ -5790,7 +5814,7 @@ map_tty_color (struct frame *f, struct face *face, enum lface_attribute_index id face->lface[idx] = tty_color_name (f, pixel); *defaulted = 1; } - } + } #endif /* MSDOS */ } @@ -6451,7 +6475,7 @@ syms_of_xfaces (void) DEFSYM (Qbackground_color, "background-color"); DEFSYM (Qforeground_color, "foreground-color"); DEFSYM (Qunspecified, "unspecified"); - DEFSYM (Qignore_defface, ":ignore-defface"); + DEFSYM (QCignore_defface, ":ignore-defface"); DEFSYM (Qface_alias, "face-alias"); DEFSYM (Qdefault, "default"); @@ -6589,7 +6613,7 @@ face definitions. For instance, the mode my-mode could define a face `my-mode-default', and then in the mode setup function, do: (set (make-local-variable 'face-remapping-alist) - '((default my-mode-default)))). + '((default my-mode-default)))). Because Emacs normally only redraws screen areas when the underlying buffer contents change, you may need to call `redraw-display' after |