X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/51004dcb01e06fef634b61be77ed73dd61cb6db9..2ca993e82fb37b597a3c73ecd1586a139a6579c5:/icuSources/tools/toolutil/pkg_icu.cpp diff --git a/icuSources/tools/toolutil/pkg_icu.cpp b/icuSources/tools/toolutil/pkg_icu.cpp index 87ed0914..471b1d45 100644 --- a/icuSources/tools/toolutil/pkg_icu.cpp +++ b/icuSources/tools/toolutil/pkg_icu.cpp @@ -1,9 +1,10 @@ /****************************************************************************** - * Copyright (C) 2008-2012, International Business Machines + * Copyright (C) 2008-2015, International Business Machines * Corporation and others. All Rights Reserved. ******************************************************************************* */ #include "unicode/utypes.h" +#include "unicode/localpointer.h" #include "unicode/putil.h" #include "cstring.h" #include "toolutil.h" @@ -16,9 +17,6 @@ #include #include - -#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) - // read a file list -------------------------------------------------------- *** U_NAMESPACE_USE @@ -38,7 +36,7 @@ isListTextFile(const char *listname) { const char *listNameEnd=strchr(listname, 0); const char *suffix; int32_t i, length; - for(i=0; ilength && 0==memcmp(listNameEnd-length, suffix, length)) { @@ -135,6 +133,8 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag fclose(file); } else if((listNameEnd-listname)>4 && 0==memcmp(listNameEnd-4, ".dat", 4)) { // read the ICU .dat package + // Accept a .dat file whose name differs from the ToC prefixes. + listPkg->setAutoPrefix(); listPkg->readPackage(listname); } else { // list the single file itself @@ -150,33 +150,25 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag U_CAPI int U_EXPORT2 writePackageDatFile(const char *outFilename, const char *outComment, const char *sourcePath, const char *addList, Package *pkg, char outType) { - Package *addListPkg = NULL; - UBool pkgDelete = FALSE; + LocalPointer ownedPkg; + LocalPointer addListPkg; if (pkg == NULL) { - pkg = new Package; - if(pkg == NULL) { + ownedPkg.adoptInstead(new Package); + if(ownedPkg.isNull()) { fprintf(stderr, "icupkg: not enough memory\n"); return U_MEMORY_ALLOCATION_ERROR; } + pkg = ownedPkg.getAlias(); - addListPkg = readList(sourcePath, addList, TRUE, NULL); - if(addListPkg != NULL) { + addListPkg.adoptInstead(readList(sourcePath, addList, TRUE, NULL)); + if(addListPkg.isValid()) { pkg->addItems(*addListPkg); } else { return U_ILLEGAL_ARGUMENT_ERROR; } - - pkgDelete = TRUE; } pkg->writePackage(outFilename, outType, outComment); - - if (pkgDelete) { - delete pkg; - delete addListPkg; - } - return 0; } -