File icu-error-reporting.diff of Package icu

Date: 2014-08-13 15:39:48.523887951 +0200
From: Jan Engelhardt <jengelh@inai.de>

Error messages are totally useless without the actual error cause!
---
 source/tools/toolutil/package.cpp  |    5 +++--
 source/tools/toolutil/writesrc.cpp |    6 ++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

Index: icu/source/tools/toolutil/package.cpp
===================================================================
--- icu.orig/source/tools/toolutil/package.cpp
+++ icu/source/tools/toolutil/package.cpp
@@ -35,6 +35,7 @@
 #include "package.h"
 #include "cmemory.h"
 
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -748,7 +749,7 @@ Package::writePackage(const char *filena
     // create the file and write its contents
     file=fopen(filename, "wb");
     if(file==nullptr) {
-        fprintf(stderr, "icupkg: unable to create file \"%s\"\n", filename);
+        fprintf(stderr, "icupkg: unable to create file \"%s\": %s\n", filename, strerror(errno));
         exit(U_FILE_ACCESS_ERROR);
     }
 
@@ -1169,7 +1170,7 @@ Package::extractItem(const char *filesPa
     makeFullFilenameAndDirs(filesPath, outName, filename, static_cast<int32_t>(sizeof(filename)));
     file=fopen(filename, "wb");
     if(file==nullptr) {
-        fprintf(stderr, "icupkg: unable to create file \"%s\"\n", filename);
+        fprintf(stderr, "icupkg: unable to create file \"%s\": %s\n", filename, strerror(errno));
         exit(U_FILE_ACCESS_ERROR);
     }
     fileLength = static_cast<int32_t>(fwrite(pItem->data, 1, pItem->length, file));
Index: icu/source/tools/toolutil/writesrc.cpp
===================================================================
--- icu.orig/source/tools/toolutil/writesrc.cpp
+++ icu/source/tools/toolutil/writesrc.cpp
@@ -18,7 +18,9 @@
 *   Helper functions for writing source code for data.
 */
 
+#include <errno.h>
 #include <stdio.h>
+#include <string.h>
 #include <time.h>
 
 // The C99 standard suggested that C++ implementations not define PRId64 etc. constants
@@ -75,8 +77,8 @@ usrc_createWithoutHeader(const char *pat
     if (f==nullptr) {
         fprintf(
             stderr,
-            "usrc_create(%s, %s): unable to create file\n",
-            path!=nullptr ? path : "", filename);
+            "usrc_create(%s, %s): unable to create file: %s\n",
+            path!=nullptr ? path : "", filename, strerror(errno));
     }
     return f;
 }
openSUSE Build Service is sponsored by