[cygutils - Chuck Wilson's collection of Cygwin utilities] branch master, updated. v1_4_16-12-ga804501

Mark Geisert via Cygwin-apps-cvs <[email protected]>
Newsgroups gmane.os.cygwin.cvs.apps
Message-ID <[email protected]>


https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygutils.git;h=a804501b8c33c55a45a87b6e505b4e5db41e4f2f

commit a804501b8c33c55a45a87b6e505b4e5db41e4f2f
Author: Mark Geisert <[email protected]>
Date:   Fri Jan 28 01:07:45 2022 -0800

    Fold in latest clip fixes


Diff:
---
 BRANCHES           |  2 ++
 ChangeLog          | 22 +++++++++++++++++++---
 NEWS               |  3 +++
 configure.ac       |  2 +-
 cygutils.cygport   |  4 ++--
 src/clip/getclip.c |  8 ++++++--
 src/clip/putclip.c | 26 +++++++++++++++++++++-----
 7 files changed, 54 insertions(+), 13 deletions(-)

diff --git a/BRANCHES b/BRANCHES
index 753f632..f0a432c 100644
--- a/BRANCHES
+++ b/BRANCHES
@@ -104,3 +104,5 @@ v1_4_14
 v1_4_15
    |
 v1_4_16
+   |
+v1_4_17
diff --git a/ChangeLog b/ChangeLog
index 98e8d40..0a1709c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,26 @@
+2022-01-28  Mark Geisert  <[email protected]>
+
+	Release 1.4.17
+	* configure.ac: Bump version number to 1.4.17.
+	* BRANCHES: Ditto.
+	* cygutils.cygport: Ditto.
+	* src/clip/getclip.c: Fix segfault on xterm selections. Thanks to
+	Denis Excoffier for the report, Brian Inglis, Andrey Repin, and Jon
+	Turney for the discussion.
+	* src/clip/putclip.c: Add missing 32/64 timespec expansion. Thanks to
+	Takashi Yano for the report and investigation.
+	* src/clip/putclip.c: Make sure allocated buf is large enough to
+	append a NUL character. Thanks to Marco Atzeri for the report.
+	* src/clip/putclip.c: Add debugging feature to allow a file name in
+	argv (undocumented).
+
 2021-11-03  Mark Geisert  <[email protected]>  (1.4.16-8)
 
 	* src/clip/{get,put}clip.c: Replace use of Windows UTF-8 conversion
 	functions with corresponding POSIX functions. MultiByteToWideChar->
 	mbstowcs, WideCharToMultiByte->wcstombs. Thanks to Takashi Yano.
-	* src/putclip.c: Have putclip open the clipboard just once instead
-	of multiple times for multiple formats. Thanks to Takashi Yano.
+	* src/clip/putclip.c: Have putclip open the clipboard just once
+	instead of multiple times for multiple formats. Thanks to Takashi Yano.
 
 2021-09-23  Mark Geisert  <[email protected]>  (1.4.16-7)
 
@@ -32,7 +48,7 @@
 	didn't make it into the released -3 package.  Thank you Takashi Yano.
 	* Fix maintainer build environment issues that caused cygstart crash
 	on non-AVX user systems: Thank you Takashi Yano, Brian Inglis, Achim
-	Gratz and user Jay Abel for reporting the issue.
+	Gratz, and user Jay Abel for reporting the issue.
 	* src/cygdrop/cygdrop.cc: Fix crash with recent gcc and fix printf
 	format strings. Thank you Christian Franke.
 
diff --git a/NEWS b/NEWS
index f1cedc0..3b42b62 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+1.4.17
+  * More bug fixes to getclip and putclip.
+
 1.4.16
   * Unicode support added to mkshortcut and readshortcut by Thomas Wolff.
   * Minor formatting fixes to quash compiler warnings.
diff --git a/configure.ac b/configure.ac
index 830f1bf..ce5b38a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 # Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.69)
-AC_INIT(cygutils, 1.4.16, [email protected])
+AC_INIT(cygutils, 1.4.17, [email protected])
 AC_CONFIG_SRCDIR([config.h.in])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
diff --git a/cygutils.cygport b/cygutils.cygport
index d2ca1f5..9898b51 100644
--- a/cygutils.cygport
+++ b/cygutils.cygport
@@ -1,6 +1,6 @@
 NAME=cygutils
-VERSION=1.4.16
-RELEASE=7
+VERSION=1.4.17
+RELEASE=1
 
 SUMM="A collection of simple utilities"
 DESC="A collection of simple (single source file) utilities, including"
diff --git a/src/clip/getclip.c b/src/clip/getclip.c
index 4dbaa97..4f422d9 100644
--- a/src/clip/getclip.c
+++ b/src/clip/getclip.c
@@ -479,7 +479,9 @@ getclip (FILE * out, flags_struct flags, FILE * f, char *name)
       char *prev;
       char *curr;
       char *pos;
+#if DEBUGGING
       UINT format;
+#endif
 
       OpenClipboard (0);
 #if DEBUGGING
@@ -505,7 +507,7 @@ getclip (FILE * out, flags_struct flags, FILE * f, char *name)
           DWORD err = GetLastError ();
 #if DEBUGGING
           /* look up error code displayed here in w32api/winerror.h */
-          fprintf (stderr, "GetClipboardData returns %ld\n", err);
+          fprintf (stderr, "GetClipboardData returns %d\n", err);
 #endif
           CloseClipboard ();
           return err != 0;
@@ -563,7 +565,9 @@ getclip (FILE * out, flags_struct flags, FILE * f, char *name)
       char *prev;
       char *curr;
       char *pos;
+#if DEBUGGING
       UINT format;
+#endif
 
       OpenClipboard (0);
 #if DEBUGGING
@@ -589,7 +593,7 @@ getclip (FILE * out, flags_struct flags, FILE * f, char *name)
           DWORD err = GetLastError ();
 #if DEBUGGING
           /* look up error code displayed here in w32api/winerror.h */
-          fprintf (stderr, "GetClipboardData returns %ld\n", err);
+          fprintf (stderr, "GetClipboardData returns %d\n", err);
 #endif
           CloseClipboard ();
           return err != 0;
diff --git a/src/clip/putclip.c b/src/clip/putclip.c
index fb54416..ff0e4b8 100644
--- a/src/clip/putclip.c
+++ b/src/clip/putclip.c
@@ -203,9 +203,21 @@ main (int argc, const char **argv)
 
   setlocale (LC_ALL, "");
   if (rest == NULL)
+#if DEBUGGING
+ready:
+#endif
     ec |= putclip (stdin, flags, stderr, program_name);
   else
     {
+#if DEBUGGING
+      // undocumented debugging feature: read stdin from file named in argv
+      if (isalpha (**rest))
+        {
+          FILE *tmpin = freopen (*rest, "rb", stdin);
+          if (tmpin == stdin && !*(rest + 1))
+            goto ready;
+        }
+#endif
       fprintf (stderr, "Extra args ignored: ");
       while (*rest)
         fprintf (stderr, "%s ", *rest++);
@@ -409,6 +421,10 @@ putclip (FILE * in, flags_struct flags, FILE * f, char *name)
     {
       UINT cygnativeformat;
 
+      // make sure buf and copies of it have space for a NUL to be appended
+      // DO NOT CHANGE len TO ACCOUNT FOR THIS
+      buf = realloc (buf, len + 1);
+
       // if flags.endl_mode == ENDLMODE_NOCONV
       convbuf = buf;
       convlen = len;
@@ -530,7 +546,7 @@ putclip (FILE * in, flags_struct flags, FILE * f, char *name)
 #if DEBUGGING
           DWORD err = GetLastError ();
           /* look up error code displayed here in w32api/winerror.h */
-          fprintf (stderr, "OpenClipboard returns %ld\n", err);
+          fprintf (stderr, "OpenClipboard returns %d\n", err);
 #endif
           goto failout2;
         }
@@ -573,7 +589,7 @@ putclip (FILE * in, flags_struct flags, FILE * f, char *name)
           clipbufX->cb_sec  = clipbufX->ts.tv_sec;
 #endif
           clipbufX->cb_size = convlen;
-          memcpy (&clipbufX[1], convbuf, convlen);
+          memcpy (((char *) clipbufX) + sizeof (cygcb_t), convbuf, convlen);
         }
       else if (cygNewFormat == 1)
         {
@@ -597,7 +613,7 @@ putclip (FILE * in, flags_struct flags, FILE * f, char *name)
 #if DEBUGGING
           DWORD err = GetLastError ();
           /* look up error code displayed here in w32api/winerror.h */
-          fprintf (stderr, "SetClipboardData returns %ld\n", err);
+          fprintf (stderr, "SetClipboardData returns %d\n", err);
 #endif
           goto failout;
         }
@@ -647,7 +663,7 @@ putclip (FILE * in, flags_struct flags, FILE * f, char *name)
 #if DEBUGGING
           DWORD err = GetLastError ();
           /* look up error code displayed here in w32api/winerror.h */
-          fprintf (stderr, "SetClipboardData returns %ld\n", err);
+          fprintf (stderr, "SetClipboardData returns %d\n", err);
 #endif
           goto failout;
         }
@@ -685,7 +701,7 @@ putclip (FILE * in, flags_struct flags, FILE * f, char *name)
 #if DEBUGGING
           DWORD err = GetLastError ();
           /* look up error code displayed here in w32api/winerror.h */
-          fprintf (stderr, "SetClipboardData returns %ld\n", err);
+          fprintf (stderr, "SetClipboardData returns %d\n", err);
 #endif
           goto failout;
         }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.