Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: source/tools/pkgdata/pkgdata.cpp

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/tools/makeconv/makeconv.c ('k') | source/tools/toolutil/Makefile.in » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /****************************************************************************** 1 /******************************************************************************
2 * Copyright (C) 2000-2013, International Business Machines 2 * Copyright (C) 2000-2014, International Business Machines
3 * Corporation and others. All Rights Reserved. 3 * Corporation and others. All Rights Reserved.
4 ******************************************************************************* 4 *******************************************************************************
5 * file name: pkgdata.cpp 5 * file name: pkgdata.cpp
6 * encoding: ANSI X3.4 (1968) 6 * encoding: ANSI X3.4 (1968)
7 * tab size: 8 (not used) 7 * tab size: 8 (not used)
8 * indentation:4 8 * indentation:4
9 * 9 *
10 * created on: 2000may15 10 * created on: 2000may15
11 * created by: Steven \u24C7 Loomis 11 * created by: Steven \u24C7 Loomis
12 * 12 *
(...skipping 23 matching lines...) Expand all
36 #include "toolutil.h" 36 #include "toolutil.h"
37 #include "unicode/uclean.h" 37 #include "unicode/uclean.h"
38 #include "unewdata.h" 38 #include "unewdata.h"
39 #include "uoptions.h" 39 #include "uoptions.h"
40 #include "package.h" 40 #include "package.h"
41 #include "pkg_icu.h" 41 #include "pkg_icu.h"
42 #include "pkg_genc.h" 42 #include "pkg_genc.h"
43 #include "pkg_gencmn.h" 43 #include "pkg_gencmn.h"
44 #include "flagparser.h" 44 #include "flagparser.h"
45 #include "filetools.h" 45 #include "filetools.h"
46 #include "charstr.h"
46 47
47 #if U_HAVE_POPEN 48 #if U_HAVE_POPEN
48 # include <unistd.h> 49 # include <unistd.h>
49 #endif 50 #endif
50 51
51 #include <stdio.h> 52 #include <stdio.h>
52 #include <stdlib.h> 53 #include <stdlib.h>
53 54
54 U_CDECL_BEGIN 55 U_CDECL_BEGIN
55 #include "pkgtypes.h" 56 #include "pkgtypes.h"
(...skipping 10 matching lines...) Expand all
66 static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling=F ALSE); 67 static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling=F ALSE);
67 static int32_t pkg_installLibrary(const char *installDir, const char *dir, UBool noVersion); 68 static int32_t pkg_installLibrary(const char *installDir, const char *dir, UBool noVersion);
68 static int32_t pkg_installFileMode(const char *installDir, const char *srcDir, c onst char *fileListName); 69 static int32_t pkg_installFileMode(const char *installDir, const char *srcDir, c onst char *fileListName);
69 static int32_t pkg_installCommonMode(const char *installDir, const char *fileNam e); 70 static int32_t pkg_installCommonMode(const char *installDir, const char *fileNam e);
70 71
71 #ifdef BUILD_DATA_WITHOUT_ASSEMBLY 72 #ifdef BUILD_DATA_WITHOUT_ASSEMBLY
72 static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD ir, const char mode); 73 static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD ir, const char mode);
73 #endif 74 #endif
74 75
75 static int32_t pkg_createWithAssemblyCode(const char *targetDir, const char mode , const char *gencFilePath); 76 static int32_t pkg_createWithAssemblyCode(const char *targetDir, const char mode , const char *gencFilePath);
76 static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c onst char *objectFile, char *command = NULL); 77 static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c onst char *objectFile, char *command = NULL, UBool specialHandling=FALSE);
77 static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UB ool reverseExt); 78 static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UB ool reverseExt);
78 static void createFileNames(UPKGOptions *o, const char mode, const char *version _major, const char *version, const char *libName, const UBool reverseExt, UBool noVersion); 79 static void createFileNames(UPKGOptions *o, const char mode, const char *version _major, const char *version, const char *libName, const UBool reverseExt, UBool noVersion);
79 static int32_t initializePkgDataFlags(UPKGOptions *o); 80 static int32_t initializePkgDataFlags(UPKGOptions *o);
80 81
81 static int32_t pkg_getOptionsFromICUConfig(UBool verbose, UOption *option); 82 static int32_t pkg_getOptionsFromICUConfig(UBool verbose, UOption *option);
82 static int runCommand(const char* command, UBool specialHandling=FALSE); 83 static int runCommand(const char* command, UBool specialHandling=FALSE);
83 84
84 #define IN_COMMON_MODE(mode) (mode == 'a' || mode == 'c') 85 #define IN_COMMON_MODE(mode) (mode == 'a' || mode == 'c')
85 #define IN_DLL_MODE(mode) (mode == 'd' || mode == 'l') 86 #define IN_DLL_MODE(mode) (mode == 'd' || mode == 'l')
86 #define IN_STATIC_MODE(mode) (mode == 's') 87 #define IN_STATIC_MODE(mode) (mode == 's')
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 enum { 197 enum {
197 LIB_FILE, 198 LIB_FILE,
198 LIB_FILE_VERSION_MAJOR, 199 LIB_FILE_VERSION_MAJOR,
199 LIB_FILE_VERSION, 200 LIB_FILE_VERSION,
200 LIB_FILE_VERSION_TMP, 201 LIB_FILE_VERSION_TMP,
201 #if U_PLATFORM == U_PF_CYGWIN 202 #if U_PLATFORM == U_PF_CYGWIN
202 LIB_FILE_CYGWIN, 203 LIB_FILE_CYGWIN,
203 LIB_FILE_CYGWIN_VERSION, 204 LIB_FILE_CYGWIN_VERSION,
204 #elif U_PLATFORM == U_PF_MINGW 205 #elif U_PLATFORM == U_PF_MINGW
205 LIB_FILE_MINGW, 206 LIB_FILE_MINGW,
207 #elif U_PLATFORM == U_PF_OS390
208 LIB_FILE_OS390BATCH_MAJOR,
209 LIB_FILE_OS390BATCH_VERSION,
206 #endif 210 #endif
207 LIB_FILENAMES_SIZE 211 LIB_FILENAMES_SIZE
208 }; 212 };
209 static char libFileNames[LIB_FILENAMES_SIZE][256]; 213 static char libFileNames[LIB_FILENAMES_SIZE][256];
210 214
211 static UPKGOptions *pkg_checkFlag(UPKGOptions *o); 215 static UPKGOptions *pkg_checkFlag(UPKGOptions *o);
212 216
213 const char options_help[][320]={ 217 const char options_help[][320]={
214 "Set the data name", 218 "Set the data name",
215 #ifdef U_MAKE_IS_NMAKE 219 #ifdef U_MAKE_IS_NMAKE
(...skipping 10 matching lines...) Expand all
226 "Specify the destination directory for files", 230 "Specify the destination directory for files",
227 "Force rebuilding of all data", 231 "Force rebuilding of all data",
228 "Specify temporary dir (default: output dir)", 232 "Specify temporary dir (default: output dir)",
229 "Install the data (specify target)", 233 "Install the data (specify target)",
230 "Specify a custom source directory", 234 "Specify a custom source directory",
231 "Specify a custom entrypoint name (default: short name)", 235 "Specify a custom entrypoint name (default: short name)",
232 "Specify a version when packaging in dll or static mode", 236 "Specify a version when packaging in dll or static mode",
233 "Add package to all file names if not present", 237 "Add package to all file names if not present",
234 "Library name to build (if different than package name)", 238 "Library name to build (if different than package name)",
235 "Quite mode. (e.g. Do not output a readme file for static libraries)", 239 "Quite mode. (e.g. Do not output a readme file for static libraries)",
236 "Build the data without assembly code" 240 "Build the data without assembly code",
241 "Build PDS dataset (zOS build only)"
237 }; 242 };
238 243
239 const char *progname = "PKGDATA"; 244 const char *progname = "PKGDATA";
240 245
241 int 246 int
242 main(int argc, char* argv[]) { 247 main(int argc, char* argv[]) {
243 int result = 0; 248 int result = 0;
244 /* FileStream *out; */ 249 /* FileStream *out; */
245 UPKGOptions o; 250 UPKGOptions o;
246 CharList *tail; 251 CharList *tail;
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 o.libName = o.shortName; 372 o.libName = o.shortName;
368 } 373 }
369 374
370 if(options[QUIET].doesOccur) { 375 if(options[QUIET].doesOccur) {
371 o.quiet = TRUE; 376 o.quiet = TRUE;
372 } else { 377 } else {
373 o.quiet = FALSE; 378 o.quiet = FALSE;
374 } 379 }
375 380
376 if(options[PDS_BUILD].doesOccur) { 381 if(options[PDS_BUILD].doesOccur) {
382 #if U_PLATFORM == U_PF_OS390
377 o.pdsbuild = TRUE; 383 o.pdsbuild = TRUE;
384 #else
385 o.pdsbuild = FALSE;
386 fprintf(stdout, "Warning: You are using the -z option which only works on z/OS.\n");
387
388 #endif
378 } else { 389 } else {
379 o.pdsbuild = FALSE; 390 o.pdsbuild = FALSE;
380 } 391 }
381 392
382 o.verbose = options[VERBOSE].doesOccur; 393 o.verbose = options[VERBOSE].doesOccur;
383 394
384 395
385 #if !defined(WINDOWS_WITH_MSVC) || defined(USING_CYGWIN) /* on UNIX, we'll just include the file... */ 396 #if !defined(WINDOWS_WITH_MSVC) || defined(USING_CYGWIN) /* on UNIX, we'll just include the file... */
386 if (options[BLDOPT].doesOccur) { 397 if (options[BLDOPT].doesOccur) {
387 o.options = options[BLDOPT].value; 398 o.options = options[BLDOPT].value;
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 /* Certain platforms have different library extension ordering. (e.g . libicudata.##.so vs libicudata.so.##) 650 /* Certain platforms have different library extension ordering. (e.g . libicudata.##.so vs libicudata.so.##)
640 * reverseExt is FALSE if the suffix should be the version number. 651 * reverseExt is FALSE if the suffix should be the version number.
641 */ 652 */
642 if (pkgDataFlags[LIB_EXT_ORDER][uprv_strlen(pkgDataFlags[LIB_EXT_ORD ER])-1] == pkgDataFlags[SO_EXT][uprv_strlen(pkgDataFlags[SO_EXT])-1]) { 653 if (pkgDataFlags[LIB_EXT_ORDER][uprv_strlen(pkgDataFlags[LIB_EXT_ORD ER])-1] == pkgDataFlags[SO_EXT][uprv_strlen(pkgDataFlags[SO_EXT])-1]) {
643 reverseExt = TRUE; 654 reverseExt = TRUE;
644 } 655 }
645 #endif 656 #endif
646 /* Using the base libName and version number, generate the library f ile names. */ 657 /* Using the base libName and version number, generate the library f ile names. */
647 createFileNames(o, mode, version_major, o->version == NULL ? "" : o- >version, o->libName, reverseExt, noVersion); 658 createFileNames(o, mode, version_major, o->version == NULL ? "" : o- >version, o->libName, reverseExt, noVersion);
648 659
649 if ((o->version!=NULL || IN_STATIC_MODE(mode)) && o->rebuild == FALS E) { 660 if ((o->version!=NULL || IN_STATIC_MODE(mode)) && o->rebuild == FALS E && o->pdsbuild == FALSE) {
650 /* Check to see if a previous built data library file exists and check if it is the latest. */ 661 /* Check to see if a previous built data library file exists and check if it is the latest. */
651 sprintf(checkLibFile, "%s%s", targetDir, libFileNames[LIB_FILE_V ERSION]); 662 sprintf(checkLibFile, "%s%s", targetDir, libFileNames[LIB_FILE_V ERSION]);
652 if (T_FileStream_file_exists(checkLibFile)) { 663 if (T_FileStream_file_exists(checkLibFile)) {
653 if (isFileModTimeLater(checkLibFile, o->srcDir, TRUE) && isF ileModTimeLater(checkLibFile, o->options)) { 664 if (isFileModTimeLater(checkLibFile, o->srcDir, TRUE) && isF ileModTimeLater(checkLibFile, o->options)) {
654 if (o->install != NULL) { 665 if (o->install != NULL) {
655 if(o->verbose) { 666 if(o->verbose) {
656 fprintf(stdout, "# Installing already-built library into %s\n", o->install); 667 fprintf(stdout, "# Installing already-built library into %s\n", o->install);
657 } 668 }
658 result = pkg_installLibrary(o->install, targetDir, noV ersion); 669 result = pkg_installLibrary(o->install, targetDir, noV ersion);
659 } else { 670 } else {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 } 757 }
747 result = pkg_archiveLibrary(targetDir, o->version, reverseExt); 758 result = pkg_archiveLibrary(targetDir, o->version, reverseExt);
748 if (result != 0) { 759 if (result != 0) {
749 fprintf(stderr, "Error creating data archive library file.\n "); 760 fprintf(stderr, "Error creating data archive library file.\n ");
750 return result; 761 return result;
751 } 762 }
752 #if U_PLATFORM != U_PF_OS400 763 #if U_PLATFORM != U_PF_OS400
753 if (!noVersion) { 764 if (!noVersion) {
754 /* Create symbolic links for the final library file. */ 765 /* Create symbolic links for the final library file. */
755 #if U_PLATFORM == U_PF_OS390 766 #if U_PLATFORM == U_PF_OS390
756 if (!o->pdsbuild) { 767 result = pkg_createSymLinks(targetDir, o->pdsbuild);
757 result = pkg_createSymLinks(targetDir, noVersion);
758 }
759 #else 768 #else
760 result = pkg_createSymLinks(targetDir, noVersion); 769 result = pkg_createSymLinks(targetDir, noVersion);
761 #endif 770 #endif
762 if (result != 0) { 771 if (result != 0) {
763 fprintf(stderr, "Error creating symbolic links of the da ta library file.\n"); 772 fprintf(stderr, "Error creating symbolic links of the da ta library file.\n");
764 return result; 773 return result;
765 } 774 }
766 } 775 }
767 #endif 776 #endif
768 } /* !IN_STATIC_MODE */ 777 } /* !IN_STATIC_MODE */
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 858
850 return result; 859 return result;
851 } 860 }
852 861
853 862
854 /* 863 /*
855 * Given the base libName and version numbers, generate the libary file names an d store it in libFileNames. 864 * Given the base libName and version numbers, generate the libary file names an d store it in libFileNames.
856 * Depending on the configuration, the library name may either end with version number or shared object suffix. 865 * Depending on the configuration, the library name may either end with version number or shared object suffix.
857 */ 866 */
858 static void createFileNames(UPKGOptions *o, const char mode, const char *version _major, const char *version, const char *libName, UBool reverseExt, UBool noVers ion) { 867 static void createFileNames(UPKGOptions *o, const char mode, const char *version _major, const char *version, const char *libName, UBool reverseExt, UBool noVers ion) {
868 const char* FILE_EXTENSION_SEP = uprv_strlen(pkgDataFlags[SO_EXT]) == 0 ? "" : ".";
869 const char* FILE_SUFFIX = pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "";
870
859 #if U_PLATFORM == U_PF_MINGW 871 #if U_PLATFORM == U_PF_MINGW
860 /* MinGW does not need the library prefix when building in dll mode. */ 872 /* MinGW does not need the library prefix when building in dll mode. */
861 if (IN_DLL_MODE(mode)) { 873 if (IN_DLL_MODE(mode)) {
862 sprintf(libFileNames[LIB_FILE], "%s", libName); 874 sprintf(libFileNames[LIB_FILE], "%s", libName);
863 } else { 875 } else {
864 sprintf(libFileNames[LIB_FILE], "%s%s", 876 sprintf(libFileNames[LIB_FILE], "%s%s",
865 pkgDataFlags[LIBPREFIX], 877 pkgDataFlags[LIBPREFIX],
866 libName); 878 libName);
867 } 879 }
868 #else 880 #else
869 sprintf(libFileNames[LIB_FILE], "%s%s", 881 sprintf(libFileNames[LIB_FILE], "%s%s",
870 pkgDataFlags[LIBPREFIX], 882 pkgDataFlags[LIBPREFIX],
871 libName); 883 libName);
872 #endif 884 #endif
873 885
874 if(o->verbose) { 886 if(o->verbose) {
875 fprintf(stdout, "# libFileName[LIB_FILE] = %s\n", libFileNames[LIB_FIL E]); 887 fprintf(stdout, "# libFileName[LIB_FILE] = %s\n", libFileNames[LIB_FIL E]);
876 } 888 }
877 889
878 #if U_PLATFORM == U_PF_MINGW 890 #if U_PLATFORM == U_PF_MINGW
879 sprintf(libFileNames[LIB_FILE_MINGW], "%s%s.lib", pkgDataFlags[LIBPREFIX ], libName); 891 sprintf(libFileNames[LIB_FILE_MINGW], "%s%s.lib", pkgDataFlags[LIBPREFIX ], libName);
880 #elif U_PLATFORM == U_PF_CYGWIN 892 #elif U_PLATFORM == U_PF_CYGWIN
881 sprintf(libFileNames[LIB_FILE_CYGWIN], "cyg%s.%s", 893 sprintf(libFileNames[LIB_FILE_CYGWIN], "cyg%s%s%s",
882 libName, 894 libName,
895 FILE_EXTENSION_SEP,
883 pkgDataFlags[SO_EXT]); 896 pkgDataFlags[SO_EXT]);
884 sprintf(libFileNames[LIB_FILE_CYGWIN_VERSION], "cyg%s%s.%s", 897 sprintf(libFileNames[LIB_FILE_CYGWIN_VERSION], "cyg%s%s%s%s",
885 libName, 898 libName,
886 version_major, 899 version_major,
900 FILE_EXTENSION_SEP,
887 pkgDataFlags[SO_EXT]); 901 pkgDataFlags[SO_EXT]);
888 902
889 uprv_strcat(pkgDataFlags[SO_EXT], "."); 903 uprv_strcat(pkgDataFlags[SO_EXT], ".");
890 uprv_strcat(pkgDataFlags[SO_EXT], pkgDataFlags[A_EXT]); 904 uprv_strcat(pkgDataFlags[SO_EXT], pkgDataFlags[A_EXT]);
891 #elif U_PLATFORM == U_PF_OS400 || defined(_AIX) 905 #elif U_PLATFORM == U_PF_OS400 || defined(_AIX)
892 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s.%s", 906 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s",
893 libFileNames[LIB_FILE], 907 libFileNames[LIB_FILE],
908 FILE_EXTENSION_SEP,
894 pkgDataFlags[SOBJ_EXT]); 909 pkgDataFlags[SOBJ_EXT]);
895 #elif U_PLATFROM == U_PF_OS390 910 #elif U_PLATFORM == U_PF_OS390
896 if (o->pdsbuild) { 911 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s%s%s",
897 sprintf(libFileNames[LIB_FILE], "%s", 912 libFileNames[LIB_FILE],
898 libName); 913 pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "",
899 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "\"%s\"", 914 reverseExt ? version : pkgDataFlags[SOBJ_EXT],
900 libFileNames[LIB_FILE]); 915 FILE_EXTENSION_SEP,
901 } else { 916 reverseExt ? pkgDataFlags[SOBJ_EXT] : version);
902 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s.%s", 917
903 libFileNames[LIB_FILE], 918 sprintf(libFileNames[LIB_FILE_OS390BATCH_VERSION], "%s%s.x",
904 pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "", 919 libFileNames[LIB_FILE],
905 reverseExt ? version : pkgDataFlags[SOBJ_EXT], 920 version);
906 reverseExt ? pkgDataFlags[SOBJ_EXT] : version); 921 sprintf(libFileNames[LIB_FILE_OS390BATCH_MAJOR], "%s%s.x",
907 } 922 libFileNames[LIB_FILE],
923 version_major);
908 #else 924 #else
909 if (noVersion && !reverseExt) { 925 if (noVersion && !reverseExt) {
910 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s", 926 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s",
911 libFileNames[LIB_FILE], 927 libFileNames[LIB_FILE],
912 pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "", 928 FILE_SUFFIX,
913 pkgDataFlags[SOBJ_EXT]); 929 pkgDataFlags[SOBJ_EXT]);
914 } else { 930 } else {
915 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s.%s", 931 sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s%s%s",
916 libFileNames[LIB_FILE], 932 libFileNames[LIB_FILE],
917 pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "", 933 FILE_SUFFIX,
918 reverseExt ? version : pkgDataFlags[SOBJ_EXT], 934 reverseExt ? version : pkgDataFlags[SOBJ_EXT],
935 FILE_EXTENSION_SEP,
919 reverseExt ? pkgDataFlags[SOBJ_EXT] : version); 936 reverseExt ? pkgDataFlags[SOBJ_EXT] : version);
920 } 937 }
921 #endif 938 #endif
922 if (noVersion && !reverseExt) { 939 if (noVersion && !reverseExt) {
923 sprintf(libFileNames[LIB_FILE_VERSION_MAJOR], "%s%s%s", 940 sprintf(libFileNames[LIB_FILE_VERSION_MAJOR], "%s%s%s",
924 libFileNames[LIB_FILE], 941 libFileNames[LIB_FILE],
925 pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "", 942 FILE_SUFFIX,
926 pkgDataFlags[SO_EXT]); 943 pkgDataFlags[SO_EXT]);
927 944
928 sprintf(libFileNames[LIB_FILE_VERSION], "%s%s%s", 945 sprintf(libFileNames[LIB_FILE_VERSION], "%s%s%s",
929 libFileNames[LIB_FILE], 946 libFileNames[LIB_FILE],
930 pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "", 947 FILE_SUFFIX,
931 pkgDataFlags[SO_EXT]); 948 pkgDataFlags[SO_EXT]);
932 } else { 949 } else {
933 sprintf(libFileNames[LIB_FILE_VERSION_MAJOR], "%s%s%s.%s", 950 sprintf(libFileNames[LIB_FILE_VERSION_MAJOR], "%s%s%s%s%s",
934 libFileNames[LIB_FILE], 951 libFileNames[LIB_FILE],
935 pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "", 952 FILE_SUFFIX,
936 reverseExt ? version_major : pkgDataFlags[SO_EXT], 953 reverseExt ? version_major : pkgDataFlags[SO_EXT],
954 FILE_EXTENSION_SEP,
937 reverseExt ? pkgDataFlags[SO_EXT] : version_major); 955 reverseExt ? pkgDataFlags[SO_EXT] : version_major);
938 956
939 sprintf(libFileNames[LIB_FILE_VERSION], "%s%s%s.%s", 957 sprintf(libFileNames[LIB_FILE_VERSION], "%s%s%s%s%s",
940 libFileNames[LIB_FILE], 958 libFileNames[LIB_FILE],
941 pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "", 959 FILE_SUFFIX,
942 reverseExt ? version : pkgDataFlags[SO_EXT], 960 reverseExt ? version : pkgDataFlags[SO_EXT],
961 FILE_EXTENSION_SEP,
943 reverseExt ? pkgDataFlags[SO_EXT] : version); 962 reverseExt ? pkgDataFlags[SO_EXT] : version);
944 } 963 }
945 964
946 if(o->verbose) { 965 if(o->verbose) {
947 fprintf(stdout, "# libFileName[LIB_FILE_VERSION] = %s\n", libFileNames [LIB_FILE_VERSION]); 966 fprintf(stdout, "# libFileName[LIB_FILE_VERSION] = %s\n", libFileNames [LIB_FILE_VERSION]);
948 } 967 }
949 968
950 #if U_PF_MINGW <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN 969 #if U_PF_MINGW <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
951 /* Cygwin and MinGW only deals with the version major number. */ 970 /* Cygwin and MinGW only deals with the version major number. */
952 uprv_strcpy(libFileNames[LIB_FILE_VERSION_TMP], libFileNames[LIB_FILE_VE RSION_MAJOR]); 971 uprv_strcpy(libFileNames[LIB_FILE_VERSION_TMP], libFileNames[LIB_FILE_VE RSION_MAJOR]);
953 #endif 972 #endif
954 973
955 if(IN_STATIC_MODE(mode)) { 974 if(IN_STATIC_MODE(mode)) {
956 sprintf(libFileNames[LIB_FILE_VERSION], "%s.%s", libFileNames[LIB_FI LE], pkgDataFlags[A_EXT]); 975 sprintf(libFileNames[LIB_FILE_VERSION], "%s.%s", libFileNames[LIB_FI LE], pkgDataFlags[A_EXT]);
957 libFileNames[LIB_FILE_VERSION_MAJOR][0]=0; 976 libFileNames[LIB_FILE_VERSION_MAJOR][0]=0;
958 if(o->verbose) { 977 if(o->verbose) {
959 fprintf(stdout, "# libFileName[LIB_FILE_VERSION] = %s (static)\n" , libFileNames[LIB_FILE_VERSION]); 978 fprintf(stdout, "# libFileName[LIB_FILE_VERSION] = %s (static)\n" , libFileNames[LIB_FILE_VERSION]);
960 } 979 }
961 } 980 }
962 } 981 }
963 982
964 /* Create the symbolic links for the final library file. */ 983 /* Create the symbolic links for the final library file. */
965 static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling) { 984 static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling) {
966 int32_t result = 0; 985 int32_t result = 0;
967 char cmd[LARGE_BUFFER_MAX_SIZE]; 986 char cmd[LARGE_BUFFER_MAX_SIZE];
968 char name1[SMALL_BUFFER_MAX_SIZE]; /* symlink file name */ 987 char name1[SMALL_BUFFER_MAX_SIZE]; /* symlink file name */
969 char name2[SMALL_BUFFER_MAX_SIZE]; /* file name to symlink */ 988 char name2[SMALL_BUFFER_MAX_SIZE]; /* file name to symlink */
989 const char* FILE_EXTENSION_SEP = uprv_strlen(pkgDataFlags[SO_EXT]) == 0 ? "" : ".";
970 990
971 #if !defined(USING_CYGWIN) && U_PLATFORM != U_PF_MINGW 991 #if !defined(USING_CYGWIN) && U_PLATFORM != U_PF_MINGW
972 /* No symbolic link to make. */ 992 /* No symbolic link to make. */
973 if (uprv_strlen(libFileNames[LIB_FILE_VERSION]) == 0 || uprv_strlen(libFileN ames[LIB_FILE_VERSION_MAJOR]) == 0 || 993 if (uprv_strlen(libFileNames[LIB_FILE_VERSION]) == 0 || uprv_strlen(libFileN ames[LIB_FILE_VERSION_MAJOR]) == 0 ||
974 uprv_strcmp(libFileNames[LIB_FILE_VERSION], libFileNames[LIB_FILE_VERSIO N_MAJOR]) == 0) { 994 uprv_strcmp(libFileNames[LIB_FILE_VERSION], libFileNames[LIB_FILE_VERSIO N_MAJOR]) == 0) {
975 return result; 995 return result;
976 } 996 }
977 997
978 sprintf(cmd, "cd %s && %s %s && %s %s %s", 998 sprintf(cmd, "cd %s && %s %s && %s %s %s",
979 targetDir, 999 targetDir,
980 RM_CMD, 1000 RM_CMD,
981 libFileNames[LIB_FILE_VERSION_MAJOR], 1001 libFileNames[LIB_FILE_VERSION_MAJOR],
982 LN_CMD, 1002 LN_CMD,
983 libFileNames[LIB_FILE_VERSION], 1003 libFileNames[LIB_FILE_VERSION],
984 libFileNames[LIB_FILE_VERSION_MAJOR]); 1004 libFileNames[LIB_FILE_VERSION_MAJOR]);
985 result = runCommand(cmd); 1005 result = runCommand(cmd);
986 if (result != 0) { 1006 if (result != 0) {
987 fprintf(stderr, "Error creating symbolic links. Failed command: %s\n", c md); 1007 fprintf(stderr, "Error creating symbolic links. Failed command: %s\n", c md);
988 return result; 1008 return result;
989 } 1009 }
990 #endif 1010 #endif
991 1011
992 if (specialHandling) { 1012 if (specialHandling) {
993 #if U_PLATFORM == U_PF_CYGWIN 1013 #if U_PLATFORM == U_PF_CYGWIN
994 sprintf(name1, "%s", libFileNames[LIB_FILE_CYGWIN]); 1014 sprintf(name1, "%s", libFileNames[LIB_FILE_CYGWIN]);
995 sprintf(name2, "%s", libFileNames[LIB_FILE_CYGWIN_VERSION]); 1015 sprintf(name2, "%s", libFileNames[LIB_FILE_CYGWIN_VERSION]);
1016 #elif U_PLATFORM == U_PF_OS390
1017 /* Create the symbolic links for the import data */
1018 /* Use the cmd buffer to store path to import data file to check its exi stence */
1019 sprintf(cmd, "%s/%s", targetDir, libFileNames[LIB_FILE_OS390BATCH_VERSIO N]);
1020 if (T_FileStream_file_exists(cmd)) {
1021 sprintf(cmd, "cd %s && %s %s && %s %s %s",
1022 targetDir,
1023 RM_CMD,
1024 libFileNames[LIB_FILE_OS390BATCH_MAJOR],
1025 LN_CMD,
1026 libFileNames[LIB_FILE_OS390BATCH_VERSION],
1027 libFileNames[LIB_FILE_OS390BATCH_MAJOR]);
1028 result = runCommand(cmd);
1029 if (result != 0) {
1030 fprintf(stderr, "Error creating symbolic links. Failed command: %s\n", cmd);
1031 return result;
1032 }
1033
1034 sprintf(cmd, "cd %s && %s %s.x && %s %s %s.x",
1035 targetDir,
1036 RM_CMD,
1037 libFileNames[LIB_FILE],
1038 LN_CMD,
1039 libFileNames[LIB_FILE_OS390BATCH_VERSION],
1040 libFileNames[LIB_FILE]);
1041 result = runCommand(cmd);
1042 if (result != 0) {
1043 fprintf(stderr, "Error creating symbolic links. Failed command: %s\n", cmd);
1044 return result;
1045 }
1046 }
1047
1048 /* Needs to be set here because special handling skips it */
1049 sprintf(name1, "%s%s%s", libFileNames[LIB_FILE], FILE_EXTENSION_SEP, pkg DataFlags[SO_EXT]);
1050 sprintf(name2, "%s", libFileNames[LIB_FILE_VERSION]);
996 #else 1051 #else
997 goto normal_symlink_mode; 1052 goto normal_symlink_mode;
998 #endif 1053 #endif
999 } else { 1054 } else {
1000 #if U_PLATFORM != U_PF_CYGWIN 1055 #if U_PLATFORM != U_PF_CYGWIN
1001 normal_symlink_mode: 1056 normal_symlink_mode:
1002 #endif 1057 #endif
1003 sprintf(name1, "%s.%s", libFileNames[LIB_FILE], pkgDataFlags[SO_EXT]); 1058 sprintf(name1, "%s%s%s", libFileNames[LIB_FILE], FILE_EXTENSION_SEP, pkg DataFlags[SO_EXT]);
1004 sprintf(name2, "%s", libFileNames[LIB_FILE_VERSION]); 1059 sprintf(name2, "%s", libFileNames[LIB_FILE_VERSION]);
1005 } 1060 }
1006 1061
1007 sprintf(cmd, "cd %s && %s %s && %s %s %s", 1062 sprintf(cmd, "cd %s && %s %s && %s %s %s",
1008 targetDir, 1063 targetDir,
1009 RM_CMD, 1064 RM_CMD,
1010 name1, 1065 name1,
1011 LN_CMD, 1066 LN_CMD,
1012 name2, 1067 name2,
1013 name1); 1068 name1);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 pkgDataFlags[INSTALL_CMD], 1109 pkgDataFlags[INSTALL_CMD],
1055 libFileNames[LIB_FILE_CYGWIN_VERSION], 1110 libFileNames[LIB_FILE_CYGWIN_VERSION],
1056 installDir 1111 installDir
1057 ); 1112 );
1058 result = runCommand(cmd); 1113 result = runCommand(cmd);
1059 1114
1060 if (result != 0) { 1115 if (result != 0) {
1061 fprintf(stderr, "Error installing library. Failed command: %s\n", cmd); 1116 fprintf(stderr, "Error installing library. Failed command: %s\n", cmd);
1062 return result; 1117 return result;
1063 } 1118 }
1119
1120 #elif U_PLATFORM == U_PF_OS390
1121 if (T_FileStream_file_exists(libFileNames[LIB_FILE_OS390BATCH_VERSION])) {
1122 sprintf(cmd, "%s %s %s",
1123 pkgDataFlags[INSTALL_CMD],
1124 libFileNames[LIB_FILE_OS390BATCH_VERSION],
1125 installDir
1126 );
1127 result = runCommand(cmd);
1128
1129 if (result != 0) {
1130 fprintf(stderr, "Error installing library. Failed command: %s\n", cm d);
1131 return result;
1132 }
1133 }
1064 #endif 1134 #endif
1065 1135
1066 if (noVersion) { 1136 if (noVersion) {
1067 return result; 1137 return result;
1068 } else { 1138 } else {
1069 return pkg_createSymLinks(installDir, TRUE); 1139 return pkg_createSymLinks(installDir, TRUE);
1070 } 1140 }
1071 } 1141 }
1072 1142
1073 static int32_t pkg_installCommonMode(const char *installDir, const char *fileNam e) { 1143 static int32_t pkg_installCommonMode(const char *installDir, const char *fileNam e) {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1221 uprv_strcpy(libFileNames[LIB_FILE_VERSION], libFileNames[LIB_FILE_VERSIO N_TMP]); 1291 uprv_strcpy(libFileNames[LIB_FILE_VERSION], libFileNames[LIB_FILE_VERSIO N_TMP]);
1222 } 1292 }
1223 1293
1224 return result; 1294 return result;
1225 } 1295 }
1226 1296
1227 /* 1297 /*
1228 * Using the compiler information from the configuration file set by -O option, generate the library file. 1298 * Using the compiler information from the configuration file set by -O option, generate the library file.
1229 * command may be given to allow for a larger buffer for cmd. 1299 * command may be given to allow for a larger buffer for cmd.
1230 */ 1300 */
1231 static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c onst char *objectFile, char *command) { 1301 static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c onst char *objectFile, char *command, UBool specialHandling) {
1232 int32_t result = 0; 1302 int32_t result = 0;
1233 char *cmd = NULL; 1303 char *cmd = NULL;
1234 UBool freeCmd = FALSE; 1304 UBool freeCmd = FALSE;
1235 int32_t length = 0; 1305 int32_t length = 0;
1236 1306
1307 (void)specialHandling; // Suppress unused variable compiler warnings on pla tforms where all usage
1308 // of this parameter is #ifdefed out.
1309
1237 /* This is necessary because if packaging is done without assembly code, obj ectFile might be extremely large 1310 /* This is necessary because if packaging is done without assembly code, obj ectFile might be extremely large
1238 * containing many object files and so the calling function should supply a command buffer that is large 1311 * containing many object files and so the calling function should supply a command buffer that is large
1239 * enough to handle this. Otherwise, use the default size. 1312 * enough to handle this. Otherwise, use the default size.
1240 */ 1313 */
1241 if (command != NULL) { 1314 if (command != NULL) {
1242 cmd = command; 1315 cmd = command;
1243 } 1316 }
1244 1317
1245 if (IN_STATIC_MODE(mode)) { 1318 if (IN_STATIC_MODE(mode)) {
1246 if (cmd == NULL) { 1319 if (cmd == NULL) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 #endif 1393 #endif
1321 objectFile, 1394 objectFile,
1322 pkgDataFlags[LD_SONAME], 1395 pkgDataFlags[LD_SONAME],
1323 pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VER SION_MAJOR], 1396 pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VER SION_MAJOR],
1324 pkgDataFlags[RPATH_FLAGS], 1397 pkgDataFlags[RPATH_FLAGS],
1325 pkgDataFlags[BIR_FLAGS]); 1398 pkgDataFlags[BIR_FLAGS]);
1326 1399
1327 /* Generate the library file. */ 1400 /* Generate the library file. */
1328 result = runCommand(cmd); 1401 result = runCommand(cmd);
1329 1402
1330 #if U_PLATFORM == U_PF_OS390 && defined(OS390BATCH) 1403 #if U_PLATFORM == U_PF_OS390
1404 char *env_tmp;
1331 char PDS_LibName[512]; 1405 char PDS_LibName[512];
1332 if (uprv_strcmp(libFileNames[LIB_FILE],"libicudata") == 0) { 1406 char PDS_Name[512];
1333 sprintf(PDS_LibName,"%s%s%s", 1407
1408 PDS_Name[0] = 0;
1409 PDS_LibName[0] = 0;
1410 if (specialHandling && uprv_strcmp(libFileNames[LIB_FILE],"libicudata") == 0) {
1411 if (env_tmp = getenv("ICU_PDS_NAME")) {
1412 sprintf(PDS_Name, "%s%s",
1413 env_tmp,
1414 "DA");
1415 strcat(PDS_Name, getenv("ICU_PDS_NAME_SUFFIX"));
1416 } else if (env_tmp = getenv("PDS_NAME_PREFIX")) {
1417 sprintf(PDS_Name, "%s%s",
1418 env_tmp,
1419 U_ICU_VERSION_SHORT "DA");
1420 } else {
1421 sprintf(PDS_Name, "%s%s",
1422 "IXMI",
1423 U_ICU_VERSION_SHORT "DA");
1424 }
1425 } else if (!specialHandling && uprv_strcmp(libFileNames[LIB_FILE],"libic udata_stub") == 0) {
1426 if (env_tmp = getenv("ICU_PDS_NAME")) {
1427 sprintf(PDS_Name, "%s%s",
1428 env_tmp,
1429 "D1");
1430 strcat(PDS_Name, getenv("ICU_PDS_NAME_SUFFIX"));
1431 } else if (env_tmp = getenv("PDS_NAME_PREFIX")) {
1432 sprintf(PDS_Name, "%s%s",
1433 env_tmp,
1434 U_ICU_VERSION_SHORT "D1");
1435 } else {
1436 sprintf(PDS_Name, "%s%s",
1437 "IXMI",
1438 U_ICU_VERSION_SHORT "D1");
1439 }
1440 }
1441
1442 if (PDS_Name[0]) {
1443 sprintf(PDS_LibName,"%s%s%s%s%s",
1334 "\"//'", 1444 "\"//'",
1335 getenv("LOADMOD"), 1445 getenv("LOADMOD"),
1336 "(IXMI" U_ICU_VERSION_SHORT "DA)'\""); 1446 "(",
1337 } else if (uprv_strcmp(libFileNames[LIB_FILE],"libicudata_stub") == 0) { 1447 PDS_Name,
1338 sprintf(PDS_LibName,"%s%s%s", 1448 ")'\"");
1339 "\"//'", 1449 sprintf(cmd, "%s %s -o %s %s %s%s %s %s",
1340 getenv("LOADMOD"),
1341 "(IXMI" U_ICU_VERSION_SHORT "D1)'\"");
1342 sprintf(cmd, "%s %s -o %s %s %s%s %s %s",
1343 pkgDataFlags[GENLIB], 1450 pkgDataFlags[GENLIB],
1344 pkgDataFlags[LDICUDTFLAGS], 1451 pkgDataFlags[LDICUDTFLAGS],
1345 PDS_LibName, 1452 PDS_LibName,
1346 objectFile, 1453 objectFile,
1347 pkgDataFlags[LD_SONAME], 1454 pkgDataFlags[LD_SONAME],
1348 pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_ VERSION_MAJOR], 1455 pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_ VERSION_MAJOR],
1349 pkgDataFlags[RPATH_FLAGS], 1456 pkgDataFlags[RPATH_FLAGS],
1350 pkgDataFlags[BIR_FLAGS]); 1457 pkgDataFlags[BIR_FLAGS]);
1458
1459 result = runCommand(cmd);
1351 } 1460 }
1352 result = runCommand(cmd);
1353 #endif 1461 #endif
1354 } 1462 }
1355 1463
1356 if (result != 0) { 1464 if (result != 0) {
1357 fprintf(stderr, "Error generating library file. Failed command: %s\n", c md); 1465 fprintf(stderr, "Error generating library file. Failed command: %s\n", c md);
1358 } 1466 }
1359 1467
1360 if (freeCmd) { 1468 if (freeCmd) {
1361 uprv_free(cmd); 1469 uprv_free(cmd);
1362 } 1470 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1408 */ 1516 */
1409 enum { 1517 enum {
1410 DATA_PREFIX_BRKITR, 1518 DATA_PREFIX_BRKITR,
1411 DATA_PREFIX_COLL, 1519 DATA_PREFIX_COLL,
1412 DATA_PREFIX_CURR, 1520 DATA_PREFIX_CURR,
1413 DATA_PREFIX_LANG, 1521 DATA_PREFIX_LANG,
1414 DATA_PREFIX_RBNF, 1522 DATA_PREFIX_RBNF,
1415 DATA_PREFIX_REGION, 1523 DATA_PREFIX_REGION,
1416 DATA_PREFIX_TRANSLIT, 1524 DATA_PREFIX_TRANSLIT,
1417 DATA_PREFIX_ZONE, 1525 DATA_PREFIX_ZONE,
1526 DATA_PREFIX_UNIT,
1418 DATA_PREFIX_LENGTH 1527 DATA_PREFIX_LENGTH
1419 }; 1528 };
1420 1529
1421 const static char DATA_PREFIX[DATA_PREFIX_LENGTH][10] = { 1530 const static char DATA_PREFIX[DATA_PREFIX_LENGTH][10] = {
1422 "brkitr", 1531 "brkitr",
1423 "coll", 1532 "coll",
1424 "curr", 1533 "curr",
1425 "lang", 1534 "lang",
1426 "rbnf", 1535 "rbnf",
1427 "region", 1536 "region",
1428 "translit", 1537 "translit",
1429 "zone" 1538 "zone",
1539 "unit"
1430 }; 1540 };
1431 1541
1432 static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD ir, const char mode) { 1542 static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD ir, const char mode) {
1433 int32_t result = 0; 1543 int32_t result = 0;
1434 CharList *list = o->filePaths; 1544 CharList *list = o->filePaths;
1435 CharList *listNames = o->files; 1545 CharList *listNames = o->files;
1436 int32_t listSize = pkg_countCharList(list); 1546 int32_t listSize = pkg_countCharList(list);
1437 char *buffer; 1547 char *buffer;
1438 char *cmd; 1548 char *cmd;
1439 char gencmnFile[SMALL_BUFFER_MAX_SIZE] = ""; 1549 char gencmnFile[SMALL_BUFFER_MAX_SIZE] = "";
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1593 uprv_strcat(buffer, " "); 1703 uprv_strcat(buffer, " ");
1594 uprv_strcat(buffer, tempObjectFile); 1704 uprv_strcat(buffer, tempObjectFile);
1595 } else { 1705 } else {
1596 fprintf(stderr, "Error creating library without assembly code. Failed co mmand: %s\n", cmd); 1706 fprintf(stderr, "Error creating library without assembly code. Failed co mmand: %s\n", cmd);
1597 } 1707 }
1598 #endif 1708 #endif
1599 1709
1600 if (result == 0) { 1710 if (result == 0) {
1601 /* Generate the library file. */ 1711 /* Generate the library file. */
1602 #if U_PLATFORM == U_PF_OS390 1712 #if U_PLATFORM == U_PF_OS390
1603 if (o->pdsbuild && IN_DLL_MODE(mode)) { 1713 result = pkg_generateLibraryFile(targetDir, mode, buffer, cmd, (o->pdsbu ild && IN_DLL_MODE(mode)));
1604 result = pkg_generateLibraryFile("",mode, buffer, cmd);
1605 } else {
1606 result = pkg_generateLibraryFile(targetDir,mode, buffer, cmd);
1607 }
1608 #else 1714 #else
1609 result = pkg_generateLibraryFile(targetDir,mode, buffer, cmd); 1715 result = pkg_generateLibraryFile(targetDir,mode, buffer, cmd);
1610 #endif 1716 #endif
1611 } 1717 }
1612 1718
1613 uprv_free(buffer); 1719 uprv_free(buffer);
1614 uprv_free(cmd); 1720 uprv_free(cmd);
1615 1721
1616 return result; 1722 return result;
1617 } 1723 }
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
1968 T_FileStream_close(in); 2074 T_FileStream_close(in);
1969 } /* for each file list file */ 2075 } /* for each file list file */
1970 } 2076 }
1971 2077
1972 /* Try calling icu-config directly to get the option file. */ 2078 /* Try calling icu-config directly to get the option file. */
1973 static int32_t pkg_getOptionsFromICUConfig(UBool verbose, UOption *option) { 2079 static int32_t pkg_getOptionsFromICUConfig(UBool verbose, UOption *option) {
1974 #if U_HAVE_POPEN 2080 #if U_HAVE_POPEN
1975 FILE *p = NULL; 2081 FILE *p = NULL;
1976 size_t n; 2082 size_t n;
1977 static char buf[512] = ""; 2083 static char buf[512] = "";
1978 char cmdBuf[1024]; 2084 icu::CharString cmdBuf;
1979 UErrorCode status = U_ZERO_ERROR; 2085 UErrorCode status = U_ZERO_ERROR;
1980 const char cmd[] = "icu-config --incpkgdatafile"; 2086 const char cmd[] = "icu-config --incpkgdatafile";
1981 2087 char dirBuf[1024] = "";
1982 /* #1 try the same path where pkgdata was called from. */ 2088 /* #1 try the same path where pkgdata was called from. */
1983 findDirname(progname, cmdBuf, 1024, &status); 2089 findDirname(progname, dirBuf, UPRV_LENGTHOF(dirBuf), &status);
1984 if(U_SUCCESS(status)) { 2090 if(U_SUCCESS(status)) {
2091 cmdBuf.append(dirBuf, status);
1985 if (cmdBuf[0] != 0) { 2092 if (cmdBuf[0] != 0) {
1986 uprv_strncat(cmdBuf, U_FILE_SEP_STRING, 1024); 2093 cmdBuf.append( U_FILE_SEP_STRING, status );
1987 } 2094 }
1988 uprv_strncat(cmdBuf, cmd, 1024); 2095 cmdBuf.append( cmd, status );
1989 2096
1990 if(verbose) { 2097 if(verbose) {
1991 fprintf(stdout, "# Calling icu-config: %s\n", cmdBuf); 2098 fprintf(stdout, "# Calling icu-config: %s\n", cmdBuf.data());
1992 } 2099 }
1993 p = popen(cmdBuf, "r"); 2100 p = popen(cmdBuf.data(), "r");
1994 } 2101 }
1995 2102
1996 if(p == NULL || (n = fread(buf, 1, 511, p)) <= 0) { 2103 if(p == NULL || (n = fread(buf, 1, UPRV_LENGTHOF(buf)-1, p)) <= 0) {
1997 if(verbose) { 2104 if(verbose) {
1998 fprintf(stdout, "# Calling icu-config: %s\n", cmd); 2105 fprintf(stdout, "# Calling icu-config: %s\n", cmd);
1999 } 2106 }
2000 pclose(p); 2107 pclose(p);
2001 2108
2002 p = popen(cmd, "r"); 2109 p = popen(cmd, "r");
2003 if(p == NULL || (n = fread(buf, 1, 511, p)) <= 0) { 2110 if(p == NULL || (n = fread(buf, 1, UPRV_LENGTHOF(buf)-1, p)) <= 0) {
2004 fprintf(stderr, "%s: icu-config: No icu-config found. (fix PATH or use -O option)\n", progname); 2111 fprintf(stderr, "%s: icu-config: No icu-config found. (fix PATH or use -O option)\n", progname);
2005 return -1; 2112 return -1;
2006 } 2113 }
2007 } 2114 }
2008 2115
2009 pclose(p); 2116 pclose(p);
2010 2117
2011 for (int32_t length = strlen(buf) - 1; length >= 0; length--) { 2118 for (int32_t length = strlen(buf) - 1; length >= 0; length--) {
2012 if (buf[length] == '\n' || buf[length] == ' ') { 2119 if (buf[length] == '\n' || buf[length] == ' ') {
2013 buf[length] = 0; 2120 buf[length] = 0;
(...skipping 18 matching lines...) Expand all
2032 } 2139 }
2033 2140
2034 option->value = buf; 2141 option->value = buf;
2035 option->doesOccur = TRUE; 2142 option->doesOccur = TRUE;
2036 2143
2037 return 0; 2144 return 0;
2038 #else 2145 #else
2039 return -1; 2146 return -1;
2040 #endif 2147 #endif
2041 } 2148 }
OLDNEW
« no previous file with comments | « source/tools/makeconv/makeconv.c ('k') | source/tools/toolutil/Makefile.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698