Index: icu46/source/common/icudataver.c |
=================================================================== |
--- icu46/source/common/icudataver.c (revision 0) |
+++ icu46/source/common/icudataver.c (revision 0) |
@@ -0,0 +1,83 @@ |
+/* |
+****************************************************************************** |
+* |
+* Copyright (C) 2009, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+* |
+****************************************************************************** |
+*/ |
+ |
+#include "unicode/utypes.h" |
+#include "unicode/icudataver.h" |
+#include "unicode/uversion.h" |
+#include "unicode/ures.h" |
+#include "uresimp.h" /* for ures_getVersionByKey */ |
+#include "cmemory.h" |
+ |
+/* |
+ * Determines if icustd is in the data. |
+ */ |
+static UBool hasICUSTDBundle(); |
+ |
+static UBool hasICUSTDBundle() { |
+ UErrorCode status = U_ZERO_ERROR; |
+ UBool result = TRUE; |
+ |
+ UResourceBundle *icustdbundle = ures_openDirect(NULL, U_ICU_STD_BUNDLE, &status); |
+ if (U_SUCCESS(status)) { |
+ result = TRUE; |
+ } else { |
+ result = FALSE; |
+ } |
+ |
+ ures_close(icustdbundle); |
+ |
+ return result; |
+} |
+ |
+U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status) { |
+ UResourceBundle *icudatares = NULL; |
+ |
+ if (U_FAILURE(*status)) { |
+ return; |
+ } |
+ |
+ if (dataVersionFillin != NULL) { |
+ icudatares = ures_openDirect(NULL, U_ICU_VERSION_BUNDLE , status); |
+ if (U_SUCCESS(*status)) { |
+ ures_getVersionByKey(icudatares, U_ICU_DATA_KEY, dataVersionFillin, status); |
+ } |
+ ures_close(icudatares); |
+ } |
+} |
+ |
+U_CAPI UBool U_EXPORT2 u_isDataOlder(UVersionInfo dataVersionFillin, UBool *isModifiedFillin, UErrorCode *status) { |
+ UBool result = TRUE; |
+ UVersionInfo dataVersion; |
+ UVersionInfo wiredVersion; |
+ |
+ if (U_FAILURE(*status)) { |
+ return result; |
+ } |
+ |
+ u_getDataVersion(dataVersion, status); |
+ if (U_SUCCESS(*status)) { |
+ u_versionFromString(wiredVersion, U_ICU_DATA_VERSION); |
+ |
+ if (uprv_memcmp(dataVersion, wiredVersion, sizeof(UVersionInfo)) >= 0) { |
+ result = FALSE; |
+ } |
+ |
+ if (dataVersionFillin != NULL) { |
+ uprv_memcpy(dataVersionFillin, dataVersion, sizeof(UVersionInfo)); |
+ } |
+ |
+ if (hasICUSTDBundle()) { |
+ *isModifiedFillin = FALSE; |
+ } else { |
+ *isModifiedFillin = TRUE; |
+ } |
+ } |
+ |
+ return result; |
+} |
Property changes on: icu46/source/common/icudataver.c |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |