[Pkg-urxvt-maintainers] [SCM] Git repository for pkg-urxvt branch, master, updated. debian/9.19-1-5-gae1fedf

Ryan Kavanagh rak at moszumanska.debian.org
Sun May 4 16:32:34 UTC 2014


Gitweb-URL: http://git.debian.org/?p=pkg-kde//srv/git.debian.org/git/pkg-urxvt/pkg-urxvt.git;a=commitdiff;h=d4234f6

The following commit has been merged in the master branch:
commit d4234f6de1b13f877c5ab219ddbc2b436abe53d2
Author: Ryan Kavanagh <rak at debian.org>
Date:   Fri May 2 10:00:28 2014 -0400

    Imported Upstream version 9.20
---
 Changes                         | 19 +++++++++++
 MANIFEST                        |  1 +
 README.FAQ                      |  4 +--
 README.configure                |  8 ++---
 doc/rxvt.1.man.in               | 14 ++++++---
 doc/rxvt.1.pod                  | 10 ++++--
 doc/rxvt.7.man.in               |  8 ++---
 doc/rxvt.7.pod                  |  4 +--
 doc/rxvtc.1.man.in              | 29 +++++++++++------
 doc/rxvtd.1.man.in              | 29 +++++++++++------
 libev/Changes                   | 14 ++++++++-
 libev/ev.c                      | 70 ++++++++++++++++++++++++++++++-----------
 libev/ev.h                      |  8 +++--
 libev/ev_epoll.c                |  5 ++-
 libev/ev_kqueue.c               |  2 +-
 libev/ev_vars.h                 |  8 ++---
 libptytty/Changes               |  2 ++
 libptytty/src/ecb.h             | 57 ++++++++++++++++++++++++++-------
 libptytty/src/proxy.C           | 22 ++-----------
 libptytty/src/ptytty.h          |  4 ---
 libptytty/src/ptytty_conf.h     | 10 +++---
 src/Makefile.in                 |  4 +--
 src/command.C                   | 32 ++++++++++++++++---
 src/command.h                   |  3 --
 src/init.C                      |  4 +--
 src/perl/selection-to-clipboard | 27 ++++++++++++++++
 src/rxvt.h                      |  4 +--
 src/rxvtperl.xs                 |  2 ++
 src/urxvt.pm                    |  2 +-
 src/version.h                   |  4 +--
 30 files changed, 287 insertions(+), 123 deletions(-)

diff --git a/Changes b/Changes
index f62a16d..2abd664 100644
--- a/Changes
+++ b/Changes
@@ -33,6 +33,25 @@ TODO IMPL: recalc bg only when not fully covering (no alpha, repeat|extend etc..
 TODO IMPL: colour-change event with index
 TODO IMPL: recalc bg always on bg colour change
 
+9.20 Sat Apr 26 16:22:27 CEST 2014
+        - (libptytty) fix bug that prevented urxvtd from writing utmp
+          entries when using --fork (reported by Ryan Kavanagh).
+        - security bugfix: window property values could be queried even
+          in secure mode (reported by Phillip Hallam-Baker).
+	- fix build when perl is enabled and fading is disabled.
+	- fix regression that broke continuous scrolling when pressing
+	  and holding the scrollbar up or down button, gentoo bug #493992.
+	- increase the maximum length of a command sequence to 32k bytes,
+          to allow longer OSC sequences (previous limit was 2k).
+        - new Ctrl-Meta-c and Ctrl-Meta-v bindings to interact with
+          the CLIPBOARD selection.
+        - new extension: selection-to-clipboard.
+        - the extensions macosx-clipboard and macosx-clipboard-native
+          are deprecated and will be removed in the next release.
+          Support for the clipboard on OS X can be more generally
+          enabled by setting the XQuartz preference to sync the OS X
+          pasteboard and the X11 clipboard.
+
 9.19 Sun Oct 27 17:16:07 CET 2013
 	- work around perl 5.18.0 breakage in tabbed extension
           (reported by Karol Blazewicz) and in pod (Dominic Hargreaves).
diff --git a/MANIFEST b/MANIFEST
index feabd71..b6da965 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -173,6 +173,7 @@ src/perl/selection
 src/perl/selection-autotransform
 src/perl/selection-pastebin
 src/perl/selection-popup
+src/perl/selection-to-clipboard
 src/perl/tabbed
 src/perl/urxvt-popup
 src/perl/xim-onthespot
diff --git a/README.FAQ b/README.FAQ
index 4f9cdf5..63eb183 100644
--- a/README.FAQ
+++ b/README.FAQ
@@ -494,13 +494,13 @@ xterm? I need this to decide about setting colours etc.
 
    My Compose (Multi_key) key is no longer working.
     The most common causes for this are that either your locale is not set
-    correctly, or you specified a preeditStyle that is not supported by your
+    correctly, or you specified a preeditType that is not supported by your
     input method. For example, if you specified OverTheSpot and your input
     method (e.g. the default input method handling Compose keys) does not
     support this (for instance because it is not visual), then rxvt-unicode
     will continue without an input method.
 
-    In this case either do not specify a preeditStyle or specify more than
+    In this case either do not specify a preeditType or specify more than
     one pre-edit style, such as OverTheSpot,Root,None.
 
     If it still doesn't work, then maybe your input method doesn't support
diff --git a/README.configure b/README.configure
index 674c040..ae7c456 100644
--- a/README.configure
+++ b/README.configure
@@ -192,7 +192,7 @@ CONFIGURE OPTIONS
           verbose X error handling
 
     --enable-iso14755 (default: on)
-        Enable extended ISO 14755 support (see rxvt(1)). Basic support
+        Enable extended ISO 14755 support (see urxvt(1)). Basic support
         (section 5.1) is enabled by "--enable-frills", while support for
         5.2, 5.3 and 5.4 is enabled with this switch.
 
@@ -224,8 +224,8 @@ CONFIGURE OPTIONS
         Add support to have the pointer disappear when typing or inactive.
 
     --enable-perl (default: on)
-        Enable an embedded perl interpreter. See the rxvtperl(3) manpage for
-        more info on this feature, or the files in src/perl/ for the
+        Enable an embedded perl interpreter. See the urxvtperl(3) manpage
+        for more info on this feature, or the files in src/perl/ for the
         extensions that are installed by default. The perl interpreter that
         is used can be specified via the "PERL" environment variable when
         running configure. Even when compiled in, perl will *not* be
@@ -247,7 +247,7 @@ CONFIGURE OPTIONS
         "rxvt-unicode-256color" by default (doc/etc/ contains
         termcap/terminfo definitions for both).
 
-        It also results in higher memory usage and can slow down rxvt
+        It also results in higher memory usage and can slow down urxvt
         dramatically when more than six fonts are in use by a terminal
         instance.
 
diff --git a/doc/rxvt.1.man.in b/doc/rxvt.1.man.in
index c24e782..be01eea 100644
--- a/doc/rxvt.1.man.in
+++ b/doc/rxvt.1.man.in
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 1"
-.TH @@RXVT_NAME@@ 1 "2013-10-27" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 1 "2014-04-26" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -1368,6 +1368,12 @@ window causes the value of the \s-1PRIMARY\s0 selection (or \s-1CLIPBOARD\s0 wit
 .Sp
 Pressing 
BShift-Insert
R causes the value of the \s-1PRIMARY\s0 selection to be
 inserted too.
+.Sp
+rxvt-unicode also provides the bindings 
BCtrl-Meta-c
R and
+<Ctrl\-Meta\-v> to interact with the \s-1CLIPBOARD\s0 selection. The first
+binding causes the value of the internal selection to be copied to the
+\&\s-1CLIPBOARD\s0 selection, while the second binding causes the value of the
+\&\s-1CLIPBOARD\s0 selection to be inserted.
 .SH "CHANGING FONTS"
 .IX Header "CHANGING FONTS"
 Changing fonts (or font sizes, respectively) via the keypad is not yet
@@ -1495,8 +1501,8 @@ values for the 256 colour mode in parentheses).
 The \s-1RGB\s0 cube uses indices 16..79 (16..231) using the following formulas:
 .PP
 .Vb 2
-\&   index_88  = (r *  4 + g) *  4 + b + 16   # r, g, b = 0..3
-\&   index_256 = (r * 16 + g) * 16 + b + 16   # r, g, b = 0..15
+\&   index_88  = (r * 4 + g) * 4 + b + 16   # r, g, b = 0..3
+\&   index_256 = (r * 6 + g) * 6 + b + 16   # r, g, b = 0..5
 .Ve
 .PP
 The grayscale ramp uses indices 80..87 (232..239), from 10% to 90% in 10%
diff --git a/doc/rxvt.1.pod b/doc/rxvt.1.pod
index 7e2ae26..87042cd 100644
--- a/doc/rxvt.1.pod
+++ b/doc/rxvt.1.pod
@@ -1378,6 +1378,12 @@ B<Meta> modifier) to be inserted as if it had been typed on the keyboard.
 Pressing B<Shift-Insert> causes the value of the PRIMARY selection to be
 inserted too.
 
+rxvt-unicode also provides the bindings B<Ctrl-Meta-c> and
+<Ctrl-Meta-v> to interact with the CLIPBOARD selection. The first
+binding causes the value of the internal selection to be copied to the
+CLIPBOARD selection, while the second binding causes the value of the
+CLIPBOARD selection to be inserted.
+
 =back
 
 =head1 CHANGING FONTS
@@ -1511,8 +1517,8 @@ values for the 256 colour mode in parentheses).
 
 The RGB cube uses indices 16..79 (16..231) using the following formulas:
 
-   index_88  = (r *  4 + g) *  4 + b + 16   # r, g, b = 0..3
-   index_256 = (r * 16 + g) * 16 + b + 16   # r, g, b = 0..15
+   index_88  = (r * 4 + g) * 4 + b + 16   # r, g, b = 0..3
+   index_256 = (r * 6 + g) * 6 + b + 16   # r, g, b = 0..5
 
 The grayscale ramp uses indices 80..87 (232..239), from 10% to 90% in 10%
 steps (1/26 to 25/26 in 1/26 steps) - black and white are already part of
diff --git a/doc/rxvt.7.man.in b/doc/rxvt.7.man.in
index e4685ce..ee2de32 100644
--- a/doc/rxvt.7.man.in
+++ b/doc/rxvt.7.man.in
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 7"
-.TH @@RXVT_NAME@@ 7 "2013-10-27" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 7 "2014-04-26" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -766,13 +766,13 @@ helped.
 .IX Subsection "My Compose (Multi_key) key is no longer working."
 .PP
 The most common causes for this are that either your locale is not set
-correctly, or you specified a 
BpreeditStyle
R that is not supported by
+correctly, or you specified a 
BpreeditType
R that is not supported by
 your input method. For example, if you specified 
BOverTheSpot
R and
 your input method (e.g. the default input method handling Compose keys)
 does not support this (for instance because it is not visual), then
 rxvt-unicode will continue without an input method.
 .PP
-In this case either do not specify a 
BpreeditStyle
R or specify more than
+In this case either do not specify a 
BpreeditType
R or specify more than
 one pre-edit style, such as 
BOverTheSpot,Root,None
R.
 .PP
 If it still doesn't work, then maybe your input method doesn't support
diff --git a/doc/rxvt.7.pod b/doc/rxvt.7.pod
index 8f6105d..c1f3c10 100644
--- a/doc/rxvt.7.pod
+++ b/doc/rxvt.7.pod
@@ -556,13 +556,13 @@ helped.
 =head3 My Compose (Multi_key) key is no longer working.
 
 The most common causes for this are that either your locale is not set
-correctly, or you specified a B<preeditStyle> that is not supported by
+correctly, or you specified a B<preeditType> that is not supported by
 your input method. For example, if you specified B<OverTheSpot> and
 your input method (e.g. the default input method handling Compose keys)
 does not support this (for instance because it is not visual), then
 rxvt-unicode will continue without an input method.
 
-In this case either do not specify a B<preeditStyle> or specify more than
+In this case either do not specify a B<preeditType> or specify more than
 one pre-edit style, such as B<OverTheSpot,Root,None>.
 
 If it still doesn't work, then maybe your input method doesn't support
diff --git a/doc/rxvtc.1.man.in b/doc/rxvtc.1.man.in
index 1e08238..f04b654 100644
--- a/doc/rxvtc.1.man.in
+++ b/doc/rxvtc.1.man.in
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie 
F \{\
-.    de IX
-.    tm Index:\$1	\n%	"\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if 
(.g .if rF .nr rF 1
+.if (
(rF:(
(.g==0)) \{
+.    if 
F \{
+.        de IX
+.        tm Index:\$1	\n%	"\$2"
 ..
+.        if !
F==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 1"
-.TH @@RXVT_NAME@@ 1 "2013-03-24" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 1 "2014-04-26" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/doc/rxvtd.1.man.in b/doc/rxvtd.1.man.in
index 73adf8b..9d7259c 100644
--- a/doc/rxvtd.1.man.in
+++ b/doc/rxvtd.1.man.in
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie 
F \{\
-.    de IX
-.    tm Index:\$1	\n%	"\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if 
(.g .if rF .nr rF 1
+.if (
(rF:(
(.g==0)) \{
+.    if 
F \{
+.        de IX
+.        tm Index:\$1	\n%	"\$2"
 ..
+.        if !
F==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "@@RXVT_NAME@@ 1"
-.TH @@RXVT_NAME@@ 1 "2013-03-24" "@@RXVT_VERSION@@" "RXVT-UNICODE"
+.TH @@RXVT_NAME@@ 1 "2014-04-26" "@@RXVT_VERSION@@" "RXVT-UNICODE"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/libev/Changes b/libev/Changes
index 6c43ec5..20e7bd6 100644
--- a/libev/Changes
+++ b/libev/Changes
@@ -12,10 +12,22 @@ TODO: document file descriptor usage per loop
 TODO: store loop pid_t and compare isndie signal handler,store 1 for same, 2 for differign pid, clean up in loop_fork
 TODO: embed watchers need updating when fd changes
 TODO: document portbaility requirements for atomic pointer access
+TODO: possible cb aliasing?
+TODO: document requirements for function piinters and calling conventions.
 
-TODO: glibc >=2.17 do not need -lrt for clock_xxx
+	- events on files were not always generated properly with the
+          epoll backend (testcase by Assaf Inbal).
 	- mark event pipe fd as cloexec after a fork (analyzed by Sami Farin).
         - (ecb) support m68k, m88k and sh (patch by Miod Vallat).
+        - use a reasonable fallback for EV_NSIG instead of erroring out
+          when we can't detect the signal set size.
+        - in the absence of autoconf, do not use the clock syscall
+          on glibc >= 2.17 (avoids the syscall AND -lrt on systems
+          doing clock_gettime in userspace).
+        - ensure extern "C" function pointers are used for externally-visible
+          loop callbacks (not watcher callbacks yet).
+        - (ecb) work around memory barriers and volatile apparently both being
+          broken in visual studio 2008 and later (analysed and patch by Nicolas Noble).
 
 4.15 Fri Mar  1 12:04:50 CET 2013
         - destroying a non-default loop would stop the global waitpid
diff --git a/libev/ev.c b/libev/ev.c
index 5ba6e60..b233e21 100644
--- a/libev/ev.c
+++ b/libev/ev.c
@@ -1,7 +1,7 @@
 /*
  * libev event processing core, watcher management
  *
- * Copyright (c) 2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann <libev at schmorp.de>
+ * Copyright (c) 2007,2008,2009,2010,2011,2012,2013 Marc Alexander Lehmann <libev at schmorp.de>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without modifica-
@@ -243,10 +243,7 @@
 #elif defined _sys_nsig
 # define EV_NSIG (_sys_nsig) /* Solaris 2.5 */
 #else
-# error "unable to find value for NSIG, please report"
-/* to make it compile regardless, just remove the above line, */
-/* but consider reporting it, too! :) */
-# define EV_NSIG 65
+# define EV_NSIG (8 * sizeof (sigset_t) + 1)
 #endif
 
 #ifndef EV_USE_FLOOR
@@ -254,7 +251,7 @@
 #endif
 
 #ifndef EV_USE_CLOCK_SYSCALL
-# if __linux && __GLIBC__ >= 2
+# if __linux && __GLIBC__ == 2 && __GLIBC_MINOR__ < 17
 #  define EV_USE_CLOCK_SYSCALL EV_FEATURE_OS
 # else
 #  define EV_USE_CLOCK_SYSCALL 0
@@ -487,7 +484,7 @@ struct signalfd_siginfo
 /*
  * libecb - http://software.schmorp.de/pkg/libecb
  *
- * Copyright (©) 2009-2012 Marc Alexander Lehmann <libecb at schmorp.de>
+ * Copyright (©) 2009-2014 Marc Alexander Lehmann <libecb at schmorp.de>
  * Copyright (©) 2011 Emanuele Giaquinta
  * All rights reserved.
  *
@@ -552,7 +549,7 @@ struct signalfd_siginfo
 #endif
 
 /* work around x32 idiocy by defining proper macros */
-#if __x86_64 || _M_AMD64
+#if __amd64 || __x86_64 || _M_AMD64 || _M_X64
   #if _ILP32
     #define ECB_AMD64_X32 1
   #else
@@ -575,13 +572,21 @@ struct signalfd_siginfo
   #endif
 #endif
 
-#define ECB_C     (__STDC__+0) /* this assumes that __STDC__ is either empty or a number */
-#define ECB_C99   (__STDC_VERSION__ >= 199901L)
-#define ECB_C11   (__STDC_VERSION__ >= 201112L)
 #define ECB_CPP   (__cplusplus+0)
 #define ECB_CPP11 (__cplusplus >= 201103L)
 
 #if ECB_CPP
+  #define ECB_C            0
+  #define ECB_STDC_VERSION 0
+#else
+  #define ECB_C            1
+  #define ECB_STDC_VERSION __STDC_VERSION__
+#endif
+
+#define ECB_C99   (ECB_STDC_VERSION >= 199901L)
+#define ECB_C11   (ECB_STDC_VERSION >= 201112L)
+
+#if ECB_CPP
   #define ECB_EXTERN_C extern "C"
   #define ECB_EXTERN_C_BEG ECB_EXTERN_C {
   #define ECB_EXTERN_C_END }
@@ -622,7 +627,9 @@ struct signalfd_siginfo
     #elif defined __ARM_ARCH_7__  || defined __ARM_ARCH_7A__  \
        || defined __ARM_ARCH_7M__ || defined __ARM_ARCH_7R__
       #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("dmb"      : : : "memory")
-    #elif __sparc || __sparc__
+    #elif __aarch64__
+      #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("dmb ish"  : : : "memory")
+    #elif (__sparc || __sparc__) && !__sparcv8
       #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad" : : : "memory")
       #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad"                            : : : "memory")
       #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore             | #StoreStore")
@@ -653,6 +660,8 @@ struct signalfd_siginfo
   #if ECB_GCC_VERSION(4,7)
     /* see comment below (stdatomic.h) about the C11 memory model. */
     #define ECB_MEMORY_FENCE         __atomic_thread_fence (__ATOMIC_SEQ_CST)
+    #define ECB_MEMORY_FENCE_ACQUIRE __atomic_thread_fence (__ATOMIC_ACQUIRE)
+    #define ECB_MEMORY_FENCE_RELEASE __atomic_thread_fence (__ATOMIC_RELEASE)
 
   /* The __has_feature syntax from clang is so misdesigned that we cannot use it
    * without risking compile time errors with other compilers. We *could*
@@ -661,10 +670,18 @@ struct signalfd_siginfo
    * #elif defined __clang && __has_feature (cxx_atomic)
    *   // see comment below (stdatomic.h) about the C11 memory model.
    *   #define ECB_MEMORY_FENCE         __c11_atomic_thread_fence (__ATOMIC_SEQ_CST)
+   *   #define ECB_MEMORY_FENCE_ACQUIRE __c11_atomic_thread_fence (__ATOMIC_ACQUIRE)
+   *   #define ECB_MEMORY_FENCE_RELEASE __c11_atomic_thread_fence (__ATOMIC_RELEASE)
    */
 
   #elif ECB_GCC_VERSION(4,4) || defined __INTEL_COMPILER || defined __clang__
     #define ECB_MEMORY_FENCE         __sync_synchronize ()
+  #elif _MSC_VER >= 1500 /* VC++ 2008 */
+    /* apparently, microsoft broke all the memory barrier stuff in Visual Studio 2008... */
+    #pragma intrinsic(_ReadBarrier,_WriteBarrier,_ReadWriteBarrier)
+    #define ECB_MEMORY_FENCE         _ReadWriteBarrier (); MemoryBarrier()
+    #define ECB_MEMORY_FENCE_ACQUIRE _ReadWriteBarrier (); MemoryBarrier() /* according to msdn, _ReadBarrier is not a load fence */
+    #define ECB_MEMORY_FENCE_RELEASE _WriteBarrier (); MemoryBarrier()
   #elif _MSC_VER >= 1400 /* VC++ 2005 */
     #pragma intrinsic(_ReadBarrier,_WriteBarrier,_ReadWriteBarrier)
     #define ECB_MEMORY_FENCE         _ReadWriteBarrier ()
@@ -694,6 +711,8 @@ struct signalfd_siginfo
     /* for most usages, or gcc and clang have a bug */
     /* I *currently* lean towards the latter, and inefficiently implement */
     /* all three of ecb's fences as a seq_cst fence */
+    /* Update, gcc-4.8 generates mfence for all c++ fences, but nothing */
+    /* for all __atomic_thread_fence's except seq_cst */
     #define ECB_MEMORY_FENCE         atomic_thread_fence (memory_order_seq_cst)
   #endif
 #endif
@@ -760,6 +779,11 @@ typedef int ecb_bool;
   #define ecb_prefetch(addr,rw,locality) __builtin_prefetch (addr, rw, locality)
 #else
   #define ecb_attribute(attrlist)
+
+  /* possible C11 impl for integral types
+  typedef struct ecb_is_constant_struct ecb_is_constant_struct;
+  #define ecb_is_constant(expr)          _Generic ((1 ? (struct ecb_is_constant_struct *)0 : (void *)((expr) - (expr)), ecb_is_constant_struct *: 0, default: 1)) */
+
   #define ecb_is_constant(expr)          0
   #define ecb_expect(expr,value)         (expr)
   #define ecb_prefetch(addr,rw,locality)
@@ -1055,7 +1079,6 @@ ecb_inline ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
     || __i386 || __i386__ \
     || __amd64 || __amd64__ || __x86_64 || __x86_64__ \
     || __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ \
-    || defined __arm__ && defined __ARM_EABI__ \
     || defined __s390__ || defined __s390x__ \
     || defined __mips__ \
     || defined __alpha__ \
@@ -1064,7 +1087,9 @@ ecb_inline ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
     || defined __m68k__ \
     || defined __m88k__ \
     || defined __sh__ \
-    || defined _M_IX86 || defined _M_AMD64 || defined _M_IA64
+    || defined _M_IX86 || defined _M_AMD64 || defined _M_IA64 \
+    || (defined __arm__ && (defined __ARM_EABI__ || defined __EABI__ || defined __VFP_FP__ || defined _WIN32_WCE || defined __ANDROID__)) \
+    || defined __aarch64__
   #define ECB_STDFP 1
   #include <string.h> /* for memcpy */
 #else
@@ -1075,10 +1100,17 @@ ecb_inline ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
 
   #include <math.h> /* for frexp*, ldexp*, INFINITY, NAN */
 
-  #ifdef NEN
+  /* only the oldest of old doesn't have this one. solaris. */
+  #ifdef INFINITY
+    #define ECB_INFINITY INFINITY
+  #else
+    #define ECB_INFINITY HUGE_VAL
+  #endif
+
+  #ifdef NAN
     #define ECB_NAN NAN
   #else
-    #define ECB_NAN INFINITY
+    #define ECB_NAN ECB_INFINITY
   #endif
 
   /* converts an ieee half/binary16 to a float */
@@ -1093,7 +1125,7 @@ ecb_inline ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
     if      (!e     ) r = ldexpf (m        ,    -24);
     else if (e != 31) r = ldexpf (m + 0x400, e - 25);
     else if (m      ) r = ECB_NAN;
-    else              r = INFINITY;
+    else              r = ECB_INFINITY;
 
     return x & 0x8000 ? -r : r;
   }
@@ -2550,13 +2582,13 @@ ev_userdata (EV_P) EV_THROW
 }
 
 void
-ev_set_invoke_pending_cb (EV_P_ void (*invoke_pending_cb)(EV_P)) EV_THROW
+ev_set_invoke_pending_cb (EV_P_ ev_loop_callback invoke_pending_cb) EV_THROW
 {
   invoke_cb = invoke_pending_cb;
 }
 
 void
-ev_set_loop_release_cb (EV_P_ void (*release)(EV_P) EV_THROW, void (*acquire)(EV_P) EV_THROW) EV_THROW
+ev_set_loop_release_cb (EV_P_ ev_loop_callback_nothrow release, ev_loop_callback_nothrow acquire) EV_THROW
 {
   release_cb = release;
   acquire_cb = acquire;
diff --git a/libev/ev.h b/libev/ev.h
index c5d582e..38a507e 100644
--- a/libev/ev.h
+++ b/libev/ev.h
@@ -658,8 +658,10 @@ EV_API_DECL void ev_set_timeout_collect_interval (EV_P_ ev_tstamp interval) EV_T
 /* advanced stuff for threading etc. support, see docs */
 EV_API_DECL void ev_set_userdata (EV_P_ void *data) EV_THROW;
 EV_API_DECL void *ev_userdata (EV_P) EV_THROW;
-EV_API_DECL void ev_set_invoke_pending_cb (EV_P_ void (*invoke_pending_cb)(EV_P)) EV_THROW;
-EV_API_DECL void ev_set_loop_release_cb (EV_P_ void (*release)(EV_P), void (*acquire)(EV_P) EV_THROW) EV_THROW;
+typedef void (*ev_loop_callback)(EV_P);
+EV_API_DECL void ev_set_invoke_pending_cb (EV_P_ ev_loop_callback invoke_pending_cb) EV_THROW;
+typedef void (*ev_loop_callback_nothrow)(EV_P) EV_THROW;
+EV_API_DECL void ev_set_loop_release_cb (EV_P_ ev_loop_callback_nothrow release, ev_loop_callback_nothrow acquire) EV_THROW;
 
 EV_API_DECL unsigned int ev_pending_count (EV_P) EV_THROW; /* number of pending events, if any */
 EV_API_DECL void ev_invoke_pending (EV_P); /* invoke all pending watchers */
@@ -730,7 +732,7 @@ EV_API_DECL void ev_resume  (EV_P) EV_THROW;
 #endif
 
 /* stopping (enabling, adding) a watcher does nothing if it is already running */
-/* stopping (disabling, deleting) a watcher does nothing unless its already running */
+/* stopping (disabling, deleting) a watcher does nothing unless it's already running */
 #if EV_PROTOTYPES
 
 /* feeds an event into a watcher as if the event actually occurred */
diff --git a/libev/ev_epoll.c b/libev/ev_epoll.c
index f5ad618..7472b60 100644
--- a/libev/ev_epoll.c
+++ b/libev/ev_epoll.c
@@ -228,7 +228,10 @@ epoll_poll (EV_P_ ev_tstamp timeout)
       if (anfds [fd].emask & EV_EMASK_EPERM && events)
         fd_event (EV_A_ fd, events);
       else
-        epoll_eperms [i] = epoll_eperms [--epoll_epermcnt];
+        {
+          epoll_eperms [i] = epoll_eperms [--epoll_epermcnt];
+          anfds [fd].emask = 0;
+        }
     }
 }
 
diff --git a/libev/ev_kqueue.c b/libev/ev_kqueue.c
index 9faf65a..27def23 100644
--- a/libev/ev_kqueue.c
+++ b/libev/ev_kqueue.c
@@ -1,7 +1,7 @@
 /*
  * libev kqueue backend
  *
- * Copyright (c) 2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann <libev at schmorp.de>
+ * Copyright (c) 2007,2008,2009,2010,2011,2012,2013 Marc Alexander Lehmann <libev at schmorp.de>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without modifica-
diff --git a/libev/ev_vars.h b/libev/ev_vars.h
index 5fd9c7a..98f7718 100644
--- a/libev/ev_vars.h
+++ b/libev/ev_vars.h
@@ -1,7 +1,7 @@
 /*
  * loop member variable declarations
  *
- * Copyright (c) 2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann <libev at schmorp.de>
+ * Copyright (c) 2007,2008,2009,2010,2011,2012,2013 Marc Alexander Lehmann <libev at schmorp.de>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without modifica-
@@ -194,9 +194,9 @@ VARx(unsigned int, loop_count) /* total number of loop iterations/blocks */
 VARx(unsigned int, loop_depth) /* #ev_run enters - #ev_run leaves */
 
 VARx(void *, userdata)
-VAR (release_cb, void (*release_cb)(EV_P) EV_THROW)
-VAR (acquire_cb, void (*acquire_cb)(EV_P) EV_THROW)
-VAR (invoke_cb , void (*invoke_cb) (EV_P))
+VAR (release_cb, ev_loop_callback_nothrow release_cb)
+VAR (acquire_cb, ev_loop_callback_nothrow acquire_cb)
+VAR (invoke_cb , ev_loop_callback invoke_cb)
 #endif
 
 #undef VARx
diff --git a/libptytty/Changes b/libptytty/Changes
index 910c0bb..025d118 100644
--- a/libptytty/Changes
+++ b/libptytty/Changes
@@ -1,4 +1,6 @@
 
+	- nuke the pid check when !PTYTTY_REENTRANT: it breaks urxvtd, and
+          serves little purpose as it is off in normal builds anyway.
 	- add ecb.h.
 
 1.6  Sat Jan 21 16:59:22 CET 2012
diff --git a/libptytty/src/ecb.h b/libptytty/src/ecb.h
index d83dec2..b35008d 100644
--- a/libptytty/src/ecb.h
+++ b/libptytty/src/ecb.h
@@ -1,7 +1,7 @@
 /*
  * libecb - http://software.schmorp.de/pkg/libecb
  *
- * Copyright (©) 2009-2012 Marc Alexander Lehmann <libecb at schmorp.de>
+ * Copyright (©) 2009-2014 Marc Alexander Lehmann <libecb at schmorp.de>
  * Copyright (©) 2011 Emanuele Giaquinta
  * All rights reserved.
  *
@@ -66,7 +66,7 @@
 #endif
 
 /* work around x32 idiocy by defining proper macros */
-#if __x86_64 || _M_AMD64
+#if __amd64 || __x86_64 || _M_AMD64 || _M_X64
   #if _ILP32
     #define ECB_AMD64_X32 1
   #else
@@ -89,13 +89,21 @@
   #endif
 #endif
 
-#define ECB_C     (__STDC__+0) /* this assumes that __STDC__ is either empty or a number */
-#define ECB_C99   (__STDC_VERSION__ >= 199901L)
-#define ECB_C11   (__STDC_VERSION__ >= 201112L)
 #define ECB_CPP   (__cplusplus+0)
 #define ECB_CPP11 (__cplusplus >= 201103L)
 
 #if ECB_CPP
+  #define ECB_C            0
+  #define ECB_STDC_VERSION 0
+#else
+  #define ECB_C            1
+  #define ECB_STDC_VERSION __STDC_VERSION__
+#endif
+
+#define ECB_C99   (ECB_STDC_VERSION >= 199901L)
+#define ECB_C11   (ECB_STDC_VERSION >= 201112L)
+
+#if ECB_CPP
   #define ECB_EXTERN_C extern "C"
   #define ECB_EXTERN_C_BEG ECB_EXTERN_C {
   #define ECB_EXTERN_C_END }
@@ -136,7 +144,9 @@
     #elif defined __ARM_ARCH_7__  || defined __ARM_ARCH_7A__  \
        || defined __ARM_ARCH_7M__ || defined __ARM_ARCH_7R__
       #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("dmb"      : : : "memory")
-    #elif __sparc || __sparc__
+    #elif __aarch64__
+      #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("dmb ish"  : : : "memory")
+    #elif (__sparc || __sparc__) && !__sparcv8
       #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad" : : : "memory")
       #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad"                            : : : "memory")
       #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore             | #StoreStore")
@@ -167,6 +177,8 @@
   #if ECB_GCC_VERSION(4,7)
     /* see comment below (stdatomic.h) about the C11 memory model. */
     #define ECB_MEMORY_FENCE         __atomic_thread_fence (__ATOMIC_SEQ_CST)
+    #define ECB_MEMORY_FENCE_ACQUIRE __atomic_thread_fence (__ATOMIC_ACQUIRE)
+    #define ECB_MEMORY_FENCE_RELEASE __atomic_thread_fence (__ATOMIC_RELEASE)
 
   /* The __has_feature syntax from clang is so misdesigned that we cannot use it
    * without risking compile time errors with other compilers. We *could*
@@ -175,10 +187,18 @@
    * #elif defined __clang && __has_feature (cxx_atomic)
    *   // see comment below (stdatomic.h) about the C11 memory model.
    *   #define ECB_MEMORY_FENCE         __c11_atomic_thread_fence (__ATOMIC_SEQ_CST)
+   *   #define ECB_MEMORY_FENCE_ACQUIRE __c11_atomic_thread_fence (__ATOMIC_ACQUIRE)
+   *   #define ECB_MEMORY_FENCE_RELEASE __c11_atomic_thread_fence (__ATOMIC_RELEASE)
    */
 
   #elif ECB_GCC_VERSION(4,4) || defined __INTEL_COMPILER || defined __clang__
     #define ECB_MEMORY_FENCE         __sync_synchronize ()
+  #elif _MSC_VER >= 1500 /* VC++ 2008 */
+    /* apparently, microsoft broke all the memory barrier stuff in Visual Studio 2008... */
+    #pragma intrinsic(_ReadBarrier,_WriteBarrier,_ReadWriteBarrier)
+    #define ECB_MEMORY_FENCE         _ReadWriteBarrier (); MemoryBarrier()
+    #define ECB_MEMORY_FENCE_ACQUIRE _ReadWriteBarrier (); MemoryBarrier() /* according to msdn, _ReadBarrier is not a load fence */
+    #define ECB_MEMORY_FENCE_RELEASE _WriteBarrier (); MemoryBarrier()
   #elif _MSC_VER >= 1400 /* VC++ 2005 */
     #pragma intrinsic(_ReadBarrier,_WriteBarrier,_ReadWriteBarrier)
     #define ECB_MEMORY_FENCE         _ReadWriteBarrier ()
@@ -208,6 +228,8 @@
     /* for most usages, or gcc and clang have a bug */
     /* I *currently* lean towards the latter, and inefficiently implement */
     /* all three of ecb's fences as a seq_cst fence */
+    /* Update, gcc-4.8 generates mfence for all c++ fences, but nothing */
+    /* for all __atomic_thread_fence's except seq_cst */
     #define ECB_MEMORY_FENCE         atomic_thread_fence (memory_order_seq_cst)
   #endif
 #endif
@@ -274,6 +296,11 @@ typedef int ecb_bool;
   #define ecb_prefetch(addr,rw,locality) __builtin_prefetch (addr, rw, locality)
 #else
   #define ecb_attribute(attrlist)
+
+  /* possible C11 impl for integral types
+  typedef struct ecb_is_constant_struct ecb_is_constant_struct;
+  #define ecb_is_constant(expr)          _Generic ((1 ? (struct ecb_is_constant_struct *)0 : (void *)((expr) - (expr)), ecb_is_constant_struct *: 0, default: 1)) */
+
   #define ecb_is_constant(expr)          0
   #define ecb_expect(expr,value)         (expr)
   #define ecb_prefetch(addr,rw,locality)
@@ -569,7 +596,6 @@ ecb_inline ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
     || __i386 || __i386__ \
     || __amd64 || __amd64__ || __x86_64 || __x86_64__ \
     || __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ \
-    || defined __arm__ && defined __ARM_EABI__ \
     || defined __s390__ || defined __s390x__ \
     || defined __mips__ \
     || defined __alpha__ \
@@ -578,7 +604,9 @@ ecb_inline ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
     || defined __m68k__ \
     || defined __m88k__ \
     || defined __sh__ \
-    || defined _M_IX86 || defined _M_AMD64 || defined _M_IA64
+    || defined _M_IX86 || defined _M_AMD64 || defined _M_IA64 \
+    || (defined __arm__ && (defined __ARM_EABI__ || defined __EABI__ || defined __VFP_FP__ || defined _WIN32_WCE || defined __ANDROID__)) \
+    || defined __aarch64__
   #define ECB_STDFP 1
   #include <string.h> /* for memcpy */
 #else
@@ -589,10 +617,17 @@ ecb_inline ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
 
   #include <math.h> /* for frexp*, ldexp*, INFINITY, NAN */
 
-  #ifdef NEN
+  /* only the oldest of old doesn't have this one. solaris. */
+  #ifdef INFINITY
+    #define ECB_INFINITY INFINITY
+  #else
+    #define ECB_INFINITY HUGE_VAL
+  #endif
+
+  #ifdef NAN
     #define ECB_NAN NAN
   #else
-    #define ECB_NAN INFINITY
+    #define ECB_NAN ECB_INFINITY
   #endif
 
   /* converts an ieee half/binary16 to a float */
@@ -607,7 +642,7 @@ ecb_inline ecb_bool ecb_little_endian (void) { return ecb_byteorder_helper () ==
     if      (!e     ) r = ldexpf (m        ,    -24);
     else if (e != 31) r = ldexpf (m + 0x400, e - 25);
     else if (m      ) r = ECB_NAN;
-    else              r = INFINITY;
+    else              r = ECB_INFINITY;
 
     return x & 0x8000 ? -r : r;
   }
diff --git a/libptytty/src/proxy.C b/libptytty/src/proxy.C
index b93c9af..09a9966 100644
--- a/libptytty/src/proxy.C
+++ b/libptytty/src/proxy.C
@@ -41,7 +41,7 @@
 #if PTYTTY_HELPER
 
 static int sock_fd = -1, lock_fd = -1;
-static int helper_pid, owner_pid;
+static int helper_pid;
 
 struct command
 {
@@ -212,21 +212,9 @@ void serve ()
 void
 ptytty::use_helper ()
 {
-#ifndef PTYTTY_NO_PID_CHECK
-  int pid = getpid ();
-#endif
-
-  if (sock_fd >= 0
-#ifndef PTYTTY_NO_PID_CHECK
-      && pid == owner_pid
-#endif
-      )
+  if (sock_fd >= 0)
     return;
 
-#ifndef PTYTTY_NO_PID_CHECK
-  owner_pid = pid;
-#endif
-
   int sv[2];
 
   if (socketpair (AF_UNIX, SOCK_STREAM, 0, sv))
@@ -286,11 +274,7 @@ ptytty *
 ptytty::create ()
 {
 #if PTYTTY_HELPER
-  if (helper_pid
-# ifndef PTYTTY_NO_PID_CHECK
-      && getpid () == owner_pid
-# endif
-      )
+  if (helper_pid)
     // use helper process
     return new ptytty_proxy;
   else
diff --git a/libptytty/src/ptytty.h b/libptytty/src/ptytty.h
index 03ecb21..6182e4a 100644
--- a/libptytty/src/ptytty.h
+++ b/libptytty/src/ptytty.h
@@ -4,10 +4,6 @@
 #include "libptytty.h"
 #include "ptytty_conf.h"
 
-#if PTYTTY_REENTRANT
-# define PTYTTY_NO_PID_CHECK 1
-#endif
-
 #if defined(HAVE__GETPTY) || defined(HAVE_OPENPTY) || defined(UNIX98_PTY)
 # define NO_SETOWNER_TTYDEV 1
 #endif
diff --git a/libptytty/src/ptytty_conf.h b/libptytty/src/ptytty_conf.h
index 1719a43..5a61c46 100644
--- a/libptytty/src/ptytty_conf.h
+++ b/libptytty/src/ptytty_conf.h
@@ -22,11 +22,11 @@
 #endif
 
 /*
- * Define if you want to use a single helper process from multiple threads
- * OR forked processes. Without it, the helper will only work from the
- * process having started it, and it might not be possible to start another
- * helper. Having it disabled avoids some syscalls and reduces codesize,
- * but unless you are really short on cpu or memory, it's not worth disabling.
+ * Define if you want to use a single helper process from multiple
+ * threads OR forked processes. Without it, the user is responsible for
+ * serialising all calls to libptytty functions. Having it disabled
+ * avoids some syscalls and reduces codesize, but unless you are really
+ * short on cpu or memory, it's not worth disabling.
  */
 #ifndef PTYTTY_REENTRANT
 # define PTYTTY_REENTRANT 1
diff --git a/src/Makefile.in b/src/Makefile.in
index 5920ddd..c51d3f7 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -111,8 +111,8 @@ install-perl:
 @IF_PERL@	   $(INSTALL_DATA) "$$ext" $(DESTDIR)$(libdir)/urxvt/perl/; \
 @IF_PERL@	   < "$$ext" \
 @IF_PERL@	   $(PERL) -MPod::Man -e '(new Pod::Man name => "'urxvt-$$base'", $(PODOPTS))->parse_from_file' \
- at IF_PERL@	   > ../mantmp; \
- at IF_PERL@	   test -s ../mantmp && $(INSTALL_DATA) ../mantmp $(DESTDIR)$(man1dir)/$(RXVTNAME)-$$base.$(man1ext); \
+ at IF_PERL@	   > mantmp; \
+ at IF_PERL@	   test -s mantmp && $(INSTALL_DATA) mantmp $(DESTDIR)$(man1dir)/$(RXVTNAME)-$$base.$(man1ext); \
 @IF_PERL@	   < "$$ext" $(PERL) -ne '<>, (print <> . "
"), exit if /^=head1/' >&3; \
 @IF_PERL@	done 3>manlst
 @IF_PERL@	cat $(srcdir)/../doc/extensions.pod.top manlst $(srcdir)/../doc/extensions.pod.bot | \
diff --git a/src/command.C b/src/command.C
index 542d14c..153f0e1 100644
--- a/src/command.C
+++ b/src/command.C
@@ -27,7 +27,7 @@
  * Copyright (c) 2001      Marius Gedminas
  *				- Ctrl/Mod4+Tab works like Meta+Tab (options)
  * Copyright (c) 2003      Rob McMullen <robm at flipturn.org>
- * Copyright (c) 2003-2011 Marc Lehmann <schmorp at schmorp.de>
+ * Copyright (c) 2003-2014 Marc Lehmann <schmorp at schmorp.de>
  * Copyright (c) 2007      Emanuele Giaquinta <e.giaquinta at glauco.it>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -402,6 +402,15 @@ map_function_key (KeySym keysym)
   return param;
 }
 
+static inline wchar_t *
+rxvt_wcsdup (const wchar_t *str, int len)
+{
+  wchar_t *r = (wchar_t *)rxvt_malloc ((len + 1) * sizeof (wchar_t));
+  memcpy (r, str, len * sizeof (wchar_t));
+  r[len] = 0;
+  return r;
+}
+
 void ecb_cold
 rxvt_term::key_press (XKeyEvent &ev)
 {
@@ -580,6 +589,21 @@ rxvt_term::key_press (XKeyEvent &ev)
             }
         }
 
+      if (ctrl && meta && (keysym == XK_c || keysym == XK_v))
+        {
+          if (keysym == XK_v)
+            selection_request (ev.time, Sel_Clipboard);
+          else if (selection.len > 0)
+            {
+              free (selection.clip_text);
+              selection.clip_text = rxvt_wcsdup (selection.text, selection.len);
+              selection.clip_len = selection.len;
+              selection_grab (CurrentTime, true);
+            }
+
+          return;
+        }
+
 #if ENABLE_FRILLS || ISO_14755
       // ISO 14755 support
       if (iso14755buf & (ISO_14755_STARTED | ISO_14755_51))
@@ -3229,7 +3253,7 @@ rxvt_term::get_to_st (unicode_t &ends_how)
   unicode_t ch;
   bool seen_esc = false;
   unsigned int n = 0;
-  wchar_t string[STRING_MAX];
+  wchar_t string[CBUFSIZ];
 
   while ((ch = cmd_getc ()) != NOCHAR)
     {
@@ -3254,7 +3278,7 @@ rxvt_term::get_to_st (unicode_t &ends_how)
 
       seen_esc = false;
 
-      if (n >= STRING_MAX - 1)
+      if (n >= sizeof (string) - 1)
         // stop at some sane length
         return NULL;
 
@@ -3381,7 +3405,7 @@ rxvt_term::process_xterm_seq (int op, char *str, char resp)
                 && actual_format == 8)
               str = (const char *)(value);
 
-            tt_printf ("]%d;%s%c", op, str, resp);
+            tt_printf ("]%d;%s%c", op, option (Opt_insecure) ? str : "", resp);
 
             XFree (value);
           }
diff --git a/src/command.h b/src/command.h
index 0d26112..03ba3b1 100644
--- a/src/command.h
+++ b/src/command.h
@@ -5,9 +5,6 @@
 #ifndef COMMAND_H_
 #define COMMAND_H_
 
-// STRING_MAX __MUST__ not be larger than what CBUFSIZ can hold.
-#define STRING_MAX	2048	/* max string size for process_{dcs,osc}_seq () */
-
 #define ESC_ARGS	32	/* max # of args for esc sequences */
 
 #ifndef MULTICLICK_TIME
diff --git a/src/init.C b/src/init.C
index 95cc777..114c5fb 100644
--- a/src/init.C
+++ b/src/init.C
@@ -1410,9 +1410,7 @@ rxvt_term::create_windows (int argc, const char *const *argv)
    */
 
   if (rs [Rs_iconfile])
-    {
-      set_icon (rs [Rs_iconfile]);
-    }
+    set_icon (rs [Rs_iconfile]);
 #endif
 
 #if ENABLE_FRILLS
diff --git a/src/perl/selection-to-clipboard b/src/perl/selection-to-clipboard
new file mode 100644
index 0000000..0431694
--- /dev/null
+++ b/src/perl/selection-to-clipboard
@@ -0,0 +1,27 @@
+#! perl -w
+
+=head1 NAME
+
+selection-to-clipboard - copy the selection to the clipboard each time a selection is made
+
+=head1 SYNOPSIS
+
+   urxvt -pe selection-to-clipboard
+
+=head1 DESCRIPTION
+
+This very simple extension copies the selection to the clipboard every
+time a selection is made. This, in effect, synchronises the clipboard with
+the selection for selections done by rxvt-unicode.
+
+=cut
+
+sub on_sel_grab {
+   my ($self, $time) = @_;
+
+   $self->selection ($self->selection, 1);
+   $self->selection_grab ($time, 1);
+
+   ()
+}
+
diff --git a/src/rxvt.h b/src/rxvt.h
index 7c2e641..5b965f0 100644
--- a/src/rxvt.h
+++ b/src/rxvt.h
@@ -664,7 +664,7 @@ enum {
 // do not change these constants lightly, there are many interdependencies
 #define IMBUFSIZ               128     // input modifier buffer sizes
 #define KBUFSZ                 512     // size of keyboard mapping buffer
-#define CBUFSIZ                2048    // size of command buffer
+#define CBUFSIZ                32768   // size of command buffer (longest command sequence possible)
 #define CBUFCNT                8       // never call pty_fill/cmd_parse more than this often in a row
 #define UBUFSIZ                2048    // character buffer
 
@@ -1540,7 +1540,7 @@ struct rxvt_term : zero_initialized, rxvt_vars, rxvt_screen
   bool scr_page (int nlines) NOTHROW;
   bool scr_page (enum page_dirn direction, int nlines) NOTHROW
   {
-    scr_page (direction * nlines);
+    return scr_page (direction * nlines);
   }
   bool scr_changeview (int new_view_start) NOTHROW;
   void scr_bell () NOTHROW;
diff --git a/src/rxvtperl.xs b/src/rxvtperl.xs
index 10b2be3..92ad48c 100644
--- a/src/rxvtperl.xs
+++ b/src/rxvtperl.xs
@@ -818,7 +818,9 @@ BOOT:
     // TODO: should support all colour constants, create colorinc.h &c
     const_iv (Color_fg),
     const_iv (Color_bg),
+#if OFF_FOCUS_FADING
     const_iv (Color_fade),
+#endif
     const_iv (Color_pointer_fg),
     const_iv (Color_pointer_bg),
     const_iv (Color_border),
diff --git a/src/urxvt.pm b/src/urxvt.pm
index c132a64..7b66079 100644
--- a/src/urxvt.pm
+++ b/src/urxvt.pm
@@ -571,7 +571,7 @@ sub parse_resource {
    $term->scan_meta;
 
    my $r = $term->{meta}{resource};
-   keys %$r; # reste iterator
+   keys %$r; # reset iterator
    while (my ($pattern, $v) = each %$r) {
       if (
          $pattern =~ /\.$/
diff --git a/src/version.h b/src/version.h
index 70f4587..e6ed291 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,3 +1,3 @@
 // VERSION _must_ be \d.\d+
-#define VERSION "9.19"
-#define DATE	"2013-10-27"
+#define VERSION "9.20"
+#define DATE	"2014-04-26"

-- 
Git repository for pkg-urxvt




More information about the Pkg-urxvt-maintainers mailing list