summaryrefslogtreecommitdiff
path: root/libraries/icu4c
diff options
context:
space:
mode:
authorHeinz Wiesinger <pprkut@liwjatan.at>2010-05-11 22:23:45 +0200
committerDavid Somero <xgizzmo@slackbuilds.org>2010-05-11 22:23:45 +0200
commit4a127fb48688e82a344cfda475418b073f75f11c (patch)
tree80655cfee6259775e589139d4d09584069cdd6a6 /libraries/icu4c
parent79a34af853a28946e91919838a49593d77b56e45 (diff)
downloadslackbuilds-4a127fb48688e82a344cfda475418b073f75f11c.tar.gz
libraries/icu4c: Updated for version 4.0
Diffstat (limited to 'libraries/icu4c')
-rw-r--r--libraries/icu4c/README11
-rw-r--r--libraries/icu4c/changeset_r24398.diff2003
-rw-r--r--libraries/icu4c/icu4c-4.0-timezone.patch11
-rw-r--r--libraries/icu4c/icu4c.SlackBuild41
-rw-r--r--libraries/icu4c/icu4c.info10
-rw-r--r--libraries/icu4c/slack-desc6
6 files changed, 2053 insertions, 29 deletions
diff --git a/libraries/icu4c/README b/libraries/icu4c/README
index 3f1b3a5c1c..a701ed0cae 100644
--- a/libraries/icu4c/README
+++ b/libraries/icu4c/README
@@ -1,8 +1,5 @@
-The International Components for Unicode (ICU)
-libraries provide robust and full-featured Unicode
-services on a wide variety of platforms.
+The International Components for Unicode (ICU)libraries provide robust
+and full-featured Unicode services on a wide variety of platforms.
-'--enable-static' is activated by default, with the
-possibility to disable it via commandline, since
-there are some apps out there which only use the
-static libraries.
+If you need static libraries you can pass STATIC=yes to the script to
+enable them.
diff --git a/libraries/icu4c/changeset_r24398.diff b/libraries/icu4c/changeset_r24398.diff
new file mode 100644
index 0000000000..75aaeb98b4
--- /dev/null
+++ b/libraries/icu4c/changeset_r24398.diff
@@ -0,0 +1,2003 @@
+Index: source/i18n/unicode/basictz.h
+===================================================================
+--- source/i18n/unicode/basictz.h (revision 23962)
++++ source/i18n/unicode/basictz.h (revision 24398)
+@@ -30,5 +30,5 @@
+ * This class provides some additional methods to access time zone transitions and rules.
+ * All ICU <code>TimeZone</code> concrete subclasses extend this class.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ class U_I18N_API BasicTimeZone: public TimeZone {
+@@ -36,5 +36,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual ~BasicTimeZone();
+@@ -46,5 +46,5 @@
+ * @param result Receives the first transition after the base time.
+ * @return TRUE if the transition is found.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/ = 0;
+@@ -56,5 +56,5 @@
+ * @param result Receives the most recent transition before the base time.
+ * @return TRUE if the transition is found.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/ = 0;
+@@ -78,5 +78,5 @@
+ * @return true if the other time zone has the equivalent transitions in the
+ * time range.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool hasEquivalentTransitions(/*const*/ BasicTimeZone& tz, UDate start, UDate end,
+@@ -89,5 +89,5 @@
+ * @param status Receives error status code.
+ * @return The number of <code>TimeZoneRule</code>s representing time transitions.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t countTransitionRules(UErrorCode& status) /*const*/ = 0;
+@@ -107,5 +107,5 @@
+ * rules filled in the array will be set.
+ * @param status Receives error status code.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
+@@ -136,5 +136,5 @@
+ * around the specified date, NULL is set.
+ * @param status Receives error status code.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
+@@ -173,5 +173,5 @@
+ /**
+ * Default constructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ BasicTimeZone();
+@@ -180,5 +180,5 @@
+ * Construct a timezone with a given ID.
+ * @param id a system time zone ID
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ BasicTimeZone(const UnicodeString &id);
+@@ -187,5 +187,5 @@
+ * Copy constructor.
+ * @param source the object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ BasicTimeZone(const BasicTimeZone& source);
+Index: source/i18n/unicode/simpletz.h
+===================================================================
+--- source/i18n/unicode/simpletz.h (revision 23962)
++++ source/i18n/unicode/simpletz.h (revision 24398)
+@@ -708,5 +708,5 @@
+ * @param result Receives the first transition after the base time.
+ * @return TRUE if the transition is found.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
+@@ -718,5 +718,5 @@
+ * @param result Receives the most recent transition before the base time.
+ * @return TRUE if the transition is found.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
+@@ -728,5 +728,5 @@
+ * @param status Receives error status code.
+ * @return The number of <code>TimeZoneRule</code>s representing time transitions.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t countTransitionRules(UErrorCode& status) /*const*/;
+@@ -746,5 +746,5 @@
+ * rules filled in the array will be set.
+ * @param status Receives error status code.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
+Index: source/i18n/unicode/utmscale.h
+===================================================================
+--- source/i18n/unicode/utmscale.h (revision 23962)
++++ source/i18n/unicode/utmscale.h (revision 24398)
+@@ -278,5 +278,5 @@
+ * (microseconds resolution).
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UDTS_UNIX_MICROSECONDS_TIME,
+Index: source/i18n/unicode/rbtz.h
+===================================================================
+--- source/i18n/unicode/rbtz.h (revision 24046)
++++ source/i18n/unicode/rbtz.h (revision 24398)
+@@ -41,5 +41,5 @@
+ * @param id The time zone ID.
+ * @param initialRule The initial time zone rule.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ RuleBasedTimeZone(const UnicodeString& id, InitialTimeZoneRule* initialRule);
+@@ -48,5 +48,5 @@
+ * Copy constructor.
+ * @param source The RuleBasedTimeZone object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ RuleBasedTimeZone(const RuleBasedTimeZone& source);
+@@ -54,5 +54,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual ~RuleBasedTimeZone();
+@@ -61,5 +61,5 @@
+ * Assignment operator.
+ * @param right The object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ RuleBasedTimeZone& operator=(const RuleBasedTimeZone& right);
+@@ -71,5 +71,5 @@
+ * @return true if the given <code>TimeZone</code> objects are
+ *semantically equal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator==(const TimeZone& that) const;
+@@ -81,5 +81,5 @@
+ * @return true if the given <code>TimeZone</code> objects are
+ * semantically unequal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator!=(const TimeZone& that) const;
+@@ -98,5 +98,5 @@
+ * @param rule The <code>TimeZoneRule</code>.
+ * @param status Output param to filled in with a success or an error.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void addTransitionRule(TimeZoneRule* rule, UErrorCode& status);
+@@ -109,5 +109,5 @@
+ * time zone APIs such as getOffset(), getNextTransition() and others.
+ * @param status Output param to filled in with a success or an error.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void complete(UErrorCode& status);
+@@ -118,5 +118,5 @@
+ *
+ * @return A new copy of this TimeZone object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual TimeZone* clone(void) const;
+@@ -144,5 +144,5 @@
+ * @param status Output param to filled in with a success or an error.
+ * @return The offset in milliseconds to add to GMT to get local time.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
+@@ -166,5 +166,5 @@
+ * @param status Output param to filled in with a success or an error.
+ * @return The offset in milliseconds to add to GMT to get local time.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
+@@ -192,5 +192,5 @@
+ * typically one hour.
+ * @param ec input-output error code
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
+@@ -202,5 +202,5 @@
+ *
+ * @param offsetMillis The new raw GMT offset for this time zone.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void setRawOffset(int32_t offsetMillis);
+@@ -211,5 +211,5 @@
+ *
+ * @return The TimeZone's raw GMT offset.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t getRawOffset(void) const;
+@@ -219,5 +219,5 @@
+ * @return true if this time zone uses daylight savings time,
+ * false, otherwise.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool useDaylightTime(void) const;
+@@ -244,5 +244,5 @@
+ * @return true if the given zone is the same as this one,
+ * with the possible exception of the ID
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool hasSameRules(const TimeZone& other) const;
+@@ -254,5 +254,5 @@
+ * @param result Receives the first transition after the base time.
+ * @return TRUE if the transition is found.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
+@@ -264,5 +264,5 @@
+ * @param result Receives the most recent transition before the base time.
+ * @return TRUE if the transition is found.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
+@@ -274,5 +274,5 @@
+ * @param status Receives error status code.
+ * @return The number of <code>TimeZoneRule</code>s representing time transitions.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t countTransitionRules(UErrorCode& status) /*const*/;
+@@ -292,5 +292,5 @@
+ * rules filled in the array will be set.
+ * @param status Receives error status code.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
+@@ -335,5 +335,5 @@
+ * </pre>
+ * @return The class ID for all objects of this class.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static UClassID U_EXPORT2 getStaticClassID(void);
+@@ -348,5 +348,5 @@
+ * given class have the same class ID. Objects of
+ * other classes have different class IDs.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UClassID getDynamicClassID(void) const;
+Index: source/i18n/unicode/dtptngen.h
+===================================================================
+--- source/i18n/unicode/dtptngen.h (revision 24046)
++++ source/i18n/unicode/dtptngen.h (revision 24398)
+@@ -44,5 +44,5 @@
+ * fields in a pattern, in order, since we have that internally.
+ * That would be useful for getting the UI order of field elements.</i>
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ **/
+ class U_I18N_API DateTimePatternGenerator : public UObject {
+@@ -52,5 +52,5 @@
+ * @param status Output param set to success/failure code on exit,
+ * which must not indicate a failure before the function call.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static DateTimePatternGenerator* U_EXPORT2 createInstance(UErrorCode& status);
+@@ -61,5 +61,5 @@
+ * @param status Output param set to success/failure code on exit,
+ * which must not indicate a failure before the function call.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static DateTimePatternGenerator* U_EXPORT2 createInstance(const Locale& uLocale, UErrorCode& status);
+@@ -69,5 +69,5 @@
+ * @param status Output param set to success/failure code on exit,
+ * which must not indicate a failure before the function call.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static DateTimePatternGenerator* U_EXPORT2 createEmptyInstance(UErrorCode& status);
+@@ -75,5 +75,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual ~DateTimePatternGenerator();
+@@ -82,5 +82,5 @@
+ * Clone DateTimePatternGenerator object. Clients are responsible for
+ * deleting the DateTimePatternGenerator object cloned.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimePatternGenerator* clone() const;
+@@ -91,5 +91,5 @@
+ * @param other the DateTimePatternGenerator object to be compared with.
+ * @return true if other is semantically equal to this.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool operator==(const DateTimePatternGenerator& other) const;
+@@ -100,5 +100,5 @@
+ * @param other the DateTimePatternGenerator object to be compared with.
+ * @return true if other is semantically unequal to this.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool operator!=(const DateTimePatternGenerator& other) const;
+@@ -112,5 +112,5 @@
+ * which must not indicate a failure before the function call.
+ * @return skeleton such as "MMMdd"
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UnicodeString getSkeleton(const UnicodeString& pattern, UErrorCode& status);
+@@ -127,5 +127,5 @@
+ * which must not indicate a failure before the function call.
+ * @return base skeleton, such as "Md"
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UnicodeString getBaseSkeleton(const UnicodeString& pattern, UErrorCode& status);
+@@ -149,5 +149,5 @@
+ * @return conflicting status. The value could be UDATPG_NO_CONFLICT,
+ * UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UDateTimePatternConflict addPattern(const UnicodeString& pattern,
+@@ -172,5 +172,5 @@
+ * @param field such as UDATPG_ERA_FIELD.
+ * @param value pattern, such as "{0}, {1}"
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setAppendItemFormat(UDateTimePatternField field, const UnicodeString& value);
+@@ -182,5 +182,5 @@
+ * @param field such as UDATPG_ERA_FIELD.
+ * @return append pattern for field
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ const UnicodeString& getAppendItemFormat(UDateTimePatternField field) const;
+@@ -195,5 +195,5 @@
+ * @param field such as UDATPG_ERA_FIELD.
+ * @param value name of the field
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setAppendItemName(UDateTimePatternField field, const UnicodeString& value);
+@@ -205,5 +205,5 @@
+ * @param field such as UDATPG_ERA_FIELD.
+ * @return name for field
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ const UnicodeString& getAppendItemName(UDateTimePatternField field) const;
+@@ -226,5 +226,5 @@
+ * message format pattern, here {0} will be replaced by the date
+ * pattern and {1} will be replaced by the time pattern.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setDateTimeFormat(const UnicodeString& dateTimeFormat);
+@@ -233,5 +233,5 @@
+ * Getter corresponding to setDateTimeFormat.
+ * @return DateTimeFormat.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ const UnicodeString& getDateTimeFormat() const;
+@@ -248,5 +248,5 @@
+ * @return bestPattern
+ * The best pattern found from the given skeleton.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status);
+@@ -267,5 +267,5 @@
+ * which must not indicate a failure before the function call.
+ * @return pattern adjusted to match the skeleton fields widths and subtypes.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UnicodeString replaceFieldTypes(const UnicodeString& pattern,
+@@ -282,5 +282,5 @@
+ * @return StringEnumeration with the skeletons.
+ * The caller must delete the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ StringEnumeration* getSkeletons(UErrorCode& status) const;
+@@ -290,5 +290,5 @@
+ * @param skeleton
+ * @return pattern corresponding to a given skeleton.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ const UnicodeString& getPatternForSkeleton(const UnicodeString& skeleton) const;
+@@ -301,5 +301,5 @@
+ * @return a StringEnumeration with the base skeletons.
+ * The caller must delete the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ StringEnumeration* getBaseSkeletons(UErrorCode& status) const;
+@@ -328,5 +328,5 @@
+ *
+ * @param decimal
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setDecimal(const UnicodeString& decimal);
+@@ -335,5 +335,5 @@
+ * Getter corresponding to setDecimal.
+ * @return UnicodeString corresponding to the decimal point
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ const UnicodeString& getDecimal() const;
+@@ -342,5 +342,5 @@
+ * ICU "poor man's RTTI", returns a UClassID for the actual class.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UClassID getDynamicClassID() const;
+@@ -349,5 +349,5 @@
+ * ICU "poor man's RTTI", returns a UClassID for this class.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static UClassID U_EXPORT2 getStaticClassID(void);
+@@ -356,5 +356,5 @@
+ /**
+ * Constructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimePatternGenerator(UErrorCode & status);
+@@ -362,5 +362,5 @@
+ /**
+ * Constructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimePatternGenerator(const Locale& locale, UErrorCode & status);
+@@ -369,5 +369,5 @@
+ * Copy constructor.
+ * @param other DateTimePatternGenerator to copy
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimePatternGenerator(const DateTimePatternGenerator& other);
+@@ -376,5 +376,5 @@
+ * Default assignment operator.
+ * @param other DateTimePatternGenerator to copy
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimePatternGenerator& operator=(const DateTimePatternGenerator& other);
+Index: source/i18n/unicode/udatpg.h
+===================================================================
+--- source/i18n/unicode/udatpg.h (revision 23962)
++++ source/i18n/unicode/udatpg.h (revision 24398)
+@@ -40,5 +40,5 @@
+ /**
+ * Opaque type for a date/time pattern generator object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ typedef void *UDateTimePatternGenerator;
+@@ -50,40 +50,40 @@
+ * These constants are separate from UDateFormatField despite semantic overlap
+ * because some fields are merged for the date/time pattern generator.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ typedef enum UDateTimePatternField {
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_ERA_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_YEAR_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_QUARTER_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_MONTH_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_WEEK_OF_YEAR_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_WEEK_OF_MONTH_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_WEEKDAY_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_DAY_OF_YEAR_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_DAY_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_DAYPERIOD_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_HOUR_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_MINUTE_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_SECOND_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_FRACTIONAL_SECOND_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_ZONE_FIELD,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_FIELD_COUNT
+ } UDateTimePatternField;
+@@ -91,14 +91,14 @@
+ /**
+ * Status return values from udatpg_addPattern().
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ typedef enum UDateTimePatternConflict {
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_NO_CONFLICT,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_BASE_CONFLICT,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_CONFLICT,
+- /** @stable ICU 4.0 */
++ /** @stable ICU 3.8 */
+ UDATPG_CONFLICT_COUNT
+ } UDateTimePatternConflict;
+@@ -112,5 +112,5 @@
+ * failure before the function call.
+ * @return a pointer to UDateTimePatternGenerator.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT UDateTimePatternGenerator * U_EXPORT2
+@@ -122,5 +122,5 @@
+ * failure before the function call.
+ * @return a pointer to UDateTimePatternGenerator.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT UDateTimePatternGenerator * U_EXPORT2
+@@ -130,5 +130,5 @@
+ * Close a generator.
+ * @param dtpg a pointer to UDateTimePatternGenerator.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT void U_EXPORT2
+@@ -141,5 +141,5 @@
+ * failure before the function call.
+ * @return a pointer to a new UDateTimePatternGenerator.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT UDateTimePatternGenerator * U_EXPORT2
+@@ -167,5 +167,5 @@
+ * failure before the function call.
+ * @return the length of bestPattern.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT int32_t U_EXPORT2
+@@ -193,5 +193,5 @@
+ * failure before the function call.
+ * @return the length of skeleton.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT int32_t U_EXPORT2
+@@ -222,5 +222,5 @@
+ * failure before the function call.
+ * @return the length of baseSkeleton.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT int32_t U_EXPORT2
+@@ -252,5 +252,5 @@
+ * @return conflicting status. The value could be UDATPG_NO_CONFLICT,
+ * UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT UDateTimePatternConflict U_EXPORT2
+@@ -279,5 +279,5 @@
+ * @param value pattern, such as "{0}, {1}"
+ * @param length the length of value.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT void U_EXPORT2
+@@ -294,5 +294,5 @@
+ * @param pLength A pointer that will receive the length of appendItemFormat.
+ * @return appendItemFormat for field.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT const UChar * U_EXPORT2
+@@ -312,5 +312,5 @@
+ * @param value name for the field.
+ * @param length the length of value.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT void U_EXPORT2
+@@ -327,5 +327,5 @@
+ * @param pLength A pointer that will receive the length of the name for field.
+ * @return name for field
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT const UChar * U_EXPORT2
+@@ -353,5 +353,5 @@
+ * pattern and {1} will be replaced by the time pattern.
+ * @param length the length of dtFormat.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT void U_EXPORT2
+@@ -364,5 +364,5 @@
+ * @param pLength A pointer that will receive the length of the format
+ * @return dateTimeFormat.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT const UChar * U_EXPORT2
+@@ -381,5 +381,5 @@
+ * @param decimal
+ * @param length the length of decimal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT void U_EXPORT2
+@@ -393,5 +393,5 @@
+ * @param pLength A pointer that will receive the length of the decimal string.
+ * @return corresponding to the decimal point.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT const UChar * U_EXPORT2
+@@ -422,5 +422,5 @@
+ * failure before the function call.
+ * @return the length of dest.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT int32_t U_EXPORT2
+@@ -440,5 +440,5 @@
+ * @return a UEnumeration list of all the skeletons
+ * The caller must close the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT UEnumeration * U_EXPORT2
+@@ -453,5 +453,5 @@
+ * @return a UEnumeration list of all the base skeletons
+ * The caller must close the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT UEnumeration * U_EXPORT2
+@@ -466,5 +466,5 @@
+ * @param pLength pointer to the length of return pattern.
+ * @return pattern corresponding to a given skeleton.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT const UChar * U_EXPORT2
+Index: source/i18n/unicode/dtitvinf.h
+===================================================================
+--- source/i18n/unicode/dtitvinf.h (revision 24244)
++++ source/i18n/unicode/dtitvinf.h (revision 24398)
+@@ -210,5 +210,5 @@
+ * The caller owns the result and should delete it when done.
+ * @return a copy of the object
+- * @draft ICU4.0
++ * @draft ICU 4.0
+ */
+ virtual DateIntervalInfo* clone(void) const;
+Index: source/i18n/unicode/timezone.h
+===================================================================
+--- source/i18n/unicode/timezone.h (revision 23962)
++++ source/i18n/unicode/timezone.h (revision 24398)
+@@ -330,5 +330,5 @@
+ * @param status Output param to filled in with a success or an error.
+ * @return the version string, such as "2007f"
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static const char* U_EXPORT2 getTZDataVersion(UErrorCode& status);
+Index: source/i18n/unicode/dtrule.h
+===================================================================
+--- source/i18n/unicode/dtrule.h (revision 23962)
++++ source/i18n/unicode/dtrule.h (revision 24398)
+@@ -25,5 +25,5 @@
+ * time in the day.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ class U_I18N_API DateTimeRule : public UObject {
+@@ -32,5 +32,5 @@
+ /**
+ * Date rule type constants.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ enum DateRuleType {
+@@ -47,5 +47,5 @@
+ /**
+ * Time rule type constants.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ enum TimeRuleType {
+@@ -65,5 +65,5 @@
+ * @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+ * or <code>UTC_TIME</code>.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimeRule(int32_t month, int32_t dayOfMonth,
+@@ -83,5 +83,5 @@
+ * @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+ * or <code>UTC_TIME</code>.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimeRule(int32_t month, int32_t weekInMonth, int32_t dayOfWeek,
+@@ -101,5 +101,5 @@
+ * @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+ * or <code>UTC_TIME</code>.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, UBool after,
+@@ -109,5 +109,5 @@
+ * Copy constructor.
+ * @param source The DateTimeRule object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimeRule(const DateTimeRule& source);
+@@ -115,5 +115,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ ~DateTimeRule();
+@@ -123,5 +123,5 @@
+ * should delete it when done.
+ * @return A copy of the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimeRule* clone(void) const;
+@@ -130,5 +130,5 @@
+ * Assignment operator.
+ * @param right The object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimeRule& operator=(const DateTimeRule& right);
+@@ -139,5 +139,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given DateTimeRule objects are semantically equal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool operator==(const DateTimeRule& that) const;
+@@ -148,5 +148,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given DateTimeRule objects are semantically unequal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool operator!=(const DateTimeRule& that) const;
+@@ -155,5 +155,5 @@
+ * Gets the date rule type, such as <code>DOM</code>
+ * @return The date rule type.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateRuleType getDateRuleType(void) const;
+@@ -163,5 +163,5 @@
+ * @return The time rule type, either <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+ * or <code>UTC_TIME</code>.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeRuleType getTimeRuleType(void) const;
+@@ -170,5 +170,5 @@
+ * Gets the rule month.
+ * @return The rule month.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getRuleMonth(void) const;
+@@ -178,5 +178,5 @@
+ * is <code>DOW</code>, the value is always 0.
+ * @return The rule day of month
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getRuleDayOfMonth(void) const;
+@@ -186,5 +186,5 @@
+ * is <code>DOM</code>, the value is always 0.
+ * @return The rule day of week.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getRuleDayOfWeek(void) const;
+@@ -195,5 +195,5 @@
+ * the value is always 0.
+ * @return The rule day of week ordinal number in the month.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getRuleWeekInMonth(void) const;
+@@ -202,5 +202,5 @@
+ * Gets the rule time in the rule day.
+ * @return The time in the rule day in milliseconds.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getRuleMillisInDay(void) const;
+@@ -225,5 +225,5 @@
+ * </pre>
+ * @return The class ID for all objects of this class.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static UClassID U_EXPORT2 getStaticClassID(void);
+@@ -238,5 +238,5 @@
+ * given class have the same class ID. Objects of
+ * other classes have different class IDs.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UClassID getDynamicClassID(void) const;
+Index: source/i18n/unicode/tztrans.h
+===================================================================
+--- source/i18n/unicode/tztrans.h (revision 23962)
++++ source/i18n/unicode/tztrans.h (revision 24398)
+@@ -27,5 +27,5 @@
+ * <code>TimeZoneTransition</code> is a class representing a time zone transition.
+ * An instance has a time of transition and rules for both before and after the transition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ class U_I18N_API TimeZoneTransition : public UObject {
+@@ -38,5 +38,5 @@
+ * @param from The time zone rule used before the transition.
+ * @param to The time zone rule used after the transition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeZoneTransition(UDate time, const TimeZoneRule& from, const TimeZoneRule& to);
+@@ -44,5 +44,5 @@
+ /**
+ * Constructs an empty <code>TimeZoneTransition</code>
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeZoneTransition();
+@@ -51,5 +51,5 @@
+ * Copy constructor.
+ * @param source The TimeZoneTransition object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeZoneTransition(const TimeZoneTransition& source);
+@@ -57,5 +57,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ ~TimeZoneTransition();
+@@ -65,5 +65,5 @@
+ * should delete it when done.
+ * @return A copy of the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeZoneTransition* clone(void) const;
+@@ -72,5 +72,5 @@
+ * Assignment operator.
+ * @param right The object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeZoneTransition& operator=(const TimeZoneTransition& right);
+@@ -81,5 +81,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given TimeZoneTransition objects are semantically equal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool operator==(const TimeZoneTransition& that) const;
+@@ -90,5 +90,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given TimeZoneTransition objects are semantically unequal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool operator!=(const TimeZoneTransition& that) const;
+@@ -97,5 +97,5 @@
+ * Returns the time of transition in milliseconds.
+ * @return The time of the transition in milliseconds since the 1970 Jan 1 epoch time.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UDate getTime(void) const;
+@@ -104,5 +104,5 @@
+ * Sets the time of transition in milliseconds.
+ * @param time The time of the transition in milliseconds since the 1970 Jan 1 epoch time.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setTime(UDate time);
+@@ -111,5 +111,5 @@
+ * Returns the rule used before the transition.
+ * @return The time zone rule used after the transition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ const TimeZoneRule* getFrom(void) const;
+@@ -119,5 +119,5 @@
+ * responsible for deleting the <code>TimeZoneRule</code> object.
+ * @param from The time zone rule used before the transition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setFrom(const TimeZoneRule& from);
+@@ -127,5 +127,5 @@
+ * not delete the <code>TimeZoneRule</code> object passed in.
+ * @param from The time zone rule used before the transition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void adoptFrom(TimeZoneRule* from);
+@@ -135,5 +135,5 @@
+ * responsible for deleting the <code>TimeZoneRule</code> object.
+ * @param to The time zone rule used after the transition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setTo(const TimeZoneRule& to);
+@@ -143,5 +143,5 @@
+ * not delete the <code>TimeZoneRule</code> object passed in.
+ * @param to The time zone rule used after the transition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void adoptTo(TimeZoneRule* to);
+@@ -150,5 +150,5 @@
+ * Returns the rule used after the transition.
+ * @return The time zone rule used after the transition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ const TimeZoneRule* getTo(void) const;
+@@ -169,5 +169,5 @@
+ * </pre>
+ * @return The class ID for all objects of this class.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static UClassID U_EXPORT2 getStaticClassID(void);
+@@ -182,5 +182,5 @@
+ * given class have the same class ID. Objects of
+ * other classes have different class IDs.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UClassID getDynamicClassID(void) const;
+Index: source/i18n/unicode/ucal.h
+===================================================================
+--- source/i18n/unicode/ucal.h (revision 24014)
++++ source/i18n/unicode/ucal.h (revision 24398)
+@@ -1098,5 +1098,5 @@
+ * @param status error code for the operation
+ * @return the version string, such as "2007f"
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT const char * U_EXPORT2
+Index: source/i18n/unicode/tzrule.h
+===================================================================
+--- source/i18n/unicode/tzrule.h (revision 23962)
++++ source/i18n/unicode/tzrule.h (revision 24398)
+@@ -28,5 +28,5 @@
+ * raw offset (UTC offset for standard time) and daylight saving time offset.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ class U_I18N_API TimeZoneRule : public UObject {
+@@ -34,5 +34,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual ~TimeZoneRule();
+@@ -42,5 +42,5 @@
+ * should delete it when done.
+ * @return A copy of the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual TimeZoneRule* clone(void) const = 0;
+@@ -51,5 +51,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given <code>TimeZoneRule</code> objects are semantically equal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator==(const TimeZoneRule& that) const;
+@@ -60,5 +60,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given <code>TimeZoneRule</code> objects are semantically unequal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator!=(const TimeZoneRule& that) const;
+@@ -68,5 +68,5 @@
+ * @param name Receives the name of this time zone.
+ * @return A reference to "name"
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UnicodeString& getName(UnicodeString& name) const;
+@@ -75,5 +75,5 @@
+ * Gets the standard time offset.
+ * @return The standard time offset from UTC in milliseconds.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getRawOffset(void) const;
+@@ -83,5 +83,5 @@
+ * @return The amount of daylight saving offset used by this rule
+ * in milliseconds.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getDSTSavings(void) const;
+@@ -93,5 +93,5 @@
+ * @param other The <code>TimeZoneRule</code> object to be compared with.
+ * @return true if the other <code>TimeZoneRule</code> is the same as this one.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool isEquivalentTo(const TimeZoneRule& other) const;
+@@ -106,5 +106,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const = 0;
+@@ -119,5 +119,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const = 0;
+@@ -135,5 +135,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
+@@ -152,5 +152,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
+@@ -166,5 +166,5 @@
+ * @param dstSavings The amount of daylight saving offset adjustment in milliseconds.
+ * If this ia a rule for standard time, the value of this argument is 0.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings);
+@@ -173,5 +173,5 @@
+ * Copy constructor.
+ * @param source The TimeZoneRule object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeZoneRule(const TimeZoneRule& source);
+@@ -180,5 +180,5 @@
+ * Assignment operator.
+ * @param right The object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeZoneRule& operator=(const TimeZoneRule& right);
+@@ -194,5 +194,5 @@
+ * representing a time zone effective from the beginning and
+ * has no actual start times.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule {
+@@ -205,5 +205,5 @@
+ * @param dstSavings The amount of daylight saving offset adjustment in milliseconds.
+ * If this ia a rule for standard time, the value of this argument is 0.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ InitialTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings);
+@@ -212,5 +212,5 @@
+ * Copy constructor.
+ * @param source The InitialTimeZoneRule object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ InitialTimeZoneRule(const InitialTimeZoneRule& source);
+@@ -218,5 +218,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual ~InitialTimeZoneRule();
+@@ -226,5 +226,5 @@
+ * should delete it when done.
+ * @return A copy of the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual InitialTimeZoneRule* clone(void) const;
+@@ -233,5 +233,5 @@
+ * Assignment operator.
+ * @param right The object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ InitialTimeZoneRule& operator=(const InitialTimeZoneRule& right);
+@@ -242,5 +242,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given <code>TimeZoneRule</code> objects are semantically equal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator==(const TimeZoneRule& that) const;
+@@ -251,5 +251,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given <code>TimeZoneRule</code> objects are semantically unequal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator!=(const TimeZoneRule& that) const;
+@@ -265,5 +265,5 @@
+ * @return true if this rule takes effect in the year and the result is set to
+ * "result".
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
+@@ -275,5 +275,5 @@
+ * @param that The <code>TimeZoneRule</code> object to be compared with.
+ * @return true if the other <code>TimeZoneRule</code> is equivalent to this one.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool isEquivalentTo(const TimeZoneRule& that) const;
+@@ -288,5 +288,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
+@@ -301,5 +301,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
+@@ -317,5 +317,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
+@@ -334,5 +334,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
+@@ -349,5 +349,5 @@
+ * </pre>
+ * @return The class ID for all objects of this class.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static UClassID U_EXPORT2 getStaticClassID(void);
+@@ -362,5 +362,5 @@
+ * given class have the same class ID. Objects of
+ * other classes have different class IDs.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UClassID getDynamicClassID(void) const;
+@@ -372,5 +372,5 @@
+ * is based on Gregorian calendar
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule {
+@@ -396,5 +396,5 @@
+ * @param endYear The last year when this rule takes effect. If this
+ * rule is effective forever in future, specify MAX_YEAR.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
+@@ -415,5 +415,5 @@
+ * @param endYear The last year when this rule takes effect. If this
+ * rule is effective forever in future, specify MAX_YEAR.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
+@@ -423,5 +423,5 @@
+ * Copy constructor.
+ * @param source The AnnualTimeZoneRule object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ AnnualTimeZoneRule(const AnnualTimeZoneRule& source);
+@@ -429,5 +429,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual ~AnnualTimeZoneRule();
+@@ -437,5 +437,5 @@
+ * should delete it when done.
+ * @return A copy of the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual AnnualTimeZoneRule* clone(void) const;
+@@ -444,5 +444,5 @@
+ * Assignment operator.
+ * @param right The object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ AnnualTimeZoneRule& operator=(const AnnualTimeZoneRule& right);
+@@ -453,5 +453,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given <code>TimeZoneRule</code> objects are semantically equal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator==(const TimeZoneRule& that) const;
+@@ -462,5 +462,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given <code>TimeZoneRule</code> objects are semantically unequal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator!=(const TimeZoneRule& that) const;
+@@ -470,5 +470,5 @@
+ * @return The <code>AnnualDateTimeRule</code> which represents the start date/time
+ * rule used by this time zone rule.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ const DateTimeRule* getRule(void) const;
+@@ -478,5 +478,5 @@
+ * @return The start year of this rule. The year is in Gregorian calendar
+ * with 0 == 1 BCE, -1 == 2 BCE, etc.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getStartYear(void) const;
+@@ -486,5 +486,5 @@
+ * @return The end year of this rule (inclusive). The year is in Gregorian calendar
+ * with 0 == 1 BCE, -1 == 2 BCE, etc.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t getEndYear(void) const;
+@@ -500,5 +500,5 @@
+ * @return true if this rule takes effect in the year and the result is set to
+ * "result".
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
+@@ -510,5 +510,5 @@
+ * @param that The <code>TimeZoneRule</code> object to be compared with.
+ * @return true if the other <code>TimeZoneRule</code> is equivalent to this one.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool isEquivalentTo(const TimeZoneRule& that) const;
+@@ -523,5 +523,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
+@@ -536,5 +536,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
+@@ -552,5 +552,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
+@@ -569,5 +569,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
+@@ -590,5 +590,5 @@
+ * </pre>
+ * @return The class ID for all objects of this class.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static UClassID U_EXPORT2 getStaticClassID(void);
+@@ -603,5 +603,5 @@
+ * given class have the same class ID. Objects of
+ * other classes have different class IDs.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UClassID getDynamicClassID(void) const;
+@@ -612,5 +612,5 @@
+ * defined by an array of milliseconds since the standard base time.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule {
+@@ -631,5 +631,5 @@
+ * <code>DataTimeRule::WALL_TIME</code>, <code>STANDARD_TIME</code>
+ * and <code>UTC_TIME</code>.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeArrayTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
+@@ -639,5 +639,5 @@
+ * Copy constructor.
+ * @param source The TimeArrayTimeZoneRule object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule& source);
+@@ -645,5 +645,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual ~TimeArrayTimeZoneRule();
+@@ -653,5 +653,5 @@
+ * should delete it when done.
+ * @return A copy of the object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual TimeArrayTimeZoneRule* clone(void) const;
+@@ -660,5 +660,5 @@
+ * Assignment operator.
+ * @param right The object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ TimeArrayTimeZoneRule& operator=(const TimeArrayTimeZoneRule& right);
+@@ -669,5 +669,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given <code>TimeZoneRule</code> objects are semantically equal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator==(const TimeZoneRule& that) const;
+@@ -678,5 +678,5 @@
+ * @param that The object to be compared with.
+ * @return true if the given <code>TimeZoneRule</code> objects are semantically unequal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator!=(const TimeZoneRule& that) const;
+@@ -688,5 +688,5 @@
+ *
+ * @return The time type used of the start times used by this rule.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ DateTimeRule::TimeRuleType getTimeType(void) const;
+@@ -699,5 +699,5 @@
+ * and the result is set. When false, the output
+ * parameger "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool getStartTimeAt(int32_t index, UDate& result) const;
+@@ -706,5 +706,5 @@
+ * Returns the number of start times stored in this rule
+ * @return The number of start times.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ int32_t countStartTimes(void) const;
+@@ -716,5 +716,5 @@
+ * @param that The <code>TimeZoneRule</code> object to be compared with.
+ * @return true if the other <code>TimeZoneRule</code> is equivalent to this one.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool isEquivalentTo(const TimeZoneRule& that) const;
+@@ -729,5 +729,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
+@@ -742,5 +742,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
+@@ -758,5 +758,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
+@@ -775,5 +775,5 @@
+ * @return true if the start time is available. When false is returned, output parameter
+ * "result" is unchanged.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
+@@ -801,5 +801,5 @@
+ * </pre>
+ * @return The class ID for all objects of this class.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static UClassID U_EXPORT2 getStaticClassID(void);
+@@ -814,5 +814,5 @@
+ * given class have the same class ID. Objects of
+ * other classes have different class IDs.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UClassID getDynamicClassID(void) const;
+Index: source/i18n/unicode/vtzone.h
+===================================================================
+--- source/i18n/unicode/vtzone.h (revision 23962)
++++ source/i18n/unicode/vtzone.h (revision 24398)
+@@ -35,5 +35,5 @@
+ * decode or encode Non-ASCII text. Methods reading/writing VTIMEZONE data in this class
+ * do nothing with MIME encoding.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ class U_I18N_API VTimeZone : public BasicTimeZone {
+@@ -42,5 +42,5 @@
+ * Copy constructor.
+ * @param source The <code>VTimeZone</code> object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ VTimeZone(const VTimeZone& source);
+@@ -48,5 +48,5 @@
+ /**
+ * Destructor.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual ~VTimeZone();
+@@ -55,5 +55,5 @@
+ * Assignment operator.
+ * @param right The object to be copied.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ VTimeZone& operator=(const VTimeZone& right);
+@@ -65,5 +65,5 @@
+ * @return true if the given <code>TimeZone</code> objects are
+ *semantically equal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator==(const TimeZone& that) const;
+@@ -75,5 +75,5 @@
+ * @return true if the given <code>TimeZone</code> objects are
+ * semantically unequal.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool operator!=(const TimeZone& that) const;
+@@ -84,5 +84,5 @@
+ * @return A <code>VTimeZone</code> object initialized by the time zone ID,
+ * or NULL when the ID is unknown.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static VTimeZone* createVTimeZoneByID(const UnicodeString& ID);
+@@ -95,5 +95,5 @@
+ * @return A <code>VTimeZone</code> initialized by the VTIMEZONE data or
+ * NULL if failed to load the rule from the VTIMEZONE data.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static VTimeZone* createVTimeZone(const UnicodeString& vtzdata, UErrorCode& status);
+@@ -105,5 +105,5 @@
+ * @param url Receives the RFC2445 TZURL property value.
+ * @return TRUE if TZURL attribute is available and value is set.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool getTZURL(UnicodeString& url) const;
+@@ -112,5 +112,5 @@
+ * Sets the RFC2445 TZURL property value.
+ * @param url The TZURL property value.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setTZURL(const UnicodeString& url);
+@@ -122,5 +122,5 @@
+ * @param lastModified Receives the last modified date.
+ * @return TRUE if lastModified attribute is available and value is set.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UBool getLastModified(UDate& lastModified) const;
+@@ -129,5 +129,5 @@
+ * Sets the RFC2445 LAST-MODIFIED property value.
+ * @param lastModified The LAST-MODIFIED date.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void setLastModified(UDate lastModified);
+@@ -137,5 +137,5 @@
+ * @param result Output param to filled in with the VTIMEZONE data.
+ * @param status Output param to filled in with a success or an error.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void write(UnicodeString& result, UErrorCode& status) const;
+@@ -147,5 +147,5 @@
+ * @param result Output param to filled in with the VTIMEZONE data.
+ * @param status Output param to filled in with a success or an error.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void write(UDate start, UnicodeString& result, UErrorCode& status) /*const*/;
+@@ -162,5 +162,5 @@
+ * @param result Output param to filled in with the VTIMEZONE data.
+ * @param status Output param to filled in with a success or an error.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ void writeSimple(UDate time, UnicodeString& result, UErrorCode& status) /*const*/;
+@@ -170,5 +170,5 @@
+ * the TimeZone object cloned.
+ * @return A new copy of this TimeZone object.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual TimeZone* clone(void) const;
+@@ -196,5 +196,5 @@
+ * @param status Output param to filled in with a success or an error.
+ * @return The offset in milliseconds to add to GMT to get local time.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
+@@ -218,5 +218,5 @@
+ * @param status Output param to filled in with a success or an error.
+ * @return The offset in milliseconds to add to GMT to get local time.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
+@@ -244,5 +244,5 @@
+ * typically one hour.
+ * @param ec input-output error code
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
+@@ -254,5 +254,5 @@
+ *
+ * @param offsetMillis The new raw GMT offset for this time zone.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void setRawOffset(int32_t offsetMillis);
+@@ -263,5 +263,5 @@
+ *
+ * @return The TimeZone's raw GMT offset.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t getRawOffset(void) const;
+@@ -271,5 +271,5 @@
+ * @return true if this time zone uses daylight savings time,
+ * false, otherwise.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool useDaylightTime(void) const;
+@@ -296,5 +296,5 @@
+ * @return true if the given zone is the same as this one,
+ * with the possible exception of the ID
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool hasSameRules(const TimeZone& other) const;
+@@ -306,5 +306,5 @@
+ * @param result Receives the first transition after the base time.
+ * @return TRUE if the transition is found.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
+@@ -316,5 +316,5 @@
+ * @param result Receives the most recent transition before the base time.
+ * @return TRUE if the transition is found.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
+@@ -326,5 +326,5 @@
+ * @param status Receives error status code.
+ * @return The number of <code>TimeZoneRule</code>s representing time transitions.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual int32_t countTransitionRules(UErrorCode& status) /*const*/;
+@@ -344,5 +344,5 @@
+ * rules filled in the array will be set.
+ * @param status Receives error status code.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
+@@ -418,5 +418,5 @@
+ * </pre>
+ * @return The class ID for all objects of this class.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ static UClassID U_EXPORT2 getStaticClassID(void);
+@@ -431,5 +431,5 @@
+ * given class have the same class ID. Objects of
+ * other classes have different class IDs.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ virtual UClassID getDynamicClassID(void) const;
+Index: source/common/unicode/uscript.h
+===================================================================
+--- source/common/unicode/uscript.h (revision 23962)
++++ source/common/unicode/uscript.h (revision 24398)
+@@ -162,5 +162,5 @@
+ USCRIPT_UNKNOWN = 103,/* Zzzz */ /* Unknown="Code for uncoded script", for unassigned code points */
+
+- /* New script codes from ISO 15924 @stable ICU 4.0 */
++ /* New script codes from ISO 15924 @stable ICU 3.8 */
+ USCRIPT_CARIAN = 104,/* Cari */
+ USCRIPT_JAPANESE = 105,/* Jpan */
+Index: source/common/unicode/uloc.h
+===================================================================
+--- source/common/unicode/uloc.h (revision 23962)
++++ source/common/unicode/uloc.h (revision 24398)
+@@ -958,5 +958,5 @@
+ * is too small
+ * @return actual the actual size of the locale ID, not including NUL-termination
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT int32_t U_EXPORT2
+Index: source/common/unicode/uset.h
+===================================================================
+--- source/common/unicode/uset.h (revision 23962)
++++ source/common/unicode/uset.h (revision 24398)
+@@ -153,5 +153,5 @@
+ * are ignored.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ typedef enum USetSpanCondition {
+@@ -165,5 +165,5 @@
+ * and none of its strings overlap with the span.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ USET_SPAN_NOT_CONTAINED = 0,
+@@ -180,5 +180,5 @@
+ * This is equivalent to a POSIX regular expression for (OR of each set element)*.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ USET_SPAN_CONTAINED = 1,
+@@ -199,10 +199,10 @@
+ * such as ICU converters (ucnv_getUnicodeSet()).
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ USET_SPAN_SIMPLE = 2,
+ /**
+ * One more than the last span condition.
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ USET_SPAN_CONDITION_COUNT
+@@ -301,5 +301,5 @@
+ * @return the newly allocated copy of the set
+ * @see uset_cloneAsThawed
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT USet * U_EXPORT2
+@@ -313,5 +313,5 @@
+ * @see uset_freeze
+ * @see uset_cloneAsThawed
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT UBool U_EXPORT2
+@@ -330,5 +330,5 @@
+ * @see uset_isFrozen
+ * @see uset_cloneAsThawed
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT void U_EXPORT2
+@@ -343,5 +343,5 @@
+ * @see uset_isFrozen
+ * @see uset_clone
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT USet * U_EXPORT2
+@@ -856,5 +856,5 @@
+ * @return the length of the initial substring according to the spanCondition;
+ * 0 if the start of the string does not fit the spanCondition
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ * @see USetSpanCondition
+ */
+@@ -877,5 +877,5 @@
+ * @return the start of the trailing substring according to the spanCondition;
+ * the string length if the end of the string does not fit the spanCondition
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ * @see USetSpanCondition
+ */
+@@ -899,5 +899,5 @@
+ * @return the length of the initial substring according to the spanCondition;
+ * 0 if the start of the string does not fit the spanCondition
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ * @see USetSpanCondition
+ */
+@@ -920,5 +920,5 @@
+ * @return the start of the trailing substring according to the spanCondition;
+ * the string length if the end of the string does not fit the spanCondition
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ * @see USetSpanCondition
+ */
+Index: source/common/unicode/uniset.h
+===================================================================
+--- source/common/unicode/uniset.h (revision 23962)
++++ source/common/unicode/uniset.h (revision 24398)
+@@ -481,5 +481,5 @@
+ * @see freeze
+ * @see cloneAsThawed
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ inline UBool isFrozen() const;
+@@ -496,5 +496,5 @@
+ * @see isFrozen
+ * @see cloneAsThawed
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UnicodeFunctor *freeze();
+@@ -506,5 +506,5 @@
+ * @see freeze
+ * @see isFrozen
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UnicodeFunctor *cloneAsThawed() const;
+@@ -817,5 +817,5 @@
+ * @return the length of the initial substring according to the spanCondition;
+ * 0 if the start of the string does not fit the spanCondition
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ * @see USetSpanCondition
+ */
+@@ -836,5 +836,5 @@
+ * @return the start of the trailing substring according to the spanCondition;
+ * the string length if the end of the string does not fit the spanCondition
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ * @see USetSpanCondition
+ */
+@@ -856,5 +856,5 @@
+ * @return the length of the initial substring according to the spanCondition;
+ * 0 if the start of the string does not fit the spanCondition
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ * @see USetSpanCondition
+ */
+@@ -875,5 +875,5 @@
+ * @return the start of the trailing substring according to the spanCondition;
+ * the string length if the end of the string does not fit the spanCondition
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ * @see USetSpanCondition
+ */
+Index: source/common/unicode/utext.h
+===================================================================
+--- source/common/unicode/utext.h (revision 24046)
++++ source/common/unicode/utext.h (revision 24398)
+@@ -727,5 +727,5 @@
+ * the range of the input text.
+ *
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ #define UTEXT_SETNATIVEINDEX(ut, ix) \
+Index: source/common/unicode/ucasemap.h
+===================================================================
+--- source/common/unicode/ucasemap.h (revision 23962)
++++ source/common/unicode/ucasemap.h (revision 24398)
+@@ -137,5 +137,5 @@
+ * @see ucasemap_utf8ToTitle
+ * @see UnicodeString::toTitle
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ #define U_TITLECASE_NO_LOWERCASE 0x100
+@@ -162,5 +162,5 @@
+ * @see UnicodeString::toTitle
+ * @see U_TITLECASE_NO_LOWERCASE
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ #define U_TITLECASE_NO_BREAK_ADJUSTMENT 0x200
+@@ -175,5 +175,5 @@
+ * @param csm UCaseMap service object.
+ * @return titlecasing break iterator
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT const UBreakIterator * U_EXPORT2
+@@ -198,5 +198,5 @@
+ * @see ucasemap_toTitle
+ * @see ucasemap_utf8ToTitle
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT void U_EXPORT2
+@@ -242,5 +242,5 @@
+ *
+ * @see u_strToTitle
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT int32_t U_EXPORT2
+@@ -349,5 +349,5 @@
+ * @see U_TITLECASE_NO_LOWERCASE
+ * @see U_TITLECASE_NO_BREAK_ADJUSTMENT
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT int32_t U_EXPORT2
+@@ -385,5 +385,5 @@
+ * @see U_FOLD_CASE_DEFAULT
+ * @see U_FOLD_CASE_EXCLUDE_SPECIAL_I
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ U_DRAFT int32_t U_EXPORT2
+Index: source/common/unicode/unistr.h
+===================================================================
+--- source/common/unicode/unistr.h (revision 23962)
++++ source/common/unicode/unistr.h (revision 24398)
+@@ -2502,5 +2502,5 @@
+ * @see U_TITLECASE_NO_BREAK_ADJUSTMENT
+ * @see ucasemap_open
+- * @stable ICU 4.0
++ * @stable ICU 3.8
+ */
+ UnicodeString &toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options);
+Index: source/layout/LEScripts.h
+===================================================================
+--- source/layout/LEScripts.h (revision 23962)
++++ source/layout/LEScripts.h (revision 24398)
+@@ -151,5 +151,5 @@
+ zzzzScriptCode = 103,
+
+- /** New script codes from ISO 15924 @stable ICU 4.0 */
++ /** New script codes from ISO 15924 @stable ICU 3.8 */
+ cariScriptCode = 104,
+ jpanScriptCode = 105,
diff --git a/libraries/icu4c/icu4c-4.0-timezone.patch b/libraries/icu4c/icu4c-4.0-timezone.patch
new file mode 100644
index 0000000000..84d961f7b7
--- /dev/null
+++ b/libraries/icu4c/icu4c-4.0-timezone.patch
@@ -0,0 +1,11 @@
+Index: source/i18n/timezone.cpp
+===================================================================
+--- source/i18n/timezone.cpp (revision 24126)
++++ source/i18n/timezone.cpp (revision 24940)
+@@ -1236,4 +1236,6 @@
+ }
+ format.adoptTimeZone(tz);
++ } else {
++ format.setTimeZone(*this);
+ }
+ } else {
diff --git a/libraries/icu4c/icu4c.SlackBuild b/libraries/icu4c/icu4c.SlackBuild
index 134fcaec90..00ae8ea7e4 100644
--- a/libraries/icu4c/icu4c.SlackBuild
+++ b/libraries/icu4c/icu4c.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for icu4c
-# Copyright 2007 Heinz Wiesinger <hmwiesinger@gmx.at>
+# Copyright 2007-2008 Heinz Wiesinger <pprkut@liwjatan.at>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,9 +23,9 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=icu4c
-VERSION=3.8.1
+VERSION=4.0
ARCH=${ARCH:-i486}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
CWD=$(pwd)
@@ -33,20 +33,22 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-# Pass STATIC=no on command line when running this script if you do not
+# Pass STATIC=yes on command line when running this script if you do
# want to build the static library(ies)
-STATIC=${STATIC:-yes}
+STATIC=${STATIC:-no}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
fi
-if [ "$STATIC" = 'yes' ]; then
- STATICOPT='en'
-else
+if [ "$STATIC" = 'no' ]; then
STATICOPT='dis'
+else
+ STATICOPT='en'
fi
set -e
@@ -58,7 +60,17 @@ rm -rf icu
tar xvf $CWD/$PRGNAM-$(echo $VERSION | tr . _)-src.tgz
cd icu
chown -R root:root .
-chmod -R u+w,go+r-w,a-s .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 \
+ -o -perm 400 \) -exec chmod 644 {} \;
+
+# Fix incorrect @stable ICU 4.0 tags in ICU4C (Bug #6435)
+patch -p0 -i $CWD/changeset_r24398.diff
+
+# Fix time zone display name problem (Bug #6597)
+patch -p0 -i $CWD/icu4c-4.0-timezone.patch
cd source/
CFLAGS="$SLKCFLAGS" \
@@ -68,15 +80,16 @@ cd source/
--enable-shared \
--${STATICOPT}able-static \
--sysconfdir=/etc \
- --localstatedir=/var
+ --localstatedir=/var \
+ --build=$ARCH-slackware-linux \
+ --host=$ARCH-slackware-linux
+
make
make install DESTDIR=$PKG
cd -
-( cd $PKG
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
-)
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
( cd $PKG/usr/man
find . -type f -exec gzip -9 {} \;
diff --git a/libraries/icu4c/icu4c.info b/libraries/icu4c/icu4c.info
index 395b65ec8e..18fea0db9e 100644
--- a/libraries/icu4c/icu4c.info
+++ b/libraries/icu4c/icu4c.info
@@ -1,8 +1,8 @@
PRGNAM="icu4c"
-VERSION="3.8.1"
+VERSION="4.0"
HOMEPAGE="http://www.icu-project.org/"
-DOWNLOAD="http://download.icu-project.org/files/icu4c/3.8.1/icu4c-3_8_1-src.tgz"
-MD5SUM="a827dbc9d909febd4ec39b90386868ba"
+DOWNLOAD="http://download.icu-project.org/files/icu4c/4.0/icu4c-4_0-src.tgz"
+MD5SUM="29ab09d84b72a74953cbb4d3d5759e14"
MAINTAINER="ppr:kut"
-EMAIL="HMWiesinger@gmx.at"
-APPROVED="rworkman"
+EMAIL="pprkut@liwjatan.at"
+APPROVED="dsomero"
diff --git a/libraries/icu4c/slack-desc b/libraries/icu4c/slack-desc
index 24948bf6c4..2d0beefda1 100644
--- a/libraries/icu4c/slack-desc
+++ b/libraries/icu4c/slack-desc
@@ -8,9 +8,9 @@
|-----handy-ruler------------------------------------------------------|
icu4c: icu4c (International Components for Unicode)
icu4c:
-icu4c: The International Components for Unicode (ICU)
-icu4c: libraries provide robust and full-featured Unicode
-icu4c: services on a wide variety of platforms.
+icu4c: The International Components for Unicode (ICU) libraries provide
+icu4c: robust and full-featured Unicode services on a wide variety of
+icu4c: platforms.
icu4c:
icu4c: Homepage: http://www.icu-project.org/
icu4c: