util: Standardize console output in the m5 writefile command.
authorGabe Black <gabeblack@google.com>
Wed, 8 Apr 2020 09:28:29 +0000 (02:28 -0700)
committerGabe Black <gabeblack@google.com>
Mon, 27 Jul 2020 08:29:51 +0000 (08:29 +0000)
When the command reports an error, it should then exit(2) and not just
return as if everything worked. When printing the number of bytes
written or the file being opened, it should write this non-error message
to cout, and not cerr.

Also used proper capitalization and punctuation in a couple messages.

Change-Id: I2c0d6592357965ed2eee8f090c8b3d530b354b9f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27627
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
util/m5/src/command/writefile.cc

index bef193296e9ba501ea73389a90e3c195585a3919..7771dfe0368f24cd6a345117a221cdedc18ffd17 100644 (file)
@@ -26,6 +26,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <errno.h>
+
 #include <cstring>
 #include <fstream>
 #include <iostream>
@@ -41,12 +43,13 @@ void
 write_file(const DispatchTable &dt, const std::string &filename,
            const std::string &host_filename)
 {
-    std::cerr << "opening " << filename << std::endl;
+    std::cout << "Opening \"" << filename << "\"." << std::endl;
     std::ifstream src(filename, std::ios_base::in | std::ios_base::binary);
 
     if (!src) {
-        std::cerr << "error opening " << filename << std::endl;
-        return;
+        std::cerr << "Error opening \"" << filename << "\": " <<
+            strerror(errno) << std::endl;
+        exit(2);
     }
 
     char buf[256 * 1024];
@@ -58,8 +61,11 @@ write_file(const DispatchTable &dt, const std::string &filename,
         src.seekg(offset);
         src.read(buf, sizeof(buf));
         int len = src.gcount();
-        if (!src && !src.eof())
-            break;
+        if (!src && !src.eof()) {
+            std::cerr << "Error reading \"" << filename << "\": " <<
+                strerror(errno) << std::endl;
+            exit(2);
+        }
         char *wbuf = buf;
         while (len) {
             int bytes = (*dt.m5_write_file)(
@@ -71,7 +77,7 @@ write_file(const DispatchTable &dt, const std::string &filename,
         if (src.eof())
             break;
     }
-    std::cerr << "Wrote " << offset << " bytes." << std::endl;
+    std::cout << "Wrote " << offset << " bytes." << std::endl;
 }
 
 bool