This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gold commit] Add --debug=plugin option to record plugin actions


I've committed the following patch to check the return value from
::write(), reluctantly. I also realized there were a few newlines in
warning messages that didn't belong there (gold_warning adds a
newline).

-cary


Fix warn-unused-return message.

2018-03-23  Cary Coutant  <ccoutant@gmail.com>

gold/
        * plugin.cc (link_or_copy_file): Remove newlines from warning messages.
        Add pedantic check for return value from ::write.


diff --git a/gold/plugin.cc b/gold/plugin.cc
index b12a7a9fae..c921f7ca3d 100644
--- a/gold/plugin.cc
+++ b/gold/plugin.cc
@@ -568,19 +568,26 @@ link_or_copy_file(const char* inname, const char* outname)
   int in = ::open(inname, O_RDONLY);
   if (in < 0)
     {
-      gold_warning(_("%s: can't open (%s)\n"), inname, strerror(errno));
+      gold_warning(_("%s: can't open (%s)"), inname, strerror(errno));
       return false;
     }
   int out = ::open(outname, O_CREAT | O_TRUNC | O_WRONLY, 0600);
   if (out < 0)
     {
-      gold_warning(_("%s: can't create (%s)\n"), outname, strerror(errno));
+      gold_warning(_("%s: can't create (%s)"), outname, strerror(errno));
       ::close(in);
       return false;
     }
   ssize_t len;
   while ((len = ::read(in, buf, sizeof(buf))) > 0)
-    static_cast<void>(::write(out, buf, len));
+    {
+      if (::write(out, buf, len) != len)
+       {
+         gold_warning(_("%s: write error while making copy of file (%s)"),
+                      inname, strerror(errno));
+         break;
+        }
+    }
   ::close(in);
   ::close(out);
   return true;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]