Date: 2014-08-13 15:39:48.523887951 +0200 From: Jan Engelhardt 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 #include #include #include @@ -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, (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=(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 #include +#include #include // 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; }