--- a/.hgtags Fri Feb 02 17:02:45 2018 +0530
+++ b/.hgtags Fri Feb 02 09:04:45 2018 -0800
@@ -466,3 +466,4 @@
e569e83139fdfbecfeb3cd9014d560917787f158 jdk-10+38
5b834ec962366e00d4445352a999a3ac14e26f64 jdk-10+39
860326263d1f6a83996d7da0f4c66806ae4aa1eb jdk-10+40
+3eae36c6baa5f916a3024cf1513e22357e00185d jdk-10+41
--- a/make/common/SetupJavaCompilers.gmk Fri Feb 02 17:02:45 2018 +0530
+++ b/make/common/SetupJavaCompilers.gmk Fri Feb 02 09:04:45 2018 -0800
@@ -26,13 +26,16 @@
ifndef _SETUP_GMK
_SETUP_GMK := 1
+# Include custom extension hook
+$(eval $(call IncludeCustomExtension, common/SetupJavaCompilers.gmk))
+
include JavaCompilation.gmk
-DISABLE_WARNINGS := -Xlint:all,-deprecation,-removal,-unchecked,-rawtypes,-cast,-serial,-dep-ann,-static,-fallthrough,-try,-varargs,-empty,-finally
+DISABLE_WARNINGS ?= -Xlint:all,-deprecation,-removal,-unchecked,-rawtypes,-cast,-serial,-dep-ann,-static,-fallthrough,-try,-varargs,-empty,-finally
# If warnings needs to be non-fatal for testing purposes use a command like:
# make JAVAC_WARNINGS="-Xlint:all -Xmaxwarns 10000"
-JAVAC_WARNINGS := -Xlint:all -Werror
+JAVAC_WARNINGS ?= -Xlint:all -Werror
# The BOOT_JAVAC setup uses the boot jdk compiler to compile the tools
# and the interim javac, to be run by the boot jdk.
--- a/make/data/characterdata/CharacterDataLatin1.java.template Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/characterdata/CharacterDataLatin1.java.template Fri Feb 02 09:04:45 2018 -0800
@@ -25,6 +25,8 @@
package java.lang;
+import java.util.Arrays;
+
/** The CharacterData class encapsulates the large tables found in
Java.lang.Character. */
@@ -159,20 +161,39 @@
return toUpperCase(ch);
}
+ // Digit values for codePoints in the 0-255 range. Contents generated using:
+ // for (char i = 0; i < 256; i++) {
+ // int v = -1;
+ // if (i >= '0' && i <= '9') { v = i - '0'; }
+ // else if (i >= 'A' && i <= 'Z') { v = i - 'A' + 10; }
+ // else if (i >= 'a' && i <= 'z') { v = i - 'a' + 10; }
+ // if (i % 20 == 0) System.out.println();
+ // System.out.printf("%2d, ", v);
+ // }
+ //
+ // Analysis has shown that generating the whole array allows the JIT to generate
+ // better code compared to a slimmed down array, such as one cutting off after 'z'
+ private static final byte[] DIGITS = new byte[] {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1,
+ -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
+
int digit(int ch, int radix) {
- int value = -1;
- if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
- int val = getProperties(ch);
- int kind = val & $$maskType;
- if (kind == Character.DECIMAL_DIGIT_NUMBER) {
- value = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit;
- }
- else if ((val & $$maskNumericType) == $$valueJavaSupradecimal) {
- // Java supradecimal digit
- value = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10;
- }
+ int value = DIGITS[ch];
+ if (value >= 0 && radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
+ value = (value < radix) ? value : -1;
}
- return (value < radix) ? value : -1;
+ return value;
}
int getNumericValue(int ch) {
--- a/make/data/tzdata/VERSION Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/VERSION Fri Feb 02 09:04:45 2018 -0800
@@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
-tzdata2017c
+tzdata2018c
--- a/make/data/tzdata/africa Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/africa Fri Feb 02 09:04:45 2018 -0800
@@ -181,7 +181,6 @@
Link Africa/Abidjan Africa/Lome # Togo
Link Africa/Abidjan Africa/Nouakchott # Mauritania
Link Africa/Abidjan Africa/Ouagadougou # Burkina Faso
-Link Africa/Abidjan Africa/Sao_Tome # São Tomé and Príncipe
Link Africa/Abidjan Atlantic/St_Helena # St Helena
# Djibouti
@@ -448,7 +447,7 @@
#
# The Nautical Almanac for the Year 1970, p 264, is the source for -0:44:30.
#
-# In 1972 Liberia was the last country to switch from a UTC offset
+# In 1972 Liberia was the last country to switch from a UT offset
# that was not a multiple of 15 or 20 minutes. The 1972 change was on
# 1972-01-07, according to an entry dated 1972-01-04 on p 330 of:
# Presidential Papers: First year of the administration of
@@ -1060,6 +1059,19 @@
# Inaccessible, Nightingale: uninhabited
# São Tomé and Príncipe
+
+# From Steffen Thorsen (2018-01-08):
+# Multiple sources tell that São Tomé changed from UTC to UTC+1 as
+# they entered the year 2018.
+# From Michael Deckers (2018-01-08):
+# the switch is from 01:00 to 02:00 ... [Decree No. 25/2017]
+# http://www.mnec.gov.st/index.php/publicacoes/documentos/file/90-decreto-lei-n-25-2017
+
+Zone Africa/Sao_Tome 0:26:56 - LMT 1884
+ -0:36:45 - LMT 1912 # Lisbon Mean Time
+ 0:00 - GMT 2018 Jan 1 01:00
+ 1:00 - WAT
+
# Senegal
# See Africa/Abidjan.
--- a/make/data/tzdata/asia Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/asia Fri Feb 02 09:04:45 2018 -0800
@@ -73,7 +73,7 @@
# 9:00 KST KDT Korea when at +09
# 9:30 ACST Australian Central Standard Time
# Otherwise, these tables typically use numeric abbreviations like +03
-# and +0330 for integer hour and minute UTC offsets. Although earlier
+# and +0330 for integer hour and minute UT offsets. Although earlier
# editions invented alphabetic time zone abbreviations for every
# offset, this did not reflect common practice.
#
@@ -670,17 +670,17 @@
# time", in which abolished the adoption of Western Standard Time in
# western islands (listed above), which means the whole Japan
# territory, including later occupations, adopt Japan Central Time
-# (UTC+9). The adoption began on Oct 1, 1937. The original text can
+# (UT+9). The adoption began on Oct 1, 1937. The original text can
# be found on Wikisource:
# https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
#
-# That is, the time zone of Taipei switched to UTC+9 on Oct 1, 1937.
+# That is, the time zone of Taipei switched to UT+9 on Oct 1, 1937.
# From Yu-Cheng Chuang (2014-07-02):
-# I've found more evidence about when the time zone was switched from UTC+9
-# back to UTC+8 after WW2. I believe it was on Sep 21, 1945. In a document
+# I've found more evidence about when the time zone was switched from UT+9
+# back to UT+8 after WW2. I believe it was on Sep 21, 1945. In a document
# during Japanese era [1] in which the officer told the staff to change time
-# zone back to Western Standard Time (UTC+8) on Sep 21. And in another
+# zone back to Western Standard Time (UT+8) on Sep 21. And in another
# history page of National Cheng Kung University [2], on Sep 21 there is a
# note "from today, switch back to Western Standard Time". From these two
# materials, I believe that the time zone change happened on Sep 21. And
@@ -1487,17 +1487,17 @@
# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who
# wanted to keep it.)
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger write that DST in Japan during those years was as follows:
+# From Takayuki Nikai (2018-01-19):
+# The source of information is Japanese law.
+# http://www.shugiin.go.jp/internet/itdb_housei.nsf/html/houritsu/00219480428029.htm
+# http://www.shugiin.go.jp/internet/itdb_housei.nsf/html/houritsu/00719500331039.htm
+# ... In summary, it is written as follows. From 24:00 on the first Saturday
+# in May, until 0:00 on the day after the second Saturday in September.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Japan 1948 only - May Sun>=1 2:00 1:00 D
-Rule Japan 1948 1951 - Sep Sat>=8 2:00 0 S
-Rule Japan 1949 only - Apr Sun>=1 2:00 1:00 D
-Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D
-# but the only locations using it (for birth certificates, presumably, since
-# their audience is astrologers) were US military bases. For now, assume
-# that for most purposes daylight-saving time was observed; otherwise, what
-# would have been the point of the 1951 poll?
+Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
+Rule Japan 1948 1951 - Sep Sun>=9 0:00 0 S
+Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
+Rule Japan 1950 1951 - May Sat>=1 24:00 1:00 D
# From Hideyuki Suzuki (1998-11-09):
# 'Tokyo' usually stands for the former location of Tokyo Astronomical
@@ -1528,7 +1528,7 @@
#
# ...the Showa Emperor announced Ordinance No. 529 of Showa Year 12 ... which
# means the whole Japan territory, including later occupations, adopt Japan
-# Central Time (UTC+9). The adoption began on Oct 1, 1937.
+# Central Time (UT+9). The adoption began on Oct 1, 1937.
# https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -2089,8 +2089,8 @@
# Maldives
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Indian/Maldives 4:54:00 - LMT 1880 # Male
- 4:54:00 - MMT 1960 # Male Mean Time
+Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
+ 4:54:00 - MMT 1960 # Malé Mean Time
5:00 - +05
# Mongolia
--- a/make/data/tzdata/australasia Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/australasia Fri Feb 02 09:04:45 2018 -0800
@@ -706,8 +706,8 @@
# From Steffen Thorsen (2012-07-25)
# ... we double checked by calling hotels and offices based in Tokelau asking
# about the time there, and they all told a time that agrees with UTC+13....
-# Shanks says UTC-10 from 1901 [but] ... there is a good chance the change
-# actually was to UTC-11 back then.
+# Shanks says UT-10 from 1901 [but] ... there is a good chance the change
+# actually was to UT-11 back then.
#
# From Paul Eggert (2012-07-25)
# A Google Books snippet of Appendix to the Journals of the House of
@@ -1473,7 +1473,7 @@
#
# From Paul Eggert (2006-03-22):
# The Department of Internal Affairs (DIA) maintains a brief history,
-# as does Carol Squires; see tz-link.htm for the full references.
+# as does Carol Squires; see tz-link.html for the full references.
# Use these sources in preference to Shanks & Pottenger.
#
# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with
--- a/make/data/tzdata/europe Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/europe Fri Feb 02 09:04:45 2018 -0800
@@ -91,14 +91,15 @@
# 0:00 WET WEST WEMT Western Europe
# 0:19:32.13 AMT* NST* Amsterdam, Netherlands Summer (1835-1937)
# 1:00 BST British Standard (1968-1971)
+# 1:00 IST GMT Irish Standard (1968-) with winter DST
# 1:00 CET CEST CEMT Central Europe
# 1:00:14 SET Swedish (1879-1899)
# 1:36:34 RMT* LST* Riga, Latvian Summer (1880-1926)*
# 2:00 EET EEST Eastern Europe
# 3:00 MSK MSD MDST* Moscow
-# From Peter Ilieve (1994-12-04),
-# The original six [EU members]: Belgium, France, (West) Germany, Italy,
+# From Peter Ilieve (1994-12-04), re EEC/EC/EU members:
+# The original six: Belgium, France, (West) Germany, Italy,
# Luxembourg, the Netherlands.
# Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom.
# Plus, from 1 Jan 81: Greece.
@@ -301,16 +302,31 @@
# The following claim by Shanks & Pottenger is possible though doubtful;
# we'll ignore it for now.
# * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00.
-#
+
+# From Paul Eggert (2017-12-04):
#
-# Whitman says Dublin Mean Time was -0:25:21, which is more precise than
-# Shanks & Pottenger.
-# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory
-# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was
-# to London. For example:
+# Dunsink Observatory (8 km NW of Dublin's center) was to Dublin as
+# Greenwich was to London. For example:
#
# "Timeball on the ballast office is down. Dunsink time."
# -- James Joyce, Ulysses
+#
+# The abbreviation DMT stood for "Dublin Mean Time" or "Dunsink Mean Time";
+# this being Ireland, opinions differed.
+#
+# Whitman says Dublin/Dunsink Mean Time was UT-00:25:21, which agrees
+# with measurements of recent visitors to the Meridian Room of Dunsink
+# Observatory; see Malone D. Dunsink and timekeeping. 2016-01-24.
+# <https://www.maths.tcd.ie/~dwmalone/time/dunsink.html>. Malone
+# writes that the Nautical Almanac listed UT-00:25:22 until 1896, when
+# it moved to UT-00:25:21.1 (I confirmed that the 1893 edition used
+# the former and the 1896 edition used the latter). Evidently the
+# news of this change propagated slowly, as Milne 1899 still lists
+# UT-00:25:22 and cites the International Telegraph Bureau. As it is
+# not clear that there was any practical significance to the change
+# from UT-00:25:22 to UT-00:25:21.1 in civil timekeeping, omit this
+# transition for now and just use the latter value, omitting its
+# fraction since our format cannot represent fractions.
# "Countess Markievicz ... claimed that the [1916] abolition of Dublin Mean Time
# was among various actions undertaken by the 'English' government that
@@ -370,12 +386,28 @@
# regulations. I spoke this morning with the Secretary of the Department of
# Justice (tel +353 1 678 9711) who confirmed to me that the correct name is
# "Irish Summer Time", abbreviated to "IST".
+#
+# From Paul Eggert (2017-12-07):
+# The 1996 anonymous contributor's goal was to determine the correct
+# abbreviation for summer time in Dublin and so the contributor
+# focused on the "IST", not on the "Irish Summer Time". Though the
+# "IST" was correct, the "Irish Summer Time" appears to have been an
+# error, as Ireland's Standard Time (Amendment) Act, 1971 states that
+# standard time in Ireland remains at UT +01 and is observed in
+# summer, and that Greenwich mean time is observed in winter. (Thanks
+# to Derick Rethans for pointing out the error.) That is, when
+# Ireland amended the 1968 act that established UT +01 as Irish
+# Standard Time, it left standard time unchanged and established GMT
+# as a negative daylight saving time in winter. So, in this database
+# IST stands for Irish Summer Time for timestamps before 1968, and for
+# Irish Standard Time after that. See:
+# http://www.irishstatutebook.ie/eli/1971/act/17/enacted/en/print
# Michael Deckers (2017-06-01) gave the following URLs for Ireland's
# Summer Time Act, 1925 and Summer Time Orders, 1926 and 1947:
-# http://www.irishstatutebook.ie/eli/1925/act/8/enacted/en/print.html
-# http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print.html
-# http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print.html
+# http://www.irishstatutebook.ie/eli/1925/act/8/enacted/en/print
+# http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print
+# http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# Summer Time Act, 1916
@@ -499,9 +531,23 @@
Link Europe/London Europe/Guernsey
Link Europe/London Europe/Isle_of_Man
+# From Paul Eggert (2018-01-19):
+# The following is like GB-Eire and EU, except with standard time in
+# summer and negative daylight saving time in winter.
+# Although currently commented out, this will need to become uncommented
+# once the ICU/OpenJDK workaround is removed; see below.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+#Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT
+#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST
+#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT
+#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST
+#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT
+#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT
+#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT
+
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
- -0:25:21 - DMT 1916 May 21 2:00s # Dublin MT
+ -0:25:21 - DMT 1916 May 21 2:00s
-0:25:21 1:00 IST 1916 Oct 1 2:00s
0:00 GB-Eire %s 1921 Dec 6 # independence
0:00 GB-Eire GMT/IST 1940 Feb 25 2:00s
@@ -510,16 +556,33 @@
0:00 1:00 IST 1947 Nov 2 2:00s
0:00 - GMT 1948 Apr 18 2:00s
0:00 GB-Eire GMT/IST 1968 Oct 27
+# From Paul Eggert (2018-01-18):
+# The next line should look like this:
+# 1:00 Eire IST/GMT
+# However, in January 2018 we discovered that the Eire rules cause
+# problems with tests for ICU:
+# https://mm.icann.org/pipermail/tz/2018-January/025825.html
+# and with tests for OpenJDK:
+# https://mm.icann.org/pipermail/tz/2018-January/025822.html
+# To work around this problem, use a traditional approximation for
+# time stamps after 1971-10-31 02:00 UTC, to give ICU and OpenJDK
+# developers breathing room to fix bugs. This approximation has
+# correct UTC offsets, but results in tm_isdst flags are the reverse
+# of what they should be. This workaround is temporary and should be
+# removed reasonably soon.
1:00 - IST 1971 Oct 31 2:00u
0:00 GB-Eire GMT/IST 1996
0:00 EU GMT/IST
+# End of workaround for ICU and OpenJDK bugs.
+
###############################################################################
# Europe
-# EU rules are for the European Union, previously known as the EC, EEC,
-# Common Market, etc.
+# The following rules are for the European Union and for its
+# predecessor organization, the European Communities.
+# For brevity they are called "EU rules" elsewhere in this file.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
@@ -952,7 +1015,7 @@
# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
# confirms this, and states that the law was put forth 1893-03-29.
#
-# The EU treaty with effect from 1973:
+# The EU [actually, EEC and Euratom] treaty with effect from 1973:
# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
#
# This provoked a new law from 1974 to make possible summer time changes
@@ -1008,9 +1071,10 @@
# East Greenland and Franz Josef Land, but we don't know their time zones.
# My source for this is Wilhelm Dege's book mentioned under Svalbard.
#
-# From Paul Eggert (2006-03-22):
-# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
-# and left the EU on 1985-02-01. It therefore should have been using EU
+# From Paul Eggert (2017-12-10):
+# Greenland joined the European Communities as part of Denmark,
+# obtained home rule on 1979-05-01, and left the European Communities
+# on 1985-02-01. It therefore should have been using EU
# rules at least through 1984. Shanks & Pottenger say Scoresbysund and Godthåb
# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
# rules since at least 1991. Assume EU rules since 1980.
@@ -1324,7 +1388,7 @@
# From Markus Kuhn (1998-09-29):
# The German time zone web site by the Physikalisch-Technische
# Bundesanstalt contains DST information back to 1916.
-# [See tz-link.htm for the URL.]
+# [See tz-link.html for the URL.]
# From Jörg Schilling (2002-10-23):
# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by
@@ -1421,7 +1485,7 @@
1:00 Greece CE%sT 1944 Apr 4
2:00 Greece EE%sT 1981
# Shanks & Pottenger say it switched to C-Eur in 1981;
- # go with EU instead, since Greece joined it on Jan 1.
+ # go with EU rules instead, since Greece joined Jan 1.
2:00 EU EE%sT
# Hungary
@@ -2120,7 +2184,7 @@
# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
-# harmonized with the EU), and that they stayed +0:00 that winter.
+# harmonized with EU rules), and that they stayed +0:00 that winter.
#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
@@ -2795,9 +2859,9 @@
#
# https://regnum.ru/news/society/1957270.html
# has some historical data for Altai Krai:
-# before 1957: west part on UTC+6, east on UTC+7
-# after 1957: UTC+7
-# since 1995: UTC+6
+# before 1957: west part on UT+6, east on UT+7
+# after 1957: UT+7
+# since 1995: UT+6
# http://barnaul.rusplt.ru/index/pochemu_altajskij_kraj_okazalsja_v_neprivychnom_chasovom_pojase-17648.html
# confirms that and provides more details including 1995-05-28 transition date.
@@ -3605,6 +3669,17 @@
# The change is permanent, so this is the new standard time in Turkey.
# It takes effect today, which is not much notice.
+# From Kıvanç Yazan (2017-10-28):
+# Turkey will go back to Daylight Saving Time starting 2018-10.
+# http://www.resmigazete.gov.tr/eskiler/2017/10/20171028-5.pdf
+#
+# From Even Scharning (2017-11-08):
+# ... today it was announced that the DST will become "continuous":
+# http://www.hurriyet.com.tr/son-dakika-yaz-saati-uygulamasi-surekli-hale-geldi-40637482
+# From Paul Eggert (2017-11-08):
+# Although Google Translate misfires on that source, it looks like
+# Turkey reversed last month's decision, and so will stay at +03.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Turkey 1916 only - May 1 0:00 1:00 S
Rule Turkey 1916 only - Oct 1 0:00 0 -
--- a/make/data/tzdata/leapseconds Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/leapseconds Fri Feb 02 09:04:45 2018 -0800
@@ -80,5 +80,5 @@
Leap 2015 Jun 30 23:59:60 + S
Leap 2016 Dec 31 23:59:60 + S
-# Updated through IERS Bulletin C54
-# File expires on: 28 June 2018
+# Updated through IERS Bulletin C55
+# File expires on: 28 December 2018
--- a/make/data/tzdata/northamerica Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/northamerica Fri Feb 02 09:04:45 2018 -0800
@@ -371,6 +371,18 @@
# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
# western Tennessee, most of Texas, Wisconsin
+# From Paul Eggert (2018-01-07):
+# In 1869 the Chicago Astronomical Society contracted with the city to keep
+# time. Though delayed by the Great Fire, by 1880 a wire ran from the
+# Dearborn Observatory (on the University of Chicago campus) to City Hall,
+# which then sent signals to police and fire stations. However, railroads got
+# their time signals from the Allegheny Observatory, the Madison Observatory,
+# the Ann Arbor Observatory, etc., so their clocks did not agree with each
+# other or with the city's official time. The confusion took some years to
+# clear up. See:
+# Moser M. How Chicago gave America its time zones. Chicago. 2018-01-04.
+# http://www.chicagomag.com/city-life/January-2018/How-Chicago-Gave-America-Its-Time-Zones/
+
# From Larry M. Smith (2006-04-26) re Wisconsin:
# https://docs.legis.wisconsin.gov/statutes/statutes/175.pdf
# is currently enforced at the 01:00 time of change. Because the local
@@ -1919,7 +1931,7 @@
# manager of the Creston & District Museum. The article was written in May 2009.
# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
# According to the article, Creston has not changed its clocks since June 1918.
-# i.e. Creston has been stuck on UTC-7 for 93 years.
+# i.e. Creston has been stuck on UT-7 for 93 years.
# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
# Unfortunately the exact date for the time change in June 1918 remains
--- a/make/data/tzdata/southamerica Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/southamerica Fri Feb 02 09:04:45 2018 -0800
@@ -48,7 +48,7 @@
# https://www.jstor.org/stable/1774359
#
# These tables use numeric abbreviations like -03 and -0330 for
-# integer hour and minute UTC offsets. Although earlier editions used
+# integer hour and minute UT offsets. Although earlier editions used
# alphabetic time zone abbreviations, these abbreviations were
# invented and did not reflect common practice.
@@ -602,7 +602,7 @@
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/La_Paz -4:32:36 - LMT 1890
-4:32:36 - CMT 1931 Oct 15 # Calamarca MT
- -4:32:36 1:00 BOST 1932 Mar 21 # Bolivia ST
+ -4:32:36 1:00 BST 1932 Mar 21 # Bolivia ST
-4:00 - -04
# Brazil
@@ -931,12 +931,25 @@
# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
# 3rd Feb Sunday. There is an exception on the return date when this is
# the Carnival Sunday then the return date will be the next Sunday...
-Rule Brazil 2008 max - Oct Sun>=15 0:00 1:00 S
+Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 S
Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
+# Decree 7,584 <http://pcdsh01.on.br/HVdecreto7584_20111013.jpg> (2011-10-13)
+# added Bahia.
Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
+# Decree 7,826 <http://pcdsh01.on.br/HVdecreto7826_20121015.jpg> (2012-10-15)
+# removed Bahia and added Tocantins.
+# Decree 8,112 <http://pcdsh01.on.br/HVdecreto8112_20130930.JPG> (2013-09-30)
+# removed Tocantins.
Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
+# From Steffen Thorsen (2017-12-18):
+# According to many media sources, next year's DST start in Brazil will move to
+# the first Sunday of November, and it will stay like that for the years after.
+# ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html
+# From Steffen Thorsen (2017-12-20):
+# http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm
+Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 S
Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
@@ -1091,7 +1104,7 @@
# From Paul Eggert (2015-04-03):
# Shanks & Pottenger says America/Santiago introduced standard time in
-# 1890 and rounds its UTC offset to 70W40; guess that in practice this
+# 1890 and rounds its UT offset to 70W40; guess that in practice this
# was the same offset as in 1916-1919. It also says Pacific/Easter
# standardized on 109W22 in 1890; assume this didn't change the clocks.
#
--- a/make/data/tzdata/zone.tab Fri Feb 02 17:02:45 2018 +0530
+++ b/make/data/tzdata/zone.tab Fri Feb 02 09:04:45 2018 -0800
@@ -395,7 +395,7 @@
SN +1440-01726 Africa/Dakar
SO +0204+04522 Africa/Mogadishu
SR +0550-05510 America/Paramaribo
-SS +0451+03136 Africa/Juba
+SS +0451+03137 Africa/Juba
ST +0020+00644 Africa/Sao_Tome
SV +1342-08912 America/El_Salvador
SX +180305-0630250 America/Lower_Princes
--- a/make/gensrc/GensrcVarHandles.gmk Fri Feb 02 17:02:45 2018 +0530
+++ b/make/gensrc/GensrcVarHandles.gmk Fri Feb 02 09:04:45 2018 -0800
@@ -168,3 +168,7 @@
$(eval $(call GenerateVarHandleByteArray,VAR_HANDLE_BYTE_ARRAY_$t,$t)))
GENSRC_JAVA_BASE += $(GENSRC_VARHANDLES)
+
+# Include custom extension post hook
+$(eval $(call IncludeCustomExtension, gensrc/GensrcVarHandles-post.gmk))
+
--- a/make/lib/Lib-java.management.gmk Fri Feb 02 17:02:45 2018 +0530
+++ b/make/lib/Lib-java.management.gmk Fri Feb 02 09:04:45 2018 -0800
@@ -70,3 +70,7 @@
TARGETS += $(BUILD_LIBMANAGEMENT)
################################################################################
+
+# Include custom extension post hook
+$(eval $(call IncludeCustomExtension, lib/Lib-java.management-post.gmk))
+
--- a/make/lib/Lib-jdk.management.gmk Fri Feb 02 17:02:45 2018 +0530
+++ b/make/lib/Lib-jdk.management.gmk Fri Feb 02 09:04:45 2018 -0800
@@ -80,3 +80,7 @@
TARGETS += $(BUILD_LIBMANAGEMENT_EXT)
################################################################################
+
+# Include custom extension post hook
+$(eval $(call IncludeCustomExtension, lib/Lib-jdk.management-post.gmk))
+
--- a/src/hotspot/cpu/ppc/vtableStubs_ppc_64.cpp Fri Feb 02 17:02:45 2018 +0530
+++ b/src/hotspot/cpu/ppc/vtableStubs_ppc_64.cpp Fri Feb 02 09:04:45 2018 -0800
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2017 SAP SE. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -104,7 +104,7 @@
int v_off = entry_offset + vtableEntry::method_offset_in_bytes();
- __ ld(R19_method, v_off, rcvr_klass);
+ __ ld(R19_method, (RegisterOrConstant)v_off, rcvr_klass);
#ifndef PRODUCT
if (DebugVtables) {
--- a/src/hotspot/cpu/zero/methodHandles_zero.cpp Fri Feb 02 17:02:45 2018 +0530
+++ b/src/hotspot/cpu/zero/methodHandles_zero.cpp Fri Feb 02 09:04:45 2018 -0800
@@ -183,3 +183,9 @@
return NULL;
}
}
+
+#ifndef PRODUCT
+void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
+ // This is just a stub.
+}
+#endif //PRODUCT
--- a/src/hotspot/share/interpreter/bytecodeInterpreter.cpp Fri Feb 02 17:02:45 2018 +0530
+++ b/src/hotspot/share/interpreter/bytecodeInterpreter.cpp Fri Feb 02 09:04:45 2018 -0800
@@ -2535,13 +2535,35 @@
// this could definitely be cleaned up QQQ
Method* callee;
- Klass* iclass = cache->f1_as_klass();
- // InstanceKlass* interface = (InstanceKlass*) iclass;
+ Method *interface_method = cache->f2_as_interface_method();
+ InstanceKlass* iclass = interface_method->method_holder();
+
// get receiver
int parms = cache->parameter_size();
oop rcvr = STACK_OBJECT(-parms);
CHECK_NULL(rcvr);
InstanceKlass* int2 = (InstanceKlass*) rcvr->klass();
+
+ // Receiver subtype check against resolved interface klass (REFC).
+ {
+ Klass* refc = cache->f1_as_klass();
+ itableOffsetEntry* scan;
+ for (scan = (itableOffsetEntry*) int2->start_of_itable();
+ scan->interface_klass() != NULL;
+ scan++) {
+ if (scan->interface_klass() == refc) {
+ break;
+ }
+ }
+ // Check that the entry is non-null. A null entry means
+ // that the receiver class doesn't implement the
+ // interface, and wasn't the same as when the caller was
+ // compiled.
+ if (scan->interface_klass() == NULL) {
+ VM_JAVA_ERROR(vmSymbols::java_lang_IncompatibleClassChangeError(), "", note_no_trap);
+ }
+ }
+
itableOffsetEntry* ki = (itableOffsetEntry*) int2->start_of_itable();
int i;
for ( i = 0 ; i < int2->itable_length() ; i++, ki++ ) {
@@ -2553,7 +2575,8 @@
if (i == int2->itable_length()) {
VM_JAVA_ERROR(vmSymbols::java_lang_IncompatibleClassChangeError(), "", note_no_trap);
}
- int mindex = cache->f2_as_index();
+ int mindex = interface_method->itable_index();
+
itableMethodEntry* im = ki->first_method_entry(rcvr->klass());
callee = im[mindex].method();
if (callee == NULL) {
--- a/src/hotspot/share/opto/loopnode.cpp Fri Feb 02 17:02:45 2018 +0530
+++ b/src/hotspot/share/opto/loopnode.cpp Fri Feb 02 09:04:45 2018 -0800
@@ -1260,6 +1260,10 @@
assert(inner_cl->is_strip_mined(), "inner loop should be strip mined");
Node* inner_iv_phi = inner_cl->phi();
if (inner_iv_phi == NULL) {
+ IfNode* outer_le = outer_loop_end();
+ Node* iff = igvn->transform(new IfNode(outer_le->in(0), outer_le->in(1), outer_le->_prob, outer_le->_fcnt));
+ igvn->replace_node(outer_le, iff);
+ inner_cl->clear_strip_mined();
return;
}
CountedLoopEndNode* inner_cle = inner_cl->loopexit();
--- a/src/hotspot/share/opto/loopopts.cpp Fri Feb 02 17:02:45 2018 +0530
+++ b/src/hotspot/share/opto/loopopts.cpp Fri Feb 02 09:04:45 2018 -0800
@@ -1036,7 +1036,7 @@
bool PhaseIdealLoop::identical_backtoback_ifs(Node *n) {
- if (!n->is_If()) {
+ if (!n->is_If() || n->is_CountedLoopEnd()) {
return false;
}
if (!n->in(0)->is_Region()) {
--- a/src/hotspot/share/opto/mathexactnode.cpp Fri Feb 02 17:02:45 2018 +0530
+++ b/src/hotspot/share/opto/mathexactnode.cpp Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -117,23 +117,33 @@
return SubHelper<OverflowSubLNode>::will_overflow(v1, v2);
}
-bool OverflowMulLNode::will_overflow(jlong val1, jlong val2) const {
- jlong result = val1 * val2;
- jlong ax = (val1 < 0 ? -val1 : val1);
- jlong ay = (val2 < 0 ? -val2 : val2);
+bool OverflowMulLNode::is_overflow(jlong val1, jlong val2) {
+ // x * { 0, 1 } will never overflow. Even for x = min_jlong
+ if (val1 == 0 || val2 == 0 || val1 == 1 || val2 == 1) {
+ return false;
+ }
- bool overflow = false;
- if ((ax | ay) & CONST64(0xFFFFFFFF00000000)) {
- // potential overflow if any bit in upper 32 bits are set
- if ((val1 == min_jlong && val2 == -1) || (val2 == min_jlong && val1 == -1)) {
- // -1 * Long.MIN_VALUE will overflow
- overflow = true;
- } else if (val2 != 0 && (result / val2 != val1)) {
- overflow = true;
- }
+ // x * min_jlong for x not in { 0, 1 } overflows
+ // even -1 as -1 * min_jlong is an overflow
+ if (val1 == min_jlong || val2 == min_jlong) {
+ return true;
}
- return overflow;
+ // if (x * y) / y == x there is no overflow
+ //
+ // the multiplication here is done as unsigned to avoid undefined behaviour which
+ // can be used by the compiler to assume that the check further down (result / val2 != val1)
+ // is always false and breaks the overflow check
+ julong v1 = (julong) val1;
+ julong v2 = (julong) val2;
+ julong tmp = v1 * v2;
+ jlong result = (jlong) tmp;
+
+ if (result / val2 != val1) {
+ return true;
+ }
+
+ return false;
}
bool OverflowAddINode::can_overflow(const Type* t1, const Type* t2) const {
--- a/src/hotspot/share/opto/mathexactnode.hpp Fri Feb 02 17:02:45 2018 +0530
+++ b/src/hotspot/share/opto/mathexactnode.hpp Fri Feb 02 09:04:45 2018 -0800
@@ -129,8 +129,10 @@
OverflowMulLNode(Node* in1, Node* in2) : OverflowLNode(in1, in2) {}
virtual int Opcode() const;
- virtual bool will_overflow(jlong v1, jlong v2) const;
+ virtual bool will_overflow(jlong v1, jlong v2) const { return is_overflow(v1, v2); }
virtual bool can_overflow(const Type* t1, const Type* t2) const;
+
+ static bool is_overflow(jlong v1, jlong v2);
};
#endif
--- a/src/java.base/share/classes/java/io/InputStream.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/java/io/InputStream.java Fri Feb 02 09:04:45 2018 -0800
@@ -63,7 +63,8 @@
*
* <p> While the stream is open, the {@code available()}, {@code read()},
* {@code read(byte[])}, {@code read(byte[], int, int)},
- * {@code readAllBytes()}, {@code readNBytes()}, {@code skip()}, and
+ * {@code readAllBytes()}, {@code readNBytes(byte[], int, int)},
+ * {@code readNBytes(int)}, {@code skip(long)}, and
* {@code transferTo()} methods all behave as if end of stream has been
* reached. After the stream has been closed, these methods all throw
* {@code IOException}.
@@ -123,6 +124,15 @@
}
@Override
+ public byte[] readNBytes(int len) throws IOException {
+ if (len < 0) {
+ throw new IllegalArgumentException("len < 0");
+ }
+ ensureOpen();
+ return new byte[0];
+ }
+
+ @Override
public long skip(long n) throws IOException {
ensureOpen();
return 0L;
@@ -233,8 +243,8 @@
* <code>b</code> and the number of bytes read before the exception
* occurred is returned. The default implementation of this method blocks
* until the requested amount of input data <code>len</code> has been read,
- * end of file is detected, or an exception is thrown. Subclasses are encouraged
- * to provide a more efficient implementation of this method.
+ * end of file is detected, or an exception is thrown. Subclasses are
+ * encouraged to provide a more efficient implementation of this method.
*
* @param b the buffer into which the data is read.
* @param off the start offset in array <code>b</code>
@@ -308,26 +318,85 @@
* It is strongly recommended that the stream be promptly closed if an I/O
* error occurs.
*
+ * @implSpec
+ * This method invokes {@link #readNBytes(int)} with a length of
+ * {@link Integer#MAX_VALUE}.
+ *
* @return a byte array containing the bytes read from this input stream
* @throws IOException if an I/O error occurs
* @throws OutOfMemoryError if an array of the required size cannot be
- * allocated. For example, if an array larger than {@code 2GB} would
- * be required to store the bytes.
+ * allocated.
*
* @since 9
*/
public byte[] readAllBytes() throws IOException {
+ return readNBytes(Integer.MAX_VALUE);
+ }
+
+ /**
+ * Reads up to a specified number of bytes from the input stream. This
+ * method blocks until the requested number of bytes have been read, end
+ * of stream is detected, or an exception is thrown. This method does not
+ * close the input stream.
+ *
+ * <p> The length of the returned array equals the number of bytes read
+ * from the stream. If {@code len} is zero, then no bytes are read and
+ * an empty byte array is returned. Otherwise, up to {@code len} bytes
+ * are read from the stream. Fewer than {@code len} bytes may be read if
+ * end of stream is encountered.
+ *
+ * <p> When this stream reaches end of stream, further invocations of this
+ * method will return an empty byte array.
+ *
+ * <p> Note that this method is intended for simple cases where it is
+ * convenient to read the specified number of bytes into a byte array. The
+ * total amount of memory allocated by this method is proportional to the
+ * number of bytes read from the stream which is bounded by {@code len}.
+ * Therefore, the method may be safely called with very large values of
+ * {@code len} provided sufficient memory is available.
+ *
+ * <p> The behavior for the case where the input stream is <i>asynchronously
+ * closed</i>, or the thread interrupted during the read, is highly input
+ * stream specific, and therefore not specified.
+ *
+ * <p> If an I/O error occurs reading from the input stream, then it may do
+ * so after some, but not all, bytes have been read. Consequently the input
+ * stream may not be at end of stream and may be in an inconsistent state.
+ * It is strongly recommended that the stream be promptly closed if an I/O
+ * error occurs.
+ *
+ * @implNote
+ * The number of bytes allocated to read data from this stream and return
+ * the result is bounded by {@code 2*(long)len}, inclusive.
+ *
+ * @param len the maximum number of bytes to read
+ * @return a byte array containing the bytes read from this input stream
+ * @throws IllegalArgumentException if {@code length} is negative
+ * @throws IOException if an I/O error occurs
+ * @throws OutOfMemoryError if an array of the required size cannot be
+ * allocated.
+ *
+ * @since 11
+ */
+ public byte[] readNBytes(int len) throws IOException {
+ if (len < 0) {
+ throw new IllegalArgumentException("len < 0");
+ }
+
List<byte[]> bufs = null;
byte[] result = null;
int total = 0;
+ int remaining = len;
int n;
do {
- byte[] buf = new byte[DEFAULT_BUFFER_SIZE];
+ byte[] buf = new byte[Math.min(remaining, DEFAULT_BUFFER_SIZE)];
int nread = 0;
// read to EOF which may read more or less than buffer size
- while ((n = read(buf, nread, buf.length - nread)) > 0) {
+ while ((n = read(buf, nread,
+ Math.min(buf.length - nread, remaining))) > 0) {
nread += n;
+ remaining -= n;
}
if (nread > 0) {
@@ -345,7 +414,9 @@
bufs.add(buf);
}
}
- } while (n >= 0); // if the last call to read returned -1, then break
+ // if the last call to read returned -1 or the number of bytes
+ // requested have been read then break
+ } while (n >= 0 && remaining > 0);
if (bufs == null) {
if (result == null) {
@@ -357,12 +428,12 @@
result = new byte[total];
int offset = 0;
- int remaining = total;
+ remaining = total;
for (byte[] b : bufs) {
- int len = Math.min(b.length, remaining);
- System.arraycopy(b, 0, result, offset, len);
- offset += len;
- remaining -= len;
+ int count = Math.min(b.length, remaining);
+ System.arraycopy(b, 0, result, offset, count);
+ offset += count;
+ remaining -= count;
}
return result;
--- a/src/java.base/share/classes/java/lang/invoke/X-VarHandleByteArrayView.java.template Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/java/lang/invoke/X-VarHandleByteArrayView.java.template Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -534,7 +534,7 @@
@ForceInline
static $type$ get(ByteBufferHandle handle, Object obb, int index) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
#if[floatingPoint]
$rawType$ rawValue = UNSAFE.get$RawType$Unaligned(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -551,7 +551,7 @@
@ForceInline
static void set(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
#if[floatingPoint]
UNSAFE.put$RawType$Unaligned(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -569,7 +569,7 @@
@ForceInline
static $type$ getVolatile(ByteBufferHandle handle, Object obb, int index) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.get$RawType$Volatile(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -578,7 +578,7 @@
@ForceInline
static void setVolatile(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
UNSAFE.put$RawType$Volatile(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
address(bb, indexRO(bb, index)),
@@ -587,7 +587,7 @@
@ForceInline
static $type$ getAcquire(ByteBufferHandle handle, Object obb, int index) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.get$RawType$Acquire(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -596,7 +596,7 @@
@ForceInline
static void setRelease(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
UNSAFE.put$RawType$Release(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
address(bb, indexRO(bb, index)),
@@ -605,7 +605,7 @@
@ForceInline
static $type$ getOpaque(ByteBufferHandle handle, Object obb, int index) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.get$RawType$Opaque(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -614,7 +614,7 @@
@ForceInline
static void setOpaque(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
UNSAFE.put$RawType$Opaque(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
address(bb, indexRO(bb, index)),
@@ -624,7 +624,7 @@
@ForceInline
static boolean compareAndSet(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return UNSAFE.compareAndSet$RawType$(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
address(bb, indexRO(bb, index)),
@@ -633,7 +633,7 @@
@ForceInline
static $type$ compareAndExchange(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.compareAndExchange$RawType$(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -643,7 +643,7 @@
@ForceInline
static $type$ compareAndExchangeAcquire(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.compareAndExchange$RawType$Acquire(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -653,7 +653,7 @@
@ForceInline
static $type$ compareAndExchangeRelease(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.compareAndExchange$RawType$Release(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -663,7 +663,7 @@
@ForceInline
static boolean weakCompareAndSetPlain(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return UNSAFE.weakCompareAndSet$RawType$Plain(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
address(bb, indexRO(bb, index)),
@@ -672,7 +672,7 @@
@ForceInline
static boolean weakCompareAndSet(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return UNSAFE.weakCompareAndSet$RawType$(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
address(bb, indexRO(bb, index)),
@@ -681,7 +681,7 @@
@ForceInline
static boolean weakCompareAndSetAcquire(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return UNSAFE.weakCompareAndSet$RawType$Acquire(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
address(bb, indexRO(bb, index)),
@@ -690,7 +690,7 @@
@ForceInline
static boolean weakCompareAndSetRelease(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return UNSAFE.weakCompareAndSet$RawType$Release(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
address(bb, indexRO(bb, index)),
@@ -699,7 +699,7 @@
@ForceInline
static $type$ getAndSet(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.getAndSet$RawType$(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -709,7 +709,7 @@
@ForceInline
static $type$ getAndSetAcquire(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.getAndSet$RawType$Acquire(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -719,7 +719,7 @@
@ForceInline
static $type$ getAndSetRelease(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
return convEndian(handle.be,
UNSAFE.getAndSet$RawType$Release(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -731,7 +731,7 @@
@ForceInline
static $type$ getAndAdd(ByteBufferHandle handle, Object obb, int index, $type$ delta) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndAdd$RawType$(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -744,7 +744,7 @@
@ForceInline
static $type$ getAndAddAcquire(ByteBufferHandle handle, Object obb, int index, $type$ delta) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndAdd$RawType$Acquire(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -757,7 +757,7 @@
@ForceInline
static $type$ getAndAddRelease(ByteBufferHandle handle, Object obb, int index, $type$ delta) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndAdd$RawType$Release(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -785,7 +785,7 @@
@ForceInline
static $type$ getAndBitwiseOr(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseOr$RawType$(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -798,7 +798,7 @@
@ForceInline
static $type$ getAndBitwiseOrRelease(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseOr$RawType$Release(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -811,7 +811,7 @@
@ForceInline
static $type$ getAndBitwiseOrAcquire(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseOr$RawType$Acquire(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -837,7 +837,7 @@
@ForceInline
static $type$ getAndBitwiseAnd(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseAnd$RawType$(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -850,7 +850,7 @@
@ForceInline
static $type$ getAndBitwiseAndRelease(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseAnd$RawType$Release(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -863,7 +863,7 @@
@ForceInline
static $type$ getAndBitwiseAndAcquire(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseAnd$RawType$Acquire(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -890,7 +890,7 @@
@ForceInline
static $type$ getAndBitwiseXor(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseXor$RawType$(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -903,7 +903,7 @@
@ForceInline
static $type$ getAndBitwiseXorRelease(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseXor$RawType$Release(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
@@ -916,7 +916,7 @@
@ForceInline
static $type$ getAndBitwiseXorAcquire(ByteBufferHandle handle, Object obb, int index, $type$ value) {
- ByteBuffer bb = (ByteBuffer) obb;
+ ByteBuffer bb = (ByteBuffer) Objects.requireNonNull(obb);
if (handle.be == BE) {
return UNSAFE.getAndBitwiseXor$RawType$Acquire(
UNSAFE.getObject(bb, BYTE_BUFFER_HB),
--- a/src/java.base/share/classes/java/security/KeyStore.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/java/security/KeyStore.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1802,11 +1802,11 @@
// Load the keystore data
if (keystore != null) {
+ dataStream.reset(); // prepare the stream for loading
if (hasPassword) {
- dataStream.reset(); // prepare the stream for loading
keystore.load(dataStream, password);
} else {
- keystore.load(param);
+ keystore.keyStoreSpi.engineLoad(dataStream, param);
}
return keystore;
}
--- a/src/java.base/share/classes/java/security/KeyStoreSpi.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/java/security/KeyStoreSpi.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -395,6 +395,12 @@
public void engineLoad(KeyStore.LoadStoreParameter param)
throws IOException, NoSuchAlgorithmException,
CertificateException {
+ engineLoad(null, param);
+ }
+
+ void engineLoad(InputStream stream, KeyStore.LoadStoreParameter param)
+ throws IOException, NoSuchAlgorithmException,
+ CertificateException {
if (param == null) {
engineLoad((InputStream)null, (char[])null);
@@ -425,7 +431,7 @@
throw new NoSuchAlgorithmException("ProtectionParameter must"
+ " be PasswordProtection or CallbackHandlerProtection");
}
- engineLoad(null, password);
+ engineLoad(stream, password);
return;
}
--- a/src/java.base/share/classes/java/time/format/ZoneName.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/java/time/format/ZoneName.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -411,7 +411,7 @@
"Pacific/Wake", "Wake", "Pacific/Wake",
"Pacific/Pago_Pago", "Samoa", "Pacific/Apia",
"America/Moncton", "Atlantic", "America/Halifax",
- "Africa/Sao_Tome", "GMT", "Atlantic/Reykjavik",
+ "Africa/Sao_Tome", "Africa_Western", "Africa/Lagos",
"America/Glace_Bay", "Atlantic", "America/Halifax",
"Asia/Jakarta", "Indonesia_Western", "Asia/Jakarta",
"Africa/Asmera", "Africa_Eastern", "Africa/Nairobi",
@@ -494,7 +494,6 @@
"America/Kralendijk", "Atlantic", "America/Halifax",
};
private static final String[] mzoneMap = new String[] {
- "GMT", "ST", "Africa/Sao_Tome",
"GMT", "ML", "Africa/Bamako",
"GMT", "IE", "Europe/Dublin",
"GMT", "SN", "Africa/Dakar",
@@ -509,6 +508,7 @@
"GMT", "GB", "Europe/London",
"GMT", "LR", "Africa/Monrovia",
"GMT", "TG", "Africa/Lome",
+ "Africa_Western", "ST", "Africa/Sao_Tome",
"Africa_Western", "CF", "Africa/Bangui",
"Africa_Western", "NE", "Africa/Niamey",
"Africa_Western", "CM", "Africa/Douala",
--- a/src/java.base/share/classes/java/util/ArrayList.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/java/util/ArrayList.java Fri Feb 02 09:04:45 2018 -0800
@@ -1143,6 +1143,23 @@
return modified;
}
+ public Object[] toArray() {
+ checkForComodification();
+ return Arrays.copyOfRange(root.elementData, offset, offset + size);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T[] toArray(T[] a) {
+ checkForComodification();
+ if (a.length < size)
+ return (T[]) Arrays.copyOfRange(
+ root.elementData, offset, offset + size, a.getClass());
+ System.arraycopy(root.elementData, offset, a, 0, size);
+ if (a.length > size)
+ a[size] = null;
+ return a;
+ }
+
public Iterator<E> iterator() {
return listIterator();
}
--- a/src/java.base/share/classes/java/util/Base64.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/java/util/Base64.java Fri Feb 02 09:04:45 2018 -0800
@@ -116,8 +116,8 @@
*
* @param lineLength
* the length of each output line (rounded down to nearest multiple
- * of 4). If {@code lineLength <= 0} the output will not be separated
- * in lines
+ * of 4). If the rounded down line length is not a positive value,
+ * the output will not be separated in lines
* @param lineSeparator
* the line separator for each output line
*
@@ -135,10 +135,12 @@
throw new IllegalArgumentException(
"Illegal base64 line separator character 0x" + Integer.toString(b, 16));
}
+ // round down to nearest multiple of 4
+ lineLength &= ~0b11;
if (lineLength <= 0) {
return Encoder.RFC4648;
}
- return new Encoder(false, lineSeparator, lineLength >> 2 << 2, true);
+ return new Encoder(false, lineSeparator, lineLength, true);
}
/**
--- a/src/java.base/share/classes/sun/nio/cs/DoubleByte.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/sun/nio/cs/DoubleByte.java Fri Feb 02 09:04:45 2018 -0800
@@ -236,10 +236,8 @@
int b2 = src[sp++] & 0xff;
if (b2 < b2Min || b2 > b2Max ||
(c = b2c[b1][b2 - b2Min]) == UNMAPPABLE_DECODING) {
- if (b2c[b1] == B2C_UNMAPPABLE || // isNotLeadingByte
- b2c[b2] != B2C_UNMAPPABLE || // isLeadingByte
- decodeSingle(b2) != UNMAPPABLE_DECODING) {
- sp--;
+ if (crMalformedOrUnmappable(b1, b2).length() == 1) {
+ sp--;
}
}
}
@@ -472,6 +470,13 @@
b2cSB_UNMAPPABLE = new char[0x100];
Arrays.fill(b2cSB_UNMAPPABLE, UNMAPPABLE_DECODING);
}
+
+ // always returns unmappableForLenth(2) for doublebyte_only
+ @Override
+ protected CoderResult crMalformedOrUnmappable(int b1, int b2) {
+ return CoderResult.unmappableForLength(2);
+ }
+
public Decoder_DBCSONLY(Charset cs, char[][] b2c, char[] b2cSB, int b2Min, int b2Max,
boolean isASCIICompatible) {
super(cs, 0.5f, 1.0f, b2c, b2cSB_UNMAPPABLE, b2Min, b2Max, isASCIICompatible);
--- a/src/java.base/share/classes/sun/util/resources/TimeZoneNames.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.base/share/classes/sun/util/resources/TimeZoneNames.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -370,7 +370,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/java.desktop/share/classes/java/awt/Desktop.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/Desktop.java Fri Feb 02 09:04:45 2018 -0800
@@ -83,6 +83,10 @@
* application is executed, it will be executed on the same system as
* the one on which the Java application was launched.
*
+ * <p> Note: the methods in the {@code Desktop} class may require
+ * platform-dependent permissions in addition to those described in the
+ * specification.
+ *
* @see Action
*
* @since 1.6
--- a/src/java.desktop/share/legal/libpng.md Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.desktop/share/legal/libpng.md Fri Feb 02 09:04:45 2018 -0800
@@ -1,4 +1,4 @@
-## libpng v1.6.23
+## libpng v1.6.34
### libpng License
<pre>
@@ -14,8 +14,8 @@
This code is released under the libpng license.
-libpng versions 1.0.7, July 1, 2000 through 1.6.23, June 9, 2016 are
-Copyright (c) 2000-2002, 2004, 2006-2016 Glenn Randers-Pehrson, are
+libpng versions 1.0.7, July 1, 2000 through 1.6.34, September 29, 2017 are
+Copyright (c) 2000-2002, 2004, 2006-2017 Glenn Randers-Pehrson, are
derived from libpng-1.0.6, and are distributed according to the same
disclaimer and license as libpng-1.0.6 with the following individuals
added to the list of Contributing Authors:
@@ -26,6 +26,9 @@
Cosmin Truta
Gilles Vollant
James Yu
+ Mandar Sahastrabuddhe
+ Google Inc.
+ Vadim Barkov
and with the following additions to the disclaimer:
--- a/src/java.desktop/unix/classes/sun/awt/X11/XTextAreaPeer.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.desktop/unix/classes/sun/awt/X11/XTextAreaPeer.java Fri Feb 02 09:04:45 2018 -0800
@@ -630,19 +630,6 @@
super.focusLost(e);
getComponent().repaint();
}
-
- // Fix for 5100950: textarea.getSelectedText() returns the de-selected text, on XToolkit
- // Restoring Motif behaviour
- // If the text is unhighlighted then we should sets the selection range to zero
- @Override
- public void setSelectionVisible(boolean vis) {
- if (vis){
- super.setSelectionVisible(vis);
- }else{
- // In order to de-select the selection
- setDot(getDot());
- }
- }
}
@SuppressWarnings("serial") // JDK-implementation class
--- a/src/java.scripting/share/classes/javax/script/ScriptEngineManager.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.scripting/share/classes/javax/script/ScriptEngineManager.java Fri Feb 02 09:04:45 2018 -0800
@@ -77,7 +77,7 @@
private void init(final ClassLoader loader) {
globalScope = new SimpleBindings();
- engineSpis = new HashSet<ScriptEngineFactory>();
+ engineSpis = new TreeSet<ScriptEngineFactory>(Comparator.comparing(ScriptEngineFactory::getEngineName));
nameAssociations = new HashMap<String, ScriptEngineFactory>();
extensionAssociations = new HashMap<String, ScriptEngineFactory>();
mimeTypeAssociations = new HashMap<String, ScriptEngineFactory>();
@@ -400,7 +400,7 @@
}
/** Set of script engine factories discovered. */
- private HashSet<ScriptEngineFactory> engineSpis;
+ private TreeSet<ScriptEngineFactory> engineSpis;
/** Map of engine name to script engine factory. */
private HashMap<String, ScriptEngineFactory> nameAssociations;
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionAvailableCall.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionAvailableCall.java Fri Feb 02 09:04:45 2018 -0800
@@ -97,7 +97,6 @@
* the specified method is found in the specifed class.
*/
private boolean hasMethods() {
- LiteralExpr arg = (LiteralExpr)_arg;
// Get the class name from the namespace uri
String className = getClassNameFromUri(_namespaceOfFunct);
@@ -110,7 +109,7 @@
int lastDotIndex = functionName.lastIndexOf('.');
if (lastDotIndex > 0) {
methodName = functionName.substring(lastDotIndex+1);
- if (className != null && !className.equals(""))
+ if (className != null && className.length() != 0)
className = className + "." + functionName.substring(0, lastDotIndex);
else
className = functionName.substring(0, lastDotIndex);
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Sort.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Sort.java Fri Feb 02 09:04:45 2018 -0800
@@ -66,7 +66,7 @@
private AttributeValue _order;
private AttributeValue _caseOrder;
private AttributeValue _dataType;
- private String _lang; // bug! see 26869
+ private AttributeValue _lang; // bug! see 26869, see XALANJ-2546
private String _className = null;
private List<VariableRefBase> _closureVars = null;
@@ -154,13 +154,11 @@
}
_dataType = AttributeValue.create(this, val, parser);
- _lang = getAttribute("lang"); // bug! see 26869
- // val = getAttribute("lang");
- // _lang = AttributeValue.create(this, val, parser);
+ val = getAttribute("lang");
+ _lang = AttributeValue.create(this, val, parser);
// Get the case order; default is language dependant
- val = getAttribute("case-order");
- _caseOrder = AttributeValue.create(this, val, parser);
-
+ val = getAttribute("case-order");
+ _caseOrder = AttributeValue.create(this, val, parser);
}
/**
@@ -179,6 +177,7 @@
_order.typeCheck(stable);
_caseOrder.typeCheck(stable);
_dataType.typeCheck(stable);
+ _lang.typeCheck(stable);
return Type.Void;
}
@@ -196,16 +195,14 @@
_order.translate(classGen, methodGen);
}
- public void translateCaseOrder(ClassGenerator classGen,
+ public void translateCaseOrder(ClassGenerator classGen,
MethodGenerator methodGen) {
- _caseOrder.translate(classGen, methodGen);
+ _caseOrder.translate(classGen, methodGen);
}
public void translateLang(ClassGenerator classGen,
MethodGenerator methodGen) {
- final ConstantPoolGen cpg = classGen.getConstantPool();
- final InstructionList il = methodGen.getInstructionList();
- il.append(new PUSH(cpg, _lang)); // bug! see 26869
+ _lang.translate(classGen, methodGen);
}
/**
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/AdaptiveResultTreeImpl.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/AdaptiveResultTreeImpl.java Fri Feb 02 09:04:45 2018 -0800
@@ -570,7 +570,7 @@
if (_openElementName != null) {
int index;
- if ((index =_openElementName.indexOf(":")) < 0)
+ if ((index =_openElementName.indexOf(':')) < 0)
_dom.startElement(null, _openElementName, _openElementName, _attributes);
else {
String uri =_dom.getNamespaceURI(_openElementName.substring(0,index));
@@ -682,7 +682,7 @@
public void addAttribute(String qName, String value)
{
// "prefix:localpart" or "localpart"
- int colonpos = qName.indexOf(":");
+ int colonpos = qName.indexOf(':');
String uri = EMPTY_STRING;
String localName = qName;
if (colonpos >0)
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java Fri Feb 02 09:04:45 2018 -0800
@@ -1425,8 +1425,8 @@
* This method should only be invoked if the name attribute is an AVT
*/
public static void checkAttribQName(String name) {
- final int firstOccur = name.indexOf(":");
- final int lastOccur = name.lastIndexOf(":");
+ final int firstOccur = name.indexOf(':');
+ final int lastOccur = name.lastIndexOf(':');
final String localName = name.substring(lastOccur + 1);
if (firstOccur > 0) {
--- a/src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/DTMDefaultBase.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/DTMDefaultBase.java Fri Feb 02 09:04:45 2018 -0800
@@ -354,7 +354,7 @@
while (low <= high)
{
- int mid = (low + high) / 2;
+ int mid = (low + high) >>> 1;
int c = list[mid];
if (c > value)
--- a/src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/NodeVector.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/NodeVector.java Fri Feb 02 09:04:45 2018 -0800
@@ -669,9 +669,10 @@
/*
* Pick a pivot and move it out of the way
*/
- int pivot = a[(lo + hi) / 2];
+ int mid = (lo + hi) >>> 1;
+ int pivot = a[mid];
- a[(lo + hi) / 2] = a[hi];
+ a[mid] = a[hi];
a[hi] = pivot;
while (lo < hi)
--- a/src/java.xml/share/legal/xalan.md Fri Feb 02 17:02:45 2018 +0530
+++ b/src/java.xml/share/legal/xalan.md Fri Feb 02 09:04:45 2018 -0800
@@ -1,4 +1,4 @@
-## Apache Xalan v2.7.1
+## Apache Xalan v2.7.2
### Apache Xalan Notice
<pre>
@@ -11,6 +11,11 @@
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
+ Specifically, we only include the XSLTC portion of the source from the Xalan distribution.
+ The Xalan project has two processors: an interpretive one (Xalan Interpretive) and a
+ compiled one (The XSLT Compiler (XSLTC)). We *only* use the XSLTC part of Xalan; We use
+ the source from the packages that are part of the XSLTC sources.
+
Portions of this software was originally based on the following:
- software copyright (c) 1999-2002, Lotus Development Corporation., http://www.lotus.com.
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Fri Feb 02 09:04:45 2018 -0800
@@ -59,7 +59,9 @@
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.DefinedBy.Api;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.JCDiagnostic.Error;
import com.sun.tools.javac.util.JCDiagnostic.Fragment;
+import com.sun.tools.javac.util.JCDiagnostic.Warning;
import com.sun.tools.javac.util.List;
import static com.sun.tools.javac.code.Flags.*;
@@ -1417,7 +1419,7 @@
if (!pattype.hasTag(ERROR)) {
if (pattype.constValue() == null) {
log.error(c.pat.pos(),
- (stringSwitch ? "string.const.req" : "const.expr.req"));
+ (stringSwitch ? Errors.StringConstReq : Errors.ConstExprReq));
} else if (!labels.add(pattype.constValue())) {
log.error(c.pos(), Errors.DuplicateCaseLabel);
}
@@ -3675,8 +3677,7 @@
sym.name != names._class) {
// If the qualified item is not a type and the selected item is static, report
// a warning. Make allowance for the class of an array type e.g. Object[].class)
- chk.warnStatic(tree, "static.not.qualified.by.type",
- sym.kind.kindName(), sym.owner);
+ chk.warnStatic(tree, Warnings.StaticNotQualifiedByType(sym.kind.kindName(), sym.owner));
}
// If we are selecting an instance member via a `super', ...
@@ -3925,9 +3926,7 @@
if (s != null &&
s.isRaw() &&
!types.isSameType(v.type, v.erasure(types))) {
- chk.warnUnchecked(tree.pos(),
- "unchecked.assign.to.var",
- v, s);
+ chk.warnUnchecked(tree.pos(), Warnings.UncheckedAssignToVar(v, s));
}
}
// The computed type of a variable is the type of the
@@ -4002,12 +4001,14 @@
((v.flags() & STATIC) != 0) == Resolve.isStatic(env) &&
(!env.tree.hasTag(ASSIGN) ||
TreeInfo.skipParens(((JCAssign) env.tree).lhs) != tree)) {
- String suffix = (initEnv.info.enclVar == v) ?
- "self.ref" : "forward.ref";
if (!onlyWarning || isStaticEnumField(v)) {
- log.error(tree.pos(), "illegal." + suffix);
+ Error errkey = (initEnv.info.enclVar == v) ?
+ Errors.IllegalSelfRef : Errors.IllegalForwardRef;
+ log.error(tree.pos(), errkey);
} else if (useBeforeDeclarationWarning) {
- log.warning(tree.pos(), suffix, v);
+ Warning warnkey = (initEnv.info.enclVar == v) ?
+ Warnings.SelfRef(v) : Warnings.ForwardRef(v);
+ log.warning(tree.pos(), warnkey);
}
}
@@ -4117,9 +4118,7 @@
if (s != null && s.isRaw() &&
!types.isSameTypes(sym.type.getParameterTypes(),
sym.erasure(types).getParameterTypes())) {
- chk.warnUnchecked(env.tree.pos(),
- "unchecked.call.mbr.of.raw.type",
- sym, s);
+ chk.warnUnchecked(env.tree.pos(), Warnings.UncheckedCallMbrOfRawType(sym, s));
}
}
@@ -4169,14 +4168,12 @@
argtypes = argtypes.map(checkDeferredMap);
if (noteWarner.hasNonSilentLint(LintCategory.UNCHECKED)) {
- chk.warnUnchecked(env.tree.pos(),
- "unchecked.meth.invocation.applied",
- kindName(sym),
+ chk.warnUnchecked(env.tree.pos(), Warnings.UncheckedMethInvocationApplied(kindName(sym),
sym.name,
rs.methodArguments(sym.type.getParameterTypes()),
rs.methodArguments(argtypes.map(checkDeferredMap)),
kindName(sym.location()),
- sym.location());
+ sym.location()));
if (resultInfo.pt != Infer.anyPoly ||
!owntype.hasTag(METHOD) ||
!owntype.isPartial()) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,9 @@
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.JCDiagnostic.Error;
import com.sun.tools.javac.util.JCDiagnostic.Fragment;
+import com.sun.tools.javac.util.JCDiagnostic.Warning;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.code.Lint;
@@ -205,16 +207,16 @@
if (sym.isDeprecatedForRemoval()) {
if (!lint.isSuppressed(LintCategory.REMOVAL)) {
if (sym.kind == MDL) {
- removalHandler.report(pos, "has.been.deprecated.for.removal.module", sym);
+ removalHandler.report(pos, Warnings.HasBeenDeprecatedForRemovalModule(sym));
} else {
- removalHandler.report(pos, "has.been.deprecated.for.removal", sym, sym.location());
+ removalHandler.report(pos, Warnings.HasBeenDeprecatedForRemoval(sym, sym.location()));
}
}
} else if (!lint.isSuppressed(LintCategory.DEPRECATION)) {
if (sym.kind == MDL) {
- deprecationHandler.report(pos, "has.been.deprecated.module", sym);
+ deprecationHandler.report(pos, Warnings.HasBeenDeprecatedModule(sym));
} else {
- deprecationHandler.report(pos, "has.been.deprecated", sym, sym.location());
+ deprecationHandler.report(pos, Warnings.HasBeenDeprecated(sym, sym.location()));
}
}
}
@@ -223,22 +225,22 @@
* @param pos Position to be used for error reporting.
* @param msg A string describing the problem.
*/
- public void warnUnchecked(DiagnosticPosition pos, String msg, Object... args) {
+ public void warnUnchecked(DiagnosticPosition pos, Warning warnKey) {
if (!lint.isSuppressed(LintCategory.UNCHECKED))
- uncheckedHandler.report(pos, msg, args);
+ uncheckedHandler.report(pos, warnKey);
}
/** Warn about unsafe vararg method decl.
* @param pos Position to be used for error reporting.
*/
- void warnUnsafeVararg(DiagnosticPosition pos, String key, Object... args) {
+ void warnUnsafeVararg(DiagnosticPosition pos, Warning warnKey) {
if (lint.isEnabled(LintCategory.VARARGS) && Feature.SIMPLIFIED_VARARGS.allowedInSource(source))
- log.warning(LintCategory.VARARGS, pos, key, args);
+ log.warning(LintCategory.VARARGS, pos, warnKey);
}
- public void warnStatic(DiagnosticPosition pos, String msg, Object... args) {
+ public void warnStatic(DiagnosticPosition pos, Warning warnKey) {
if (lint.isEnabled(LintCategory.STATIC))
- log.warning(LintCategory.STATIC, pos, msg, args);
+ log.warning(LintCategory.STATIC, pos, warnKey);
}
/** Warn about division by integer constant zero.
@@ -903,14 +905,13 @@
}
} else if (hasTrustMeAnno && varargElemType != null &&
types.isReifiable(varargElemType)) {
- warnUnsafeVararg(tree,
- "varargs.redundant.trustme.anno",
- syms.trustMeType.tsym,
- diags.fragment(Fragments.VarargsTrustmeOnReifiableVarargs(varargElemType)));
+ warnUnsafeVararg(tree, Warnings.VarargsRedundantTrustmeAnno(
+ syms.trustMeType.tsym,
+ diags.fragment(Fragments.VarargsTrustmeOnReifiableVarargs(varargElemType))));
}
else if (!hasTrustMeAnno && varargElemType != null &&
!types.isReifiable(varargElemType)) {
- warnUnchecked(tree.params.head.pos(), "unchecked.varargs.non.reifiable.type", varargElemType);
+ warnUnchecked(tree.params.head.pos(), Warnings.UncheckedVarargsNonReifiableType(varargElemType));
}
}
//where
@@ -998,9 +999,7 @@
(!Feature.SIMPLIFIED_VARARGS.allowedInSource(source) ||
sym.baseSymbol().attribute(syms.trustMeType.tsym) == null ||
!isTrustMeAllowedOnMethod(sym))) {
- warnUnchecked(env.tree.pos(),
- "unchecked.generic.array.creation",
- argtype);
+ warnUnchecked(env.tree.pos(), Warnings.UncheckedGenericArrayCreation(argtype));
}
if ((sym.baseSymbol().flags() & SIGNATURE_POLYMORPHIC) == 0) {
TreeInfo.setVarargsElement(env.tree, types.elemtype(argtype));
@@ -1761,9 +1760,7 @@
return;
} else if (overrideWarner.hasNonSilentLint(LintCategory.UNCHECKED)) {
warnUnchecked(TreeInfo.diagnosticPositionFor(m, tree),
- "override.unchecked.ret",
- uncheckedOverrides(m, other),
- mtres, otres);
+ Warnings.OverrideUncheckedRet(uncheckedOverrides(m, other), mtres, otres));
}
// Error if overriding method throws an exception not reported
@@ -1779,9 +1776,7 @@
}
else if (unhandledUnerased.nonEmpty()) {
warnUnchecked(TreeInfo.diagnosticPositionFor(m, tree),
- "override.unchecked.thrown",
- cannotOverride(m, other),
- unhandledUnerased.head);
+ Warnings.OverrideUncheckedThrown(cannotOverride(m, other), unhandledUnerased.head));
return;
}
@@ -3237,10 +3232,10 @@
missingDefaults = missingDefaults.reverse();
if (missingDefaults.nonEmpty()) {
isValid = false;
- String key = (missingDefaults.size() > 1)
- ? "annotation.missing.default.value.1"
- : "annotation.missing.default.value";
- log.error(a.pos(), key, a.type, missingDefaults);
+ Error errorKey = (missingDefaults.size() > 1)
+ ? Errors.AnnotationMissingDefaultValue1(a.type, missingDefaults)
+ : Errors.AnnotationMissingDefaultValue(a.type, missingDefaults);
+ log.error(a.pos(), errorKey);
}
return isValid && validateTargetAnnotationValue(a);
@@ -3605,14 +3600,14 @@
if (warned) return; // suppress redundant diagnostics
switch (lint) {
case UNCHECKED:
- Check.this.warnUnchecked(pos(), "prob.found.req", diags.fragment(uncheckedKey), found, expected);
+ Check.this.warnUnchecked(pos(), Warnings.ProbFoundReq(diags.fragment(uncheckedKey), found, expected));
break;
case VARARGS:
if (method != null &&
method.attribute(syms.trustMeType.tsym) != null &&
isTrustMeAllowedOnMethod(method) &&
!types.isReifiable(method.type.getParameterTypes().last())) {
- Check.this.warnUnsafeVararg(pos(), "varargs.unsafe.use.varargs.param", method.params.last());
+ Check.this.warnUnsafeVararg(pos(), Warnings.VarargsUnsafeUseVarargsParam(method.params.last()));
}
break;
default:
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,8 @@
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.JCDiagnostic.Error;
+import com.sun.tools.javac.util.JCDiagnostic.Warning;
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.tree.JCTree.*;
@@ -1183,10 +1185,10 @@
// exception, that would have been covered in the branch above
if (chk.diff(catchableThrownTypes, caughtInTry).isEmpty() &&
!isExceptionOrThrowable(exc)) {
- String key = catchableThrownTypes.length() == 1 ?
- "unreachable.catch" :
- "unreachable.catch.1";
- log.warning(pos, key, catchableThrownTypes);
+ Warning key = catchableThrownTypes.length() == 1 ?
+ Warnings.UnreachableCatch(catchableThrownTypes) :
+ Warnings.UnreachableCatch1(catchableThrownTypes);
+ log.warning(pos, key);
}
}
}
@@ -1617,7 +1619,7 @@
Errors.FinalParameterMayNotBeAssigned(sym));
}
} else if (!uninits.isMember(sym.adr)) {
- log.error(pos, flowKind.errKey, sym);
+ log.error(pos, diags.errorKey(flowKind.errKey, sym));
} else {
uninit(sym);
}
@@ -1656,14 +1658,14 @@
/** Check that trackable variable is initialized.
*/
void checkInit(DiagnosticPosition pos, VarSymbol sym) {
- checkInit(pos, sym, "var.might.not.have.been.initialized");
+ checkInit(pos, sym, Errors.VarMightNotHaveBeenInitialized(sym));
}
- void checkInit(DiagnosticPosition pos, VarSymbol sym, String errkey) {
+ void checkInit(DiagnosticPosition pos, VarSymbol sym, Error errkey) {
if ((sym.adr >= firstadr || sym.owner.kind != TYP) &&
trackable(sym) &&
!inits.isMember(sym.adr)) {
- log.error(pos, errkey, sym);
+ log.error(pos, errkey);
inits.incl(sym.adr);
}
}
@@ -1894,7 +1896,7 @@
// the ctor is default(synthesized) or not
if (isSynthesized) {
checkInit(TreeInfo.diagnosticPositionFor(var, vardecl),
- var, "var.not.initialized.in.default.constructor");
+ var, Errors.VarNotInitializedInDefaultConstructor(var));
} else {
checkInit(TreeInfo.diagEndPos(tree.body), var);
}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1410,7 +1410,7 @@
super.visitLambda(tree);
context.complete();
if (dumpLambdaToMethodStats) {
- log.note(tree, statKey, context.needsAltMetafactory(), context.translatedSym);
+ log.note(tree, diags.noteKey(statKey, context.needsAltMetafactory(), context.translatedSym));
}
return context;
}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,7 @@
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.JCDiagnostic.Error;
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.code.Type.*;
@@ -305,9 +306,9 @@
v.pos = tree.pos;
}
// where
- void checkType(JCTree tree, Type type, String diag) {
+ void checkType(JCTree tree, Type type, Error errorKey) {
if (!tree.type.isErroneous() && !types.isSameType(tree.type, type)) {
- log.error(tree, diag, type, tree.type);
+ log.error(tree, errorKey);
}
}
void checkReceiver(JCVariableDecl tree, Env<AttrContext> localEnv) {
@@ -320,14 +321,14 @@
outertype = m.owner.owner.owner.type;
}
if (outertype.hasTag(TypeTag.CLASS)) {
- checkType(tree.vartype, outertype, "incorrect.constructor.receiver.type");
- checkType(tree.nameexpr, outertype, "incorrect.constructor.receiver.name");
+ checkType(tree.vartype, outertype, Errors.IncorrectConstructorReceiverType(outertype, tree.vartype.type));
+ checkType(tree.nameexpr, outertype, Errors.IncorrectConstructorReceiverName(outertype, tree.nameexpr.type));
} else {
log.error(tree, Errors.ReceiverParameterNotApplicableConstructorToplevelClass);
}
} else {
- checkType(tree.vartype, m.owner.type, "incorrect.receiver.type");
- checkType(tree.nameexpr, m.owner.type, "incorrect.receiver.name");
+ checkType(tree.vartype, m.owner.type, Errors.IncorrectReceiverType(m.owner.type, tree.vartype.type));
+ checkType(tree.nameexpr, m.owner.type, Errors.IncorrectReceiverName(m.owner.type, tree.nameexpr.type));
}
}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Fri Feb 02 09:04:45 2018 -0800
@@ -86,6 +86,7 @@
import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.util.DefinedBy;
import com.sun.tools.javac.util.DefinedBy.Api;
+import com.sun.tools.javac.util.JCDiagnostic.Warning;
import com.sun.tools.javac.util.ListBuffer;
import com.sun.tools.javac.util.Log;
import com.sun.tools.javac.jvm.ModuleNameReader;
@@ -1600,10 +1601,10 @@
void add(Map<String, List<Path>> map, Path prefix, Path suffix) {
if (!Files.isDirectory(prefix)) {
if (warn) {
- String key = Files.exists(prefix)
- ? "dir.path.element.not.directory"
- : "dir.path.element.not.found";
- log.warning(Lint.LintCategory.PATH, key, prefix);
+ Warning key = Files.exists(prefix)
+ ? Warnings.DirPathElementNotDirectory(prefix)
+ : Warnings.DirPathElementNotFound(prefix);
+ log.warning(Lint.LintCategory.PATH, key);
}
return;
}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Fri Feb 02 09:04:45 2018 -0800
@@ -26,8 +26,6 @@
package com.sun.tools.javac.parser;
import java.util.*;
-import java.util.function.Function;
-import java.util.function.Predicate;
import java.util.stream.Collectors;
import com.sun.source.tree.MemberReferenceTree.ReferenceMode;
@@ -39,12 +37,16 @@
import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle;
import com.sun.tools.javac.resources.CompilerProperties;
import com.sun.tools.javac.resources.CompilerProperties.Errors;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
import com.sun.tools.javac.util.JCDiagnostic.Error;
+import com.sun.tools.javac.util.JCDiagnostic.Warning;
+import com.sun.tools.javac.util.JCDiagnostic.Fragment;
import com.sun.tools.javac.util.List;
import static com.sun.tools.javac.parser.Tokens.TokenKind.*;
@@ -365,14 +367,14 @@
}
}
- protected JCErroneous syntaxError(int pos, String key, TokenKind... args) {
- return syntaxError(pos, List.nil(), key, args);
+ protected JCErroneous syntaxError(int pos, Error errorKey) {
+ return syntaxError(pos, List.nil(), errorKey);
}
- protected JCErroneous syntaxError(int pos, List<JCTree> errs, String key, TokenKind... args) {
+ protected JCErroneous syntaxError(int pos, List<JCTree> errs, Error errorKey) {
setErrorEndPos(pos);
JCErroneous err = F.at(pos).Erroneous(errs);
- reportSyntaxError(err, key, (Object[])args);
+ reportSyntaxError(err, errorKey);
if (errs != null) {
JCTree last = errs.last();
if (last != null)
@@ -389,22 +391,22 @@
* Report a syntax using the given the position parameter and arguments,
* unless one was already reported at the same position.
*/
- protected void reportSyntaxError(int pos, String key, Object... args) {
+ protected void reportSyntaxError(int pos, Error errorKey) {
JCDiagnostic.DiagnosticPosition diag = new JCDiagnostic.SimpleDiagnosticPosition(pos);
- reportSyntaxError(diag, key, args);
+ reportSyntaxError(diag, errorKey);
}
/**
* Report a syntax error using the given DiagnosticPosition object and
* arguments, unless one was already reported at the same position.
*/
- protected void reportSyntaxError(JCDiagnostic.DiagnosticPosition diagPos, String key, Object... args) {
+ protected void reportSyntaxError(JCDiagnostic.DiagnosticPosition diagPos, Error errorKey) {
int pos = diagPos.getPreferredPosition();
if (pos > S.errPos() || pos == Position.NOPOS) {
if (token.kind == EOF) {
- error(diagPos, "premature.eof");
+ log.error(DiagnosticFlag.SYNTAX, diagPos, Errors.PrematureEof);
} else {
- error(diagPos, key, args);
+ log.error(DiagnosticFlag.SYNTAX, diagPos, errorKey);
}
}
S.errPos(pos);
@@ -417,21 +419,6 @@
}
}
-
- /** Generate a syntax error at current position unless one was already
- * reported at the same position.
- */
- protected JCErroneous syntaxError(String key) {
- return syntaxError(token.pos, key);
- }
-
- /** Generate a syntax error at current position unless one was
- * already reported at the same position.
- */
- protected JCErroneous syntaxError(String key, TokenKind arg) {
- return syntaxError(token.pos, key, arg);
- }
-
/** If next input token matches given token, skip it, otherwise report
* an error.
*/
@@ -440,7 +427,7 @@
nextToken();
} else {
setErrorEndPos(token.pos);
- reportSyntaxError(S.prevToken().endPos, "expected", tk);
+ reportSyntaxError(S.prevToken().endPos, Errors.Expected(tk));
}
}
@@ -449,9 +436,9 @@
JCExpression illegal(int pos) {
setErrorEndPos(pos);
if ((mode & EXPR) != 0)
- return syntaxError(pos, "illegal.start.of.expr");
+ return syntaxError(pos, Errors.IllegalStartOfExpr);
else
- return syntaxError(pos, "illegal.start.of.type");
+ return syntaxError(pos, Errors.IllegalStartOfType);
}
@@ -465,8 +452,7 @@
protected void checkNoMods(long mods) {
if (mods != 0) {
long lowestMod = mods & -mods;
- error(token.pos, "mod.not.allowed.here",
- Flags.asFlagSet(lowestMod));
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.ModNotAllowedHere(Flags.asFlagSet(lowestMod)));
}
}
@@ -546,11 +532,11 @@
nextToken();
return name;
} else if (token.kind == ASSERT) {
- error(token.pos, "assert.as.identifier");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.AssertAsIdentifier);
nextToken();
return names.error;
} else if (token.kind == ENUM) {
- error(token.pos, "enum.as.identifier");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.EnumAsIdentifier);
nextToken();
return names.error;
} else if (token.kind == THIS) {
@@ -561,15 +547,15 @@
nextToken();
return name;
} else {
- error(token.pos, "this.as.identifier");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.ThisAsIdentifier);
nextToken();
return names.error;
}
} else if (token.kind == UNDERSCORE) {
if (Feature.UNDERSCORE_IDENTIFIER.allowedInSource(source)) {
- warning(token.pos, "underscore.as.identifier");
+ log.warning(token.pos, Warnings.UnderscoreAsIdentifier);
} else {
- error(token.pos, "underscore.as.identifier");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.UnderscoreAsIdentifier);
}
Name name = token.name();
nextToken();
@@ -628,7 +614,7 @@
TypeTag.INT,
Convert.string2int(strval(prefix), token.radix()));
} catch (NumberFormatException ex) {
- error(token.pos, "int.number.too.large", strval(prefix));
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.IntNumberTooLarge(strval(prefix)));
}
break;
case LONGLITERAL:
@@ -637,7 +623,7 @@
TypeTag.LONG,
Long.valueOf(Convert.string2long(strval(prefix), token.radix())));
} catch (NumberFormatException ex) {
- error(token.pos, "int.number.too.large", strval(prefix));
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.IntNumberTooLarge(strval(prefix)));
}
break;
case FLOATLITERAL: {
@@ -652,9 +638,9 @@
n = Float.NaN;
}
if (n.floatValue() == 0.0f && !isZero(proper))
- error(token.pos, "fp.number.too.small");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.FpNumberTooSmall);
else if (n.floatValue() == Float.POSITIVE_INFINITY)
- error(token.pos, "fp.number.too.large");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.FpNumberTooLarge);
else
t = F.at(pos).Literal(TypeTag.FLOAT, n);
break;
@@ -671,9 +657,9 @@
n = Double.NaN;
}
if (n.doubleValue() == 0.0d && !isZero(proper))
- error(token.pos, "fp.number.too.small");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.FpNumberTooSmall);
else if (n.doubleValue() == Double.POSITIVE_INFINITY)
- error(token.pos, "fp.number.too.large");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.FpNumberTooLarge);
else
t = F.at(pos).Literal(TypeTag.DOUBLE, n);
break;
@@ -762,7 +748,7 @@
JCExpression result = term(TYPE);
if (!allowVar && isRestrictedLocalVarTypeName(result)) {
- syntaxError(result.pos, "var.not.allowed.here");
+ syntaxError(result.pos, Errors.VarNotAllowedHere);
}
return result;
@@ -1770,7 +1756,7 @@
}
accept(RPAREN);
} else {
- syntaxError(token.pos, "expected", LPAREN);
+ syntaxError(token.pos, Errors.Expected(LPAREN));
}
return args.toList();
}
@@ -1839,13 +1825,13 @@
nextToken();
break;
default:
- args.append(syntaxError(token.pos, "expected", GT));
+ args.append(syntaxError(token.pos, Errors.Expected(GT)));
break;
}
return args.toList();
}
} else {
- return List.of(syntaxError(token.pos, "expected", LT));
+ return List.of(syntaxError(token.pos, Errors.Expected(LT)));
}
}
@@ -1879,7 +1865,7 @@
JCExpression wc = toP(F.at(pos).Wildcard(t, null));
JCIdent id = toP(F.at(token.pos).Ident(ident()));
JCErroneous err = F.at(pos).Erroneous(List.<JCTree>of(wc, id));
- reportSyntaxError(err, "expected3", GT, EXTENDS, SUPER);
+ reportSyntaxError(err, Errors.Expected3(GT, EXTENDS, SUPER));
result = err;
} else {
TypeBoundKind t = toP(F.at(pos).TypeBoundKind(BoundKind.UNBOUND));
@@ -1969,7 +1955,7 @@
// are complained about directly in term3(), Here check for type annotations on dimensions
// taking care to handle some interior dimension(s) being annotated.
if ((tag == TYPEARRAY && TreeInfo.containsTypeAnnotation(t)) || tag == ANNOTATED_TYPE)
- syntaxError("no.annotations.on.dot.class");
+ syntaxError(token.pos, Errors.NoAnnotationsOnDotClass);
t = toP(F.at(pos).Select(t, names._class));
}
} else if ((mode & TYPE) != 0) {
@@ -1977,7 +1963,7 @@
mode = TYPE;
}
} else if (token.kind != COLCOL) {
- syntaxError(token.pos, "dot.class.expected");
+ syntaxError(token.pos, Errors.DotClassExpected);
}
return t;
}
@@ -2070,7 +2056,7 @@
JCExpression e = arrayCreatorRest(newpos, t);
if (diamondFound) {
- reportSyntaxError(lastTypeargsPos, "cannot.create.array.with.diamond");
+ reportSyntaxError(lastTypeargsPos, Errors.CannotCreateArrayWithDiamond);
return toP(F.at(newpos).Erroneous(List.of(e)));
}
else if (typeArgs != null) {
@@ -2083,7 +2069,7 @@
}
setErrorEndPos(S.prevToken().endPos);
JCErroneous err = F.at(pos).Erroneous(typeArgs.prepend(e));
- reportSyntaxError(err, "cannot.create.array.with.type.arguments");
+ reportSyntaxError(err, Errors.CannotCreateArrayWithTypeArguments);
return toP(err);
}
return e;
@@ -2109,7 +2095,7 @@
return newClass;
} else {
setErrorEndPos(token.pos);
- reportSyntaxError(token.pos, "expected2", LPAREN, LBRACKET);
+ reportSyntaxError(token.pos, Errors.Expected2(LPAREN, LBRACKET));
t = toP(F.at(newpos).NewClass(null, typeArgs, t, List.nil(), null));
return toP(F.at(newpos).Erroneous(List.<JCTree>of(t)));
}
@@ -2161,7 +2147,7 @@
return na;
} else {
JCExpression t = toP(F.at(newpos).NewArray(elemtype, List.nil(), null));
- return syntaxError(token.pos, List.of(t), "array.dimension.missing");
+ return syntaxError(token.pos, List.of(t), Errors.ArrayDimensionMissing);
}
} else {
ListBuffer<JCExpression> dims = new ListBuffer<>();
@@ -2201,7 +2187,7 @@
na.dimAnnotations = dimAnnotations.toList();
if (elems != null) {
- return syntaxError(errpos, List.of(na), "illegal.array.creation.both.dimension.and.initialization");
+ return syntaxError(errpos, List.of(na), Errors.IllegalArrayCreationBothDimensionAndInitialization);
}
return na;
@@ -2273,7 +2259,7 @@
List<JCStatement> stats = blockStatements();
JCBlock t = F.at(pos).Block(flags, stats);
while (token.kind == CASE || token.kind == DEFAULT) {
- syntaxError("orphaned", token.kind);
+ syntaxError(token.pos, Errors.Orphaned(token.kind));
switchBlockStatementGroups();
}
// the Block node has a field "endpos" for first char of last token, which is
@@ -2327,21 +2313,21 @@
int pos = token.pos;
List<JCStatement> stats = blockStatement();
if (stats.isEmpty()) {
- JCErroneous e = syntaxError(pos, "illegal.start.of.stmt");
+ JCErroneous e = syntaxError(pos, Errors.IllegalStartOfStmt);
return toP(F.at(pos).Exec(e));
} else {
JCStatement first = stats.head;
- String error = null;
+ Error error = null;
switch (first.getTag()) {
case CLASSDEF:
- error = "class.not.allowed";
+ error = Errors.ClassNotAllowed;
break;
case VARDEF:
- error = "variable.not.allowed";
+ error = Errors.VariableNotAllowed;
break;
}
if (error != null) {
- error(first, error);
+ log.error(DiagnosticFlag.SYNTAX, first, error);
List<JCBlock> blist = List.of(F.at(first.pos).Block(0, stats));
return toP(F.at(pos).Exec(F.at(first.pos).Erroneous(blist)));
}
@@ -2385,7 +2371,7 @@
Comment dc = token.comment(CommentStyle.JAVADOC);
return List.of(classOrInterfaceOrEnumDeclaration(modifiersOpt(), dc));
case ENUM:
- error(token.pos, "local.enum");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.LocalEnum);
dc = token.comment(CommentStyle.JAVADOC);
return List.of(classOrInterfaceOrEnumDeclaration(modifiersOpt(), dc));
default:
@@ -2513,9 +2499,9 @@
} else {
if (resources.isEmpty()) {
if (Feature.TRY_WITH_RESOURCES.allowedInSource(source)) {
- error(pos, "try.without.catch.finally.or.resource.decls");
+ log.error(DiagnosticFlag.SYNTAX, pos, Errors.TryWithoutCatchFinallyOrResourceDecls);
} else {
- error(pos, "try.without.catch.or.finally");
+ log.error(DiagnosticFlag.SYNTAX, pos, Errors.TryWithoutCatchOrFinally);
}
}
}
@@ -2570,13 +2556,13 @@
case ELSE:
int elsePos = token.pos;
nextToken();
- return doRecover(elsePos, BasicErrorRecoveryAction.BLOCK_STMT, "else.without.if");
+ return doRecover(elsePos, BasicErrorRecoveryAction.BLOCK_STMT, Errors.ElseWithoutIf);
case FINALLY:
int finallyPos = token.pos;
nextToken();
- return doRecover(finallyPos, BasicErrorRecoveryAction.BLOCK_STMT, "finally.without.try");
+ return doRecover(finallyPos, BasicErrorRecoveryAction.BLOCK_STMT, Errors.FinallyWithoutTry);
case CATCH:
- return doRecover(token.pos, BasicErrorRecoveryAction.CATCH_CLAUSE, "catch.without.try");
+ return doRecover(token.pos, BasicErrorRecoveryAction.CATCH_CLAUSE, Errors.CatchWithoutTry);
case ASSERT: {
nextToken();
JCExpression assertion = parseExpression();
@@ -2600,11 +2586,11 @@
return parseStatementAsBlock();
}
- private JCStatement doRecover(int startPos, ErrorRecoveryAction action, String key) {
+ private JCStatement doRecover(int startPos, ErrorRecoveryAction action, Error errorKey) {
int errPos = S.errPos();
JCTree stm = action.doRecover(this);
S.errPos(errPos);
- return toP(F.Exec(syntaxError(startPos, List.of(stm), key)));
+ return toP(F.Exec(syntaxError(startPos, List.of(stm), errorKey)));
}
/** CatchClause = CATCH "(" FormalParameter ")" Block
@@ -2655,8 +2641,7 @@
return cases.toList();
default:
nextToken(); // to ensure progress
- syntaxError(pos, "expected3",
- CASE, DEFAULT, RBRACE);
+ syntaxError(pos, Errors.Expected3(CASE, DEFAULT, RBRACE));
}
}
}
@@ -2717,7 +2702,7 @@
if ((lastmode & TYPE) != 0 && LAX_IDENTIFIER.accepts(token.kind)) {
return variableDeclarators(modifiersOpt(), t, stats, true).toList();
} else if ((lastmode & TYPE) != 0 && token.kind == COLON) {
- error(pos, "bad.initializer", "for-loop");
+ log.error(DiagnosticFlag.SYNTAX, pos, Errors.BadInitializer("for-loop"));
return List.of((JCStatement)F.at(pos).VarDef(null, null, t, null));
} else {
return moreStatementExpressions(pos, t, stats).toList();
@@ -2802,7 +2787,7 @@
case ERROR : flag = 0; nextToken(); break;
default: break loop;
}
- if ((flags & flag) != 0) error(token.pos, "repeated.modifier");
+ if ((flags & flag) != 0) log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.RepeatedModifier);
lastPos = token.pos;
nextToken();
if (flag == Flags.ANNOTATION) {
@@ -2960,7 +2945,7 @@
vdefs.append(head);
while (token.kind == COMMA) {
if (implicit) {
- reportSyntaxError(pos, "var.not.allowed.compound");
+ reportSyntaxError(pos, Errors.VarNotAllowedCompound);
}
// All but last of multiple declarators subsume a comma
storeEnd((JCTree)vdefs.last(), token.endPos);
@@ -2991,7 +2976,7 @@
nextToken();
init = variableInitializer();
}
- else if (reqInit) syntaxError(token.pos, "expected", EQ);
+ else if (reqInit) syntaxError(token.pos, Errors.Expected(EQ));
JCTree elemType = TreeInfo.innermostType(type, true);
int startPos = Position.NOPOS;
if (Feature.LOCAL_VARIABLE_TYPE_INFERENCE.allowedInSource(source) && elemType.hasTag(IDENT)) {
@@ -2999,7 +2984,7 @@
if (isRestrictedLocalVarTypeName(typeName)) {
if (type.hasTag(TYPEARRAY)) {
//error - 'var' and arrays
- reportSyntaxError(pos, "var.not.allowed.array");
+ reportSyntaxError(pos, Errors.VarNotAllowedArray);
} else {
startPos = TreeInfo.getStartPos(mods);
if (startPos == Position.NOPOS)
@@ -3177,7 +3162,7 @@
consumedToplevelDoc = true;
break;
} else if (kind != ModuleKind.STRONG) {
- reportSyntaxError(token.pos, "expected.module");
+ reportSyntaxError(token.pos, Errors.ExpectedModule);
}
}
JCTree def = typeDeclaration(mods, docComment);
@@ -3246,7 +3231,7 @@
}
case STATIC:
if (isStaticPhase) {
- error(token.pos, "repeated.modifier");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.RepeatedModifier);
}
isStaticPhase = true;
break;
@@ -3284,7 +3269,7 @@
accept(SEMI);
defs.append(toP(F.at(pos).Provides(serviceName, implNames)));
} else {
- error(token.pos, "expected", "'" + names.with + "'");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.ExpectedStr("'" + names.with + "'"));
skip(false, false, false, false);
}
} else if (token.name() == names.uses) {
@@ -3294,7 +3279,7 @@
defs.append(toP(F.at(pos).Uses(service)));
} else {
setErrorEndPos(pos);
- reportSyntaxError(pos, "invalid.module.directive");
+ reportSyntaxError(pos, Errors.InvalidModuleDirective);
break;
}
}
@@ -3363,9 +3348,9 @@
}
final JCErroneous erroneousTree;
if (parseModuleInfo) {
- erroneousTree = syntaxError(pos, errs, "expected.module.or.open");
+ erroneousTree = syntaxError(pos, errs, Errors.ExpectedModuleOrOpen);
} else {
- erroneousTree = syntaxError(pos, errs, "expected3", CLASS, INTERFACE, ENUM);
+ erroneousTree = syntaxError(pos, errs, Errors.Expected3(CLASS, INTERFACE, ENUM));
}
return toP(F.Exec(erroneousTree));
}
@@ -3405,9 +3390,9 @@
Name name = ident();
if (name == names.var) {
if (Feature.LOCAL_VARIABLE_TYPE_INFERENCE.allowedInSource(source)) {
- reportSyntaxError(pos, "var.not.allowed", name);
+ reportSyntaxError(pos, Errors.VarNotAllowed(name));
} else {
- warning(pos, "var.not.allowed");
+ log.warning(pos, Warnings.VarNotAllowed);
}
}
return name;
@@ -3479,8 +3464,7 @@
defs.append(enumeratorDeclaration(enumName));
}
if (token.kind != SEMI && token.kind != RBRACE) {
- defs.append(syntaxError(token.pos, "expected3",
- COMMA, RBRACE, SEMI));
+ defs.append(syntaxError(token.pos, Errors.Expected3(COMMA, RBRACE, SEMI)));
nextToken();
}
}
@@ -3614,7 +3598,7 @@
(mods.flags & Flags.StandardFlags & ~Flags.STATIC) == 0 &&
mods.annotations.isEmpty()) {
if (isInterface) {
- error(token.pos, "initializer.not.allowed");
+ log.error(DiagnosticFlag.SYNTAX, token.pos, Errors.InitializerNotAllowed);
}
return List.of(block(pos, mods.flags));
} else {
@@ -3648,7 +3632,7 @@
}
if (token.kind == LPAREN && !isInterface && type.hasTag(IDENT)) {
if (isInterface || tk.name() != className)
- error(pos, "invalid.meth.decl.ret.type.req");
+ log.error(DiagnosticFlag.SYNTAX, pos, Errors.InvalidMethDeclRetTypeReq);
else if (annosAfterParams.nonEmpty())
illegal(annosAfterParams.head.pos);
return List.of(methodDeclaratorRest(
@@ -3674,7 +3658,7 @@
? List.of(toP(F.at(pos).MethodDef(mods, name, type, typarams,
List.nil(), List.nil(), null, null)))
: null;
- return List.of(syntaxError(token.pos, err, "expected", LPAREN));
+ return List.of(syntaxError(token.pos, err, Errors.Expected(LPAREN)));
}
}
}
@@ -3841,7 +3825,7 @@
this.allowThisIdent = false;
while (token.kind == COMMA) {
if ((lastParam.mods.flags & Flags.VARARGS) != 0) {
- error(lastParam, "varargs.must.be.last");
+ log.error(DiagnosticFlag.SYNTAX, lastParam, Errors.VarargsMustBeLast);
}
nextToken();
params.append(lastParam = formalParameter(lambdaParameters));
@@ -3851,7 +3835,7 @@
nextToken();
} else {
setErrorEndPos(token.pos);
- reportSyntaxError(S.prevToken().endPos, "expected3", COMMA, RPAREN, LBRACKET);
+ reportSyntaxError(S.prevToken().endPos, Errors.Expected3(COMMA, RPAREN, LBRACKET));
}
return params.toList();
}
@@ -3976,8 +3960,7 @@
} else {
// if not a var arg, then typeAnnotationsPushedBack should be null
if (typeAnnotationsPushedBack.nonEmpty()) {
- reportSyntaxError(typeAnnotationsPushedBack.head.pos,
- "illegal.start.of.type");
+ reportSyntaxError(typeAnnotationsPushedBack.head.pos, Errors.IllegalStartOfType);
}
typeAnnotationsPushedBack = List.nil();
}
@@ -3990,25 +3973,12 @@
}
/* ---------- auxiliary methods -------------- */
-
- void error(int pos, String key, Object ... args) {
- log.error(DiagnosticFlag.SYNTAX, pos, key, args);
- }
-
- void error(DiagnosticPosition pos, String key, Object ... args) {
- log.error(DiagnosticFlag.SYNTAX, pos, key, args);
- }
-
- void warning(int pos, String key, Object ... args) {
- log.warning(pos, key, args);
- }
-
/** Check that given tree is a legal expression statement.
*/
protected JCExpression checkExprStat(JCExpression t) {
if (!TreeInfo.isExpressionStatement(t)) {
JCExpression ret = F.at(t.pos).Erroneous(List.<JCTree>of(t));
- error(ret, "not.stmt");
+ log.error(DiagnosticFlag.SYNTAX, ret, Errors.NotStmt);
return ret;
} else {
return t;
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/ParserFactory.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/ParserFactory.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
import com.sun.tools.javac.tree.DocTreeMaker;
import com.sun.tools.javac.tree.TreeMaker;
import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.JCDiagnostic;
import com.sun.tools.javac.util.Log;
import com.sun.tools.javac.util.Names;
import com.sun.tools.javac.util.Options;
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacFiler.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacFiler.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -724,7 +724,7 @@
throw new FilerException("Attempt to recreate a file for type " + typename);
}
if (lint && existing != null) {
- log.warning("proc.type.already.exists", typename);
+ log.warning(Warnings.ProcTypeAlreadyExists(typename));
}
if (!mod.isUnnamed() && !typename.contains(".")) {
throw new FilerException("Attempt to create a type in unnamed package of a named module: " + typename);
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Fri Feb 02 09:04:45 2018 -0800
@@ -624,9 +624,9 @@
compiler.err.incomparable.types=\
incomparable types: {0} and {1}
-# 0: number
+# 0: string
compiler.err.int.number.too.large=\
- integer number too large: {0}
+ integer number too large
compiler.err.intf.annotation.members.cant.have.params=\
elements in annotation type declarations cannot declare formal parameters
@@ -1207,7 +1207,7 @@
compiler.err.illegal.ref.to.var.type=\
illegal reference to restricted type ''{0}''
-# 0: token
+# 0: name
compiler.err.var.not.allowed=\
''{0}'' not allowed here\n\
as of release 10, ''{0}'' is a restricted local variable type and cannot be used for type declarations
@@ -1734,7 +1734,7 @@
{0}: major version {1} is newer than {2}, the highest major version supported by this compiler.\n\
It is recommended that the compiler be upgraded.
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.warn.static.not.qualified.by.type=\
static {0} should be qualified by type name, {1}, instead of by an expression
@@ -1780,7 +1780,7 @@
compiler.warn.proc.file.reopening=\
Attempt to create a file for ''{0}'' multiple times
-# 0: name
+# 0: string
compiler.warn.proc.type.already.exists=\
A file for type ''{0}'' already exists on the sourcepath or classpath
@@ -1861,7 +1861,7 @@
compiler.warn.unchecked.cast.to.type=\
unchecked cast to type {0}
-# 0: symbol kind, 1: name, 2: list of type, 3: list of type, 4: symbol kind, 5: symbol
+# 0: kind name, 1: name, 2: object, 3: object, 4: kind name, 5: symbol
compiler.warn.unchecked.meth.invocation.applied=\
unchecked method invocation: {0} {1} in {4} {5} is applied to given types\n\
required: {2}\n\
@@ -1998,6 +1998,10 @@
compiler.err.expected=\
{0} expected
+# 0: string
+compiler.err.expected.str=\
+ {0} expected
+
# 0: token, 1: token
compiler.err.expected2=\
{0} or {1} expected
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/util/AbstractLog.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/util/AbstractLog.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -110,16 +110,6 @@
/** Report an error, unless another error was already reported at same
* source position.
* @param pos The source position at which to report the error.
- * @param key The key for the localized error message.
- * @param args Fields of the error message.
- */
- public void error(DiagnosticPosition pos, String key, Object... args) {
- error(pos, diags.errorKey(key, args));
- }
-
- /** Report an error, unless another error was already reported at same
- * source position.
- * @param pos The source position at which to report the error.
* @param errorKey The key for the localized error message.
*/
public void error(DiagnosticPosition pos, Error errorKey) {
@@ -130,17 +120,6 @@
* source position.
* @param flag A flag to set on the diagnostic
* @param pos The source position at which to report the error.
- * @param key The key for the localized error message.
- * @param args Fields of the error message.
- */
- public void error(DiagnosticFlag flag, DiagnosticPosition pos, String key, Object ... args) {
- error(flag, pos, diags.errorKey(key, args));
- }
-
- /** Report an error, unless another error was already reported at same
- * source position.
- * @param flag A flag to set on the diagnostic
- * @param pos The source position at which to report the error.
* @param errorKey The key for the localized error message.
*/
public void error(DiagnosticFlag flag, DiagnosticPosition pos, Error errorKey) {
@@ -170,17 +149,6 @@
* source position.
* @param flag A flag to set on the diagnostic
* @param pos The source position at which to report the error.
- * @param key The key for the localized error message.
- * @param args Fields of the error message.
- */
- public void error(DiagnosticFlag flag, int pos, String key, Object ... args) {
- error(flag, pos, diags.errorKey(key, args));
- }
-
- /** Report an error, unless another error was already reported at same
- * source position.
- * @param flag A flag to set on the diagnostic
- * @param pos The source position at which to report the error.
* @param errorKey The key for the localized error message.
*/
public void error(DiagnosticFlag flag, int pos, Error errorKey) {
@@ -189,15 +157,6 @@
/** Report a warning, unless suppressed by the -nowarn option or the
* maximum number of warnings has been reached.
- * @param key The key for the localized warning message.
- * @param args Fields of the warning message.
- */
- public void warning(String key, Object ... args) {
- warning(diags.warningKey(key, args));
- }
-
- /** Report a warning, unless suppressed by the -nowarn option or the
- * maximum number of warnings has been reached.
* @param warningKey The key for the localized warning message.
*/
public void warning(Warning warningKey) {
@@ -207,16 +166,6 @@
/** Report a lint warning, unless suppressed by the -nowarn option or the
* maximum number of warnings has been reached.
* @param lc The lint category for the diagnostic
- * @param key The key for the localized warning message.
- * @param args Fields of the warning message.
- */
- public void warning(LintCategory lc, String key, Object ... args) {
- warning(lc, diags.warningKey(key, args));
- }
-
- /** Report a lint warning, unless suppressed by the -nowarn option or the
- * maximum number of warnings has been reached.
- * @param lc The lint category for the diagnostic
* @param warningKey The key for the localized warning message.
*/
public void warning(LintCategory lc, Warning warningKey) {
@@ -226,16 +175,6 @@
/** Report a warning, unless suppressed by the -nowarn option or the
* maximum number of warnings has been reached.
* @param pos The source position at which to report the warning.
- * @param key The key for the localized warning message.
- * @param args Fields of the warning message.
- */
- public void warning(DiagnosticPosition pos, String key, Object ... args) {
- warning(pos, diags.warningKey(key, args));
- }
-
- /** Report a warning, unless suppressed by the -nowarn option or the
- * maximum number of warnings has been reached.
- * @param pos The source position at which to report the warning.
* @param warningKey The key for the localized warning message.
*/
public void warning(DiagnosticPosition pos, Warning warningKey) {
@@ -246,17 +185,6 @@
* maximum number of warnings has been reached.
* @param lc The lint category for the diagnostic
* @param pos The source position at which to report the warning.
- * @param key The key for the localized warning message.
- * @param args Fields of the warning message.
- */
- public void warning(LintCategory lc, DiagnosticPosition pos, String key, Object ... args) {
- warning(lc, pos, diags.warningKey(key, args));
- }
-
- /** Report a lint warning, unless suppressed by the -nowarn option or the
- * maximum number of warnings has been reached.
- * @param lc The lint category for the diagnostic
- * @param pos The source position at which to report the warning.
* @param warningKey The key for the localized warning message.
*/
public void warning(LintCategory lc, DiagnosticPosition pos, Warning warningKey) {
@@ -266,16 +194,6 @@
/** Report a warning, unless suppressed by the -nowarn option or the
* maximum number of warnings has been reached.
* @param pos The source position at which to report the warning.
- * @param key The key for the localized warning message.
- * @param args Fields of the warning message.
- */
- public void warning(int pos, String key, Object ... args) {
- warning(pos, diags.warningKey(key, args));
- }
-
- /** Report a warning, unless suppressed by the -nowarn option or the
- * maximum number of warnings has been reached.
- * @param pos The source position at which to report the warning.
* @param warningKey The key for the localized warning message.
*/
public void warning(int pos, Warning warningKey) {
@@ -284,15 +202,6 @@
/** Report a warning.
* @param pos The source position at which to report the warning.
- * @param key The key for the localized warning message.
- * @param args Fields of the warning message.
- */
- public void mandatoryWarning(DiagnosticPosition pos, String key, Object ... args) {
- mandatoryWarning(pos, diags.warningKey(key, args));
- }
-
- /** Report a warning.
- * @param pos The source position at which to report the warning.
* @param warningKey The key for the localized warning message.
*/
public void mandatoryWarning(DiagnosticPosition pos, Warning warningKey) {
@@ -302,16 +211,6 @@
/** Report a warning.
* @param lc The lint category for the diagnostic
* @param pos The source position at which to report the warning.
- * @param key The key for the localized warning message.
- * @param args Fields of the warning message.
- */
- public void mandatoryWarning(LintCategory lc, DiagnosticPosition pos, String key, Object ... args) {
- mandatoryWarning(lc, pos, diags.warningKey(key, args));
- }
-
- /** Report a warning.
- * @param lc The lint category for the diagnostic
- * @param pos The source position at which to report the warning.
* @param warningKey The key for the localized warning message.
*/
public void mandatoryWarning(LintCategory lc, DiagnosticPosition pos, Warning warningKey) {
@@ -319,14 +218,6 @@
}
/** Provide a non-fatal notification, unless suppressed by the -nowarn option.
- * @param key The key for the localized notification message.
- * @param args Fields of the notint an error or warning message:
- */
- public void note(String key, Object ... args) {
- note(diags.noteKey(key, args));
- }
-
- /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
* @param noteKey The key for the localized notification message.
*/
public void note(Note noteKey) {
@@ -334,14 +225,6 @@
}
/** Provide a non-fatal notification, unless suppressed by the -nowarn option.
- * @param key The key for the localized notification message.
- * @param args Fields of the notification message.
- */
- public void note(DiagnosticPosition pos, String key, Object ... args) {
- note(pos, diags.noteKey(key, args));
- }
-
- /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
* @param noteKey The key for the localized notification message.
*/
public void note(DiagnosticPosition pos, Note noteKey) {
@@ -349,14 +232,6 @@
}
/** Provide a non-fatal notification, unless suppressed by the -nowarn option.
- * @param key The key for the localized notification message.
- * @param args Fields of the notification message.
- */
- public void note(int pos, String key, Object ... args) {
- note(pos, diags.noteKey(key, args));
- }
-
- /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
* @param noteKey The key for the localized notification message.
*/
public void note(int pos, Note noteKey) {
@@ -364,14 +239,6 @@
}
/** Provide a non-fatal notification, unless suppressed by the -nowarn option.
- * @param key The key for the localized notification message.
- * @param args Fields of the notification message.
- */
- public void note(JavaFileObject file, String key, Object ... args) {
- note(file, diags.noteKey(key, args));
- }
-
- /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
* @param noteKey The key for the localized notification message.
*/
public void note(JavaFileObject file, Note noteKey) {
@@ -379,14 +246,6 @@
}
/** Provide a non-fatal notification, unless suppressed by the -nowarn option.
- * @param key The key for the localized notification message.
- * @param args Fields of the notification message.
- */
- public void mandatoryNote(final JavaFileObject file, String key, Object ... args) {
- mandatoryNote(file, diags.noteKey(key, args));
- }
-
- /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
* @param noteKey The key for the localized notification message.
*/
public void mandatoryNote(final JavaFileObject file, Note noteKey) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JCDiagnostic.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JCDiagnostic.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -295,7 +295,7 @@
/**
* Create a new error key.
*/
- Error errorKey(String code, Object... args) {
+ public Error errorKey(String code, Object... args) {
return (Error)DiagnosticInfo.of(ERROR, prefix, code, args);
}
@@ -309,7 +309,7 @@
/**
* Create a new note key.
*/
- Note noteKey(String code, Object... args) {
+ public Note noteKey(String code, Object... args) {
return (Note)DiagnosticInfo.of(NOTE, prefix, code, args);
}
@@ -527,6 +527,23 @@
}
}
+ /**
+ * Returns the code for this diagnostic info, provided mainly for backward compatibility
+ */
+ public String getCode() {
+ return code;
+ }
+
+ /**
+ * Returns the arguments for this diagnostic info, provided mainly for backward compatibility
+ */
+ public Object[] getArgs() {
+ return args;
+ }
+
+ public void setArgs(Object[] args) {
+ this.args = args;
+ }
}
/**
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/util/MandatoryWarningHandler.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/util/MandatoryWarningHandler.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,8 @@
import com.sun.tools.javac.code.Lint.LintCategory;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.JCDiagnostic.Note;
+import com.sun.tools.javac.util.JCDiagnostic.Warning;
/**
@@ -121,7 +123,7 @@
/**
* Report a mandatory warning.
*/
- public void report(DiagnosticPosition pos, String msg, Object... args) {
+ public void report(DiagnosticPosition pos, Warning warnKey) {
JavaFileObject currentSource = log.currentSourceFile();
if (verbose) {
@@ -130,7 +132,7 @@
if (log.nwarnings < log.MaxWarnings) {
// generate message and remember the source file
- logMandatoryWarning(pos, msg, args);
+ logMandatoryWarning(pos, warnKey);
sourcesWithReportedWarnings.add(currentSource);
} else if (deferredDiagnosticKind == null) {
// set up deferred message
@@ -248,13 +250,12 @@
* Reports a mandatory warning to the log. If mandatory warnings
* are not being enforced, treat this as an ordinary warning.
*/
- private void logMandatoryWarning(DiagnosticPosition pos, String msg,
- Object... args) {
+ private void logMandatoryWarning(DiagnosticPosition pos, Warning warnKey) {
// Note: the following log methods are safe if lintCategory is null.
if (enforceMandatory)
- log.mandatoryWarning(lintCategory, pos, msg, args);
+ log.mandatoryWarning(lintCategory, pos, warnKey);
else
- log.warning(lintCategory, pos, msg, args);
+ log.warning(lintCategory, pos, warnKey);
}
/**
@@ -263,8 +264,8 @@
*/
private void logMandatoryNote(JavaFileObject file, String msg, Object... args) {
if (enforceMandatory)
- log.mandatoryNote(file, msg, args);
+ log.mandatoryNote(file, new Note("compiler", msg, args));
else
- log.note(file, msg, args);
+ log.note(file, new Note("compiler", msg, args));
}
}
--- a/src/jdk.compiler/share/classes/module-info.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.compiler/share/classes/module-info.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -85,6 +85,8 @@
exports com.sun.tools.javac.api to
jdk.javadoc,
jdk.jshell;
+ exports com.sun.tools.javac.resources to
+ jdk.jshell;
exports com.sun.tools.javac.code to
jdk.javadoc,
jdk.jshell;
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ResponseContent.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ResponseContent.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -307,7 +307,7 @@
int bytes2return = Math.min(bytesread, unfulfilled);
debug.log(Level.DEBUG, "Returning chunk bytes: %d", bytes2return);
- returnBuffer = Utils.slice(chunk, bytes2return);
+ returnBuffer = Utils.sliceWithLimitedCapacity(chunk, bytes2return);
unfulfilled = bytesremaining -= bytes2return;
if (unfulfilled == 0) bytesToConsume = 2;
}
@@ -439,7 +439,7 @@
assert hasDemand;
int amount = Math.min(b.remaining(), unfulfilled);
unfulfilled = remaining -= amount;
- ByteBuffer buffer = Utils.slice(b, amount);
+ ByteBuffer buffer = Utils.sliceWithLimitedCapacity(b, amount);
pusher.onNext(List.of(buffer));
}
if (unfulfilled == 0) {
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Stream.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Stream.java Fri Feb 02 09:04:45 2018 -0800
@@ -767,7 +767,7 @@
// blocks waiting for stream send window, if exhausted
int actualAmount = windowController.tryAcquire(requestAmount, streamid, this);
if (actualAmount <= 0) return null;
- ByteBuffer outBuf = Utils.slice(buffer, actualAmount);
+ ByteBuffer outBuf = Utils.sliceWithLimitedCapacity(buffer, actualAmount);
DataFrame df = new DataFrame(streamid, 0 , outBuf);
return df;
}
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/Utils.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/Utils.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -464,10 +464,28 @@
public static final List<ByteBuffer> EMPTY_BB_LIST = List.of();
public static final ByteBufferReference[] EMPTY_BBR_ARRAY = new ByteBufferReference[0];
- public static ByteBuffer slice(ByteBuffer buffer, int amount) {
+ /**
+ * Returns a slice of size {@code amount} from the given buffer. If the
+ * buffer contains more data than {@code amount}, then the slice's capacity
+ * ( and, but not just, its limit ) is set to {@code amount}. If the buffer
+ * does not contain more data than {@code amount}, then the slice's capacity
+ * will be the same as the given buffer's capacity.
+ */
+ public static ByteBuffer sliceWithLimitedCapacity(ByteBuffer buffer, int amount) {
+ final int index = buffer.position() + amount;
+ final int limit = buffer.limit();
+ if (index != limit) {
+ // additional data in the buffer
+ buffer.limit(index); // ensures that the slice does not go beyond
+ } else {
+ // no additional data in the buffer
+ buffer.limit(buffer.capacity()); // allows the slice full capacity
+ }
+
ByteBuffer newb = buffer.slice();
- newb.limit(amount);
- buffer.position(buffer.position() + amount);
+ buffer.position(index);
+ buffer.limit(limit); // restore the original buffer's limit
+ newb.limit(amount); // slices limit to amount (capacity may be greater)
return newb;
}
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/frame/FramesDecoder.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/frame/FramesDecoder.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -281,14 +281,14 @@
int extract = Math.min(remaining, bytecount);
ByteBuffer extractedBuf;
if (isDataFrame) {
- extractedBuf = Utils.slice(currentBuffer, extract);
+ extractedBuf = Utils.sliceWithLimitedCapacity(currentBuffer, extract);
slicedToDataFrame = true;
} else {
// Header frames here
// HPACK decoding should performed under lock and immediately after frame decoding.
// in that case it is safe to release original buffer,
// because of sliced buffer has a very short life
- extractedBuf = Utils.slice(currentBuffer, extract);
+ extractedBuf = Utils.sliceWithLimitedCapacity(currentBuffer, extract);
}
res.add(extractedBuf);
bytecount -= extract;
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionCategory.java Fri Feb 02 17:02:45 2018 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.graalvm.options;
-
-/**
- * Categorizes options according to user relevance.
- *
- * @since 1.0
- */
-public enum OptionCategory {
-
- /**
- * An option common for users to apply.
- *
- * @since 1.0
- */
- USER,
-
- /**
- * An option only relevant in corner cases and for fine-tuning.
- *
- * @since 1.0
- */
- EXPERT,
-
- /**
- * An option only relevant when debugging language or instrument implementations.
- *
- * @since 1.0
- */
- DEBUG
-
-}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionDescriptor.java Fri Feb 02 17:02:45 2018 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.graalvm.options;
-
-import java.util.Objects;
-
-/**
- * Represents metadata for a single option.
- *
- * @since 1.0
- */
-public final class OptionDescriptor {
-
- private final OptionKey<?> key;
- private final String name;
- private final String help;
- private final OptionCategory kind;
- private final boolean deprecated;
-
- OptionDescriptor(OptionKey<?> key, String name, String help, OptionCategory kind, boolean deprecated) {
- this.key = key;
- this.name = name;
- this.help = help;
- this.kind = kind;
- this.deprecated = deprecated;
- }
-
- /**
- * Returns the name of the option that this descriptor represents.
- *
- * @since 1.0
- */
- public String getName() {
- return name;
- }
-
- /**
- * Returns the key for this option.
- *
- * @since 1.0
- */
- public OptionKey<?> getKey() {
- return key;
- }
-
- /**
- * Returns <code>true</code> if this option was marked deprecated. This indicates that the
- * option is going to be removed in a future release or its use is not recommended.
- *
- * @since 1.0
- */
- public boolean isDeprecated() {
- return deprecated;
- }
-
- /**
- * Returns the user category of this option.
- *
- * @since 1.0
- */
- public OptionCategory getCategory() {
- return kind;
- }
-
- /**
- * Returns a human-readable description on how to use the option.
- *
- * @since 1.0
- */
- public String getHelp() {
- return help;
- }
-
- /**
- * {@inheritDoc}
- *
- * @since 1.0
- */
- @Override
- public String toString() {
- return "OptionDescriptor [key=" + key + ", help=" + help + ", kind=" + kind + ", deprecated=" + deprecated + "]";
- }
-
- /**
- * {@inheritDoc}
- *
- * @since 1.0
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (deprecated ? 1231 : 1237);
- result = prime * result + ((help == null) ? 0 : help.hashCode());
- result = prime * result + ((key == null) ? 0 : key.hashCode());
- result = prime * result + ((kind == null) ? 0 : kind.hashCode());
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
-
- /**
- * {@inheritDoc}
- *
- * @since 1.0
- */
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- } else if (obj == null) {
- return false;
- } else if (getClass() != obj.getClass()) {
- return false;
- }
- OptionDescriptor other = (OptionDescriptor) obj;
- return Objects.equals(name, other.name) &&
- Objects.equals(deprecated, other.deprecated) &&
- Objects.equals(help, other.help) &&
- Objects.equals(key, other.key) &&
- Objects.equals(kind, other.kind);
- }
-
- /**
- * Creates a new option descriptor builder by key. The option group and name is inferred by the
- * key.
- *
- * @since 1.0
- */
- public static <T> Builder newBuilder(OptionKey<T> key, String name) {
- Objects.requireNonNull(key);
- Objects.requireNonNull(name);
- return EMPTY.new Builder(key, name);
- }
-
- private static final OptionDescriptor EMPTY = new OptionDescriptor(null, null, null, null, false);
-
- /**
- * Represents an option descriptor builder.
- *
- * @since 1.0
- */
- public final class Builder {
-
- private final OptionKey<?> key;
- private final String name;
- private boolean deprecated;
- private OptionCategory category;
- private String help;
-
- Builder(OptionKey<?> key, String name) {
- this.key = key;
- this.name = name;
- }
-
- /**
- * Defines the user category for this option. The default value is
- * {@link OptionCategory#DEBUG}.
- *
- * @since 1.0
- */
- public Builder category(@SuppressWarnings("hiding") OptionCategory category) {
- Objects.requireNonNull(category);
- this.category = category;
- return this;
- }
-
- /**
- * Defines if this option is deprecated. The default value for deprecated is
- * <code>false</code>. This can be used to evolve options between releases.
- *
- * @since 1.0
- */
- public Builder deprecated(@SuppressWarnings("hiding") boolean deprecated) {
- this.deprecated = deprecated;
- return this;
- }
-
- /**
- * Specifies a human-readable description on how to use the option.
- *
- * @since 1.0
- */
- public Builder help(@SuppressWarnings("hiding") String help) {
- Objects.requireNonNull(help);
- this.help = help;
- return this;
- }
-
- /**
- * Builds and returns a new option descriptor.
- *
- * @since 1.0
- */
- public OptionDescriptor build() {
- return new OptionDescriptor(key, name, help == null ? "" : help, category == null ? OptionCategory.DEBUG : category, deprecated);
- }
-
- }
-
-}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionDescriptors.java Fri Feb 02 17:02:45 2018 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.graalvm.options;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-/**
- * An interface to a set of {@link OptionDescriptor}s.
- *
- * @since 1.0
- */
-public interface OptionDescriptors extends Iterable<OptionDescriptor> {
-
- /**
- * An empty set of option descriptors.
- *
- * @since 1.0
- */
- OptionDescriptors EMPTY = new OptionDescriptors() {
-
- public Iterator<OptionDescriptor> iterator() {
- return Collections.<OptionDescriptor> emptyList().iterator();
- }
-
- public OptionDescriptor get(String key) {
- return null;
- }
- };
-
- /**
- * Gets the {@link OptionDescriptor} matching a given option name or {@code null} if this option
- * descriptor set does not contain a matching option name.
- *
- * @since 1.0
- */
- OptionDescriptor get(String optionName);
-
- /**
- * Creates a union options descriptor out of multiple given descriptors. The operation
- * descriptors are not checked for duplicate keys. The option descriptors are iterated in
- * declaration order.
- *
- * @since 1.0
- */
- static OptionDescriptors createUnion(OptionDescriptors... descriptors) {
- if (descriptors.length == 0) {
- return EMPTY;
- } else if (descriptors.length == 1) {
- return descriptors[0];
- } else {
- return new UnionOptionDescriptors(descriptors);
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @since 1.0
- */
- @Override
- Iterator<OptionDescriptor> iterator();
-
- /**
- * Creates an {@link OptionDescriptors} instance from a list. The option descriptors
- * implementation is backed by a {@link LinkedHashMap} that preserves ordering.
- *
- * @since 1.0
- */
- static OptionDescriptors create(List<OptionDescriptor> descriptors) {
- if (descriptors == null || descriptors.isEmpty()) {
- return EMPTY;
- }
- return new OptionDescriptorsMap(descriptors);
- }
-}
-
-class OptionDescriptorsMap implements OptionDescriptors {
-
- final Map<String, OptionDescriptor> descriptors = new LinkedHashMap<>();
-
- OptionDescriptorsMap(List<OptionDescriptor> descriptorList) {
- for (OptionDescriptor descriptor : descriptorList) {
- descriptors.put(descriptor.getName(), descriptor);
- }
- }
-
- @Override
- public OptionDescriptor get(String optionName) {
- return descriptors.get(optionName);
- }
-
- @Override
- public Iterator<OptionDescriptor> iterator() {
- return descriptors.values().iterator();
- }
-
-}
-
-final class UnionOptionDescriptors implements OptionDescriptors {
-
- final OptionDescriptors[] descriptorsList;
-
- UnionOptionDescriptors(OptionDescriptors[] descriptors) {
- // defensive copy
- this.descriptorsList = Arrays.copyOf(descriptors, descriptors.length);
- }
-
- public Iterator<OptionDescriptor> iterator() {
- return new Iterator<OptionDescriptor>() {
-
- Iterator<OptionDescriptor> descriptors = descriptorsList[0].iterator();
- int descriptorsIndex = 0;
- OptionDescriptor next = null;
-
- public boolean hasNext() {
- return fetchNext() != null;
- }
-
- private OptionDescriptor fetchNext() {
- if (next != null) {
- return next;
- }
- if (descriptors.hasNext()) {
- next = descriptors.next();
- return next;
- } else if (descriptorsIndex < descriptorsList.length - 1) {
- descriptorsIndex++;
- descriptors = descriptorsList[descriptorsIndex].iterator();
- return fetchNext();
- } else {
- return null;
- }
- }
-
- public OptionDescriptor next() {
- OptionDescriptor fetchedNext = fetchNext();
- if (fetchedNext != null) {
- // consume next
- this.next = null;
- return fetchedNext;
- } else {
- throw new NoSuchElementException();
- }
- }
- };
- }
-
- public OptionDescriptor get(String value) {
- for (OptionDescriptors descriptors : descriptorsList) {
- OptionDescriptor descriptor = descriptors.get(value);
- if (descriptor != null) {
- return descriptor;
- }
- }
- return null;
- }
-
-}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionKey.java Fri Feb 02 17:02:45 2018 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.graalvm.options;
-
-import java.util.Objects;
-
-/**
- * Represents the option key for an option specification.
- *
- * @since 1.0
- */
-public final class OptionKey<T> {
-
- private final OptionType<T> type;
- private final T defaultValue;
-
- /**
- * Constructs a new option key given a default value. Throws {@link IllegalArgumentException} if
- * no default {@link OptionType} could be {@link OptionType#defaultType(Object) resolved} for
- * the given type. The default value must not be <code>null</code>.
- *
- * @since 1.0
- */
- public OptionKey(T defaultValue) {
- Objects.requireNonNull(defaultValue);
- this.defaultValue = defaultValue;
- this.type = OptionType.defaultType(defaultValue);
- if (type == null) {
- throw new IllegalArgumentException("No default type specified for type " + defaultValue.getClass().getName() + ". Specify the option type explicitly to resolve this.");
- }
- }
-
- /**
- * Constructs a new option key given a default value and option key.
- *
- * @since 1.0
- */
- public OptionKey(T defaultValue, OptionType<T> type) {
- Objects.requireNonNull(type);
- this.defaultValue = defaultValue;
- this.type = type;
- }
-
- /**
- * Returns the option type of this key.
- *
- * @since 1.0
- */
- public OptionType<T> getType() {
- return type;
- }
-
- /**
- * Returns the default value for this option.
- *
- * @since 1.0
- */
- public T getDefaultValue() {
- return defaultValue;
- }
-
- /**
- * Returns the value of this key given the {@link OptionValues values}.
- *
- * @since 1.0
- */
- public T getValue(OptionValues values) {
- return values.get(this);
- }
-
- /**
- * Returns <code>true</code> if a value for this key has been set for the given option values or
- * <code>false</code> if no value has been set.
- *
- * @since 1.0
- */
- public boolean hasBeenSet(OptionValues values) {
- return values.hasBeenSet(this);
- }
-
-}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionType.java Fri Feb 02 17:02:45 2018 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.graalvm.options;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.Consumer;
-import java.util.function.Function;
-
-/**
- * Represents a type of an option that allows to convert string values to Java values.
- *
- * @since 1.0
- */
-public final class OptionType<T> {
-
- private final String name;
- private final Function<String, T> stringConverter;
- private final Consumer<T> validator;
- private final T defaultValue;
-
- /**
- * Constructs a new option type with name, defaultValue, and function that allows to convert a
- * string to the option type.
- *
- * @param name the name of the type.
- * @param defaultValue the default value to use if no value is given.
- * @param stringConverter a function that converts a string value to the option value. Can throw
- * {@link IllegalArgumentException} to indicate an invalid string.
- * @param validator used for validating the option value. Throws
- * {@link IllegalArgumentException} if the value is invalid.
- *
- * @since 1.0
- */
- public OptionType(String name, T defaultValue, Function<String, T> stringConverter, Consumer<T> validator) {
- Objects.requireNonNull(name);
- Objects.requireNonNull(stringConverter);
- Objects.requireNonNull(validator);
- this.name = name;
- this.stringConverter = stringConverter;
- this.defaultValue = defaultValue;
- this.validator = validator;
- }
-
- /**
- * Constructs a new option type with name, defaultValue, and function that allows to convert a
- * string to the option type.
- *
- * @param name the name of the type.
- * @param defaultValue the default value to use if no value is given.
- * @param stringConverter a function that converts a string value to the option value. Can throw
- * {@link IllegalArgumentException} to indicate an invalid string.
- *
- * @since 1.0
- */
- public OptionType(String name, T defaultValue, Function<String, T> stringConverter) {
- this(name, defaultValue, stringConverter, new Consumer<T>() {
- public void accept(T t) {
- }
- });
- }
-
- /**
- * Returns the default value of this type. Used if no value is available.
- *
- * @since 1.0
- */
- public T getDefaultValue() {
- return defaultValue;
- }
-
- /**
- * Returns the name of this type.
- *
- * @since 1.0
- */
- public String getName() {
- return name;
- }
-
- /**
- * Converts a string value, validates it, and converts it to an object of this type.
- *
- * @throws IllegalArgumentException if the value is invalid or cannot be converted.
- * @since 1.0
- */
- public T convert(String value) {
- T v = stringConverter.apply(value);
- validate(v);
- return v;
- }
-
- /**
- * Validates an option value and throws an {@link IllegalArgumentException} if the value is
- * invalid.
- *
- * @throws IllegalArgumentException if the value is invalid or cannot be converted.
- * @since 1.0
- */
- public void validate(T value) {
- validator.accept(value);
- }
-
- /**
- * @since 1.0
- */
- @Override
- public String toString() {
- return "OptionType[name=" + name + ", defaultValue=" + defaultValue + "]";
- }
-
- private static final Map<Class<?>, OptionType<?>> DEFAULTTYPES = new HashMap<>();
- static {
- DEFAULTTYPES.put(Boolean.class, new OptionType<>("Boolean", false, new Function<String, Boolean>() {
- public Boolean apply(String t) {
- if ("true".equals(t)) {
- return Boolean.TRUE;
- } else if ("false".equals(t)) {
- return Boolean.FALSE;
- } else {
- throw new IllegalArgumentException(String.format("Invalid boolean option value '%s'. The value of the option must be '%s' or '%s'.", t, "true", "false"));
- }
- }
- }));
- DEFAULTTYPES.put(Byte.class, new OptionType<>("Byte", (byte) 0, new Function<String, Byte>() {
- public Byte apply(String t) {
- try {
- return Byte.parseByte(t);
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException(e.getMessage(), e);
- }
- }
- }));
- DEFAULTTYPES.put(Integer.class, new OptionType<>("Integer", 0, new Function<String, Integer>() {
- public Integer apply(String t) {
- try {
- return Integer.parseInt(t);
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException(e.getMessage(), e);
- }
- }
- }));
- DEFAULTTYPES.put(Long.class, new OptionType<>("Long", 0L, new Function<String, Long>() {
- public Long apply(String t) {
- try {
- return Long.parseLong(t);
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException(e.getMessage(), e);
- }
- }
- }));
- DEFAULTTYPES.put(Float.class, new OptionType<>("Float", 0.0f, new Function<String, Float>() {
- public Float apply(String t) {
- try {
- return Float.parseFloat(t);
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException(e.getMessage(), e);
- }
- }
- }));
- DEFAULTTYPES.put(Double.class, new OptionType<>("Double", 0.0d, new Function<String, Double>() {
- public Double apply(String t) {
- try {
- return Double.parseDouble(t);
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException(e.getMessage(), e);
- }
- }
- }));
- DEFAULTTYPES.put(String.class, new OptionType<>("String", "0", new Function<String, String>() {
- public String apply(String t) {
- return t;
- }
- }));
- }
-
- /**
- * Returns the default option type for a given value. Returns <code>null</code> if no default
- * option type is available for the Java type of this value.
- *
- * @since 1.0
- */
- @SuppressWarnings("unchecked")
- public static <T> OptionType<T> defaultType(T value) {
- return defaultType((Class<T>) value.getClass());
- }
-
- /**
- * Returns the default option type for a class. Returns <code>null</code> if no default option
- * type is available for this Java type.
- *
- * @since 1.0
- */
- @SuppressWarnings("unchecked")
- public static <T> OptionType<T> defaultType(Class<T> clazz) {
- return (OptionType<T>) DEFAULTTYPES.get(clazz);
- }
-
-}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionValues.java Fri Feb 02 17:02:45 2018 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package org.graalvm.options;
-
-/**
- * Represents a set of option values based on an {@link OptionDescriptor}.
- *
- * @since 1.0
- */
-public interface OptionValues {
-
- /**
- * Returns all available options.
- *
- * @since 1.0
- */
- OptionDescriptors getDescriptors();
-
- /**
- * Sets the value of {@code optionKey} to {@code value}.
- *
- * @throws IllegalArgumentException if the given value is not {@link OptionType#validate(Object)
- * validated} by the {@link OptionKey#getType() option type} of the key. Note that
- * the operation succeeds if the option key is not described by any of the
- * associated {@link #getDescriptors() descriptors}.
- *
- * @since 1.0
- */
- <T> void set(OptionKey<T> optionKey, T value);
-
- /**
- * Returns the value of a given option. If no value is set or the key is not described by any
- * {@link #getDescriptors() descriptors} the {@link OptionType#getDefaultValue() default value}
- * of the given key is returned.
- *
- * @since 1.0
- */
- <T> T get(OptionKey<T> optionKey);
-
- /**
- * Determines if a value for {@code optionKey} has been {@link #set} in this set of option
- * values.
- *
- * @since 1.0
- */
- boolean hasBeenSet(OptionKey<?> optionKey);
-
-}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/package-info.java Fri Feb 02 17:02:45 2018 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/**
- * The Graal-SDK options package contains reusable collection classes for options.
- *
- * @see org.graalvm.options.OptionDescriptor
- * @see org.graalvm.options.OptionValues
- *
- * @since 1.0
- */
-package org.graalvm.options;
\ No newline at end of file
--- a/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java Fri Feb 02 09:04:45 2018 -0800
@@ -43,8 +43,6 @@
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
@@ -231,7 +229,8 @@
try {
List<String> remaining = optionsHelper.handleOptions(this, args);
if (remaining.size() > 0 && !options.suggestProviders) {
- throw taskHelper.newBadArgs("err.orphan.arguments", toString(remaining))
+ throw taskHelper.newBadArgs("err.orphan.arguments",
+ remaining.stream().collect(Collectors.joining(" ")))
.showUsage(true);
}
if (options.help) {
@@ -659,9 +658,12 @@
throws BadArgs
{
if (args.size() > 1) {
- throw taskHelper.newBadArgs("err.orphan.argument",
- toString(args.subList(1, args.size())))
- .showUsage(true);
+ List<String> arguments = args.get(0).startsWith("-")
+ ? args
+ : args.subList(1, args.size());
+ throw taskHelper.newBadArgs("err.invalid.arg.for.option",
+ "--suggest-providers",
+ arguments.stream().collect(Collectors.joining(" ")));
}
if (options.bindServices) {
@@ -714,7 +716,7 @@
.forEach(names::remove);
if (!names.isEmpty()) {
log.println(taskHelper.getMessage("warn.provider.notfound",
- toString(names)));
+ names.stream().sorted().collect(Collectors.joining(","))));
}
String msg = String.format("%n%s:", taskHelper.getMessage("suggested.providers.header"));
@@ -722,11 +724,6 @@
}
}
- private static String toString(Collection<String> collection) {
- return collection.stream().sorted()
- .collect(Collectors.joining(","));
- }
-
private String getSaveOpts() {
StringBuilder sb = new StringBuilder();
sb.append('#').append(new Date()).append("\n");
--- a/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties Fri Feb 02 09:04:45 2018 -0800
@@ -128,7 +128,7 @@
err.unknown.option=unknown option: {0}
err.missing.arg=no value given for {0}
err.internal.error=internal error: {0} {1} {2}
-err.invalid.arg.for.option=invalid argument for option: {0}
+err.invalid.arg.for.option={0} does not accept \"{1}\" argument
err.option.after.class=option must be specified before classes: {0}
err.option.unsupported={0} not supported: {1}
err.orphan.arguments=invalid argument: {0}
--- a/src/jdk.jshell/share/classes/jdk/jshell/CompletenessAnalyzer.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.jshell/share/classes/jdk/jshell/CompletenessAnalyzer.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -129,16 +129,6 @@
}
@Override
- public void error(DiagnosticPosition pos, String key, Object... args) {
- die();
- }
-
- @Override
- public void error(DiagnosticFlag flag, DiagnosticPosition pos, String key, Object... args) {
- die();
- }
-
- @Override
public void error(int pos, Error errorKey) {
die();
}
@@ -149,11 +139,6 @@
}
@Override
- public void error(DiagnosticFlag flag, int pos, String key, Object... args) {
- die();
- }
-
- @Override
public void report(JCDiagnostic diagnostic) {
// Ignore
}
--- a/src/jdk.jshell/share/classes/jdk/jshell/ReplParser.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.jshell/share/classes/jdk/jshell/ReplParser.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,8 @@
import com.sun.tools.javac.parser.Tokens.Comment;
import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle;
import com.sun.tools.javac.parser.Tokens.Token;
+import com.sun.tools.javac.resources.CompilerProperties;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import static com.sun.tools.javac.parser.Tokens.TokenKind.CLASS;
import static com.sun.tools.javac.parser.Tokens.TokenKind.COLON;
import static com.sun.tools.javac.parser.Tokens.TokenKind.ENUM;
@@ -244,11 +246,11 @@
? List.of(toP(F.at(pos).MethodDef(mods, name, t, typarams,
List.nil(), List.nil(), null, null)))
: null;
- return List.<JCTree>of(syntaxError(token.pos, err, "expected", LPAREN));
+ return List.<JCTree>of(syntaxError(token.pos, err, Errors.Expected(LPAREN)));
}
} else if (!typarams.isEmpty()) {
// type parameters on non-variable non-method -- error
- return List.<JCTree>of(syntaxError(token.pos, "illegal.start.of.type"));
+ return List.<JCTree>of(syntaxError(token.pos, Errors.IllegalStartOfType));
} else {
// expression-statement or expression to evaluate
JCExpressionStatement expr = toP(F.at(pos).Exec(t));
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_de.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_de.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_es.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_es.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_fr.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_fr.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_it.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_it.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_ja.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_ja.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_ko.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_ko.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_pt_BR.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_pt_BR.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_sv.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_sv.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_zh_CN.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_zh_CN.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_zh_TW.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_zh_TW.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,7 @@
{"Africa/Nouakchott", GMT},
{"Africa/Ouagadougou", GMT},
{"Africa/Porto-Novo", WAT},
- {"Africa/Sao_Tome", GMT},
+ {"Africa/Sao_Tome", WAT},
{"Africa/Timbuktu", GMT},
{"Africa/Tripoli", EET},
{"Africa/Tunis", CET},
--- a/src/jdk.zipfs/share/classes/jdk/nio/zipfs/JarFileSystem.java Fri Feb 02 17:02:45 2018 +0530
+++ b/src/jdk.zipfs/share/classes/jdk/nio/zipfs/JarFileSystem.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -109,7 +109,9 @@
*/
private Function<byte[],byte[]> createVersionedLinks(int version) {
HashMap<IndexNode,byte[]> aliasMap = new HashMap<>();
- getVersionMap(version, getInode(getBytes("/META-INF/versions"))).values()
+ IndexNode verdir = getInode(getBytes("/META-INF/versions"));
+ if (verdir != null) {
+ getVersionMap(version, verdir).values()
.forEach(versionNode -> { // for each META-INF/versions/{n} directory
// put all the leaf inodes, i.e. entries, into the alias map
// possibly shadowing lower versioned entries
@@ -124,6 +126,7 @@
}
});
});
+ }
return path -> aliasMap.get(IndexNode.keyOf(path));
}
--- a/test/TestCommon.gmk Fri Feb 02 17:02:45 2018 +0530
+++ b/test/TestCommon.gmk Fri Feb 02 09:04:45 2018 -0800
@@ -358,7 +358,7 @@
endif
# Concurrency based on min(cores / 2, 12) * CONCURRENCY_FACTOR
-CONCURRENCY := $(shell awk \
+CONCURRENCY := $(shell $(AWK) \
'BEGIN { \
c = $(NUM_CORES) / 2; \
if (c > 12) c = 12; \
@@ -368,8 +368,10 @@
}')
JTREG_BASIC_OPTIONS += -concurrency:$(CONCURRENCY)
-# Make sure MaxRAMPercentage is high enough to not cause OOM or swapping since we may end up with a lot of JVM's
-JTREG_BASIC_OPTIONS += -vmoption:-XX:MaxRAMPercentage=$(shell expr 25 / $(CONCURRENCY))
+# Make sure MaxRAMPercentage is low enough to not cause OOM or swapping since
+# we may end up with a lot of JVM's
+MAX_RAM_PERCENTAGE := $(shell expr 25 / $(CONCURRENCY))
+JTREG_BASIC_OPTIONS += -vmoption:-XX:MaxRAMPercentage=$(MAX_RAM_PERCENTAGE)
ifdef EXTRA_JTREG_OPTIONS
JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/gtest/opto/test_mathexact.cpp Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/mathexactnode.hpp"
+#include "unittest.hpp"
+
+TEST_VM(opto, mathexact) {
+ ASSERT_FALSE(OverflowMulLNode::is_overflow(1, 1));
+ ASSERT_FALSE(OverflowMulLNode::is_overflow(1, min_jlong));
+ ASSERT_TRUE(OverflowMulLNode::is_overflow(-1, min_jlong));
+ ASSERT_FALSE(OverflowMulLNode::is_overflow(-1, max_jlong));
+ ASSERT_TRUE(OverflowMulLNode::is_overflow(max_jlong / 2 + 1, 2));
+ ASSERT_FALSE(OverflowMulLNode::is_overflow(min_jlong, 0));
+ ASSERT_FALSE(OverflowMulLNode::is_overflow(min_jlong + 1, -1));
+ ASSERT_TRUE(OverflowMulLNode::is_overflow(min_jlong + 1, 2));
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/intrinsics/mathexact/LongMulOverflowTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8191915
+ * @summary Regression test for multiplyExact intrinsic
+ * @library /test/lib /
+ * @modules java.base/jdk.internal.misc
+ * java.management
+ *
+ * @run main/othervm -Xcomp -XX:-TieredCompilation compiler.intrinsics.mathexact.LongMulOverflowTest
+ */
+
+package compiler.intrinsics.mathexact;
+
+public class LongMulOverflowTest {
+ public static void main(String[] args) {
+ LongMulOverflowTest test = new LongMulOverflowTest();
+ for (int i = 0; i < 10; ++i) {
+ try {
+ test.runTest();
+ throw new RuntimeException("Error, runTest() did not overflow!");
+ } catch (ArithmeticException e) {
+ // success
+ }
+
+ try {
+ test.runTestOverflow();
+ throw new RuntimeException("Error, runTestOverflow() did not overflow!");
+ } catch (ArithmeticException e) {
+ // success
+ }
+ }
+ }
+
+ public void runTest() {
+ java.lang.Math.multiplyExact(Long.MIN_VALUE, 7);
+ }
+
+ public void runTestOverflow() {
+ java.lang.Math.multiplyExact((Long.MAX_VALUE / 2) + 1, 2);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/loopopts/TestStripMinedBackToBackIfs.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8196296
+ * @summary Bad graph when unrolled loop bounds conflicts with range checks
+ *
+ * @run main/othervm -XX:-BackgroundCompilation -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=0 TestStripMinedBackToBackIfs
+ *
+ */
+
+
+public class TestStripMinedBackToBackIfs {
+ public static void main(String[] args) {
+ for (int i = 0; i < 20_000; i++) {
+ test(100);
+ }
+ }
+
+ private static double test(int limit) {
+ double v = 1;
+ for (int i = 0; i < limit; i++) {
+ v = v * 4;
+ // We don't want this test to be merged with identical
+ // loop end test
+ if (i+1 < limit) {
+ v = v * 2;
+ }
+ }
+ return v;
+ }
+}
--- a/test/hotspot/jtreg/serviceability/dcmd/jvmti/DataDumpDcmdTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/hotspot/jtreg/serviceability/dcmd/jvmti/DataDumpDcmdTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,11 @@
import jdk.test.lib.dcmd.PidJcmdExecutor;
import org.testng.annotations.Test;
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/*
* @test
* @bug 8054890
@@ -43,9 +48,19 @@
*/
public class DataDumpDcmdTest {
public void run(CommandExecutor executor) {
- OutputAnalyzer output = executor.execute("JVMTI.data_dump");
+ OutputAnalyzer out = executor.execute("JVMTI.data_dump");
- output.stderrShouldBeEmpty();
+ // stderr should be empty except for VM warnings.
+ if (!out.getStderr().isEmpty()) {
+ List<String> lines = Arrays.asList(out.getStderr().split("(\\r\\n|\\n|\\r)"));
+ Pattern p = Pattern.compile(".*VM warning.*");
+ for (String line : lines) {
+ Matcher m = p.matcher(line);
+ if (!m.matches()) {
+ throw new RuntimeException("Stderr has output other than VM warnings");
+ }
+ }
+ }
}
@Test
--- a/test/hotspot/jtreg/serviceability/dcmd/jvmti/LoadAgentDcmdTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/hotspot/jtreg/serviceability/dcmd/jvmti/LoadAgentDcmdTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,10 +22,14 @@
*/
import java.io.*;
import java.nio.file.*;
+import java.util.Arrays;
import java.util.jar.Attributes;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import jdk.test.lib.Platform;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.dcmd.*;
@@ -97,6 +101,20 @@
}
}
+ static void checkWarningsOnly(OutputAnalyzer out) {
+ // stderr should be empty except for VM warnings.
+ if (!out.getStderr().isEmpty()) {
+ List<String> lines = Arrays.asList(out.getStderr().split("(\\r\\n|\\n|\\r)"));
+ Pattern p = Pattern.compile(".*VM warning.*");
+ for (String line : lines) {
+ Matcher m = p.matcher(line);
+ if (!m.matches()) {
+ throw new RuntimeException("Stderr has output other than VM warnings");
+ }
+ }
+ }
+ }
+
public void run(CommandExecutor executor) {
try{
@@ -108,22 +126,22 @@
// Test 1: Native agent, no arguments
output = executor.execute("JVMTI.agent_load " +
libpath + " agent.jar");
- output.stderrShouldBeEmpty();
+ checkWarningsOnly(output);
// Test 2: Native agent, with arguments
output = executor.execute("JVMTI.agent_load " +
libpath + " \"agent.jar=foo=bar\"");
- output.stderrShouldBeEmpty();
+ checkWarningsOnly(output);
// Test 3: Java agent, no arguments
output = executor.execute("JVMTI.agent_load " +
"agent.jar");
- output.stderrShouldBeEmpty();
+ checkWarningsOnly(output);
// Test 4: Java agent, with arguments
output = executor.execute("JVMTI.agent_load " +
"\"agent.jar=foo=bar\"");
- output.stderrShouldBeEmpty();
+ checkWarningsOnly(output);
} catch (Exception e) {
throw new RuntimeException(e);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/SortTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package transform.sort;
+
+import static jaxp.library.JAXPTestUtilities.getSystemProperty;
+import java.io.StringWriter;
+import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+
+/*
+ * @test
+ * @bug 8193830
+ * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
+ * @run testng/othervm -DrunSecMngr=true transform.sort.SortTest
+ * @run testng/othervm transform.sort.SortTest
+ * @summary verify xsl:sort lang attribute
+ */
+@Listeners({jaxp.library.FilePolicy.class})
+public class SortTest {
+
+ static final String LAND_EN = "en";
+ static final String LAND_PL = "pl";
+ static final String LAND_RU = "ru";
+
+ String filepath;
+ String slash = "";
+
+ @BeforeClass
+ public void setUpClass() throws Exception {
+ String file1 = getClass().getResource("sort-alphabet-english.xml").getFile();
+ if (getSystemProperty("os.name").contains("Windows")) {
+ filepath = file1.substring(1, file1.lastIndexOf("/") + 1);
+ slash = "/";
+ } else {
+ filepath = file1.substring(0, file1.lastIndexOf("/") + 1);
+ }
+ }
+
+ /*
+ * DataProvider fields:
+ * lang, xml, xsl, gold file
+ */
+ @DataProvider(name = "parameters")
+ public Object[][] getParameters() {
+
+ return new Object[][]{
+ {LAND_EN, "sort-alphabet-english.xml", "sort-alphabet-english.xsl", "sort-alphabet-english.out"},
+ {LAND_PL, "sort-alphabet-polish.xml", "sort-alphabet-polish.xsl", "sort-alphabet-polish.out"},
+ {LAND_RU, "sort-alphabet-russian.xml", "sort-alphabet-russian.xsl", "sort-alphabet-russian.out"},};
+ }
+
+ @Test(dataProvider = "parameters")
+ public final void testTransform(String lang, String xml, String xsl, String gold)
+ throws Exception {
+
+ StringWriter sw = new StringWriter();
+ // Create transformer factory
+ TransformerFactory factory = TransformerFactory.newInstance();
+
+ // Use the factory to create a template containing the xsl file
+ Templates template = factory.newTemplates(new StreamSource(getClass().getResourceAsStream(xsl)));
+ // Use the template to create a transformer
+ Transformer xformer = template.newTransformer();
+ xformer.setParameter("lang", lang);
+ // Prepare the input and output files
+ Source source = new StreamSource(getClass().getResourceAsStream(xml));
+
+ /*
+ * The following may be used to produce gold files.
+ * Using however the original gold files, and compare without considering
+ * the format
+ */
+ //String output = getClass().getResource(gold).getPath();
+ //Result result = new StreamResult(new FileOutputStream(output));
+ // use the following to verify the output against the pre-generated one
+ Result result = new StreamResult(sw);
+
+ // Apply the xsl file to the source file and write the result to the
+ // output file
+ xformer.transform(source, result);
+
+ String out = sw.toString();
+
+ List<String> lines = Files.readAllLines(Paths.get(filepath + gold));
+ String[] resultLines = out.split("\n");
+ int i = 0;
+
+ // the purpose is to test sort, so ignore the format of the output
+ for (String line : lines) {
+ Assert.assertEquals(resultLines[i++].trim(), line.trim());
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-english.out Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?><root>
+<p>lang: en</p>
+<ul>
+<li>A</li>
+<li>C</li>
+<li>D</li>
+<li>E</li>
+<li>F</li>
+<li>G</li>
+<li>H</li>
+<li>I</li>
+<li>J</li>
+<li>K</li>
+<li>L</li>
+<li>M</li>
+<li>N</li>
+<li>O</li>
+<li>P</li>
+<li>Q</li>
+<li>R</li>
+<li>S</li>
+<li>T</li>
+<li>U</li>
+<li>V</li>
+<li>W</li>
+<li>X</li>
+<li>Y</li>
+<li>Z</li>
+</ul>
+</root>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-english.xml Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<alphabet language="en">
+ <character>A</character>
+ <character>E</character>
+ <character>C</character>
+ <character>D</character>
+ <character>F</character>
+ <character>G</character>
+ <character>H</character>
+ <character>I</character>
+ <character>J</character>
+ <character>K</character>
+ <character>L</character>
+ <character>M</character>
+ <character>N</character>
+ <character>Y</character>
+ <character>O</character>
+ <character>P</character>
+ <character>Q</character>
+ <character>U</character>
+ <character>R</character>
+ <character>S</character>
+ <character>V</character>
+ <character>W</character>
+ <character>T</character>
+ <character>X</character>
+ <character>Z</character>
+</alphabet>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-english.xsl Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:output method="xml" version="1.0" omit-xml-declaration="no" encoding="UTF-8" indent="yes" xml:space="preserve" />
+ <!-- <xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/strict.dtd" doctype-public="-//W3C//DTD HTML
+ 4.01//EN" version="4.0" encoding="UTF-8" indent="yes" xml:lang="$lang" omit-xml-declaration="no"/> -->
+ <xsl:param name="lang" />
+ <xsl:template match="alphabet">
+ <root>
+ <p>lang: <xsl:value-of select="$lang" /></p>
+ <ul>
+ <xsl:apply-templates select="character">
+ <xsl:sort select="." lang="{$lang}" order="ascending" />
+ </xsl:apply-templates>
+ </ul>
+ </root>
+ </xsl:template>
+ <xsl:template match="character">
+ <li>
+ <xsl:value-of select="text()" />
+ </li>
+ </xsl:template>
+</xsl:stylesheet>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-polish.out Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?><root>
+<p>lang: pl</p>
+<ul>
+<li>A</li>
+<li>Ą</li>
+<li>B</li>
+<li>C</li>
+<li>Ć</li>
+<li>D</li>
+<li>E</li>
+<li>Ę</li>
+<li>F</li>
+<li>G</li>
+<li>H</li>
+<li>I</li>
+<li>J</li>
+<li>K</li>
+<li>L</li>
+<li>Ł</li>
+<li>M</li>
+<li>N</li>
+<li>Ń</li>
+<li>O</li>
+<li>Ó</li>
+<li>P</li>
+<li>R</li>
+<li>S</li>
+<li>Ś</li>
+<li>T</li>
+<li>U</li>
+<li>W</li>
+<li>Y</li>
+<li>Z</li>
+<li>Ź</li>
+<li>Ż</li>
+</ul>
+</root>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-polish.xml Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<alphabet language="pl">
+ <character>A</character>
+ <character>Ż</character>
+ <character>B</character>
+ <character>C</character>
+ <character>Ć</character>
+ <character>D</character>
+ <character>Ł</character>
+ <character>E</character>
+ <character>Ę</character>
+ <character>F</character>
+ <character>G</character>
+ <character>H</character>
+ <character>I</character>
+ <character>J</character>
+ <character>K</character>
+ <character>L</character>
+ <character>Z</character>
+ <character>Ź</character>
+ <character>M</character>
+ <character>N</character>
+ <character>Ń</character>
+ <character>O</character>
+ <character>Ó</character>
+ <character>P</character>
+ <character>R</character>
+ <character>S</character>
+ <character>Ś</character>
+ <character>T</character>
+ <character>U</character>
+ <character>W</character>
+ <character>Ą</character>
+ <character>Y</character>
+</alphabet>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-polish.xsl Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:output method="xml" version="1.0" omit-xml-declaration="no" encoding="UTF-8" indent="yes" xml:space="preserve" />
+ <!-- <xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/strict.dtd" doctype-public="-//W3C//DTD HTML
+ 4.01//EN" version="4.0" encoding="UTF-8" indent="yes" xml:lang="$lang" omit-xml-declaration="no"/> -->
+ <xsl:param name="lang" />
+ <xsl:template match="alphabet">
+ <root>
+ <p>lang: <xsl:value-of select="$lang" /></p>
+ <ul>
+ <xsl:apply-templates select="character">
+ <xsl:sort select="." lang="{$lang}" order="ascending" />
+ </xsl:apply-templates>
+ </ul>
+ </root>
+ </xsl:template>
+ <xsl:template match="character">
+ <li>
+ <xsl:value-of select="text()" />
+ </li>
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-russian.out Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?><root>
+<p>lang: ru</p>
+<ul>
+<li>А</li>
+<li>Б</li>
+<li>В</li>
+<li>Г</li>
+<li>Д</li>
+<li>Е</li>
+<li>Ё</li>
+<li>Ж</li>
+<li>З</li>
+<li>И</li>
+<li>Й</li>
+<li>К</li>
+<li>Л</li>
+<li>М</li>
+<li>Н</li>
+<li>О</li>
+<li>П</li>
+<li>Р</li>
+<li>С</li>
+<li>Т</li>
+<li>У</li>
+<li>Ф</li>
+<li>Х</li>
+<li>Ц</li>
+<li>Ч</li>
+<li>Ш</li>
+<li>Щ</li>
+<li>Ъ</li>
+<li>Ы</li>
+<li>Ь</li>
+<li>Э</li>
+<li>Ю</li>
+<li>Я</li>
+</ul>
+</root>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-russian.xml Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<alphabet language="ru">
+ <character>А</character>
+ <character>Б</character>
+ <character>В</character>
+ <character>Г</character>
+ <character>Д</character>
+ <character>Е</character>
+ <character>Ё</character>
+ <character>Ж</character>
+ <character>З</character>
+ <character>Й</character>
+ <character>П</character>
+ <character>Я</character>
+ <character>К</character>
+ <character>Л</character>
+ <character>С</character>
+ <character>М</character>
+ <character>Н</character>
+ <character>О</character>
+ <character>Р</character>
+ <character>И</character>
+ <character>Т</character>
+ <character>Ф</character>
+ <character>Х</character>
+ <character>Ц</character>
+ <character>У</character>
+ <character>Ш</character>
+ <character>Щ</character>
+ <character>Ъ</character>
+ <character>Ы</character>
+ <character>Ч</character>
+ <character>Ь</character>
+ <character>Э</character>
+ <character>Ю</character>
+</alphabet>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/sort/sort-alphabet-russian.xsl Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:output method="xml" version="1.0" omit-xml-declaration="no" encoding="UTF-8" indent="yes" xml:space="preserve" />
+ <!-- <xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/strict.dtd" doctype-public="-//W3C//DTD HTML
+ 4.01//EN" version="4.0" encoding="UTF-8" indent="yes" xml:lang="$lang" omit-xml-declaration="no"/> -->
+ <xsl:param name="lang" />
+ <xsl:template match="alphabet">
+ <root>
+ <p>lang: <xsl:value-of select="$lang" /></p>
+ <ul>
+ <xsl:apply-templates select="character">
+ <xsl:sort select="." lang="{$lang}" order="ascending" />
+ </xsl:apply-templates>
+ </ul>
+ </root>
+ </xsl:template>
+ <xsl:template match="character">
+ <li>
+ <xsl:value-of select="text()" />
+ </li>
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
--- a/test/jdk/java/io/InputStream/NullInputStream.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/io/InputStream/NullInputStream.java Fri Feb 02 09:04:45 2018 -0800
@@ -31,7 +31,7 @@
/*
* @test
- * @bug 4358774
+ * @bug 4358774 8139206
* @run testng NullInputStream
* @summary Check for expected behavior of InputStream.nullInputStream().
*/
@@ -107,7 +107,7 @@
}
@Test(groups = "open")
- public static void testreadNBytes() {
+ public static void testReadNBytes() {
try {
assertEquals(0, openStream.readNBytes(new byte[1], 0, 1),
"readNBytes(byte[],int,int) != 0");
@@ -117,6 +117,26 @@
}
@Test(groups = "open")
+ public static void testReadNBytesWithLength() {
+ try {
+ assertEquals(0, openStream.readNBytes(-1).length,
+ "readNBytes(-1) != 0");
+ fail("Expected IllegalArgumentException not thrown");
+ } catch (IllegalArgumentException iae) {
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ try {
+ assertEquals(0, openStream.readNBytes(0).length,
+ "readNBytes(0, false) != 0");
+ assertEquals(0, openStream.readNBytes(1).length,
+ "readNBytes(1, false) != 0");
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open")
public static void testSkip() {
try {
assertEquals(0, openStream.skip(1), "skip() != 0");
@@ -181,6 +201,15 @@
}
@Test(groups = "closed")
+ public static void testReadNBytesWithLengthClosed() {
+ try {
+ closedStream.readNBytes(1);
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups = "closed")
public static void testSkipClosed() {
try {
closedStream.skip(1);
--- a/test/jdk/java/io/InputStream/ReadNBytes.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/io/InputStream/ReadNBytes.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,7 @@
/*
* @test
- * @bug 8080835
+ * @bug 8080835 8139206
* @library /test/lib
* @build jdk.test.lib.RandomFactory
* @run main ReadNBytes
@@ -46,15 +46,19 @@
public static void main(String[] args) throws IOException {
test(new byte[]{1, 2, 3});
test(createRandomBytes(1024));
- test(createRandomBytes((1 << 13) - 1));
- test(createRandomBytes((1 << 13)));
- test(createRandomBytes((1 << 13) + 1));
- test(createRandomBytes((1 << 15) - 1));
- test(createRandomBytes((1 << 15)));
- test(createRandomBytes((1 << 15) + 1));
- test(createRandomBytes((1 << 17) - 1));
- test(createRandomBytes((1 << 17)));
- test(createRandomBytes((1 << 17) + 1));
+ for (int shift : new int[] {13, 15, 17}) {
+ for (int offset : new int[] {-1, 0, 1}) {
+ test(createRandomBytes((1 << shift) + offset));
+ }
+ }
+
+ test(-1);
+ test(0);
+ for (int shift : new int[] {13, 15, 17}) {
+ for (int offset : new int[] {-1, 0, 1}) {
+ test((1 << shift) + offset);
+ }
+ }
}
static void test(byte[] inputBytes) throws IOException {
@@ -91,6 +95,46 @@
check(!in.isClosed(), "Stream unexpectedly closed");
}
+ static void test(int max) throws IOException {
+ byte[] inputBytes = max <= 0 ? new byte[0] : createRandomBytes(max);
+ WrapperInputStream in =
+ new WrapperInputStream(new ByteArrayInputStream(inputBytes));
+
+ if (max < 0) {
+ try {
+ in.readNBytes(max);
+ check(false, "Expected IllegalArgumentException not thrown");
+ } catch (IllegalArgumentException iae) {
+ return;
+ }
+ } else if (max == 0) {
+ int x;
+ check((x = in.readNBytes(max).length) == 0,
+ "Expected zero bytes, got " + x);
+ return;
+ }
+
+ int off = Math.toIntExact(in.skip(generator.nextInt(max/2)));
+ int len = generator.nextInt(max - 1 - off);
+ byte[] readBytes = in.readNBytes(len);
+ check(readBytes.length == len,
+ "Expected " + len + " bytes, got " + readBytes.length);
+ check(Arrays.equals(inputBytes, off, off + len, readBytes, 0, len),
+ "Expected[" + Arrays.copyOfRange(inputBytes, off, off + len) +
+ "], got:[" + readBytes + "]");
+
+ int remaining = max - (off + len);
+ readBytes = in.readNBytes(remaining);
+ check(readBytes.length == remaining,
+ "Expected " + remaining + "bytes, got " + readBytes.length);
+ check(Arrays.equals(inputBytes, off + len, max,
+ readBytes, 0, remaining),
+ "Expected[" + Arrays.copyOfRange(inputBytes, off + len, max) +
+ "], got:[" + readBytes + "]");
+
+ check(!in.isClosed(), "Stream unexpectedly closed");
+ }
+
static byte[] createRandomBytes(int size) {
byte[] bytes = new byte[size];
generator.nextBytes(bytes);
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -139,6 +139,9 @@
"read write", bav, vh, h -> testArrayReadWrite(bas, h),
true));
cases.add(new VarHandleSourceAccessTestCase(
+ "null array", bav, vh, h -> testArrayNPE(bas, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bas, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -163,6 +166,9 @@
}
cases.add(new VarHandleSourceAccessTestCase(
+ "null buffer", bav, vh, h -> testArrayNPE(bbs, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bbs, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -192,6 +198,88 @@
}
+ static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ byte[] array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ char x = (char) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ char x = (char) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ char x = (char) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ char x = (char) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+
+
+ }
+
+ static void testArrayNPE(ByteBufferSource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ ByteBuffer array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ char x = (char) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ char x = (char) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ char x = (char) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ char x = (char) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+
+
+ }
+
static void testArrayUnsupported(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = bs.s;
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -139,6 +139,9 @@
"read write", bav, vh, h -> testArrayReadWrite(bas, h),
true));
cases.add(new VarHandleSourceAccessTestCase(
+ "null array", bav, vh, h -> testArrayNPE(bas, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bas, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -163,6 +166,9 @@
}
cases.add(new VarHandleSourceAccessTestCase(
+ "null buffer", bav, vh, h -> testArrayNPE(bbs, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bbs, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -192,6 +198,174 @@
}
+ static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ byte[] array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ double x = (double) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double x = (double) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ double x = (double) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ double x = (double) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ double r = (double) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double r = (double) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double r = (double) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ double o = (double) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double o = (double) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double o = (double) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+
+
+ }
+
+ static void testArrayNPE(ByteBufferSource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ ByteBuffer array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ double x = (double) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double x = (double) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ double x = (double) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ double x = (double) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ double r = (double) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double r = (double) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double r = (double) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ double o = (double) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double o = (double) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ double o = (double) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+
+
+ }
+
static void testArrayUnsupported(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = bs.s;
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -139,6 +139,9 @@
"read write", bav, vh, h -> testArrayReadWrite(bas, h),
true));
cases.add(new VarHandleSourceAccessTestCase(
+ "null array", bav, vh, h -> testArrayNPE(bas, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bas, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -163,6 +166,9 @@
}
cases.add(new VarHandleSourceAccessTestCase(
+ "null buffer", bav, vh, h -> testArrayNPE(bbs, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bbs, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -192,6 +198,174 @@
}
+ static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ byte[] array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ float x = (float) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float x = (float) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ float x = (float) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ float x = (float) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ float r = (float) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float r = (float) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float r = (float) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ float o = (float) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float o = (float) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float o = (float) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+
+
+ }
+
+ static void testArrayNPE(ByteBufferSource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ ByteBuffer array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ float x = (float) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float x = (float) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ float x = (float) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ float x = (float) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ float r = (float) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float r = (float) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float r = (float) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ float o = (float) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float o = (float) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ float o = (float) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+
+
+ }
+
static void testArrayUnsupported(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = bs.s;
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -139,6 +139,9 @@
"read write", bav, vh, h -> testArrayReadWrite(bas, h),
true));
cases.add(new VarHandleSourceAccessTestCase(
+ "null array", bav, vh, h -> testArrayNPE(bas, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bas, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -163,6 +166,9 @@
}
cases.add(new VarHandleSourceAccessTestCase(
+ "null buffer", bav, vh, h -> testArrayNPE(bbs, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bbs, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -192,6 +198,266 @@
}
+ static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ byte[] array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ int x = (int) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int x = (int) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ int x = (int) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ int x = (int) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ int r = (int) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int r = (int) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int r = (int) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndAdd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndAddAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndAddRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseOr(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseOrAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseOrRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseAnd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseAndAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseAndRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseXor(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseXorAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseXorRelease(array, ci, VALUE_1);
+ });
+ }
+
+ static void testArrayNPE(ByteBufferSource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ ByteBuffer array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ int x = (int) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int x = (int) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ int x = (int) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ int x = (int) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ int r = (int) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int r = (int) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int r = (int) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndAdd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndAddAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndAddRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseOr(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseOrAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseOrRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseAnd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseAndAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseAndRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseXor(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseXorAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ int o = (int) vh.getAndBitwiseXorRelease(array, ci, VALUE_1);
+ });
+ }
+
static void testArrayUnsupported(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = bs.s;
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -139,6 +139,9 @@
"read write", bav, vh, h -> testArrayReadWrite(bas, h),
true));
cases.add(new VarHandleSourceAccessTestCase(
+ "null array", bav, vh, h -> testArrayNPE(bas, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bas, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -163,6 +166,9 @@
}
cases.add(new VarHandleSourceAccessTestCase(
+ "null buffer", bav, vh, h -> testArrayNPE(bbs, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bbs, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -192,6 +198,266 @@
}
+ static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ byte[] array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ long x = (long) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long x = (long) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ long x = (long) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ long x = (long) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ long r = (long) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long r = (long) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long r = (long) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndAdd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndAddAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndAddRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseOr(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseOrAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseOrRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseAnd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseAndAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseAndRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseXor(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseXorAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseXorRelease(array, ci, VALUE_1);
+ });
+ }
+
+ static void testArrayNPE(ByteBufferSource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ ByteBuffer array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ long x = (long) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long x = (long) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ long x = (long) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ long x = (long) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ long r = (long) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long r = (long) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long r = (long) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndAdd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndAddAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndAddRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseOr(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseOrAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseOrRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseAnd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseAndAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseAndRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseXor(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseXorAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ long o = (long) vh.getAndBitwiseXorRelease(array, ci, VALUE_1);
+ });
+ }
+
static void testArrayUnsupported(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = bs.s;
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -139,6 +139,9 @@
"read write", bav, vh, h -> testArrayReadWrite(bas, h),
true));
cases.add(new VarHandleSourceAccessTestCase(
+ "null array", bav, vh, h -> testArrayNPE(bas, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bas, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -163,6 +166,9 @@
}
cases.add(new VarHandleSourceAccessTestCase(
+ "null buffer", bav, vh, h -> testArrayNPE(bbs, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bbs, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -192,6 +198,88 @@
}
+ static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ byte[] array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ short x = (short) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ short x = (short) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ short x = (short) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ short x = (short) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+
+
+ }
+
+ static void testArrayNPE(ByteBufferSource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ ByteBuffer array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ short x = (short) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ short x = (short) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ short x = (short) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ short x = (short) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+
+
+ }
+
static void testArrayUnsupported(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = bs.s;
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeBoolean.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeBoolean.java Fri Feb 02 09:04:45 2018 -0800
@@ -2906,4 +2906,3 @@
}
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeByte.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeByte.java Fri Feb 02 09:04:45 2018 -0800
@@ -3252,4 +3252,3 @@
}
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeChar.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeChar.java Fri Feb 02 09:04:45 2018 -0800
@@ -3252,4 +3252,3 @@
}
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeDouble.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeDouble.java Fri Feb 02 09:04:45 2018 -0800
@@ -2400,4 +2400,3 @@
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeFloat.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeFloat.java Fri Feb 02 09:04:45 2018 -0800
@@ -2400,4 +2400,3 @@
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeInt.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeInt.java Fri Feb 02 09:04:45 2018 -0800
@@ -3252,4 +3252,3 @@
}
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeLong.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeLong.java Fri Feb 02 09:04:45 2018 -0800
@@ -3252,4 +3252,3 @@
}
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeShort.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeShort.java Fri Feb 02 09:04:45 2018 -0800
@@ -3252,4 +3252,3 @@
}
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeString.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeString.java Fri Feb 02 09:04:45 2018 -0800
@@ -2054,4 +2054,3 @@
}
}
-
--- a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -171,6 +171,9 @@
"read write", bav, vh, h -> testArrayReadWrite(bas, h),
true));
cases.add(new VarHandleSourceAccessTestCase(
+ "null array", bav, vh, h -> testArrayNPE(bas, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bas, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -195,6 +198,9 @@
}
cases.add(new VarHandleSourceAccessTestCase(
+ "null buffer", bav, vh, h -> testArrayNPE(bbs, h),
+ false));
+ cases.add(new VarHandleSourceAccessTestCase(
"unsupported", bav, vh, h -> testArrayUnsupported(bbs, h),
false));
cases.add(new VarHandleSourceAccessTestCase(
@@ -224,6 +230,278 @@
}
+ static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ byte[] array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ $type$ x = ($type$) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ x = ($type$) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ $type$ x = ($type$) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ $type$ x = ($type$) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+#if[CAS]
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ $type$ r = ($type$) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ r = ($type$) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ r = ($type$) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+#end[CAS]
+
+#if[AtomicAdd]
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndAdd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndAddAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndAddRelease(array, ci, VALUE_1);
+ });
+#end[AtomicAdd]
+
+#if[Bitwise]
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseOr(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseOrAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseOrRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseAnd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseAndAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseAndRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseXor(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseXorAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseXorRelease(array, ci, VALUE_1);
+ });
+#end[Bitwise]
+ }
+
+ static void testArrayNPE(ByteBufferSource bs, VarHandleSource vhs) {
+ VarHandle vh = vhs.s;
+ ByteBuffer array = null;
+ int ci = 1;
+
+ checkNPE(() -> {
+ $type$ x = ($type$) vh.get(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.set(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ x = ($type$) vh.getVolatile(array, ci);
+ });
+
+ checkNPE(() -> {
+ $type$ x = ($type$) vh.getAcquire(array, ci);
+ });
+
+ checkNPE(() -> {
+ $type$ x = ($type$) vh.getOpaque(array, ci);
+ });
+
+ checkNPE(() -> {
+ vh.setVolatile(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ vh.setOpaque(array, ci, VALUE_1);
+ });
+
+#if[CAS]
+ checkNPE(() -> {
+ boolean r = vh.compareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ $type$ r = ($type$) vh.compareAndExchange(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ r = ($type$) vh.compareAndExchangeAcquire(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ r = ($type$) vh.compareAndExchangeRelease(array, ci, VALUE_2, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetPlain(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSet(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetAcquire(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ boolean r = vh.weakCompareAndSetRelease(array, ci, VALUE_1, VALUE_2);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndSet(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndSetAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndSetRelease(array, ci, VALUE_1);
+ });
+#end[CAS]
+
+#if[AtomicAdd]
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndAdd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndAddAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndAddRelease(array, ci, VALUE_1);
+ });
+#end[AtomicAdd]
+
+#if[Bitwise]
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseOr(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseOrAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseOrRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseAnd(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseAndAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseAndRelease(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseXor(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseXorAcquire(array, ci, VALUE_1);
+ });
+
+ checkNPE(() -> {
+ $type$ o = ($type$) vh.getAndBitwiseXorRelease(array, ci, VALUE_1);
+ });
+#end[Bitwise]
+ }
+
static void testArrayUnsupported(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = bs.s;
--- a/test/jdk/java/lang/invoke/VarHandles/generate-vh-tests.sh Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/lang/invoke/VarHandles/generate-vh-tests.sh Fri Feb 02 09:04:45 2018 -0800
@@ -1,6 +1,6 @@
#!/bin/bash
-javac -d . ../../../../../make/src/classes/build/tools/spp/Spp.java
+javac -d . ../../../../../../make/jdk/src/classes/build/tools/spp/Spp.java
SPP=build.tools.spp.Spp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/httpclient/ConcurrentResponses.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,377 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8195823
+ * @summary Buffers given to response body subscribers should not contain
+ * unprocessed HTTP data
+ * @modules java.base/sun.net.www.http
+ * jdk.incubator.httpclient/jdk.incubator.http.internal.common
+ * jdk.incubator.httpclient/jdk.incubator.http.internal.frame
+ * jdk.incubator.httpclient/jdk.incubator.http.internal.hpack
+ * java.logging
+ * jdk.httpserver
+ * @library /lib/testlibrary http2/server
+ * @build Http2TestServer
+ * @build jdk.testlibrary.SimpleSSLContext
+ * @run testng/othervm -Djdk.internal.httpclient.debug=true ConcurrentResponses
+ */
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.net.URI;
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionStage;
+import java.util.concurrent.Flow;
+import java.util.stream.IntStream;
+import javax.net.ssl.SSLContext;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+import com.sun.net.httpserver.HttpsConfigurator;
+import com.sun.net.httpserver.HttpsServer;
+import jdk.incubator.http.HttpClient;
+import jdk.incubator.http.HttpRequest;
+import jdk.incubator.http.HttpResponse;
+import jdk.incubator.http.HttpResponse.BodyHandler;
+import jdk.incubator.http.HttpResponse.BodySubscriber;
+import jdk.testlibrary.SimpleSSLContext;
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static jdk.incubator.http.HttpResponse.BodyHandler.asString;
+import static jdk.incubator.http.HttpResponse.BodyHandler.discard;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.fail;
+
+public class ConcurrentResponses {
+
+ SSLContext sslContext;
+ HttpServer httpTestServer; // HTTP/1.1 [ 4 servers ]
+ HttpsServer httpsTestServer; // HTTPS/1.1
+ Http2TestServer http2TestServer; // HTTP/2 ( h2c )
+ Http2TestServer https2TestServer; // HTTP/2 ( h2 )
+ String httpFixedURI, httpsFixedURI, httpChunkedURI, httpsChunkedURI;
+ String http2FixedURI, https2FixedURI, http2VariableURI, https2VariableURI;
+
+ static final int CONCURRENT_REQUESTS = 13;
+
+ static final String ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ static final int ALPHABET_LENGTH = ALPHABET.length();
+
+ static final String stringOfLength(int requiredLength) {
+ StringBuilder sb = new StringBuilder(requiredLength);
+ IntStream.range(0, requiredLength)
+ .mapToObj(i -> ALPHABET.charAt(i % ALPHABET_LENGTH))
+ .forEach(c -> sb.append(c));
+ return sb.toString();
+ }
+
+ /** An array of different Strings, to be used as bodies. */
+ static final String[] BODIES = bodies();
+
+ static String[] bodies() {
+ String[] bodies = new String[CONCURRENT_REQUESTS];
+ for (int i=0;i<CONCURRENT_REQUESTS; i++) {
+ // slightly, but still, different bodies
+ bodies[i] = "Request-" + i + "-body-" + stringOfLength((1024) + i);
+ }
+ return bodies;
+ }
+
+ /**
+ * Asserts the given response's status code is 200.
+ * Returns a CF that completes with the given response.
+ */
+ static final <T> CompletionStage<HttpResponse<T>>
+ assert200ResponseCode(HttpResponse<T> response) {
+ assertEquals(response.statusCode(), 200);
+ return CompletableFuture.completedFuture(response);
+ }
+
+ /**
+ * Asserts that the given response's body is equal to the given body.
+ * Returns a CF that completes with the given response.
+ */
+ static final <T> CompletionStage<HttpResponse<T>>
+ assertbody(HttpResponse<T> response, T body) {
+ assertEquals(response.body(), body);
+ return CompletableFuture.completedFuture(response);
+ }
+
+ @DataProvider(name = "uris")
+ public Object[][] variants() {
+ return new Object[][]{
+ { httpFixedURI },
+ { httpsFixedURI },
+ { httpChunkedURI },
+ { httpsChunkedURI },
+ { http2FixedURI },
+ { https2FixedURI },
+ { http2VariableURI },
+ { https2VariableURI }
+ };
+ }
+
+
+ // The asString implementation accumulates data, below a certain threshold
+ // into the byte buffers it is given.
+ @Test(dataProvider = "uris")
+ void testAsString(String uri) throws Exception {
+ HttpClient client = HttpClient.newBuilder().sslContext(sslContext).build();
+
+ Map<HttpRequest, String> requests = new HashMap<>();
+ for (int i=0;i<CONCURRENT_REQUESTS; i++) {
+ HttpRequest request = HttpRequest.newBuilder(URI.create(uri + "?" + i))
+ .build();
+ requests.put(request, BODIES[i]);
+ }
+
+ // initial connection to seed the cache so next parallel connections reuse it
+ client.sendAsync(HttpRequest.newBuilder(URI.create(uri)).build(), discard(null)).join();
+
+ // will reuse connection cached from the previous request ( when HTTP/2 )
+ CompletableFuture.allOf(requests.keySet().parallelStream()
+ .map(request -> client.sendAsync(request, asString()))
+ .map(cf -> cf.thenCompose(ConcurrentResponses::assert200ResponseCode))
+ .map(cf -> cf.thenCompose(response -> assertbody(response, requests.get(response.request()))))
+ .toArray(CompletableFuture<?>[]::new))
+ .join();
+ }
+
+ // The custom subscriber aggressively attacks any area, between the limit
+ // and the capacity, in the byte buffers it is given, by writing 'X' into it.
+ @Test(dataProvider = "uris")
+ void testWithCustomSubscriber(String uri) throws Exception {
+ HttpClient client = HttpClient.newBuilder().sslContext(sslContext).build();
+
+ Map<HttpRequest, String> requests = new HashMap<>();
+ for (int i=0;i<CONCURRENT_REQUESTS; i++) {
+ HttpRequest request = HttpRequest.newBuilder(URI.create(uri + "?" + i))
+ .build();
+ requests.put(request, BODIES[i]);
+ }
+
+ // initial connection to seed the cache so next parallel connections reuse it
+ client.sendAsync(HttpRequest.newBuilder(URI.create(uri)).build(), discard(null)).join();
+
+ // will reuse connection cached from the previous request ( when HTTP/2 )
+ CompletableFuture.allOf(requests.keySet().parallelStream()
+ .map(request -> client.sendAsync(request, CustomSubscriber.handler))
+ .map(cf -> cf.thenCompose(ConcurrentResponses::assert200ResponseCode))
+ .map(cf -> cf.thenCompose(response -> assertbody(response, requests.get(response.request()))))
+ .toArray(CompletableFuture<?>[]::new))
+ .join();
+ }
+
+ /**
+ * A subscriber that wraps asString, but mucks with any data between limit
+ * and capacity, if the client mistakenly passes it any that is should not.
+ */
+ static class CustomSubscriber implements BodySubscriber<String> {
+ static final BodyHandler<String> handler = (r,h) -> new CustomSubscriber();
+ private final BodySubscriber<String> asString = BodySubscriber.asString(UTF_8);
+
+ @Override
+ public CompletionStage<String> getBody() {
+ return asString.getBody();
+ }
+
+ @Override
+ public void onSubscribe(Flow.Subscription subscription) {
+ asString.onSubscribe(subscription);
+ }
+
+ @Override
+ public void onNext(List<ByteBuffer> buffers) {
+ // Muck any data beyond the give limit, since there shouldn't
+ // be any of interest to the HTTP Client.
+ for (ByteBuffer buffer : buffers) {
+ if (buffer.limit() != buffer.capacity()) {
+ final int limit = buffer.limit();
+ final int position = buffer.position();
+ buffer.position(buffer.limit());
+ buffer.limit(buffer.capacity());
+ while (buffer.hasRemaining())
+ buffer.put((byte)'X');
+ buffer.position(position); // restore original position
+ buffer.limit(limit); // restore original limit
+ }
+ }
+ asString.onNext(buffers);
+ }
+
+ @Override
+ public void onError(Throwable throwable) {
+ asString.onError(throwable);
+ throwable.printStackTrace();
+ fail("UNEXPECTED:" + throwable);
+ }
+
+ @Override
+ public void onComplete() {
+ asString.onComplete();
+ }
+ }
+
+
+ @BeforeTest
+ public void setup() throws Exception {
+ sslContext = new SimpleSSLContext().get();
+ if (sslContext == null)
+ throw new AssertionError("Unexpected null sslContext");
+
+ InetSocketAddress sa = new InetSocketAddress("localhost", 0);
+ httpTestServer = HttpServer.create(sa, 0);
+ httpTestServer.createContext("/http1/fixed", new Http1FixedHandler());
+ httpFixedURI = "http://127.0.0.1:" + httpTestServer.getAddress().getPort() + "/http1/fixed";
+ httpTestServer.createContext("/http1/chunked", new Http1ChunkedHandler());
+ httpChunkedURI = "http://127.0.0.1:" + httpTestServer.getAddress().getPort() + "/http1/chunked";
+
+ httpsTestServer = HttpsServer.create(sa, 0);
+ httpsTestServer.setHttpsConfigurator(new HttpsConfigurator(sslContext));
+ httpsTestServer.createContext("/https1/fixed", new Http1FixedHandler());
+ httpsFixedURI = "https://127.0.0.1:" + httpsTestServer.getAddress().getPort() + "/https1/fixed";
+ httpsTestServer.createContext("/https1/chunked", new Http1ChunkedHandler());
+ httpsChunkedURI = "https://127.0.0.1:" + httpsTestServer.getAddress().getPort() + "/https1/chunked";
+
+ http2TestServer = new Http2TestServer("127.0.0.1", false, 0);
+ http2TestServer.addHandler(new Http2FixedHandler(), "/http2/fixed");
+ http2FixedURI = "http://127.0.0.1:" + http2TestServer.getAddress().getPort() + "/http2/fixed";
+ http2TestServer.addHandler(new Http2VariableHandler(), "/http2/variable");
+ http2VariableURI = "http://127.0.0.1:" + http2TestServer.getAddress().getPort() + "/http2/variable";
+
+ https2TestServer = new Http2TestServer("127.0.0.1", true, 0);
+ https2TestServer.addHandler(new Http2FixedHandler(), "/https2/fixed");
+ https2FixedURI = "https://127.0.0.1:" + https2TestServer.getAddress().getPort() + "/https2/fixed";
+ https2TestServer.addHandler(new Http2VariableHandler(), "/https2/variable");
+ https2VariableURI = "https://127.0.0.1:" + https2TestServer.getAddress().getPort() + "/https2/variable";
+
+ httpTestServer.start();
+ httpsTestServer.start();
+ http2TestServer.start();
+ https2TestServer.start();
+ }
+
+ @AfterTest
+ public void teardown() throws Exception {
+ httpTestServer.stop(0);
+ httpsTestServer.stop(0);
+ http2TestServer.stop();
+ https2TestServer.stop();
+ }
+
+ interface SendResponseHeadersFunction {
+ void apply(int responseCode, long responseLength) throws IOException;
+ }
+
+ // A handler implementation that replies with 200 OK. If the exchange's uri
+ // has a query, then it must be an integer, which is used as an index to
+ // select the particular response body, e.g. /http2/x?5 -> BODIES[5]
+ static void serverHandlerImpl(InputStream inputStream,
+ OutputStream outputStream,
+ URI uri,
+ SendResponseHeadersFunction sendResponseHeadersFunction)
+ throws IOException
+ {
+ try (InputStream is = inputStream;
+ OutputStream os = outputStream) {
+ is.readAllBytes();
+
+ String magicQuery = uri.getQuery();
+ if (magicQuery != null) {
+ int bodyIndex = Integer.valueOf(magicQuery);
+ String body = BODIES[bodyIndex];
+ byte[] bytes = body.getBytes(UTF_8);
+ sendResponseHeadersFunction.apply(200, bytes.length);
+ int offset = 0;
+ // Deliberately attempt to reply with several relatively
+ // small data frames ( each write corresponds to its own
+ // data frame ). Additionally, yield, to encourage other
+ // handlers to execute, therefore increasing the likelihood
+ // of multiple different-stream related frames in the
+ // client's read buffer.
+ while (offset < bytes.length) {
+ int length = Math.min(bytes.length - offset, 64);
+ os.write(bytes, offset, length);
+ os.flush();
+ offset += length;
+ Thread.yield();
+ }
+ } else {
+ sendResponseHeadersFunction.apply(200, 1);
+ os.write('A');
+ }
+ }
+ }
+
+ static class Http1FixedHandler implements HttpHandler {
+ @Override
+ public void handle(HttpExchange t) throws IOException {
+ serverHandlerImpl(t.getRequestBody(),
+ t.getResponseBody(),
+ t.getRequestURI(),
+ (rcode, length) -> t.sendResponseHeaders(rcode, length));
+ }
+ }
+
+ static class Http1ChunkedHandler implements HttpHandler {
+ @Override
+ public void handle(HttpExchange t) throws IOException {
+ serverHandlerImpl(t.getRequestBody(),
+ t.getResponseBody(),
+ t.getRequestURI(),
+ (rcode, ignored) -> t.sendResponseHeaders(rcode, 0 /*chunked*/));
+ }
+ }
+
+ static class Http2FixedHandler implements Http2Handler {
+ @Override
+ public void handle(Http2TestExchange t) throws IOException {
+ serverHandlerImpl(t.getRequestBody(),
+ t.getResponseBody(),
+ t.getRequestURI(),
+ (rcode, length) -> t.sendResponseHeaders(rcode, length));
+ }
+ }
+
+ static class Http2VariableHandler implements Http2Handler {
+ @Override
+ public void handle(Http2TestExchange t) throws IOException {
+ serverHandlerImpl(t.getRequestBody(),
+ t.getResponseBody(),
+ t.getRequestURI(),
+ (rcode, ignored) -> t.sendResponseHeaders(rcode, 0 /* no Content-Length */));
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/httpclient/whitebox/FramesDecoderTestDriver.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8195823
+ * @modules jdk.incubator.httpclient/jdk.incubator.http.internal.frame
+ * @run testng/othervm -Djdk.internal.httpclient.debug=true jdk.incubator.httpclient/jdk.incubator.http.internal.frame.FramesDecoderTest
+ */
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/httpclient/whitebox/jdk.incubator.httpclient/jdk/incubator/http/internal/frame/FramesDecoderTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.incubator.http.internal.frame;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import static java.lang.System.out;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.testng.Assert.*;
+
+public class FramesDecoderTest {
+
+ abstract class TestFrameProcessor implements FramesDecoder.FrameProcessor {
+ protected volatile int count;
+ public int numberOfFramesDecoded() { return count; }
+ }
+
+ /**
+ * Verifies that a ByteBuffer containing more that one frame, destined
+ * to be returned to the user's subscriber, i.e. a data frame, does not
+ * inadvertently expose the following frame ( between its limit and
+ * capacity ).
+ */
+ @Test
+ public void decodeDataFrameFollowedByAnother() throws Exception {
+ // input frames for to the decoder
+ List<ByteBuffer> data1 = List.of(ByteBuffer.wrap("XXXX".getBytes(UTF_8)));
+ DataFrame dataFrame1 = new DataFrame(1, 0, data1);
+ List<ByteBuffer> data2 = List.of(ByteBuffer.wrap("YYYY".getBytes(UTF_8)));
+ DataFrame dataFrame2 = new DataFrame(1, 0, data2);
+
+ List<ByteBuffer> buffers = new ArrayList<>();
+ FramesEncoder encoder = new FramesEncoder();
+ buffers.addAll(encoder.encodeFrame(dataFrame1));
+ buffers.addAll(encoder.encodeFrame(dataFrame2));
+
+ ByteBuffer combined = ByteBuffer.allocate(1024);
+ buffers.stream().forEach(combined::put);
+ combined.flip();
+
+ TestFrameProcessor testFrameProcessor = new TestFrameProcessor() {
+ @Override
+ public void processFrame(Http2Frame frame) throws IOException {
+ assertTrue(frame instanceof DataFrame);
+ DataFrame dataFrame = (DataFrame) frame;
+ List<ByteBuffer> list = dataFrame.getData();
+ assertEquals(list.size(), 1);
+ ByteBuffer data = list.get(0);
+ byte[] bytes = new byte[data.remaining()];
+ data.get(bytes);
+ if (count == 0) {
+ assertEquals(new String(bytes, UTF_8), "XXXX");
+ out.println("First data received:" + data);
+ assertEquals(data.position(), data.limit()); // since bytes read
+ assertEquals(data.limit(), data.capacity());
+ } else {
+ assertEquals(new String(bytes, UTF_8), "YYYY");
+ out.println("Second data received:" + data);
+ }
+ count++;
+ }
+ };
+ FramesDecoder decoder = new FramesDecoder(testFrameProcessor);
+
+ out.println("Sending " + combined + " to decoder: ");
+ decoder.decode(combined);
+ Assert.assertEquals(testFrameProcessor.numberOfFramesDecoded(), 2);
+ }
+
+
+ /**
+ * Verifies that a ByteBuffer containing ONLY data one frame, destined
+ * to be returned to the user's subscriber, does not restrict the capacity.
+ * The complete buffer ( all its capacity ), since no longer used by the
+ * HTTP Client, should be returned to the user.
+ */
+ @Test
+ public void decodeDataFrameEnsureNotCapped() throws Exception {
+ // input frames for to the decoder
+ List<ByteBuffer> data1 = List.of(ByteBuffer.wrap("XXXX".getBytes(UTF_8)));
+ DataFrame dataFrame1 = new DataFrame(1, 0, data1);
+
+ List<ByteBuffer> buffers = new ArrayList<>();
+ FramesEncoder encoder = new FramesEncoder();
+ buffers.addAll(encoder.encodeFrame(dataFrame1));
+
+ ByteBuffer combined = ByteBuffer.allocate(1024);
+ buffers.stream().forEach(combined::put);
+ combined.flip();
+
+ TestFrameProcessor testFrameProcessor = new TestFrameProcessor() {
+ @Override
+ public void processFrame(Http2Frame frame) throws IOException {
+ assertTrue(frame instanceof DataFrame);
+ DataFrame dataFrame = (DataFrame) frame;
+ List<ByteBuffer> list = dataFrame.getData();
+ assertEquals(list.size(), 1);
+ ByteBuffer data = list.get(0);
+ byte[] bytes = new byte[data.remaining()];
+ data.get(bytes);
+ assertEquals(new String(bytes, UTF_8), "XXXX");
+ out.println("First data received:" + data);
+ assertEquals(data.position(), data.limit()); // since bytes read
+ //assertNotEquals(data.limit(), data.capacity());
+ assertEquals(data.capacity(), 1024 - 9 /*frame header*/);
+ count++;
+ }
+ };
+ FramesDecoder decoder = new FramesDecoder(testFrameProcessor);
+
+ out.println("Sending " + combined + " to decoder: ");
+ decoder.decode(combined);
+ Assert.assertEquals(testFrameProcessor.numberOfFramesDecoded(), 1);
+ }
+}
--- a/test/jdk/java/security/KeyStore/ProbeKeystores.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/security/KeyStore/ProbeKeystores.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8044445
+ * @bug 8044445 8194307
* @summary test new methods from JEP-229: Create PKCS12 Keystores by Default
*/
@@ -37,9 +37,26 @@
public class ProbeKeystores {
private static final char[] PASSWORD = "changeit".toCharArray();
private static final char[] BAD_PASSWORD = "badpasword".toCharArray();
+ private static final LoadStoreParameter LOAD_STORE_PARAM =
+ new MyLoadStoreParameter(new PasswordProtection(PASSWORD));
+ private static final LoadStoreParameter BAD_LOAD_STORE_PARAM =
+ new MyLoadStoreParameter(new PasswordProtection(BAD_PASSWORD));
private static final String DIR = System.getProperty("test.src", ".");
private static final String CERT_FILE = "trusted.pem";
+ private static class MyLoadStoreParameter implements LoadStoreParameter {
+
+ private ProtectionParameter protection;
+
+ MyLoadStoreParameter(ProtectionParameter protection) {
+ this.protection = protection;
+ }
+
+ public ProtectionParameter getProtectionParameter() {
+ return protection;
+ }
+ }
+
public static final void main(String[] args) throws Exception {
// Testing empty keystores
@@ -173,6 +190,23 @@
} catch (IOException e) {
System.out.println("Failed to load a " + type + " keystore named '" + file + "' (as expected)");
}
+
+ // Now try with the correct password within a LoadStoreParameter
+ ks = KeyStore.getInstance(new File(file), LOAD_STORE_PARAM);
+ if (!type.equalsIgnoreCase(ks.getType())) {
+ throw new Exception("ERROR: expected a " + type + " keystore, " +
+ "got a " + ks.getType() + " keystore instead");
+ } else {
+ System.out.println("Probed a " + type + " keystore named '" + file + "'");
+ }
+
+ // Next try with an incorrect password within a LoadStoreParameter
+ try {
+ ks = KeyStore.getInstance(new File(file), BAD_LOAD_STORE_PARAM);
+ throw new Exception("ERROR: expected an exception but got success");
+ } catch (IOException e) {
+ System.out.println("Failed to load a " + type + " keystore named '" + file + "' (as expected)");
+ }
}
// Instantiate a keystore by probing the supplied file for the keystore type
--- a/test/jdk/java/security/Provider/ProviderVersionCheck.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/security/Provider/ProviderVersionCheck.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
/*
* @test
- * @bug 8030823 8130696
+ * @bug 8030823 8130696 8196414
* @run main/othervm ProviderVersionCheck
* @summary Verify all providers in the default Providers list have the proper
* version for the release
@@ -42,7 +42,8 @@
for (Provider p: Security.getProviders()) {
System.out.print(p.getName() + " ");
- if (p.getVersion() != 10.0d) {
+ String specVersion = System.getProperty("java.specification.version");
+ if (p.getVersion() != Double.parseDouble(specVersion)) {
System.out.println("failed. " + "Version received was " +
p.getVersion());
failure = true;
--- a/test/jdk/java/time/test/java/time/format/ZoneName.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/time/test/java/time/format/ZoneName.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -194,7 +194,7 @@
"Pacific/Rarotonga", "Cook", "Pacific/Rarotonga",
"America/Louisville", "America_Eastern", "America/New_York",
"Africa/El_Aaiun", "Europe_Western", "Atlantic/Canary",
- "Africa/Sao_Tome", "GMT", "Atlantic/Reykjavik",
+ "Africa/Sao_Tome", "Africa_Western", "Africa/Lagos",
"Pacific/Fiji", "Fiji", "Pacific/Fiji",
"Asia/Damascus", "Europe_Eastern", "Europe/Bucharest",
"Asia/Ulaanbaatar", "Mongolia", "Asia/Ulaanbaatar",
@@ -508,6 +508,7 @@
"Africa_Central", "CD", "Africa/Lubumbashi",
"Africa_Central", "BI", "Africa/Bujumbura",
"Africa_Central", "RW", "Africa/Kigali",
+ "Africa_Western", "ST", "Africa/Sao_Tome",
"Africa_Western", "CF", "Africa/Bangui",
"Africa_Western", "AO", "Africa/Luanda",
"Africa_Western", "NE", "Africa/Niamey",
@@ -549,7 +550,6 @@
"GMT", "GN", "Africa/Conakry",
"GMT", "SL", "Africa/Freetown",
"GMT", "BF", "Africa/Ouagadougou",
- "GMT", "ST", "Africa/Sao_Tome",
"GMT", "SN", "Africa/Dakar",
"GMT", "CI", "Africa/Abidjan",
"GMT", "IE", "Europe/Dublin",
--- a/test/jdk/java/util/ArrayList/IteratorMicroBenchmark.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/util/ArrayList/IteratorMicroBenchmark.java Fri Feb 02 09:04:45 2018 -0800
@@ -642,6 +642,24 @@
for (Object o : a)
sum[0] += (Integer) o;
check.sum(sum[0]);}}},
+ new Job("ArrayList subList .toArray()") {
+ public void work() throws Throwable {
+ int[] sum = new int[1];
+ for (int i = 0; i < iterations; i++) {
+ sum[0] = 0;
+ for (Object o : asSubList(al).toArray())
+ sum[0] += (Integer) o;
+ check.sum(sum[0]);}}},
+ new Job("ArrayList subList .toArray(a)") {
+ public void work() throws Throwable {
+ Integer[] a = new Integer[size];
+ int[] sum = new int[1];
+ for (int i = 0; i < iterations; i++) {
+ sum[0] = 0;
+ asSubList(al).toArray(a);
+ for (Object o : a)
+ sum[0] += (Integer) o;
+ check.sum(sum[0]);}}},
new Job("ArrayDeque.toArray()") {
public void work() throws Throwable {
int[] sum = new int[1];
--- a/test/jdk/java/util/Base64/Base64GetEncoderTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/util/Base64/Base64GetEncoderTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -34,23 +34,23 @@
/**
* @test
- * @bug 8007799
+ * @bug 8007799 8176379
* @summary test Encoder with linemax == 0, line separator should not appear in encoded data
*/
public class Base64GetEncoderTest {
public static void main(String args[]) throws Throwable {
- final Base64.Encoder encoder = Base64.getMimeEncoder(0, "$$$".getBytes(US_ASCII));
- testEncodeToString(encoder);
+ for (int maxlen = -4; maxlen < 4; maxlen++) {
+
+ final Base64.Encoder encoder = Base64.getMimeEncoder(maxlen, "$$$".getBytes(US_ASCII));
- testWrapEncode1(encoder);
-
- testEncodeToStringWithLongInputData(encoder);
-
- testWrapEncode2(encoder);
-
+ testEncodeToString(encoder);
+ testWrapEncode1(encoder);
+ testEncodeToStringWithLongInputData(encoder);
+ testWrapEncode2(encoder);
+ }
}
private static void testWrapEncode2(final Base64.Encoder encoder)
--- a/test/jdk/java/util/Base64/TestBase64.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/util/Base64/TestBase64.java Fri Feb 02 09:04:45 2018 -0800
@@ -24,7 +24,7 @@
/**
* @test
* @bug 4235519 8004212 8005394 8007298 8006295 8006315 8006530 8007379 8008925
- * 8014217 8025003 8026330 8028397 8129544 8165243
+ * 8014217 8025003 8026330 8028397 8129544 8165243 8176379
* @summary tests java.util.Base64
* @library /test/lib
* @build jdk.test.lib.RandomFactory
@@ -78,6 +78,21 @@
numRuns, numBytes);
}
+ // test mime case with < 4 length
+ for (int len = 0; len < 4; len++) {
+ test(Base64.getMimeEncoder(len, nl_1),
+ Base64.getMimeDecoder(),
+ numRuns, numBytes);
+
+ test(Base64.getMimeEncoder(len, nl_2),
+ Base64.getMimeDecoder(),
+ numRuns, numBytes);
+
+ test(Base64.getMimeEncoder(len, nl_3),
+ Base64.getMimeDecoder(),
+ numRuns, numBytes);
+ }
+
testNull(Base64.getEncoder());
testNull(Base64.getUrlEncoder());
testNull(Base64.getMimeEncoder());
--- a/test/jdk/java/util/Collection/IteratorMicroBenchmark.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/util/Collection/IteratorMicroBenchmark.java Fri Feb 02 09:04:45 2018 -0800
@@ -28,7 +28,7 @@
*/
import static java.util.stream.Collectors.summingInt;
-import static java.util.stream.Collectors.toList;
+import static java.util.stream.Collectors.toCollection;
import java.lang.ref.WeakReference;
import java.util.ArrayDeque;
@@ -46,6 +46,7 @@
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.LinkedTransferQueue;
@@ -55,6 +56,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.LongAdder;
import java.util.regex.Pattern;
+import java.util.stream.Stream;
/**
* Usage: [iterations=N] [size=N] [filter=REGEXP] [warmup=SECONDS]
@@ -79,7 +81,7 @@
final int size; // number of elements in collections
final double warmupSeconds;
final long warmupNanos;
- final Pattern filter; // select subset of Jobs to run
+ final Pattern nameFilter; // select subset of Jobs to run
final boolean reverse; // reverse order of Jobs
final boolean shuffle; // randomize order of Jobs
@@ -87,7 +89,7 @@
iterations = intArg(args, "iterations", 10_000);
size = intArg(args, "size", 1000);
warmupSeconds = doubleArg(args, "warmup", 7.0);
- filter = patternArg(args, "filter");
+ nameFilter = patternArg(args, "filter");
reverse = booleanArg(args, "reverse");
shuffle = booleanArg(args, "shuffle");
@@ -204,13 +206,6 @@
throw new IllegalArgumentException(val);
}
- private static List<Job> filter(Pattern filter, List<Job> jobs) {
- return (filter == null) ? jobs
- : jobs.stream()
- .filter(job -> filter.matcher(job.name()).find())
- .collect(toList());
- }
-
private static void deoptimize(int sum) {
if (sum == 42)
System.out.println("the answer");
@@ -249,7 +244,7 @@
void run() throws Throwable {
// System.out.printf(
// "iterations=%d size=%d, warmup=%1g, filter=\"%s\"%n",
-// iterations, size, warmupSeconds, filter);
+// iterations, size, warmupSeconds, nameFilter);
final ArrayList<Integer> al = new ArrayList<>(size);
@@ -268,34 +263,48 @@
abq.add(abq.remove());
}
- ArrayList<Job> jobs = new ArrayList<>();
-
- List.<Collection<Integer>>of(
- al, ad, abq,
- new LinkedList<>(al),
- new PriorityQueue<>(al),
- new Vector<>(al),
- new ConcurrentLinkedQueue<>(al),
- new ConcurrentLinkedDeque<>(al),
- new LinkedBlockingQueue<>(al),
- new LinkedBlockingDeque<>(al),
- new LinkedTransferQueue<>(al),
- new PriorityBlockingQueue<>(al)).forEach(
- x -> {
- jobs.addAll(collectionJobs(x));
- if (x instanceof Deque)
- jobs.addAll(dequeJobs((Deque<Integer>)x));
- });
+ ArrayList<Job> jobs = Stream.<Collection<Integer>>of(
+ al, ad, abq,
+ new LinkedList<>(al),
+ new PriorityQueue<>(al),
+ new Vector<>(al),
+ new CopyOnWriteArrayList<>(al),
+ new ConcurrentLinkedQueue<>(al),
+ new ConcurrentLinkedDeque<>(al),
+ new LinkedBlockingQueue<>(al),
+ new LinkedBlockingDeque<>(al),
+ new LinkedTransferQueue<>(al),
+ new PriorityBlockingQueue<>(al))
+ .flatMap(x -> jobs(x))
+ .filter(job ->
+ nameFilter == null || nameFilter.matcher(job.name()).find())
+ .collect(toCollection(ArrayList::new));
if (reverse) Collections.reverse(jobs);
if (shuffle) Collections.shuffle(jobs);
- time(filter(filter, jobs));
+ time(jobs);
+ }
+
+ @SafeVarargs @SuppressWarnings("varargs")
+ private <T> Stream<T> concatStreams(Stream<T> ... streams) {
+ return Stream.of(streams).flatMap(s -> s);
}
- List<Job> collectionJobs(Collection<Integer> x) {
+ Stream<Job> jobs(Collection<Integer> x) {
+ return concatStreams(
+ collectionJobs(x),
+ (x instanceof Deque)
+ ? dequeJobs((Deque<Integer>)x)
+ : Stream.empty(),
+ (x instanceof List)
+ ? listJobs((List<Integer>)x)
+ : Stream.empty());
+ }
+
+ Stream<Job> collectionJobs(Collection<Integer> x) {
String klazz = x.getClass().getSimpleName();
- return List.of(
+ return Stream.of(
new Job(klazz + " iterate for loop") {
public void work() throws Throwable {
for (int i = 0; i < iterations; i++) {
@@ -436,9 +445,9 @@
check.sum(sum[0]);}}});
}
- List<Job> dequeJobs(Deque<Integer> x) {
+ Stream<Job> dequeJobs(Deque<Integer> x) {
String klazz = x.getClass().getSimpleName();
- return List.of(
+ return Stream.of(
new Job(klazz + " descendingIterator() loop") {
public void work() throws Throwable {
for (int i = 0; i < iterations; i++) {
@@ -455,4 +464,50 @@
x.descendingIterator().forEachRemaining(n -> sum[0] += n);
check.sum(sum[0]);}}});
}
+
+ Stream<Job> listJobs(List<Integer> x) {
+ String klazz = x.getClass().getSimpleName();
+ return Stream.of(
+ new Job(klazz + " subList toArray()") {
+ public void work() throws Throwable {
+ int size = x.size();
+ for (int i = 0; i < iterations; i++) {
+ int total = Stream.of(x.subList(0, size / 2),
+ x.subList(size / 2, size))
+ .mapToInt(subList -> {
+ int sum = 0;
+ for (Object o : subList.toArray())
+ sum += (Integer) o;
+ return sum; })
+ .sum();
+ check.sum(total);}}},
+ new Job(klazz + " subList toArray(a)") {
+ public void work() throws Throwable {
+ int size = x.size();
+ for (int i = 0; i < iterations; i++) {
+ int total = Stream.of(x.subList(0, size / 2),
+ x.subList(size / 2, size))
+ .mapToInt(subList -> {
+ int sum = 0;
+ Integer[] a = new Integer[subList.size()];
+ for (Object o : subList.toArray(a))
+ sum += (Integer) o;
+ return sum; })
+ .sum();
+ check.sum(total);}}},
+ new Job(klazz + " subList toArray(empty)") {
+ public void work() throws Throwable {
+ int size = x.size();
+ Integer[] empty = new Integer[0];
+ for (int i = 0; i < iterations; i++) {
+ int total = Stream.of(x.subList(0, size / 2),
+ x.subList(size / 2, size))
+ .mapToInt(subList -> {
+ int sum = 0;
+ for (Object o : subList.toArray(empty))
+ sum += (Integer) o;
+ return sum; })
+ .sum();
+ check.sum(total);}}});
+ }
}
--- a/test/jdk/java/util/jar/JarFile/mrjar/MultiReleaseJarHttpProperties.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/util/jar/JarFile/mrjar/MultiReleaseJarHttpProperties.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8132734
+ * @bug 8132734 8194070
* @summary Test the System properties for JarFile that support multi-release jar files
* @library /lib/testlibrary/java/util/jar
* @modules jdk.jartool
@@ -31,17 +31,14 @@
* jdk.httpserver
* @build Compiler JarBuilder CreateMultiReleaseTestJars SimpleHttpServer
* @run testng MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=0 MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=8 MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=9 MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=10 MultiReleaseJarHttpProperties
+ * @run testng/othervm -Djdk.util.jar.version=0 MultiReleaseJarHttpProperties
+ * @run testng/othervm -Djdk.util.jar.version=8 MultiReleaseJarHttpProperties
+ * @run testng/othervm -Djdk.util.jar.version=9 MultiReleaseJarHttpProperties
* @run testng/othervm -Djdk.util.jar.version=100 MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=8 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=9 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=10 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=8 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=9 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarHttpProperties
- * @run testng/othervm -Djdk.util.jar.version=10 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarHttpProperties
+ * @run testng/othervm -Djdk.util.jar.version=8 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarHttpProperties
+ * @run testng/othervm -Djdk.util.jar.version=9 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarHttpProperties
+ * @run testng/othervm -Djdk.util.jar.version=8 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarHttpProperties
+ * @run testng/othervm -Djdk.util.jar.version=9 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarHttpProperties
* @run testng/othervm -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarHttpProperties
* @run testng/othervm -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarHttpProperties
*/
--- a/test/jdk/java/util/jar/JarFile/mrjar/MultiReleaseJarProperties.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/java/util/jar/JarFile/mrjar/MultiReleaseJarProperties.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,22 +23,19 @@
/*
* @test
- * @bug 8132734 8144062
+ * @bug 8132734 8144062 8194070
* @summary Test the System properties for JarFile that support multi-release jar files
* @library /lib/testlibrary/java/util/jar
* @build Compiler JarBuilder CreateMultiReleaseTestJars
* @run testng MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=0 MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=8 MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=9 MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=10 MultiReleaseJarProperties
+ * @run testng/othervm -Djdk.util.jar.version=0 MultiReleaseJarProperties
+ * @run testng/othervm -Djdk.util.jar.version=8 MultiReleaseJarProperties
+ * @run testng/othervm -Djdk.util.jar.version=9 MultiReleaseJarProperties
* @run testng/othervm -Djdk.util.jar.version=100 MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=8 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=9 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=10 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=8 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=9 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarProperties
- * @run testng/othervm -Djdk.util.jar.version=10 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarProperties
+ * @run testng/othervm -Djdk.util.jar.version=8 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarProperties
+ * @run testng/othervm -Djdk.util.jar.version=9 -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarProperties
+ * @run testng/othervm -Djdk.util.jar.version=8 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarProperties
+ * @run testng/othervm -Djdk.util.jar.version=9 -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarProperties
* @run testng/othervm -Djdk.util.jar.enableMultiRelease=false MultiReleaseJarProperties
* @run testng/othervm -Djdk.util.jar.enableMultiRelease=force MultiReleaseJarProperties
*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/ScriptEngineOrder.sh Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,52 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# @test
+# @bug 8011697
+# @summary test to check consistency in discovering and returning script engine
+# by ScriptEngineManager
+#
+# @run shell ScriptEngineOrder.sh
+
+set -x
+if [ "${TESTSRC}" = "" ]
+then
+ echo "TESTSRC not set. Test cannot execute. Failed."
+ exit 1
+fi
+
+. ${TESTSRC}/CommonSetup.sh
+
+echo "Building dummy script engine modules.."
+#test to check the consistency in returning engines by ScriptEngineManager
+$JAVAC --limit-modules java.base,java.logging,java.scripting,jdk.scripting.dummyNashorn,jdk.scripting.dummyRhino,jdk.scripting.testEngines -d ${TESTCLASSES}/mods --module-source-path ${TESTSRC}/multiEngines $(find ${TESTSRC}/multiEngines -name *.java)
+
+echo "Running script engine test.."
+$JAVA --limit-modules java.base,java.logging,java.scripting,jdk.scripting.dummyNashorn,jdk.scripting.dummyRhino,jdk.scripting.testEngines --module-path ${TESTCLASSES}/mods --module jdk.scripting.testEngines/jdk.test.engines.ScriptEngineTest
+
+ret=$?
+if [ $ret -ne 0 ]
+then
+ exit $ret
+fi
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/multiEngines/jdk.scripting.dummyNashorn/jdk/dummyNashorn/api/scripting/DummyNashornJSEngine.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ *
+ *
+ * This is a dummyNashorn script engine implementation
+ */
+package jdk.dummyNashorn.api.scripting;
+import javax.script.*;
+import java.io.*;
+
+public class DummyNashornJSEngine extends AbstractScriptEngine {
+ public Object eval(String str, ScriptContext ctx) {
+ return eval(new StringReader(str), ctx);
+ }
+
+ public Object eval(Reader reader, ScriptContext ctx) {
+ System.out.println("eval done!");
+ return null;
+ }
+
+ public ScriptEngineFactory getFactory() {
+ return new DummyNashornJSEngineFactory();
+ }
+
+ public Bindings createBindings() {
+ return new SimpleBindings();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/multiEngines/jdk.scripting.dummyNashorn/jdk/dummyNashorn/api/scripting/DummyNashornJSEngineFactory.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ *
+ *
+ * This is script engine factory for dummyNashorn engine.
+ */
+package jdk.dummyNashorn.api.scripting;
+import javax.script.*;
+import java.util.*;
+
+public class DummyNashornJSEngineFactory implements ScriptEngineFactory {
+ public String getEngineName() {
+ return "dummyNashorn";
+ }
+
+ public String getEngineVersion() {
+ return "-1.0";
+ }
+
+ public List<String> getExtensions() {
+ return extensions;
+ }
+
+ public String getLanguageName() {
+ return "dummyNashorn";
+ }
+
+ public String getLanguageVersion() {
+ return "-1.0";
+ }
+
+ public String getMethodCallSyntax(String obj, String m, String... args) {
+ StringBuffer buf = new StringBuffer();
+ buf.append("call " + m + " ");
+ buf.append(" on " + obj + " with ");
+ for (int i = 0; i < args.length; i++) {
+ buf.append(args[i] + ", ");
+ }
+ buf.append(";");
+ return buf.toString();
+ }
+
+ public List<String> getMimeTypes() {
+ return mimeTypes;
+ }
+
+ public List<String> getNames() {
+ return names;
+ }
+
+ public String getOutputStatement(String str) {
+ return "output " + str;
+ }
+
+ public String getParameter(String key) {
+ if (key.equals(ScriptEngine.ENGINE)) {
+ return getEngineName();
+ } else if (key.equals(ScriptEngine.ENGINE_VERSION)) {
+ return getEngineVersion();
+ } else if (key.equals(ScriptEngine.NAME)) {
+ return getEngineName();
+ } else if (key.equals(ScriptEngine.LANGUAGE)) {
+ return getLanguageName();
+ } else if (key.equals(ScriptEngine.LANGUAGE_VERSION)) {
+ return getLanguageVersion();
+ } else {
+ return null;
+ }
+ }
+
+ public String getProgram(String... statements) {
+ StringBuffer buf = new StringBuffer();
+ for (int i = 0; i < statements.length; i++) {
+ buf.append(statements[i]);
+ }
+ return buf.toString();
+ }
+
+ public ScriptEngine getScriptEngine() {
+ return new DummyNashornJSEngine();
+ }
+
+ private static List<String> names;
+ private static List<String> extensions;
+ private static List<String> mimeTypes;
+ static {
+ names = new ArrayList<String>(1);
+ names.add("dummyNashorn");
+ names.add("js");
+ names = Collections.unmodifiableList(names);
+ extensions = names;
+ mimeTypes = new ArrayList<String>(0);
+ mimeTypes = Collections.unmodifiableList(mimeTypes);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/multiEngines/jdk.scripting.dummyNashorn/module-info.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+module jdk.scripting.dummyNashorn {
+ requires java.scripting;
+ exports jdk.dummyNashorn.api.scripting;
+ provides javax.script.ScriptEngineFactory with
+ jdk.dummyNashorn.api.scripting.DummyNashornJSEngineFactory;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/multiEngines/jdk.scripting.dummyRhino/jdk/dummyRhino/api/scripting/DummyRhinoJSEngine.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ *
+ *
+ * This is a dummyRhino script engine implementation
+ */
+package jdk.dummyRhino.api.scripting;
+import javax.script.*;
+import java.io.*;
+
+public class DummyRhinoJSEngine extends AbstractScriptEngine {
+ public Object eval(String str, ScriptContext ctx) {
+ return eval(new StringReader(str), ctx);
+ }
+
+ public Object eval(Reader reader, ScriptContext ctx) {
+ System.out.println("eval done!");
+ return null;
+ }
+
+ public ScriptEngineFactory getFactory() {
+ return new DummyRhinoJSEngineFactory();
+ }
+
+ public Bindings createBindings() {
+ return new SimpleBindings();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/multiEngines/jdk.scripting.dummyRhino/jdk/dummyRhino/api/scripting/DummyRhinoJSEngineFactory.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ *
+ *
+ * This is script engine factory for dummyRhino engine.
+ */
+package jdk.dummyRhino.api.scripting;
+import javax.script.*;
+import java.util.*;
+
+public class DummyRhinoJSEngineFactory implements ScriptEngineFactory {
+ public String getEngineName() {
+ return "dummyRhino";
+ }
+
+ public String getEngineVersion() {
+ return "-1.0";
+ }
+
+ public List<String> getExtensions() {
+ return extensions;
+ }
+
+ public String getLanguageName() {
+ return "dummyRhino";
+ }
+
+ public String getLanguageVersion() {
+ return "-1.0";
+ }
+
+ public String getMethodCallSyntax(String obj, String m, String... args) {
+ StringBuffer buf = new StringBuffer();
+ buf.append("call " + m + " ");
+ buf.append(" on " + obj + " with ");
+ for (int i = 0; i < args.length; i++) {
+ buf.append(args[i] + ", ");
+ }
+ buf.append(";");
+ return buf.toString();
+ }
+
+ public List<String> getMimeTypes() {
+ return mimeTypes;
+ }
+
+ public List<String> getNames() {
+ return names;
+ }
+
+ public String getOutputStatement(String str) {
+ return "output " + str;
+ }
+
+ public String getParameter(String key) {
+ if (key.equals(ScriptEngine.ENGINE)) {
+ return getEngineName();
+ } else if (key.equals(ScriptEngine.ENGINE_VERSION)) {
+ return getEngineVersion();
+ } else if (key.equals(ScriptEngine.NAME)) {
+ return getEngineName();
+ } else if (key.equals(ScriptEngine.LANGUAGE)) {
+ return getLanguageName();
+ } else if (key.equals(ScriptEngine.LANGUAGE_VERSION)) {
+ return getLanguageVersion();
+ } else {
+ return null;
+ }
+ }
+
+ public String getProgram(String... statements) {
+ StringBuffer buf = new StringBuffer();
+ for (int i = 0; i < statements.length; i++) {
+ buf.append(statements[i]);
+ }
+ return buf.toString();
+ }
+
+ public ScriptEngine getScriptEngine() {
+ return new DummyRhinoJSEngine();
+ }
+
+ private static List<String> names;
+ private static List<String> extensions;
+ private static List<String> mimeTypes;
+ static {
+ names = new ArrayList<String>(1);
+ names.add("dummyRhino");
+ names.add("js");
+ names = Collections.unmodifiableList(names);
+ extensions = names;
+ mimeTypes = new ArrayList<String>(0);
+ mimeTypes = Collections.unmodifiableList(mimeTypes);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/multiEngines/jdk.scripting.dummyRhino/module-info.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+module jdk.scripting.dummyRhino {
+ requires java.scripting;
+ exports jdk.dummyRhino.api.scripting;
+ provides javax.script.ScriptEngineFactory with
+ jdk.dummyRhino.api.scripting.DummyRhinoJSEngineFactory;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/multiEngines/jdk.scripting.testEngines/jdk/test/engines/ScriptEngineTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.test.engines;
+import javax.script.*;
+public class ScriptEngineTest {
+
+ public static void main(String[] args) throws Exception {
+ for (int i = 0; i < 100; i++) {
+ ScriptEngineManager manager = new ScriptEngineManager();
+ ScriptEngine scriptEngine = manager.getEngineByName("js");
+ if(!(scriptEngine.toString().contains("jdk.dummyNashorn.api.scripting.DummyNashornJSEngine")))
+ throw new RuntimeException("Script EngineOrder is inconsistent");
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/script/multiEngines/jdk.scripting.testEngines/module-info.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+module jdk.scripting.testEngines{
+ requires java.scripting;
+}
+
--- a/test/jdk/jdk/nio/zipfs/MultiReleaseJarTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/jdk/nio/zipfs/MultiReleaseJarTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8144355 8144062 8176709
+ * @bug 8144355 8144062 8176709 8194070 8193802
* @summary Test aliasing additions to ZipFileSystem for multi-release jar files
* @library /lib/testlibrary/java/util/jar
* @build Compiler JarBuilder CreateMultiReleaseTestJars
@@ -92,9 +92,9 @@
{"0", 8},
{"8", 8},
{"9", 9},
- {"10", 10},
- {"11", 10},
- {"50", 10}
+ {Integer.toString(MAJOR_VERSION), MAJOR_VERSION},
+ {Integer.toString(MAJOR_VERSION+1), MAJOR_VERSION},
+ {"50", MAJOR_VERSION}
};
}
@@ -105,9 +105,9 @@
{new Integer(0), 8},
{new Integer(8), 8},
{new Integer(9), 9},
- {new Integer(10), 10},
- {new Integer(11), 10},
- {new Integer(100), 10}
+ {new Integer(MAJOR_VERSION), MAJOR_VERSION},
+ {new Integer(MAJOR_VERSION + 1), MAJOR_VERSION},
+ {new Integer(100), MAJOR_VERSION}
};
}
@@ -116,9 +116,8 @@
return new Object[][] {
{Version.parse("8"), 8},
{Version.parse("9"), 9},
- {Version.parse("10"), 10},
- {Version.parse("11"), 10},
- {Version.parse("100"), 10}
+ {Version.parse("11"), MAJOR_VERSION},
+ {Version.parse("100"), MAJOR_VERSION}
};
}
@@ -168,8 +167,8 @@
@Test
public void testShortJar() throws Throwable {
- integerEnv.put("multi-release", Integer.valueOf(10));
- runTest(smruri, integerEnv, 10);
+ integerEnv.put("multi-release", Integer.valueOf(MAJOR_VERSION));
+ runTest(smruri, integerEnv, MAJOR_VERSION);
integerEnv.put("multi-release", Integer.valueOf(9));
runTest(smruri, integerEnv, 8);
}
@@ -205,6 +204,21 @@
//testCustomMultiReleaseValue("true\r\n true", false);
}
+ @Test
+ public void testMultiReleaseJarWithNonVersionDir() throws Exception {
+ String jfname = "multi-release-non-ver.jar";
+ Path jfpath = Paths.get(jfname);
+ URI uri = new URI("jar", jfpath.toUri().toString() , null);
+ JarBuilder jb = new JarBuilder(jfname);
+ jb.addAttribute("Multi-Release", "true");
+ jb.build();
+ Map<String,String> env = Map.of("multi-release", "runtime");
+ try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {
+ Assert.assertTrue(true);
+ }
+ Files.delete(jfpath);
+ }
+
private static final AtomicInteger JAR_COUNT = new AtomicInteger(0);
private void testCustomMultiReleaseValue(String value, boolean expected)
--- a/test/jdk/lib/testlibrary/java/util/jar/CreateMultiReleaseTestJars.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/lib/testlibrary/java/util/jar/CreateMultiReleaseTestJars.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -69,13 +69,15 @@
+ " return 9;\n"
+ " }\n"
+ "}\n";
- final private String java10 = java8.replace("8", "10");
+ final int currentVersion = Runtime.version().major();
+ final String currentVersionStr = Integer.toString(currentVersion);
+ final private String javaCurrent = java8.replace("8", currentVersionStr);
final String readme8 = "This is the root readme file";
final String readme9 = "This is the version nine readme file";
- final String readme10 = "This is the version ten readme file";
+ final String readmeCurrent = "This is the current version readme file";
private Map<String,byte[]> rootClasses;
private Map<String,byte[]> version9Classes;
- private Map<String,byte[]> version10Classes;
+ private Map<String,byte[]> versionCurrentClasses;
public void buildUnversionedJar() throws IOException {
JarBuilder jb = new JarBuilder("unversioned.jar");
@@ -134,9 +136,9 @@
jb.addEntry("META-INF/versions/9/version/Version.java", java9.getBytes());
jb.addEntry("META-INF/versions/9/version/PackagePrivate.java", ppjava9.getBytes());
jb.addEntry("META-INF/versions/9/version/PackagePrivate.class", version9Classes.get("version.PackagePrivate"));
- jb.addEntry("META-INF/versions/10/README", readme10.getBytes());
- jb.addEntry("META-INF/versions/10/version/Version.java", java10.getBytes());
- jb.addEntry("META-INF/versions/10/version/Version.class", version10Classes.get("version.Version"));
+ jb.addEntry("META-INF/versions/" + currentVersionStr + "/README", readmeCurrent.getBytes());
+ jb.addEntry("META-INF/versions/" + currentVersionStr + "/version/Version.java", javaCurrent.getBytes());
+ jb.addEntry("META-INF/versions/" + currentVersionStr + "/version/Version.class", versionCurrentClasses.get("version.Version"));
}
public void buildSignedMultiReleaseJar() throws Exception {
@@ -186,7 +188,7 @@
input.put("version.PackagePrivate", ppjava9);
version9Classes = (new Compiler(input)).setRelease(9).compile();
input.clear();
- input.put("version.Version", java10);
- version10Classes = (new Compiler(input)).setRelease(9).compile(); // fixme in JDK 10
+ input.put("version.Version", javaCurrent);
+ versionCurrentClasses = (new Compiler(input)).compile(); // Use default release
}
}
--- a/test/jdk/sun/net/www/protocol/jar/MultiReleaseJarURLConnection.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/net/www/protocol/jar/MultiReleaseJarURLConnection.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8132734 8144062 8159785
+ * @bug 8132734 8144062 8159785 8194070
* @summary Test that URL connections to multi-release jars can be runtime versioned
* @library /lib/testlibrary/java/util/jar
* @modules jdk.compiler
@@ -108,7 +108,8 @@
Assert.assertTrue(readAndCompare(new URL(baseUrlEntry), "return 8"));
// the following tests will not work with unversioned jars
- if (style.equals("unversioned")) return;
+ if (style.equals("unversioned"))
+ return;
// direct access to versioned entry
String versUrlEntry = urlFile + "META-INF/versions/" + Runtime.version().major()
@@ -117,12 +118,6 @@
// adding any fragment does not change things
Assert.assertTrue(readAndCompare(new URL(versUrlEntry + "#runtime"), rtreturn));
Assert.assertTrue(readAndCompare(new URL(versUrlEntry + "#fragment"), rtreturn));
-
- // it really doesn't change things
- versUrlEntry = urlFile + "META-INF/versions/10/version/Version.java";
- Assert.assertTrue(readAndCompare(new URL(versUrlEntry), "return 10"));
- Assert.assertTrue(readAndCompare(new URL(versUrlEntry + "#runtime"), "return 10"));
- Assert.assertTrue(readAndCompare(new URL(versUrlEntry + "#fragment"), "return 10"));
}
@Test(dataProvider = "data")
@@ -225,7 +220,6 @@
cldr.close();
}
-
private boolean readAndCompare(URL url, String match) throws Exception {
boolean result;
// necessary to do it this way, instead of openStream(), so we can
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/nio/cs/EUCTWBufferBoundaryDecodeTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4734607 4767225 4863613
+ * @summary Decode a file using EUC-TW, test for decode errors
+ * @modules jdk.charsets
+ * @run main EUCTWBufferBoundaryDecodeTest
+ */
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+
+/*
+ * Tests for decode errors in NIO EUC-TW decoder. 4734607 details
+ * decoding errors which occur when the input file > 8k in size
+ * and contains numerous US-ASCII range chars
+ */
+public class EUCTWBufferBoundaryDecodeTest {
+
+ public static void main(String[] args) throws Exception {
+ final String inputFileName
+ = System.getProperty("os.name").startsWith("Windows")
+ ? "tradChinese.win.po"
+ : "tradChinese.po";
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream(1024 * 120);
+
+ File inputFile = new File(System.getProperty("test.src"), inputFileName);
+ FileInputStream fis = new FileInputStream(inputFile);
+
+ // Decode the EUC_TW source file, re-encode it -- (roundtrip)
+ // input and output files ought to be byte for byte identical
+ BufferedReader bin
+ = new BufferedReader(new InputStreamReader(fis, "EUC_TW"));
+ BufferedWriter bout
+ = new BufferedWriter(new OutputStreamWriter(bos, "EUC-TW"));
+
+ String line = bin.readLine();
+
+ while (line != null) {
+ bout.write(line);
+ bout.newLine();
+ line = bin.readLine();
+ }
+
+ bout.close();
+ bin.close();
+
+ // Compare the output with the expected output byte by byte
+ byte[] outputBytes = bos.toByteArray();
+ int i = 0;
+ FileInputStream fi = new FileInputStream(inputFile);
+
+ while (i < outputBytes.length) {
+ byte b = (byte) fi.read();
+ if (b != outputBytes[i++]) {
+ throw new Exception("bug 4734607: test failed");
+ }
+ }
+ fi.close();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/nio/cs/MalformedSurrogateStringTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4153987 6354525
+ * @summary Malformed surrogates should be handled by the converter in
+ * substitution mode.
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+
+public class MalformedSurrogateStringTest {
+
+ public static void main(String[] args) throws Exception {
+
+ String fe = System.getProperty("file.encoding");
+ if ( fe.equalsIgnoreCase("UTF8")
+ || fe.equalsIgnoreCase("UTF-8")
+ || fe.equalsIgnoreCase("UTF_8"))
+ // This test is meaningless if the default charset
+ // does handle surrogates
+ return;
+
+ System.out.println("Testing string conversion...");
+ /* Example with malformed surrogate, and an offset */
+ String t = "abc\uD800\uDB00efgh";
+ String t2 = t.substring(2);
+ byte[] b = t2.getBytes();
+ System.err.println(b.length);
+ for (int i = 0; i < b.length; i++)
+ System.err.println("[" + i + "]" + "=" + (char) b[i]
+ + "=" + (int) b[i]);
+ if (b.length != 7) {
+ throw new Exception("Bad string conversion for bad surrogate");
+ }
+
+ /* Example with a proper surrogate, no offset. Always worked */
+ String t3 = "abc\uD800\uDC00efgh";
+ byte[] b2 = t3.getBytes();
+ System.out.println(b2.length);
+ for(int i = 0; i < b2.length; i++)
+ System.err.println("[" + i + "]" + "=" + (char) b2[i]);
+ if (b2.length != 8) {
+ throw new Exception("Bad string conversion for good surrogate");
+ }
+
+ OutputStream os = new ByteArrayOutputStream();
+ OutputStreamWriter osw = new OutputStreamWriter(os);
+ System.out.println("Testing flush....");
+ /* Check for the case where the converter has a left over
+ high surrogate when flush is called on the converter */
+ osw.flush();
+ String s = "abc\uD800"; // High surrogate
+ char[] c = s.toCharArray();
+ osw.write(s, 0, 4);
+ osw.flush();
+
+ System.out.println("Testing convert...");
+ /* Verify that all other characters go through */
+ for (int k = 1; k < 65535 ; k++) {
+ osw.write("Char[" + k + "]=\"" + ((char) k) + "\"");
+ }
+
+ }
+}
--- a/test/jdk/sun/nio/cs/TestCp834_SBCS.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/nio/cs/TestCp834_SBCS.java Fri Feb 02 09:04:45 2018 -0800
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 6379808
+ * @bug 6379808 8166339
* @summary Check all Cp933 SBCS characters are not supported in Cp834
* @modules jdk.charsets
*/
@@ -62,17 +62,34 @@
if ((c = cb.get()) != '\ufffd') {
// OK, this is a SBCS character in Cp933
if (dec834.decode(ByteBuffer.wrap(ba)).get() != '\ufffd')
- throw new Exception("SBCS is supported in IBM834 decoder");
+ throw new RuntimeException("SBCS is supported in IBM834 decoder");
if (enc834.canEncode(c))
- throw new Exception("SBCS can be encoded in IBM834 encoder");
+ throw new RuntimeException("SBCS can be encoded in IBM834 encoder");
ca[0] = c;
ByteBuffer bb = enc834.encode(CharBuffer.wrap(ca));
if (bb.get() != (byte)0xfe || bb.get() != (byte)0xfe)
- throw new Exception("SBCS is supported in IBM834 encoder");
+ throw new RuntimeException("SBCS is supported in IBM834 encoder");
}
}
}
+
+ // 8166339: cp834 should handle unmappable bytes as dobule-byte pair.
+ if (! new String("\ufffd".getBytes("cp834"), "cp834").equals("\ufffd")) {
+ throw new RuntimeException("u+fffd roundtrip failed");
+ }
+
+ if (! new String("a".getBytes("cp834"), "cp834").equals("\ufffd") ||
+ ! new String(new byte[] { 0x41, 0x40}, "cp834").equals("\ufffd")) {
+ throw new RuntimeException("decoding unmappable don't return u+fffd");
+ }
+
+ CoderResult cr = Charset.forName("Cp834").newDecoder().decode(
+ ByteBuffer.wrap(new byte[] { 0x41, 0x40}), CharBuffer.wrap(new char[2]), true);
+ if (cr.isError() && cr.length() != 2) {
+ throw new RuntimeException("decoding unmappable don't return unmmappable(2)");
+ }
+
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/nio/cs/tradChinese.po Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,2380 @@
+domain "ES_SCRIPTS"
+#
+#==============================
+# <WS>/packages/Setup/es-inst
+#==============================
+msgid "You need to be root before running this program.\n"
+msgstr "ȢЩǿȩҳ root\n"
+msgid "Can not remove the directory /tmp/SunMC30Install\n"
+msgstr " /tmp/SunMC30Install\n"
+msgid "Can not create the directory /tmp/SunMC30Install/sbin\n"
+msgstr "ǡ /tmp/SunMC30Install/sbin\n"
+msgid "Can not copy the required files to /tmp/SunMC30Install\n"
+msgstr "̯ /tmp/SunMC30Install\n"
+msgid "Can not open the display. Either X server is not allowing\n"
+msgstr " Either X server is not allowing\n"
+msgid "the connection or you are running it from console login.\n"
+msgstr "ϯƺīơ\n"
+msgid "Please read Sun Management Center installation Readme and\n"
+msgstr " Sun Management Center Readme \n"
+msgid "run installation as mentioned.\n"
+msgstr "ҡ\n"
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid " Space calculations will be wrong."
+msgstr " Ϩȴ먡"
+msgid "Insufficient disk space to install the requested Sun Management Center components"
+msgstr "ȴϨƫ Sun Management Center ǵ"
+msgid " - Respecify the components to install so it takes less space"
+msgstr " - ģ́ŷϨ"
+msgid " - Uninstall some existing packages to make room for Sun Management Center"
+msgstr " - ġܢȴաϨ Sun Management Center"
+msgid " - Make a soft link for $2 that points to more space"
+msgstr " - ҳ $2 ܨġԶڰ̱Ϩ"
+msgid " - Ask your system administrator for help"
+msgstr " - ˷ܡɷ"
+msgid "Package $2 is already installed on this system."
+msgstr "Ⱥ˷ĸħ $2"
+msgid "Please verify the platform for package: $2"
+msgstr "ƺ$2"
+msgid "Found: $2"
+msgstr "̯$2"
+msgid "Skipping package $2"
+msgstr " $2"
+msgid "There appear to be some permission problems with the installation"
+msgstr "ĸƫȴġƫ"
+msgid "directory: $2"
+msgstr "$2"
+msgid "In order to install Sun Management Center, root must be able to write to the"
+msgstr " Sun Management Centerroot ϯ̦ȴ"
+msgid "installation directory and own the files in that directory."
+msgstr "īƫ⡢ȴĶ"
+msgid "Please check your configuration and try again."
+msgstr "ܡ"
+msgid "Exiting Sun Management Center installation."
+msgstr " Sun Management Center ʩ"
+msgid "Error: Cannot find pack key $2."
+msgstr "먡̯ $2"
+msgid "There are $2 layers for your selection:"
+msgstr "ȴ $2 Զȹ"
+msgid "No layers were selected for installation."
+msgstr "ȴ̽ȹ"
+msgid "No layers were found for installation."
+msgstr "̯ȹ"
+msgid "No packs are defined in the installation configuration file."
+msgstr "ա"
+msgid "Please select the packs to install:"
+msgstr "̽ա"
+msgid "No packs were selected for installation."
+msgstr "̽ա"
+msgid "Error: Cannot find component key $2."
+msgstr "먡̯ǵ $2"
+msgid "Error: Cannot find key $2."
+msgstr "먡̯ $2"
+msgid " Component $2 has already been installed."
+msgstr " ǵ $2"
+msgid " The corresponding packages are: $2"
+msgstr " ҳ$2"
+msgid " Invalid source directory."
+msgstr " 硤"
+msgid "Source directory: $2"
+msgstr "硨$2"
+msgid "Invalid parameter for productExists\\\(\\\): $2"
+msgstr " productExists ٶ\\\(\\\)$2"
+msgid "Production Environment Installation"
+msgstr "ܨ"
+msgid "Developer Environment Installation"
+msgstr "ĩ"
+msgid "Cannot find $2."
+msgstr "̯ $2"
+msgid "Invalid License, please buy a valid license."
+msgstr "桢ȴ⡤"
+msgid " Invalid entry."
+msgstr " "
+msgid " Installation configuration files not found."
+msgstr " ̯"
+msgid "You can install only agent components on Solaris 2.5.1"
+msgstr "ƫƷ Solaris 2.5.1 ĸܡȢǵ"
+msgid "Select one of the following:"
+msgstr "̽Ķġ"
+msgid "\\\(1\\\) Production Environment \\\(PE\\\)"
+msgstr "\\\(1\\\) ܨ \\\(PE\\\)"
+msgid "\\\(2\\\) Developer Environment \\\(DE\\\)"
+msgstr "\\\(2\\\) ĩ \\\(DE\\\)"
+msgid "Some components have already been installed in $2"
+msgstr " $2 ħšǵ"
+msgid "The target directory will be set to $2"
+msgstr "ҳ $2"
+msgid "Cannot create the directory $2"
+msgstr "ǡ $2"
+msgid "Target directory: $2"
+msgstr "硨$2"
+msgid "Package $2 is already installed."
+msgstr " $2 ҡ"
+msgid "Package not found: $2"
+msgstr "̯ա$2"
+msgid "Error: Cannot find pack key $2."
+msgstr "먡̯ $2"
+msgid "Pack: $2"
+msgstr "ա$2"
+msgid " Please select the components to install:"
+msgstr " ̽ǵ"
+msgid " Component $2 is essential and will be automatically installed."
+msgstr " $2 ҳǵٯҡ"
+msgid " Component $2 has already been installed."
+msgstr " ǵ $2"
+msgid " The corresponding packages are: $2"
+msgstr " ҳ$2"
+msgid " Component $2 is dependent on: $3"
+msgstr " ǵ $2 ʡ$3"
+msgid " The component\\\(s\\\) will be automatically installed."
+msgstr " ǵٯҡ"
+msgid " Selected Components: $2"
+msgstr " ̽ǵ$2"
+msgid " Selected Components: \\\<default\\\>"
+msgstr " ̽ǵ\\\<\\\>"
+msgid " Warning - Could not find pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Warning - Could not find the pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Warning - Could not find the pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Checking disk space..."
+msgstr "Ϩ..."
+msgid "Insufficient disk space to install Sun Management Center Database Software"
+msgstr "ȴϨƫ Sun Management Center ջ"
+msgid "Sun Management Center DB application software requires: $2 Kbytes"
+msgstr "Sun Management Center DB ȢϨ桨$2 KB"
+msgid "The installation directory \\\"$2\\\" has: $3 Kbytes"
+msgstr " \\\"$2\\\" ȴϨ桨$3 KB"
+msgid "Please supply a directory."
+msgstr "硤"
+msgid "Insufficient disk space to install Sun Management Center Database Dbfiles"
+msgstr "ȴϨƫ Sun Management Center ջ Db "
+msgid "Sun Management Center DB application software requires: $2 Kbytes"
+msgstr "Sun Management Center DB ȢϨ桨$2 KB"
+msgid "The installation directory \\\"$2\\\" has: $3 Kbytes"
+msgstr " \\\"$2\\\" ȴϨ桨$3 KB"
+msgid "Please supply a directory."
+msgstr "硤"
+msgid "Disk Space Requirements:"
+msgstr "Ϩ塨"
+msgid "Space required \\\(in $2\\\): $3 blocks."
+msgstr "Ϩ \\\($2 \\\)$3 Զٴۡ"
+msgid "Space available \\\(in $2\\\): $3 blocks."
+msgstr "ƫϨ \\\($2 \\\)$3 Զٴۡ"
+msgid "Insufficient space available in $2"
+msgstr "$2 ƫϨ"
+msgid "Here are some possible fixes to alleviate the disk space problem:"
+msgstr "ĶҳƫϨΡ"
+msgid "\\\"$2\\\" resides on CD \\\#$3."
+msgstr "\\\"$2\\\" \\\#$3 ĸ"
+msgid "New source directory: $2"
+msgstr "硨$2"
+msgid "Invalid directory."
+msgstr "硤"
+msgid "Installing the components..."
+msgstr "ǵ..."
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "The package $2 is already installed"
+msgstr " $2"
+msgid " Selection Summary"
+msgstr " "
+msgid "Looking for addon products on CD \\\#2..."
+msgstr " CD \\\#2 ĸܨ..."
+msgid "New source directory: $2"
+msgstr "硨$2"
+msgid " Sun Management Center 3.0 Addons Product Selection: "
+msgstr " Sun Management Center 3.0 ܨ塨 "
+msgid "Installing the product: $2"
+msgstr "ܨ¡$2"
+msgid "Cannot find pkginfo file for package: $2"
+msgstr "̯ pkginfo $2"
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "Supports: $2 - $3"
+msgstr "Ρ$2 - $3"
+msgid "Supports: $2"
+msgstr "Ρ$2"
+msgid "Name: $2"
+msgstr "ꢡ$2"
+msgid "Description: $2"
+msgstr "$2"
+msgid "Unsupported OS version: $2"
+msgstr " OS ۡ$2"
+msgid "No components to install."
+msgstr "ȴǵ"
+msgid "A previous version of Sun Management Center exists."
+msgstr "ȴ Sun Management Center 㡤"
+msgid "Please uninstall it locally in \\\"$2\\\"."
+msgstr "ҡ \\\"$2\\\" 㡿"
+msgid "Cannot find $2"
+msgstr "̯ $2"
+msgid "Error copying the locale files to: $2"
+msgstr "̯Ķ먡$2"
+msgid "Setup script will use English."
+msgstr " script ơ"
+msgid "Please run setup locally in \\\"$2\\\"."
+msgstr " \\\"$2\\\" 㡿"
+msgid "ESROOT is not set."
+msgstr " ESROOT"
+msgid "Invalid directory: $2"
+msgstr "硨$2"
+msgid "Invalid file: $2"
+msgstr "$2"
+msgid "Both -S and -T options must be specified"
+msgstr "-S -T ̥Զ"
+msgid "This script will help you to install the Sun Management Center software."
+msgstr " script ̶ɷ Sun Management Center ա"
+msgid "Do you want to install this package now?"
+msgstr "ǡɻȺա"
+msgid " Do you want to proceed?"
+msgstr " "
+msgid " Do you want to install components in layer: $2?"
+msgstr " Ķȹǵ$2?"
+msgid " Do you want to install $2?"
+msgstr " $2"
+msgid "Do you want to install the product: $2?"
+msgstr "Ⱥܨ¡$2?"
+msgid "Do you want to install this package now?"
+msgstr "ǡɻȺա"
+msgid "Would you like to uninstall it now?"
+msgstr "ǡɻá"
+msgid "Would you like to save your old data?"
+msgstr "á"
+msgid "Do you want to run setup now?"
+msgstr "ǡɻҡ"
+msgid "Please enter the source directory:"
+msgstr "ī硨"
+msgid "Enter the development system license: "
+msgstr "ī˷⡨ "
+msgid "Enter your choice: [1\\\|2]"
+msgstr "ī塨[1\\\|2]"
+msgid "Please enter the target directory [$2]:"
+msgstr "ī [$2]"
+msgid "Enter the directory to install the database: "
+msgstr "īջ硨 "
+msgid "Please insert the second CD or enter the source directory from disk 2 \\\[$2\\\]"
+msgstr "īĨگ CD ī 2 \\\[$2\\\]"
+msgid "Please enter the new source directory:"
+msgstr "ī硨"
+msgid "Please enter the OS version for \\\"$2\\\" \\\[$3\\\]: "
+msgstr "ī \\\"$2\\\" OS \\\[$3\\\] "
+msgid "Please enter the platform for \\\"$2\\\" \\\[$3\\\]: "
+msgstr "ī \\\"$2\\\" ƺ \\\[$3\\\] "
+msgid "Log file: $2"
+msgstr "$2"
+msgid " End of Installation "
+msgstr " "
+msgid "For installing Sun Management Center on $2, we need to know the"
+msgstr "ҳħ Sun Management Center $2 ĸʼԯϡ"
+msgid "operating system on $2. This should be the output of the command"
+msgstr "$2 ĸɢ˷ӡ"
+msgid "/usr/bin/uname -r. The command must be executed on a machine booted with"
+msgstr "/usr/bin/uname -r Ϊ"
+msgid "disk mounted on $2"
+msgstr " $2 ٯĸ硤"
+msgid "For installing Sun Management Center on $2, we need to know the"
+msgstr "ҳħ Sun Management Center $2 ĸʼԯϡ"
+msgid "machine type of machine whose root filesystem is or will be mounted on $2."
+msgstr "̧˷ɻ $2 ĸΡ"
+msgid "This should be the output of the following command"
+msgstr "ĶΪ"
+msgid " /usr/platform/PLATFORM/sbin/prtdiag \\\| /usr/bin/head -1 \\\| /usr/bin/cut -f2 -d:"
+msgstr " /usr/platform/PLATFORM/sbin/prtdiag \\\| /usr/bin/head -1 \\\| /usr/bin/cut -f2 -d:"
+msgid "Please note that the above commands must be executed on the target machine."
+msgstr "ĸĸ硤"
+msgid "Would you like to migrate your 2.x data?"
+msgstr " 2.x á"
+msgid "A previous version of Sun Management Center Data exists."
+msgstr "ȴ Sun Management Center 㡤"
+msgid "This will remove all files under $2. If you have any custom"
+msgstr " $2 ĶȴΪԶĶȴ"
+msgid "scripts under this directory, please move them to an alternate location"
+msgstr "Ƕ scriptsЩԯ"
+msgid "before proceeding."
+msgstr "̯"
+msgid "Do you wish to continue with the removal of the existing 2.x data"
+msgstr "ܢȴ 2.x "
+#
+#===============================
+# <WS>/packages/Setup/es-setup
+#===============================
+msgid "Setup of $2 component failed."
+msgstr " $2 ǵ"
+msgid "Exiting setup."
+msgstr ""
+msgid "The Sun Management Center Setup File \\\($2\\\)$3"
+msgstr "Sun Management Center \\\($2\\\)$3"
+msgid " is missing. Cannot Setup Sun Management Center $2."
+msgstr " ¡ Sun Management Center $2"
+msgid "Initiating setup for Sun Management Center $2 Component."
+msgstr " Sun Management Center $2 ǵ "
+msgid "Please read the release notes to configure the device type."
+msgstr "Ρ"
+msgid "Using log file: $2."
+msgstr "$2."
+msgid " Sun Management Center Setup Program"
+msgstr " Sun Management Center Ȣ"
+msgid "This program does setup of Sun Management Center components that are installed on your system."
+msgstr "ȺȢ˷ĸ Sun Management Center ǵ"
+msgid "Checking for Sun Management Center components installed on your system."
+msgstr "˷ĸ Sun Management Center ǵ"
+msgid "You Do not have any Sun Management Center components installed."
+msgstr "Ƕ Sun Management Center ǵ"
+msgid "You may want to run setup after installing"
+msgstr " Sun Management Center ǵѥƫ"
+msgid " the Sun Management Center components."
+msgstr " Ȣ"
+msgid "You have the following Sun Management Center components installed"
+msgstr "ħĶ Sun Management Center ǵ"
+msgid " Sun Management Center Server"
+msgstr " Sun Management Center Τ"
+msgid " Sun Management Center Agent"
+msgstr " Sun Management Center ܡȢ"
+msgid " Sun Management Center Console"
+msgstr " Sun Management Center ƺ"
+msgid "This script will perform the setup for each of these components"
+msgstr " Script ҳǵʩ"
+msgid "Core Sun Management Center setup complete."
+msgstr " Sun Management Center ܫ"
+msgid "Setup of Sun Management Center addons incomplete. Exiting"
+msgstr " Sun Management Center ȩ Exiting"
+msgid "Sun Management Center setup complete."
+msgstr " Sun Management Center ܫ"
+msgid "Problems occured with setup of the following addons: $2"
+msgstr "Ķ$2"
+msgid "Setup log stored in $2"
+msgstr " $2 "
+msgid "A minimum of 256 MB RAM is required to run Sun Management Center."
+msgstr "ŷȴ 256 MB RAM Sun Management Center"
+msgid "Current system has $2 MB RAM."
+msgstr "Щ˷̦ȴ $2 MB RAM"
+msgid "Can not continue to setup Sun Management Center DB."
+msgstr " Sun Management Center DB"
+msgid "Checking /etc/system file..."
+msgstr " /etc/system ..."
+msgid "Checking memory available..."
+msgstr "ƫش..."
+msgid "Checking /etc/system file error. It can not be updated."
+msgstr " /etc/system 먡 It can not be updated."
+msgid "The /etc/system file needs to be changed for Sun Management Center DB requirements."
+msgstr " /etc/system Sun Management Center DB 塤"
+msgid "Backing up /etc/system to /etc/system.SunMCDB.backup"
+msgstr "ެǹ /etc/system to /etc/system.SunMCDB.backup"
+msgid "/etc/system file has not been changed."
+msgstr " /etc/system file "
+msgid "In order for kernel variable changes to take effect, this "
+msgstr "ҳ桢ٯ"
+msgid "machine must be rebooted. You must reboot this machine now"
+msgstr "檡ǡɻٯ"
+msgid "and then run the setup again."
+msgstr "ѥԶʩ"
+msgid "Cannot create link $2 to directory $3"
+msgstr "ǡͻ $3 $2"
+msgid "Sun Management Center DB setup cannot continue."
+msgstr "Sun Management Center DB ʩ"
+msgid "Error changing ownership of $2 to root. Installation cannot continue."
+msgstr " $2 ȴҳ root ɢ먡ҡ"
+msgid "Configuring Sun Management Center DB listener and service files..."
+msgstr " Sun Management Center DB Τ٭..."
+msgid "The default listener port $2 for Sun Management Center DB has already been used."
+msgstr "Sun Management Center DB $2 ݷ"
+msgid "Please input another port number for Sun Management Center DB listener."
+msgstr "īƶġԶ Sun Management Center DB "
+msgid "Error in resetting the configuration files for Sun Management Center DB."
+msgstr " Sun Management Center DB 먡"
+msgid "Linking database, Please wait"
+msgstr "ջԷ"
+msgid "in the event of error, see /tmp/relink.log"
+msgstr "ǵ㡢ٶ /tmp/relink.log"
+msgid "Create ora passord file"
+msgstr "ǡ ora "
+msgid "/usr/bin/make is needed on Sun Management Center server machine. The current"
+msgstr "Sun Management Center Τĸȴ /usr/bin/makeЩ"
+msgid "failed to create internal user password file : $2"
+msgstr "ǡϯ$2"
+msgid "does not have it. Please make this file available and run setup again"
+msgstr "ȴԶҳƫѥʩ"
+msgid "execution of make -f ins_net_server.mk install failed"
+msgstr "make -f ins_net_server.mk install "
+msgid "see /tmp/make.log file for details"
+msgstr "ٶ /tmp/make.log ع"
+msgid "Database setup failed : $2 does not exist"
+msgstr "ջ$2 "
+msgid "Database setup failed : mkaggregatefiles.ksh failed"
+msgstr "ջmkaggregatefiles.ksh "
+msgid "Database setup failed : db-start failed"
+msgstr "ջdb-start "
+msgid "Please wait, Sun Management Center database setup in progress. It may take 15 to 20 minutes"
+msgstr "Է Sun Management Center ջƫĸ 15 ̯ 20 š"
+msgid "Database setup failed : build-smc-oracle-recovery.ksh failed"
+msgstr "ջbuild-smc-oracle-recovery.ksh "
+msgid "Please wait, Sun Management Center database setup in progress. It may take 15 to 20 minutes"
+msgstr "Է Sun Management Center ջƫĸ 15 ̯ 20 š"
+msgid "Database setup failed : build-smc-oracle-recovery.ksh failed"
+msgstr "ջbuild-smc-oracle-recovery.ksh "
+msgid "Found symon 2.x import data"
+msgstr "̯ symon 2.x ī"
+msgid "about to import symon 2.x data"
+msgstr "ī symon 2.x "
+msgid "cannot find the 2.x import script file $2"
+msgstr "̯ 2.x ī Script $2"
+msgid "will not import symon 2.x data"
+msgstr "ī symon 2.x "
+msgid "Database setup failed : db-stop failed"
+msgstr "ջdb-stop "
+msgid "A problem occured with $2 setup. Do you want to continue?"
+msgstr " $2 ܢ"
+msgid " Do you wish to update /etc/system file?"
+msgstr " /etc/system "
+msgid "A problem occured with $2 setup. Do you want to continue?"
+msgstr " $2 ܢ"
+msgid " Do you wish to keep any existing topology and event data"
+msgstr " Ƕܢůǵ"
+msgid " Do you want to perform a symon 2.x data import?"
+msgstr " symon 2.x ī"
+msgid "Do you want to start Sun Management Center agent and server components now"
+msgstr "ǡɻٯ Sun Management Center ܡȢΤǵ"
+msgid "Do you want to start Sun Management Center agent now"
+msgstr "ǡɻٯ Sun Management Center ܡȢ"
+msgid "Error: It seems the file $2 is not writable, could not update the file."
+msgstr "먡 $2 ī"
+msgid "Configuring the system for setup, please wait."
+msgstr "˷Է"
+#
+#===============================
+# <WS>/packages/Setup/db-start
+#===============================
+msgid "Listener and Database are up and running\n"
+msgstr "ջɳɢ\n"
+msgid "the current sid \n"
+msgstr "Щ sid \n"
+msgid "the current orahome \n"
+msgstr "Щ orahome \n"
+msgid "unknown system type, exiting......................\n"
+msgstr "˷......................\n"
+msgid "getHostName: failed to obtain current host from hostname command\n"
+msgstr "getHostNameڷ hostname ̽ڵЩ\n"
+msgid "current host : $2\n"
+msgstr "Щ$2\n"
+msgid "getUserName: failed to obtain user name from id command\n"
+msgstr "getUserNameڷ id ̽ڵϯ\n"
+msgid "current user name : $2\n"
+msgstr "Щϯꢡ$2\n"
+msgid "getUserGroup: failed to obtain user group from id command\n"
+msgstr "getUserGroupڷ id ̽ڵ\n"
+msgid "current user group : $2\n"
+msgstr "Щϯڡ$2\n"
+msgid "path_app : $2\n"
+msgstr "path_app :$2\n"
+msgid "found $2 on path in $3\n"
+msgstr " $3 ̯ $2\n"
+msgid "can not find $2 on path, exiting.......................\n"
+msgstr "ĸ̯ $2.......................\n"
+msgid "verifyDatabaseUp: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseUpڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseUp: instance is executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseUp: instance is not executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseDown: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseDownڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseDown: instance is executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyDatabaseDown: instance is not executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyListenerUp: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerUpڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerUp: listener $2 is execution\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerUp: listener $2 is not execution\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerDown: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerDownڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerDown: listener $2 is execution\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyListenerDown: listener $2 is not execution\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from df\n"
+msgstr "verifyFilesystemPermڷ df ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from df\n"
+msgstr "verifyFilesystemPermڷ df ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from mount comma\n"
+msgstr "verifyFilesystemPermڷ comma ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: filesystem $2 is not mounted setuid\n"
+msgstr "verifyFilesystemPerm˷ $2 setuid\n"
+msgid " must re-mount the filesystem with setuid enabled\n"
+msgstr " setuid ٯ˷\n"
+msgid "verifyFilesystemPerm: filesystem $2 is mounted setuid, OK\n"
+msgstr "verifyFilesystemPerm˷ $2 setuid\n"
+msgid "verifyListenerStatus: failed to obtain listener status for alias: $2\n"
+msgstr "verifyListenerStatusҳĶɱ̽ڵ表$2\n"
+msgid "verifyListenerStatus: listener status is good for alias: $2\n"
+msgstr "verifyListenerStatusĶɱ$2\n"
+msgid "verifyListenerStatus: listener status is not good for alias: $2\n"
+msgstr "verifyListenerStatusĶɱ$2\n"
+msgid "the specified path \\\($2\\\) does not exist\n"
+msgstr " \\\($2\\\) \n"
+msgid "tmpdir \n"
+msgstr "tmpdir \n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain accessperms from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵ̽$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain username from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵϯꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain groupname from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: access perms for \\\($2\\\) is not at least 755\n"
+msgstr "verifyGoodOraclePermOwnership \\\($2\\\) ̽ŷ 755\n"
+msgid "verifyGoodOraclePermOwnership: access perms ok\n"
+msgstr "verifyGoodOraclePermOwnership̽ڦ\n"
+msgid "verifyGoodOraclePermOwnership: owner \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 ȴϯ \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: owner ok\n"
+msgstr "verifyGoodOraclePermOwnershipȴϯڦ\n"
+msgid "verifyGoodOraclePermOwnership: group \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: group ok\n"
+msgstr "verifyGoodOraclePermOwnershipڦ\n"
+msgid "**** directory : $2 does not exist\n"
+msgstr "**** 硨$2 \n"
+msgid "loop: current new $2\n"
+msgstr "Щ $2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain accessperms from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵ̽$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain username from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵϯꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain groupname from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: access perms for \\\($2\\\) is not at least 755\n"
+msgstr "verifyGoodOraclePermOwnership \\\($2\\\) ̽ŷ 755\n"
+msgid "verifyGoodOraclePermOwnership: access perms ok\n"
+msgstr "verifyGoodOraclePermOwnership̽ڦ\n"
+msgid "verifyGoodOraclePermOwnership: owner \\\($listuser\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 ȴϯ \\\($listuser\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: owner ok\n"
+msgstr "verifyGoodOraclePermOwnershipȴϯڦ\n"
+msgid "verifyGoodOraclePermOwnership: group \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: group ok\n"
+msgstr "verifyGoodOraclePermOwnershipڦ\n"
+msgid "**** file : $2 does not exist\n"
+msgstr "**** $2 \n"
+msgid "verifySharedMemUsage: failed to obtain ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̽ڵ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifySharedMemUsage: found ipcs \\\(shared memory segment\\\) info user : $2, group : $3, \\\(shid\\\) : $4\n"
+msgstr "verifySharedMemUsage̯ ipcs \\\(شٴ\\\) عϯ$2ڡ$3, \\\(shid\\\)$4\n"
+msgid "verifySharedMemUsage: did find ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̯ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifySharedMemUsage: did not find any ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̯Ƕ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifyActiveSemaphoresUsage: failed to obtain ipcs \\\(active semaphores\\\) info user : $2, group : $3\n"
+msgstr "verifyActiveSemaphoresUsage̽ڵ ipcs \\\(ɢ\\\) عϯ$2ڡ$3\n"
+msgid "verifyActiveSemaphoresUsage: found ipcs \\\(active semaphores\\\) info user : $2, group : $3, \\\(semid\\\) : $4\n"
+msgstr "verifyActiveSemaphoresUsage̯ ipcs \\\(ɢ\\\) عϯ$2ڡ$3, \\\(semid\\\)$4\n"
+msgid "verifyActiveSemaphoresUsage: did find ipcs \\\(active semaphores\\\) info user : $2, group : \n"
+msgstr "verifyActiveSemaphoresUsage̯ ipcs \\\(ɢ\\\) عϯ$2ڡ\n"
+msgid "verifyActiveSemaphoresUsage: did not find any ipcs \\\(active semaphores\\\) info user : $2, group : $3\n"
+msgstr "verifyActiveSemaphoresUsage̯Ƕ ipcs \\\(ɢ\\\) عϯ$2ڡ$3\n"
+msgid "startListener: failed to start listener, alias: $2\n"
+msgstr "startListenerٯ¡ɱء$2\n"
+msgid "startListener: listener started, alias: $2\n"
+msgstr "startListenerٯɱء$2\n"
+msgid "stopListener: failed to stop listener, alias: $2\n"
+msgstr "stopListener¡ɱء$2\n"
+msgid "stopListener: listener stopped, alias: $2\n"
+msgstr "stopListenerϡɱء$2\n"
+msgid "removing existing listener log file $2"
+msgstr "ܢȴ $2"
+msgid "execution of verifySetuidFilesystemPerm $2 fail\n"
+msgstr "verifySetuidFilesystemPerm $2 \n"
+msgid "exiting........................\n"
+msgstr "........................\n"
+msgid "execution of $2 start $3 fail\n"
+msgstr "$2 ٯ $3 \n"
+msgid "execution of verifyListenerUp $2 fail\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "execution of verifyGoodListenerStatus $2 fail\n"
+msgstr " verifyGoodListenerStatus $2 \n"
+msgid "execution of sqlplus using @$2 fail\n"
+msgstr "ɳ @$2 sqlplus \n"
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "execution of verifyDatabaseUp $2 fail\n"
+msgstr "verifyDatabaseUp $2 \n"
+msgid "Listener and Database are up and running\n"
+msgstr "ջɳɢ\n"
+#
+#================================
+# <WS>/packages/Setup/es-device
+#================================
+msgid "Usage: $2 -ad Filename"
+msgstr "Ρ$2 -ad "
+msgid " where the options represent:"
+msgstr " ̧㡢"
+msgid " a : Add new device"
+msgstr " a"
+msgid " d : Delete device"
+msgstr " dɴ"
+msgid "This action is limited to superuser only."
+msgstr "Ⱥɢϯ"
+msgid "Exiting $2."
+msgstr " $2"
+msgid "create_node_family_file: Error! Invalid node object type $2"
+msgstr "create_node_family_file먡ǵ $2 "
+msgid "set_global_variable: Value not specified for $2"
+msgstr "set_global_variable $2 ԫ"
+msgid "set_global_variable: Invalid parameter $2"
+msgstr "set_global_variableٶ $2"
+msgid "delete_node: Invalid data in input file"
+msgstr "delete_nodeī"
+msgid "delete_node: $2 does not exist, verify input"
+msgstr "delete_node$2 㡢ī"
+msgid "delete_group: Invalid data in input file"
+msgstr "delete_groupī"
+msgid "delete_group: $2 does not exist, verify input"
+msgstr "delete_group$2 㡢ī"
+msgid "delete_group: Invalid group type $2"
+msgstr "delete_group $2 "
+msgid "delete_segment: Invalid data in input file"
+msgstr "delete_segmentī"
+msgid "delete_segment: $2 does not exist, verify input"
+msgstr "delete_segment$2 㡢ī"
+msgid "delete_segment: Invalid segment type $2"
+msgstr "delete_segmentٴ $2 "
+msgid "delete_composite: Invalid data in input file"
+msgstr "delete_compositeī"
+msgid "delete_composite: $2 does not exist, verify input"
+msgstr "delete_composite$2 㡢ī"
+msgid "validate_node_object_type: $2 or $3 exists"
+msgstr "validate_node_object_type$2 $3 "
+msgid "validate_i18n_key: Node object type exists in $2 line $3"
+msgstr "validate_i18n_keyǵ $2 $3"
+msgid "validate_i18n_key: Invalid i18n key: $2"
+msgstr "validate_i18n_keyi18n 桨$2"
+msgid "validate_group_i18n_type: $2 is invalid group type"
+msgstr "validate_group_i18n_type$2 "
+msgid "validate_group_i18n_key: Group object type exists in $2 line $3"
+msgstr "validate_group_i18n_keyǵ $2 $3"
+msgid "validate_segment_i18n_type: $2 is invalid segment type"
+msgstr "validate_segment_i18n_type$2 ٴ"
+msgid "validate_segment_i18n_key: Segment object type exists in $2 line $3"
+msgstr "validate_segment_i18n_keyٴǵ $2 $3"
+msgid "validate_composite_i18n_key: Composite object type exists in $2 line $3"
+msgstr "validate_composite_i18n_keyǵ $2 $3"
+msgid "validate_properties_file: Invalid property file name. Must be $2"
+msgstr "validate_properties_file桤 $2"
+msgid "validate_search_parameter: Invalid sysoid value $2"
+msgstr "validate_search_parametersysoid ԫ $2 "
+msgid "validate_icon_file: Check if file exists and permissions"
+msgstr "validate_icon_fileů"
+msgid "validate_hardware_module: Hardware Module name does not exist"
+msgstr "validate_hardware_module"
+msgid "validate_group_object_type: Invalid object type $2"
+msgstr "validate_group_object_typeǵ $2 "
+msgid "validate_group_object_type: Group object type exists in $2 line $3"
+msgstr "validate_group_object_typeǵ $2 $3"
+msgid "validate_segment_object_type: Invalid object type $2"
+msgstr "validate_segment_object_typeǵ $2 "
+msgid "validate_segment_object_type: Segment object type exists in $2 line $3"
+msgstr "validate_segment_object_typeٴǵ $2 $3"
+msgid "add_node: Invalid node type $2"
+msgstr "add_node $2 "
+msgid "add_node: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_node $2 ů"
+msgid "add_group: Invalid group type $2"
+msgstr "add_group $2 "
+msgid "add_group: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_group $2 ů"
+msgid "add_segment: Invalid segment type $2"
+msgstr "add_segmentٴ $2 "
+msgid "add_segment: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_segment $2 ů"
+msgid "add_composite: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_composite $2 ů"
+msgid "Package SUNWessrv is not installed on this system"
+msgstr "Ⱥ˷ SUNWessrv "
+msgid "Unable to create logfile $2"
+msgstr "ǡ $2"
+msgid "$2 file does not exist"
+msgstr "$2 "
+msgid "$2 file does not have read permissions"
+msgstr "$2 ̦̽"
+msgid "Invalid Operation: Operation not supported"
+msgstr "ɢ桨ɢ̿"
+msgid "process_delete_data: Object type $2 missing in data file"
+msgstr "process_delete_dataŷǵ $2"
+msgid "validate_monitor_via : $2 is invalid type"
+msgstr "validate_monitor_via$2 "
+msgid "validate_node_type:$2 is invalid node type"
+msgstr "validate_node_type$2 "
+msgid "validate_node_object_type: Invalid object type $2"
+msgstr "validate_node_object_typeǵ $2 "
+msgid "validate_i18n_key: Invalid object type $2"
+msgstr "validate_i18n_keyǵ $2 "
+msgid "add_device: Invalid object type $2"
+msgstr "add_deviceǵ $2 "
+msgid "validate_node_object_type: Node object type exists in $2 line $3"
+msgstr "validate_node_object_typeǵ $2 $3"
+msgid "validate_object_type: Invalid object type $2"
+msgstr "validate_object_typeǵ $2 "
+msgid "validate_group_type: $2 is invalid group type"
+msgstr "validate_group_type$2 "
+msgid "validate_segment_type: Invalid value $2 for Segment_type"
+msgstr "validate_segment_typeSegment_type ԫ $2 "
+msgid " (for example: ./es-device -a /tmp/userdata)"
+msgstr " (./es-device -a /tmp/userdata)"
+msgid " (for example: ./es-device -d /tmp/userdata)"
+msgstr " (./es-device -d /tmp/userdata)"
+msgid "validate_user_name: No value specified for User_name"
+msgstr "validate_user_name User_name ԫ"
+msgid "validate_node_object_type: No value specified for Node_object_type"
+msgstr "validate_node_object_typeNode_object_type ԫ"
+msgid "validate_i18n_key: No value specified for i18n_key"
+msgstr "validate_i18n_key i18n_key ԫ"
+msgid "validate_properties_file: No value specified for Properties_file"
+msgstr "validate_properties_file Properties_file ԫ"
+msgid "validate_search_parameter: No value specified for Search_parameter"
+msgstr "validate_search_parameter Search_parameter ԫ"
+msgid "validate_icon_file: No value specified for icon"
+msgstr "validate_icon_fileԫ"
+msgid "validate_segment_object_type: No value specified for Segment object type"
+msgstr "validate_segment_object_typeٴǵԫ"
+#
+#==============================
+# <WS>/packages/Setup/db-stop
+#==============================
+msgid "getHostName: failed to obtain current host from hostname comma"
+msgstr "getHostNameڷ hostname ̽ڵЩ"
+msgid "current host : $2\n"
+msgstr "Щ$2\n"
+msgid "getUserName: failed to obtain user name from id comma\n"
+msgstr "getUserNameڷ id ̽ڵϯ\n"
+msgid "current user name : $2\n"
+msgstr "Щϯꢡ$2\n"
+msgid "getUserGroup: failed to obtain user group from id comma\n"
+msgstr "getUserGroupڷ id ̽ڵ\n"
+msgid "current user group : $2\n"
+msgstr "Щϯڡ$2\n"
+msgid "verifyDatabaseUp: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseUpڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseUp: instance is executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseUp: instance is not executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseDown: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseDownڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseDown: instance is executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyDatabaseDown: instance is not executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyListenerUp: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerUpڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerUp: listener $2 is executing\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerUp: listener $2 is not executing\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerDown: failed to obtain listener process info from \n"
+msgstr "verifyListenerDown̽ڵݨܡعڷ\n"
+msgid "verifyListenerDown: listener $2 is executing\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyListenerDown: listener $2 is not executing\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "the file $2 does not exist, exiting........................"
+msgstr " $2 㡢........................"
+msgid "performing a (shutdown immediate)......"
+msgstr "硾ǡɻ......"
+msgid "execution of $2 using \\@$3 failed"
+msgstr " \\@$3 $2 "
+msgid "exiting..........................\n"
+msgstr "........................\n"
+msgid "unable to perform normal shutdown, executing a shutdown abort"
+msgstr "ڦ"
+msgid "execution of $2 using adhoc shutdown-abort failed"
+msgstr " adhoc shutdown-abort $2 "
+msgid "execution of $2 stop $3 failed"
+msgstr "$2 $3 "
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "execution of sqlplus using $2 fail\n"
+msgstr " $2 sqlplus \n"
+msgid "can not find $2 on path, exiting.......................\n"
+msgstr "ĸ̯ $2.......................\n"
+#
+#=========================================
+# <WS>/packages/Setup/sm_setup_server.sh
+#=========================================
+msgid "The Sun Management Center Console help configuration file cannot be found."
+msgstr "̯ Sun Management Center ƺɷ"
+msgid "Please re-install the Sun Management Center Console component"
+msgstr " Sun Management Center ƺǵ"
+msgid "The base URL has been set to $2"
+msgstr " URL ҳ $2"
+msgid "Could not find group $2. You will have to set up"
+msgstr "̯ $2ٯ"
+msgid "the groups manually. Please add $3 to group $2."
+msgstr "ڡ $3 $2"
+msgid "User $3 in group $2 is not a valid user. Leaving it out of the esusers file."
+msgstr " $2 ϯ $3 ȴϯڷ esusers 桤"
+msgid "Adding user $2 from group $3 to esusers"
+msgstr " $3 ϯ $2 esusers"
+msgid "It appears that you already have some users \\\($2\\\)"
+msgstr "ƫȴġϯ \\\($2\\\)"
+msgid "configured as Sun Management Center administrators. Leaving these users in place."
+msgstr "ҳ Sun Management Center ܡޡϯݨ"
+msgid "You should setup a user as a Sun Management Center administrator."
+msgstr "ġϯҳ Sun Management Center ܡ"
+msgid "This person will be added to the esadm and esdomadm groups."
+msgstr "Ⱥϯ̯ esadm esdomadm 㡤"
+msgid "$2 is not a valid user."
+msgstr "$2 ȴϯ"
+msgid "The group $2 already exists on your system."
+msgstr "˷ĸ $2"
+msgid "Creating the group $2 that contains Sun Management Center $3 Users."
+msgstr "ǡ Sun Management Center $3 ϯ $2"
+msgid "Could not find $2 in $3"
+msgstr "$3 ̯ $2"
+msgid "This part of the setup process does the Sun Management Center Server Component setup."
+msgstr "šݨܡȩ Sun Management Center Τǵ"
+msgid "Unable to set $2 values."
+msgstr " $2 ԫ"
+msgid "agent.snmpPort is already configured in $2"
+msgstr "$2 ħ agent.snmpPort"
+msgid "topology.snmpPort is already configured in $2"
+msgstr "$2 ħ topology.snmpPort"
+msgid "The Sun Management Center base URL is relative to the Sun Management Center Console."
+msgstr " Sun Management Center URL Sun Management Center Cosole "
+msgid "The Sun Management Center Console is able to request help documentation via the network."
+msgstr " Sun Management Center ƺƫɷǵ衤"
+msgid "If you have installed Sun Management Center help documentation in an http-accessible"
+msgstr "Ϊƫ http ̽ĸħ Sun Management Center ɷǵ衢"
+msgid "location within your network, you may specify this location."
+msgstr "Ⱥ"
+msgid "If Sun Management Center help is installed on the console host, simply accept the default value."
+msgstr "Ϊ Sun Management Center ɷƺĸЬƷ̿ԫ"
+msgid "Completing Sun Management Center Server Component setup."
+msgstr "ȩ Sun Management Center Τǵ"
+msgid "Using security seed $2 for Sun Management Center server"
+msgstr "Sun Management Center Τ $2"
+msgid "Please enter a user to be the Sun Management Center administrator: "
+msgstr "īɢҳ Sun Management Center ܡϯ "
+msgid "Please enter a valid username: "
+msgstr "īȴϯꢡ "
+msgid "Please enter base URL to Sun Management Center help [local]: "
+msgstr "ī Sun Management Center ɷ URL [áٶ] "
+#
+#===================================
+# <WS>/packages/Setup/es-common.sh
+#===================================
+msgid "Enter \\\"y\\\" or \\\"n\\\" or \\\"q\\\""
+msgstr "ī \\\"y\\\" \\\"n\\\" \\\"q\\\""
+msgid "Exiting at user request"
+msgstr "ϯĶ"
+msgid "L10N_CODE not set!, LANG=$2"
+msgstr " L10N_CODELANG=$2"
+msgid "Cannot find locale directory for LANG: $2"
+msgstr "̯ LANG 硨$2"
+msgid "Expected to find it in: $2"
+msgstr "Ķ̯ơ$2"
+msgid "No Sun Management Center Packages are installed. Exiting."
+msgstr " Sun Management Center ա֡"
+msgid "Could not find xput executable: $2"
+msgstr "̯ xput ƫ$2"
+msgid "Cannot find file $2"
+msgstr "̯ $2"
+msgid "Moving $2 to $3"
+msgstr " $2 ̯ $3"
+msgid "-------------- WARNING -------------------"
+msgstr "-------------- -------------------"
+msgid "It appears that $2 $3 is already in use."
+msgstr "$2 $3 ƫ"
+msgid "Sun Management Center $2 may not be able to run due to this conflict."
+msgstr "ȺSun Management Center $2 ƫ硤"
+msgid "There are two ways to correct this conflict:"
+msgstr "ȴ̥ƫϫȺ"
+msgid " 1. Reconfigure the port that Sun Management Center uses."
+msgstr " 1. Sun Management Center ա"
+msgid " 2. Stop the process that is using the port."
+msgstr " 2. ݨܡ"
+msgid " You are currently running snmpdx, which may be causing the conflict."
+msgstr " Щ snmpdxƫӳ"
+msgid "Skipping the setting of port number for $2"
+msgstr "ܩ $2 "
+msgid "NOTE: Prior to starting Sun Management Center $2, stop the process using port $3."
+msgstr "ٯ Sun Management Center $2 Щǿ $3 ݨܡ"
+msgid "Updating $2 with new port number."
+msgstr " $2"
+msgid "This part of setup generates security keys used for communications"
+msgstr "šʩܨʩع"
+msgid "between processes. A seed must be provided to initialize the"
+msgstr ""
+msgid "keys. You can choose to use the standard Sun Management Center default or"
+msgstr "ƫ Sun Management Center ԫī"
+msgid "enter your own seed. If you do not generate the keys now,"
+msgstr "͡Ϊܢܨ"
+msgid "you can do so later using the procedure documented in the"
+msgstr "ƫѥߧ"
+msgid "Sun Management Center 3.0 Users Guide."
+msgstr "Sun Management Center 3.0 ϯв"
+msgid "Please make sure you use the same seed for all the machines you install."
+msgstr "ȴ͡"
+msgid "Invalid seed - type s to use default seed"
+msgstr " - Ѻ s "
+msgid "Using default Sun Management Center value for seed."
+msgstr " Sun Management Center ԫɢҳ"
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+msgid "Unable to create logfile $LOGFILE."
+msgstr "ǡ $LOGFILE"
+msgid "Started $0 at"
+msgstr "ٯ $0 "
+msgid "Running on"
+msgstr ""
+msgid "What seed would you like to use?\n"
+msgstr "͡\n"
+msgid "Invalid response in automated configuration file."
+msgstr "ٯȴܡ"
+msgid "Unsupported OS version: $2"
+msgstr " OS ۡ$2"
+msgid "Do you want to use a different port number for $2?"
+msgstr " $2 "
+msgid "Do you want to generate these keys using the Sun Management Center default seed?"
+msgstr " Sun Management Center ܨ"
+msgid "Please enter any port greater or equal to 1100 : "
+msgstr "īǶġ 1100 ա "
+msgid "Port $2 is not a valid port number, try another number : "
+msgstr " $2 ȴƶġԶ "
+msgid "Port $2 is also busy, try another - use s to skip setting the port number:"
+msgstr " $2 ľȤ㡢̧ - s ܩ"
+#
+#======================================
+# <WS>/packages/Setup/install-java.sh
+#======================================
+msgid "Java packages are not in $2"
+msgstr " Java $2 "
+msgid "All required Java packages are not in $2"
+msgstr "ȴ Java $2 "
+msgid "Installing java packages $2"
+msgstr " java $2"
+msgid "the system. Please install them first and then install Sun Management Center."
+msgstr "˷㡤ǿԯѥ Sun Management Center"
+msgid "Package $2 is installed on this system. This package is"
+msgstr " $2 Ⱥ˷㡤 This package is"
+msgid "incompatible with the java version required for Sun Management Center."
+msgstr " Sun Management Center java թ"
+msgid "This package needs to be uninstalled before installing java 2"
+msgstr "ǿȺѥ java 2"
+msgid "Removal of the package $2 failed, please remove it"
+msgstr " $2 ٯ"
+msgid "manually and then install Sun Management Center."
+msgstr "ѥ Sun Management Center"
+msgid "You need to install the following packages $2"
+msgstr "Ķ $2"
+msgid "If you do not choose to install it now, the installation will abort."
+msgstr "Ϊǡɻҡʩˡ"
+msgid "It seems some other version of java packages are present in $2"
+msgstr " $2 ȴƶġ java 㡤"
+msgid "You need to install Solaris_JDK_1.2.1_04 version of the following packages"
+msgstr " Solaris_JDK_1.2.1_04 Ķ"
+msgid "You can enter any directory to install the required version of JAVA."
+msgstr "ƫīǶ JAVA"
+msgid "No java packages to be removed."
+msgstr " java "
+msgid "Sun Management Center installation had overwritten your previous java installation."
+msgstr " Sun Management Center Ȣ̽ǿЩ java Ȣ"
+msgid "You can either keep the current installation or remove it."
+msgstr "ƫЩȢ桤"
+msgid "Warning - Could not find pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid " Space calculations will be wrong."
+msgstr " Ϩȴ먡"
+msgid "Java installation:"
+msgstr "Java ҡ"
+msgid "Space required \\\(in $2\\\): $3 blocks."
+msgstr "Ϩ \\\($2 \\\)$3 Զٴۡ"
+msgid "Space available \\\(in $2\\\): $3 blocks."
+msgstr "ƫϨ \\\($2 \\\)$3 Զٴۡ"
+msgid "Insufficient disk space to install Java components"
+msgstr "ȴϨƫ Java ǵ"
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "The following packages required by Java 2 are not installed on"
+msgstr "Ķ Java 2 "
+msgid "Packages: $2"
+msgstr "ա$2"
+msgid "The required version of Java is already installed in $2"
+msgstr " Java $2 "
+msgid "It seems some of the required packages are already present."
+msgstr "ȴš㡤"
+msgid "You can either overwrite the existing java version or install the"
+msgstr "ƫܢȴ java "
+msgid "required version in some other directory."
+msgstr "̧㡤"
+msgid "Invalid directory"
+msgstr ""
+msgid "Java packages couldnot be found in directory $2"
+msgstr " $2 ̯ Java "
+msgid "Do you want to install it now?"
+msgstr "ǡɻҡ"
+msgid "Do you want to overwrite the existing one?"
+msgstr "̽ܢȴۡ"
+msgid "Do you want to remove it?"
+msgstr "桩"
+msgid "Do you want to uninstall it now"
+msgstr "ǡɻ"
+msgid "Enter the base directory for JDK installation [$2]"
+msgstr "ī JDK [$2]"
+#
+#============================
+# <WS>/packages/Setup/es-db
+#============================
+msgid "A minimum of 256 MB RAM is required to install Sun Management Center server."
+msgstr "ŷȴ 256 MB RAM Sun Management Center Τ¡"
+msgid "Current system has $2 MB RAM."
+msgstr "Щ˷̦ȴ $2 MB RAM"
+msgid "Can not continue to install Sun Management Center server."
+msgstr " Sun Management Center Τ¡"
+msgid " Sun Management Center DB "
+msgstr " Sun Management Center DB "
+msgid " Sun Management Center Database Installation "
+msgstr " Sun Management Center ջ "
+msgid "Invalid parameters for installDB\\\(\\\)"
+msgstr " installDB\\\(\\\) ٶ"
+msgid "The following Sun Management Center database packages have already been installed on your system:"
+msgstr "˷ĸħĶ Sun Management Center ջա"
+msgid "Checking memory available..."
+msgstr "ƫش..."
+msgid "Creating the mount points..."
+msgstr "ǡ..."
+msgid "Error installing SUNWesora. Installation cannot continue."
+msgstr " SUNWesora 먡ҡ"
+msgid "Error installing SUNWestbl. Installation cannot continue."
+msgstr " SUNWestbl 먡ҡ"
+msgid "Sun Management Center DB packages installed successfully"
+msgstr "Sun Management Center DB ȩ"
+msgid "es-setup will perform the remainder of the config"
+msgstr "es-setup ̧š"
+#
+#======================================
+# <WS>/packages/Setup/install-patch.sh
+#======================================
+msgid "No patch checking on this platform"
+msgstr "ȺƺĸȢ"
+msgid "Could not find the patches in the following directory."
+msgstr "Ķ̯Ȣ"
+msgid "Installing patch $2..."
+msgstr "Ȣ $2..."
+msgid "Installation of patch $2 failed."
+msgstr "Ȣ $2 "
+msgid "Installation of patch $2 complete."
+msgstr "Ȣ $2 ȩ"
+msgid "Following patches are prerequisites to the java patches."
+msgstr " java ȢЩǿĶȢ"
+msgid "Please install them manually and then install Sun Management Center."
+msgstr "ٯѥ Sun Management Center"
+msgid "Installation of following patches failed, please install"
+msgstr "ĶȢٯ"
+msgid "them manually and then install Sun Management Center."
+msgstr "ѥ Sun Management Center"
+msgid "Checking for required OS patches, Please wait..."
+msgstr " OS ȢԷ..."
+msgid "Following is the list of required patches for java 2."
+msgstr "Ķҳ java 2 Ȣ̡"
+msgid "If you do not choose to install them now installation will abort."
+msgstr "Ϊǡɻҡʩˡ"
+msgid "Checking for required OS patches done."
+msgstr "ȩ OS Ȣ硤"
+msgid "Invalid directory."
+msgstr "硤"
+msgid "Do you want to install now"
+msgstr "ǡɻҡ"
+msgid "Please enter the directory that contains patches: "
+msgstr "īȴȢ硨 "
+#
+#=================================
+# <WS>/packages/Setup/es-restore
+#=================================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "The backup $2 does not exist"
+msgstr "ެǹ $2 "
+msgid "Checking installed Sun Management Center..."
+msgstr " Sun Management Center..."
+msgid "Recover the Sun Management Center Database and it will take a few minutes..."
+msgstr "ߦ Sun Management Center ջĸš..."
+msgid "Restore the Sun Management Center data."
+msgstr "ߦ Sun Management Center 衤"
+msgid "Shutdown Sun Management Center database, please wait."
+msgstr " Sun Management Center ջԷ"
+msgid "Recovery is fnished successfully. Please start Sun Management Center."
+msgstr "ɳȩߦϡٯ Sun Management Center"
+msgid "The Sun Management Center server components are not found or"
+msgstr "̯ Sun Management Center Τģ́"
+msgid "its installation is damaged. You need to run"
+msgstr "䴡"
+msgid "es-inst/es-setup to install Sun Management Center and then "
+msgstr "es-inst/es-setup Sun Management Centerѥ"
+msgid "start es-restore."
+msgstr "ٯ es-restore"
+msgid "Cannot restore $2"
+msgstr "ߦ $2"
+msgid "Cannot import database. Please check $2"
+msgstr "īջ $2"
+msgid "The recovery need to shudown Sun Management Center servers."
+msgstr "ߦɢ Sun Management Center Τ¡"
+msgid "Please get the backup of es-backup ready."
+msgstr "ެ es-backup ެǹ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the backup data directory:"
+msgstr "īެǹ"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_metadata.sh
+#==========================================
+msgid "$2 appears to be configured as your Sun Management Center server."
+msgstr "$2 ƫҳ Sun Management Center Τ¡"
+msgid "Error - Unable to set $2 values."
+msgstr " - $2 ԫ"
+msgid "agent.snmpPort already configured in $2"
+msgstr " $2 ħ agent.snmpPort"
+msgid "This part of the setup process does the Sun Management Center Agent Component setup."
+msgstr "šݨܡȩ Sun Management Center ܡȢǵ"
+msgid "snmpd.conf already exists in $2. Leaving it in place"
+msgstr "$2 snmpd.conf̧ݨ"
+msgid "Copying snmpd.conf file into $2"
+msgstr " snmpd.conf ̯ $2"
+msgid "Server component also installed locally."
+msgstr "ħΤǵ"
+msgid "Using this machine as the Sun Management Center server."
+msgstr "ɢҳ Sun Management Center Τ¡"
+msgid "Completing Sun Management Center Agent Component setup."
+msgstr "ȩ Sun Management Center ܡȢǵ"
+msgid "Using security seed $2 for Sun Management Center metadata"
+msgstr " $2 ɢҳ Sun Management Center "
+msgid "Please enter the Sun Management Center Server Hostname: "
+msgstr "ī Sun Management Center Τꢡ "
+msgid "Is this correct?"
+msgstr ""
+#
+#============================
+# <WS>/packages/Setup/es-lic
+#============================
+msgid "Topology server is currently running."
+msgstr "ЩΤ¡"
+msgid "It must be restarted for the license file update to take effect."
+msgstr "桢ٯ"
+msgid "Please stop and restart topology server using:"
+msgstr "ٯΤ¡"
+msgid "$2 -p\\\; $3 -p"
+msgstr "$2 -p\\\; $3 -p"
+msgid "Invalid License, Exiting..."
+msgstr "桢..."
+msgid " Sun Management Center License Program\n"
+msgstr " Sun Management Center Ȣ\n"
+msgid " Invalid parameters passed to es-lic script\n"
+msgstr " ̯ es-lic Script ٶ\n"
+msgid "Please enter license key: "
+msgstr "ī "
+#
+#===============================
+# <WS>/packages/Setup/es-dbimp
+#===============================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "The backup $2 does not exist"
+msgstr "ެǹ $2 "
+msgid "------------------- WARNING !!! ----------------"
+msgstr "------------------- ˡ ----------------"
+msgid "The process need Sun Management Center server components stopped."
+msgstr "Ⱥݨܡ Sun Management Center Τǵ硤"
+msgid "And import the backup data to Sun Management Center database."
+msgstr "ެǹī Sun Management Center ջ"
+msgid "As a result, all current data will be destroyed."
+msgstr "Ϊȩȴܢȴڡ"
+msgid "Done"
+msgstr "ȩ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+#
+#=======================================
+# <WS>/packages/Setup/sm_setup_agent.sh
+#=======================================
+msgid "$2 appears to be configured as your Sun Management Center server."
+msgstr "$2 ƫҳ Sun Management Center Τ¡"
+msgid "Error - Unable to set $2 values."
+msgstr " - $2 ԫ"
+msgid "agent.snmpPort already configured in $2"
+msgstr " $2 ħ agent.snmpPort"
+msgid "This part of the setup process does the Sun Management Center Agent Component setup."
+msgstr "šݨܡȩ Sun Management Center ܡȢǵ"
+msgid "snmpd.conf already exists in $2. Leaving it in place"
+msgstr "$2 snmpd.conf̧ݨ"
+msgid "Copying snmpd.conf file into $2"
+msgstr " snmpd.conf ̯ $2"
+msgid "Server component also installed locally."
+msgstr "ħΤǵ"
+msgid "Using this machine as the Sun Management Center server."
+msgstr "ɢҳ Sun Management Center Τ¡"
+msgid "Completing Sun Management Center Agent Component setup."
+msgstr "ȩ Sun Management Center ܡȢǵ"
+msgid "Using security seed $2 for Sun Management Center agent"
+msgstr " $2 ɢҳ Sun Management Center ܡȢ"
+msgid "Please enter the Sun Management Center Server Hostname: "
+msgstr "ī Sun Management Center Τꢡ "
+msgid "Is this correct?"
+msgstr ""
+#
+#================================
+# <WS>/packages/Setup/es-backup
+#================================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Can not create the directory $2"
+msgstr "ǡ $2"
+msgid "Backup is successful."
+msgstr "ެǹȩ"
+msgid "Please save following files for the restore of Sun Management Center"
+msgstr "Ķߦ Sun Management Center "
+msgid "Starting Sun Management Center...."
+msgstr "ٯ Sun Management Center...."
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "Backup Sun Management Center data failed. Please check $2"
+msgstr "Sun Management Center ެǹ $2"
+msgid "The operation requires to shutdown Sun Management Center."
+msgstr "Ⱥɢ Sun Management Center"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the directory to store the backup data file:"
+msgstr "īެǹ表"
+#
+#=======================================
+# <WS>/packages/Setup/sm_setup_mib2.sh
+#=======================================
+msgid "Subagent sunmib_sea already set up - leaving it untouched"
+msgstr "ħܡȢ sunmib_sea - ̧ѽ"
+msgid "Subagent registry file is: $2"
+msgstr "ܡȢҳ$2"
+msgid "Unable to update subagent-registry-d.x"
+msgstr " subagent-registry-d.x"
+msgid "Updated subagent-registry-d.x for mib2 subagent"
+msgstr "ҳ mib2 ܡȢħ subagent-registry-d.x"
+#
+#================================
+# <WS>/packages/Setup/es-uninst
+#================================
+msgid "Removing $2"
+msgstr " $2"
+msgid "Package Removal: Failed for $2"
+msgstr "桨$2 "
+msgid "Reattempting to uninstall the package\\\(s\\\): $2"
+msgstr "ա$2"
+msgid "Please remove the following packages manually.\n"
+msgstr "ٯĶա\n"
+msgid "Sun Management Center uninstall complete.\n"
+msgstr " Sun Management Center ܫ\n"
+msgid " Sun Management Center Uninstallation \n"
+msgstr " Sun Management Center \n"
+msgid "No Sun Management Center packages installed.\n"
+msgstr " Sun Management Center ա\n"
+msgid "This utility removes all the Sun Management Center packages. \n"
+msgstr "ȺȢȴ Sun Management Center ա\n"
+msgid "Exiting uninstall utility.\n"
+msgstr "Ȣ\n"
+msgid "Stopping all Sun Management Center processes. This may take a few moments...\n"
+msgstr "ȴ Sun Management Center ݨܡƫġ...\n"
+msgid "If you are upgrading Sun Management Center, you may want to save your existing data.\n"
+msgstr "ΪŪ Sun Management Centerƫܢȴ衤\n"
+msgid "Will not remove the existing data\n"
+msgstr "ܢȴ\n"
+msgid "Will remove the existing data\n"
+msgstr "ܢȴ\n"
+msgid " Would you like to continue?"
+msgstr " "
+msgid "Do you want to preserve your existing data"
+msgstr "ܢȴ"
+msgid "Do you wish to continue with the removal of the existing data"
+msgstr "ܢȴ"
+#
+#==============================
+# <WS>/packages/Setup/es-dbexp
+#==============================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Can not create the directory $2"
+msgstr "ǡ $2"
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "The operation requires some of Sun Management Center components to be shutdown."
+msgstr "Ⱥɢġ Sun Management Center ǵ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the directory to store the backup data file:"
+msgstr "īެǹ表"
+msgid "Enter the path of the backup directory:"
+msgstr "īެǹ"
+#
+#=================================
+# <WS>/packages/Setup/es-keys.sh
+#=================================
+msgid "Generating $2 security keys."
+msgstr "ܨ $2 "
+msgid "Error generating keys. Return code was $2."
+msgstr "ܨ먡ҳ $2"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_service.sh
+#==========================================
+msgid "This part of the setup process does the Sun Management Center Services Component setup."
+msgstr "šݨܡȩ Sun Management Center Τ٭ǵ"
+msgid "Completing Sun Management Center Services Component setup."
+msgstr "ȩ Sun Management Center Τ٭ǵ"
+#
+#===============================
+# <WS>/packages/Setup/es-start
+#===============================
+msgid "It seems component $2 has not been setup, so skipping it."
+msgstr " $2Ⱥܩơ"
+msgid "Sun Management Center Web Server is not installed, Can not start web server\n"
+msgstr " Sun Management Center Τ¡ٯΤ\n"
+msgid "Sun Management Center Web Server is not completely installed, Can not start web server\n"
+msgstr " Sun Management Center Τ¡ٯΤ\n"
+msgid "web server started\n"
+msgstr "Τٯ\n"
+msgid "Equivalent to %s -aefgmprstxw"
+msgstr "̧ %s -aefgmprstxw"
+msgid "Equivalent to %s -efgmprstxw"
+msgstr "̧ %s -efgmprstxw "
+msgid "Usage: $PROGNAME -acefghilmpstwxrAS [-y instanceName] [ -- args... ]"
+msgstr "Ρ$PROGNAME -acefghilmpstwxrAS [-y instanceName] [ -- args... ]"
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : starts Sun Management Center Agent\n"
+msgstr " aٯ Sun Management Center ܡȢ\n"
+msgid " c : starts Sun Management Center Console\n"
+msgstr " cٯ Sun Management Center Console\n"
+msgid " Optionally, maximum heap size could be customized,\n"
+msgstr " ڰ̱ƫҳԫ\n"
+msgid " e.g., ./es-start -c -- -Xmx100m specifies 100 MBytes\n"
+msgstr " ./es-start -c -- -Xmx100m 100 MB\n"
+msgid " as max heap size; Default size is 64m.\n"
+msgstr " ҳѡҳ 64m\n"
+msgid " e : starts Sun Management Center Event manager\n"
+msgstr " eٯ Sun Management Center ǵܡȢ\n"
+msgid " f : starts Sun Management Center Configuration manager\n"
+msgstr " fٯ Sun Management Center ܡȢ\n"
+msgid " g : starts Sun Management Center Grouping services\n"
+msgstr " gٯSun Management Center Τ٭\n"
+msgid " h : prints this usage report\n"
+msgstr " hȺ\n"
+msgid " i : start agent in interactive mode, valid only for one of\n"
+msgstr " iٯȢɢȢٯܡȢ\n"
+msgid " the a, t, f, p, and e options\n"
+msgstr " atfp e ġȴ\n"
+msgid " l : starts Platform Agent for SSP\n"
+msgstr " lٯ SSP ƺܡȢ\n"
+msgid " m : starts Sun Management Center Metadata Repository\n"
+msgstr " mٯ Sun Management Center ջ\n"
+msgid " q : start components in quiet mode, effective only for one of\n"
+msgstr " qٯȢɢȢٯǵ\n"
+msgid " the A, a, t, f, p, and e options\n"
+msgstr " Aatfp e ġȴ\n"
+msgid " p : starts Sun Management Center Topology manager\n"
+msgstr " pٯ Sun Management Center ܡȢ\n"
+msgid " r : starts Hardware Diagnostic Suite Service\n"
+msgstr " rٯ Hardware Diagnostic Suite Τ٭\n"
+msgid " s : starts Sun Management Center Server\n"
+msgstr " sٯ Sun Management Center Τ\n"
+msgid " Optionally, maximum heap size could be customized,\n"
+msgstr " ڰ̱ƫҳԫ\n"
+msgid " e.g., ./es-start -s -- -Xmx100m specifies 100 MBytes\n"
+msgstr " ./es-start -s -- -Xmx100m 100 MB\n"
+msgid " as max heap size; Default size is 64m.\n"
+msgstr " ҳѡҳ 64m\n"
+msgid " t : starts Sun Management Center Trap Handler\n"
+msgstr " tٯ Sun Management Center ݨܡȢ\n"
+msgid " x : starts CST Service\n"
+msgstr " xٯ CST Τ٭\n"
+msgid " y : starts new instance of platform agent\n"
+msgstr " yٯƺܡȢ\n"
+msgid " w : starts web server\n"
+msgstr " wٯΤ\n"
+msgid " A : starts All Sun Management Center components except the console,\n"
+msgstr " Aٯħƺȴ Sun Management Center ǵ\n"
+msgid " S : starts Sun Management Center Server and all the server subcomponents\n"
+msgstr " Sٯ Sun Management Center ΤȴΤǵ\n"
+msgid " args are passed to console or server when started.\n"
+msgstr " ſƺΤٯԯ\n"
+msgid " (for example: es-start -c -- -p 2099)\n\n"
+msgstr " es-start -c -- -p 2099\n\n"
+msgid "ERROR: Sun Management Center has not been set up.\nRun es-setup to set up Sun Management Center."
+msgstr "먡 Sun Management Center\n es-setup Sun Management Center"
+msgid "Please specify a component to be started."
+msgstr "ٯǵ"
+msgid "Use the following single letter arguments instead:\n"
+msgstr "Ķġſ\n"
+msgid "Console package not installed\n"
+msgstr "ƺ\n"
+msgid "Interactive option invalid with -A or -S option"
+msgstr "ٯȢɢ -A -S "
+msgid "Invalid command line option. Please use just one option\n"
+msgstr "ƷġԶ\n"
+msgid "You have not specified any components to run.\n"
+msgstr "ǵ\n"
+msgid "Only one component may be started in interactive mode\n"
+msgstr "ٯȢɢȢĶƷٯġԶǵ\n"
+msgid "You cannot start console in interactive mode\n"
+msgstr "ٯȢɢȢٯƺ\n"
+msgid "DISPLAY environment variable must be set\n"
+msgstr " DISPLAY \n"
+msgid "Interactive server session:\n"
+msgstr "ٯȢɢΤɢơ\n"
+msgid "SUNWcstv or SUNWcstve package should be installed before start cstservice agent."
+msgstr "ٯ cstservice ܡȢЩǿ SUNWcstv SUNWcstve ա"
+msgid "Interactive option invalid with $OPT option"
+msgstr "ٯȢɢ $OPT "
+msgid "Unable to open DISPLAY: $DISPLAY"
+msgstr " DISPLAY: $DISPLAY"
+msgid "Equivalent to %s -aefgmpstxw"
+msgstr "̧ %s -aefgmpstxw"
+msgid "Equivalent to %s -efgmpstxw"
+msgstr "̧ %s -efgmpstxw"
+msgid "$2 Component not installed"
+msgstr " $2 ǵ"
+msgid "Invalid option\\\($1\\\). Options have changed to single letters:"
+msgstr " \\\($1\\\)ҳġࡨ"
+msgid "Starting all platform instances"
+msgstr "ٯȴƺ"
+msgid "Instances are $2"
+msgstr "ҳ $2"
+msgid "Starting platform instances $2"
+msgstr "ٯƺ $2"
+msgid "ERROR: Could not start Hardware Diagnostic Suite Service."
+msgstr "먡ٯ Hardware Diagnostic Suite Τ٭"
+msgid "SUNWed package should be installed before start Hardware Diagnostic Suite Service."
+msgstr "SUNWed ٯ Hardware Diagnostic Suite Τ٭Щҡ"
+msgid "Sun Management Center is not setup. Please setup first and then run es-start."
+msgstr " Sun Management Centerǿҡѥ es-start"
+msgid "Sun Management Center $2 is not setup."
+msgstr " Sun Management Center $2"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_console.sh
+#==========================================
+msgid "This part of the setup process does the Sun Management Center Console Component setup."
+msgstr "šݨܡȩ Sun Management Center ƺǵ"
+#
+#==============================
+# <WS>/packages/Setup/es-stop
+#==============================
+msgid "Please specify a component to be stopped."
+msgstr "ǵ"
+msgid "Usage : $PROGNAME -aefghmprstxAS [-y instanceName]"
+msgstr "Ρ$PROGNAME -aefghmprstxAS [-y instanceName]"
+msgid " a : stops Sun Management Center Agent\n"
+msgstr " a Sun Management Center ܡȢ\n"
+msgid " e : stops Sun Management Center Event manager\n"
+msgstr " e Sun Management Center ǵܡȢ\n"
+msgid " f : stops Sun Management Center Configuration manager\n"
+msgstr " f Sun Management Center ܡȢ\n"
+msgid " g : stops Sun Management Center Services\n"
+msgstr " g Sun Management Center Τ٭\n"
+msgid " h : prints this usage report\n"
+msgstr " hȺ\n"
+msgid " l : stops Platform Agent for SSP\n"
+msgstr " l SSP ƺܡȢ\n"
+msgid " m : stops Sun Management Center Metadata Agent\n"
+msgstr " m Sun Management Center ܡȢ\n"
+msgid " p : stops Sun Management Center Topology manager\n"
+msgstr " p Sun Management Center ܡȢ\n"
+msgid " r : stops Hardware Diagnostic Suite Service\n"
+msgstr " r Hardware Diagnostic Suite Τ٭\n"
+msgid " s : stops Sun Management Center Server\n"
+msgstr " s Sun Management Center Τ\n"
+msgid " t : stops Sun Management Center Trap Handler\n"
+msgstr " t Sun Management Center ݨܡȢ\n"
+msgid " x : stops CST Service\n"
+msgstr " x CST Τ٭\n"
+msgid " y : stops instance of platform agent\n"
+msgstr " yƺܡȢ\n"
+msgid " w : stops web server\n"
+msgstr " wΤ\n"
+msgid " A : stops all Sun Management Center components listed above\n"
+msgstr " Aĸȴ Sun Management Center ǵ\n"
+msgid "equivalent to %s -aefgmprstxw"
+msgstr "̧ %s -aefgmprstxw"
+msgid " S : stops all Sun Management Center components listed above except Sun Management Center Agent\n"
+msgstr " Sħ Sun Management Center ܡȢȴ Sun Management Center ǵ\n"
+msgid "equivalent to %s -efgmprstxw"
+msgstr "̧ %s -efgmprstxw"
+msgid "Use the following single letter arguments instead:\n"
+msgstr "Ķġſ\n"
+msgid "Invalid option\\\($1\\\). Options have changed to single letters:"
+msgstr " \\\($1\\\)ҳġࡨ"
+msgid "$1 Component not installed"
+msgstr " $1 ǵ"
+msgid "Stopping all platform instances"
+msgstr "ȴƺ"
+msgid "$COMPONENT component is not running"
+msgstr "$COMPONENT ǵ"
+msgid "Stopping $COMPONENT component"
+msgstr " $COMPONENT ǵ"
+msgid "Error in stopping $COMPONENT component"
+msgstr " $COMPONENT ǵ"
+#
+#================================
+# <WS>/packages/Setup/es-crlcon
+#================================
+msgid " Sun Management Center Light Console Creation Program\n"
+msgstr " Sun Management Center ƺǡȢ\n"
+msgid "This program creates a directory of minimun required console components.\n"
+msgstr "ȺȢǡŷƺǵ硤\n"
+msgid "User can copy this directory to any machine with supported configuration\n"
+msgstr "ϯƫȺ̯Ƕ̦ȴ̿ĸ\n"
+msgid "to run Console."
+msgstr "ƺ"
+msgid "Destination [/tmp]: "
+msgstr " [/tmp] "
+msgid "Please remove the directory $dirname before proceeding"
+msgstr "Щ $dirname"
+msgid "or use a different directory.\n"
+msgstr "硤\n"
+msgid "Do you want the directory to be in zip format [y|n] [y]: "
+msgstr "ȩҳ zip ֪Ȣ [y|n] [y] "
+msgid "Please enter path to the executable - zip: "
+msgstr "īƫ - zip "
+msgid "Cannot find zip in $zippath."
+msgstr "$zippath ̯ zip"
+msgid "Source will be taken from [/opt/SUNWsymon]: "
+msgstr "̽ [/opt/SUNWsymon] "
+msgid "Directory ${dirname} is created."
+msgstr " ${dirname} ǡ"
+msgid "Creating zip file ...\n"
+msgstr "ǡ zip ...\n"
+msgid "SUNWsymon.zip can be transferred to other systems, unzip,\n"
+msgstr "SUNWsymon.zip ƫ̧˷ӡ㡤\n"
+msgid "Zip file is created in "
+msgstr "Zip ǡ "
+msgid "\nPlease note:\n\n Light console can be invoked by running:\n\n"
+msgstr "\n\n\n ƫĶƵƺ\n\n"
+#
+#================================
+# <WS>/packages/Setup/es-sfix.sh
+#================================
+msgid "usage:\n"
+msgstr "Ρ\n"
+msgid "process all modules : es-sfix.sh\n"
+msgstr "ݨܡȴ es-sfix.sh\n"
+msgid "flush db & process all modules : es-sfix.sh [-c | -C]\n"
+msgstr " db ݨܡȴ es-sfix.sh [-c | -C]\n"
+msgid "process only for specifiec module : es-sfix.sh [-m | -M] [module name]\n"
+msgstr "Ʒݨܡ es-sfix.sh [-m | -M] []\n"
+msgid "starting Sun Management Center database\n"
+msgstr "ٯ Sun Management Center ջ\n"
+msgid "database startup failed, exiting\n"
+msgstr "ջٯ\n"
+msgid "database is up\n"
+msgstr "ջƵ\n"
+msgid "executing suggested fix script\n"
+msgstr "Ժߦ Script\n"
+msgid "execution successful\n"
+msgstr "ȩ\n"
+msgid "error in execution\n"
+msgstr "\n"
+msgid "shutting down the database\n"
+msgstr "ջ\n"
+msgid "db-stop failed\n"
+msgstr "db-stop \n"
+msgid "purge database and process\n"
+msgstr "ջݨܡ\n"
+msgid "process only for module\n"
+msgstr "ݨܡ\n"
+msgid "incorrect usage\n"
+msgstr "\n"
+msgid "invalid arguments\n"
+msgstr "ſ\n"
+msgid "default processing\n"
+msgstr "ݨܡʩ\n"
+msgid "could not set java home directory\n"
+msgstr " java \n"
+msgid "please see the suggested fix log file in "
+msgstr "ٶԺߦ"
+#
+#=================================
+# <WS>/packages/Setup/es-details
+#=================================
+msgid "ERROR: "
+msgstr "먡 "
+msgid " Specify the tabs for a given Node_Object_Type. The -f and -u\n"
+msgstr " ҳ Node_Object_Type -f -u\n"
+msgid " options are mutually exclusive.\n"
+msgstr " 桤\n"
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : All tabs provided by Sun Management Center\n"
+msgstr " a Sun Management Center ȴ\n"
+msgid " will be included.\n"
+msgstr " \n"
+msgid " f inputfile : Input file which contains list of tabs to\n"
+msgstr " f inputfile ī\n"
+msgid " be used for the specified Node_Object_Type.\n"
+msgstr " Node_Object_Type\n"
+msgid " n Node_Object_Type : Corresponds to the Node_Object_Type\n"
+msgstr " n Node_Object_Type es-device Script \n"
+msgid " entered in the es-device script.\n"
+msgstr " ī Node_Object_Type\n"
+msgid " o : Overwrite previously created tab file.\n"
+msgstr " o Щǡ\n"
+msgid " Only meaningful when used with the -f\n"
+msgstr " Ʒȴ -f ȴ\n"
+msgid " option.\n"
+msgstr " \n"
+msgid " u : Undo. Restores the Node_Object_Type\n"
+msgstr " u ߦϡ Node_Object_Type ߦ\n"
+msgid " to its original state.\n"
+msgstr " ҳ̧ȴ衤\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "Usage: $2 [ -a ] [ -f inputfile ] -n Node_Object_Type [ -o ] [ -u ]\n"
+msgstr "Ρ$2 [ -a ] [ -f inputfile ] -n Node_Object_Type [ -o ] [ -u ]\n"
+msgid "Input file $2 does not exist"
+msgstr "ī $2 "
+msgid "The Node_Object_Type must be specified."
+msgstr " Node_Object_Type"
+msgid "Either option -f or -u must be specified."
+msgstr " -f -u ġ"
+msgid "Options -f or -u cannot both be specified."
+msgstr " -f -u"
+msgid "Options -o and -u cannot both be specified."
+msgstr " -o -u"
+msgid "Options -a and -u cannot both be specified."
+msgstr " -a -u"
+msgid "es-details has not yet been run with Node_Object_Type $2."
+msgstr " Node_Object_Type $2 es-details"
+msgid "Tab name not specified for DEFAULT statement on line $2."
+msgstr " $2 ĸ ҳ DEFAULT ꢡ"
+msgid "Only one tab can be defined as the DEFAULT."
+msgstr "ƷġԶɢҳ DEFAULT"
+msgid "Tab name not specified for INCLUDE statement on line $2."
+msgstr " $2 ĸҳ INCLUDE ꢡ"
+msgid "$2 is not a valid Sun Management Center tab on line $3."
+msgstr "$2 $3 ĸȴ Sun Management Center "
+msgid "Tab name not specified for APPEND statement on line $2."
+msgstr " $2 ĸҳ APPEND ꢡ"
+msgid "Tab name $2 must be in format file:key on line $3."
+msgstr " $3 ĸ $2 ֪Ȣҳ file:key"
+msgid "Help key not specified for user-defined tab $2 on line $3."
+msgstr " $3 ĸҳϯ $2 ɷ"
+msgid "Help Key $2 must be in format key:file on line $3."
+msgstr " $3 ĸɷ $2 ֪Ȣҳ key:file"
+msgid "Java class not specified for user-defined tab $2 on line $3."
+msgstr " $3 ĸҳϯ $2 Java ɱ"
+msgid "Key $2 is not a valid key on line $3."
+msgstr " $2 $3 ĸȴ"
+msgid "Input file $2 contains no APPEND or INCLUDE statements"
+msgstr "ī $2 APPEND INCLUDE "
+msgid "$2 is not a valid Node_Object_Type."
+msgstr "$2 ȴ Node_Object_Type"
+msgid "The specified default tab $2 was not found in the inputfile."
+msgstr "ī̯ $2"
+msgid "The tabs for this object have already been specified, use -o option to overwrite."
+msgstr "Ⱥǵ -o ѡ"
+msgid "Can only modify the family file for Sun Management Center agents."
+msgstr "Ʒҳ Sun Management Center ܡȢԺե"
+#
+#===========================
+# <WS>/packages/Setup/es-dt
+#===========================
+msgid "ERROR: "
+msgstr "먡 "
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : Add a reference.\n"
+msgstr " a ٶ衤\n"
+msgid " d : Delete a reference.\n"
+msgstr " d ɴٶ衤\n"
+msgid " v : View references. This is the default option.\n"
+msgstr " v ٶ衤Ⱥҳ\n"
+msgid " s : Add/Delete/View on the Platform Agent. By default the\n"
+msgstr " s ƺܡȢĸ/ɴ/á\n"
+msgid " operation is performed on the Agent.\n"
+msgstr " ɢܡȢĸ硤\n"
+msgid " h hostname : Agent hostname of machine running the Discovery Object Table.\n"
+msgstr " h ꢡǵܡꢡ\n"
+msgid " l label : Unique label for the Composite Object to add or delete.\n"
+msgstr " l ɴǵȴ\n"
+msgid " n not : Node_Object_Type for the Composite Object to add.\n"
+msgstr " n not ǵ Node_Object_Type\n"
+msgid " o OID : Discovery Object Table OID to add.\n"
+msgstr " o OID ǵ OID\n"
+msgid " p port : Agent port of machine running the Discovery Object Table.\n"
+msgstr " p port ǵܡȢա\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "ESDIR must be set"
+msgstr " ESDIR"
+msgid "Usage: $2 -a \\\| -d \\\| -v [ -s ] -h hostname -l label -n not -o OID -p port\n"
+msgstr "Ρ$2 -a \\\| -d \\\| -v [ -s ] -h -l -n not -o OID -p port\n"
+msgid "It cannot be loaded on both the Agent and Platform Agent."
+msgstr "ܡȢůƺܡȢīơ"
+msgid "The options -h, -l, -n, -o, and -p must all be used with the -a option."
+msgstr " -h-l-n-o -p -a "
+msgid "An entry for $2 already exists."
+msgstr " $2 㡤"
+msgid "The option -l must be used with the -d option."
+msgstr " -l -d "
+msgid "The options -h, -n, -o, and -p are not valid with the -d option."
+msgstr " -h-n-o -p -d "
+msgid "An entry for $2 does not exist."
+msgstr " $2 㡤"
+msgid "The options -h, -l, -n, -o, and -p are not valid with the -v option."
+msgstr " -h-l-n-o -p -v "
+msgid "No entries."
+msgstr "ȴ"
+msgid "The file $2 is not readable."
+msgstr " $2 ƫ̽"
+msgid "Discovery Service loaded on: Agent"
+msgstr "Τ٭īAgent"
+msgid "Discovery Service loaded on: Platform Agent."
+msgstr "Τ٭īƺܡȢ"
+msgid "Entries:"
+msgstr ""
+msgid "The discovery table is already loaded on the Agent."
+msgstr "ܡȢĸī"
+msgid "The discovery table is already loaded on the Platform Agent."
+msgstr "ƺܡȢĸī"
+#
+#=============================
+# <WS>/packages/Setup/es-apps
+#=============================
+msgid "This script reads the specified configuration file or\\n%s if not specified,\\nand installs the applications with the server."
+msgstr "Ⱥ Script ̽\\n%sΪ\\nΤȢ"
+msgid "The configuration file contains one or more lines using the following format:\n"
+msgstr "ġĶ֪Ȣթ\n"
+msgid "where:\n"
+msgstr "̧㡨\n"
+msgid "name\tis the name of the application that appears in the Application list\n"
+msgstr " name\tȢȢ"
+msgid "class\tis the name of the Java class for the application\n"
+msgstr " class\tȢ Java ɱ\n"
+msgid "args\tare optional user defined arguments to be passed to the application\n"
+msgstr "args\tīȢϯƫ\n"
+msgid "help\tis the optional help specification using the format key:helpfile or :url.\n"
+msgstr "help\tkey:helpfile :url ֪Ȣɷƫ\n"
+msgid "There should be no quotes in the line.\n"
+msgstr "ȴſ\n"
+msgid "Lines beginning with # are considered as comments.\n"
+msgstr " # թݷҳء"
+msgid "For example:\n"
+msgstr "\n"
+msgid "Using %s"
+msgstr " %s"
+msgid "%s updated."
+msgstr "%s 仡"
+#
+#================================
+# <WS>/packages/Setup/db-export.sh
+#================================
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+#
+#==================================
+# <WS>/packages/Setup/db-import.sh
+#==================================
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+msgid "please ensure Topology & Event agents are not running..."
+msgstr "ůǵܡȢ..."
+#
+#============================
+# <WS>/packages/Setup/es-run
+#============================
+msgid "Usage : $PROGNAME option1 [option2,...]"
+msgstr "Ρ$PROGNAME 1 [ 2,...]"
+msgid " where option1 is a Sun Management Center utility\n and option2,... are the arguments for 'option1'\n\n If option1 is '-help', then the usage is printed.\n\n"
+msgstr " ̧㡢 1 Sun Management Center Ȣ\n 2,... ҡ 1ſ\n\n Ϊ 1 '-help'̧Ρ\n\n"
+#
+#==============================
+# <WS>/packages/Setup/es-chelp
+#===============================
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+msgid "There is an existing $PROGRAM lockfile, $LOCKFILE"
+msgstr "ġԶ $PROGRAM $LOCKFILE"
+msgid "which indicates that process is executing the $PROGRAM"
+msgstr "ݨܡ $PROGRAM"
+msgid "If this is not the case, delete the lock file,"
+msgstr "ΪӡɴȺ"
+msgid "$LOCKFILE and execute $PROGRAM again."
+msgstr "$LOCKFILE ȹ $PROGRAM"
+msgid "$sdk_helpfile either does not exist or is not writable"
+msgstr "$sdk_helpfile ƫī"
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+#
+#========================================
+# <WS>/src/db/build/build-recovery*.ksh
+#========================================
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Usage: $PROGNAME -au auid -ap apword -wu wuid -wp wpword -sp syspword -s osrvname -tsn tsname -tsp tsphyspath -tsis tssize -olfp olfpath [-cdb] [-vr]"
+msgstr "Ρ$PROGNAME -au auid -ap apword -wu wuid -wp wpword -sp syspword -s osrvname -tsn tsname -tsp tsphyspath -tsis tssize -olfp olfpath [-cdb] [-vr]"
+msgid " -au auid : userid used to admin smc tablespace"
+msgstr " -au auid ܡ smc ֪Ϩ userid"
+msgid " -ap apword : password for corresponding admin userid"
+msgstr " -ap apword ܡ userid "
+msgid " -wu wuid : working userid used by application"
+msgstr " -wu wuid Ȣɢ userid"
+msgid " -wp wpword : working password for corresponding working userid"
+msgstr " -wp wpword ɢ userid ɢ"
+msgid " -sp syspword : password for system userid \\\(system\\\)"
+msgstr " -sp syspword ˷ userid \\\(system\\\)"
+msgid " -s osrvname : name of the oracle service used to connect to db"
+msgstr " -s osrvname ̯ջ oracle Τ٭"
+msgid " -tsn tsname : name of the tablespace"
+msgstr " -tsn tsname ֪Ϩ"
+msgid " -tsp tsphyspath : physical location of tablespace"
+msgstr " -tsp tsphyspath ֪Ϩ"
+msgid " -tsis tssize : initial size of tablespace \\\(in M bytes\\\)"
+msgstr " -tsis tssize ֪Ϩ \\\( MB ҳ\\\)"
+msgid " -olfp olfpath : physical location \\\(local\\\) to write the smc30.oracle file"
+msgstr " -olfp olfpath ī smc30.oracle \\\(\\\)"
+msgid " -cdb : indicates that any existing tablespace and user"
+msgstr " -cdb ȴܢȴ֪Ϩůϯ"
+msgid " matching the specified parameters above are"
+msgstr " ĸٶϯ"
+msgid " dropped before proceeding. use is optional"
+msgstr " Щ۹ƫ"
+msgid " -vr : this option is used to verify all objects"
+msgstr " -vr Ⱥȴǵ"
+msgid " and to perform a recovery sequence if any"
+msgstr " ůߦѥٯɢΪ"
+msgid " problems are detected"
+msgstr " ̯Ƕ"
+msgid " -ver : option"
+msgstr " -ver "
+msgid " -lf logfile : logfile name"
+msgstr " -lf logfile "
+msgid "ERROR: the ESDIR environment variable has not been set"
+msgstr "먡 ESDIR "
+msgid "illegal option encoutered : $2"
+msgstr "̯$2"
+msgid "this is a pc installation : $2"
+msgstr "Ⱥҳ pc ҡ$2"
+msgid "this is a sparc installation : $2"
+msgstr "Ⱥҳ sparc ҡ$2"
+msgid "unknown system type, exiting........................"
+msgstr "˷........................"
+msgid "can not find sqlplus on path, exiting........................."
+msgstr "ĸ̯ sqlplus........................."
+msgid "the current directory is not writable "
+msgstr "Щƫī "
+msgid "sqlplus writes an error log \\\(sqlnet.log\\\)"
+msgstr "sqlplus ī \\\(sqlnet.log\\\)"
+msgid "to the current directory in the event of"
+msgstr "Щ㡾"
+msgid "a connection problem"
+msgstr "ǵ㡿"
+msgid "the /tmp directory does not exist"
+msgstr "/tmp "
+msgid "however, a file named /tmp does exist"
+msgstr "紡ȴԶҳ /tmp "
+msgid "/tmp directory is not writable "
+msgstr "/tmp ƫī"
+msgid "the \\\(-au auid\\\) command line parameter was not specified "
+msgstr " \\\(-au auid\\\) ٶ"
+msgid "the \\\(-ap apword\\\) command line parameter was not specified "
+msgstr " \\\(-ap apword\\\) ٶ"
+msgid "the \\\(-wu wuid\\\) command line parameter was not specified "
+msgstr " \\\(-wu wuid\\\) ٶ"
+msgid "the \\\(-wp wpword\\\) command line parameter was not specified "
+msgstr " \\\(-wp wpword\\\) ٶ"
+msgid "the \\\(-sp syspword\\\) command line parameter was not specified "
+msgstr " \\\(-sp syspword\\\) ٶ"
+msgid "the \\\(-s osrvname\\\) command line parameter was not specified "
+msgstr " \\\(-s osrvname\\\) ٶ"
+msgid "the \\\(-tsn tsname\\\) command line parameter was not specified "
+msgstr " \\\(-tsn tsname\\\) ٶ"
+msgid "the \\\(-tsp tsphyspath\\\) command line parameter was not specified "
+msgstr " \\\(-tsp tsphyspath\\\) ٶ"
+msgid "the \\\(-tsis tssize\\\) command line parameter was not specified "
+msgstr " \\\(-tsis tssize\\\) ٶ"
+msgid "the \\\(-olfp olfpath\\\) command line parameter was invalid! "
+msgstr "\\\(-olfp olfpath\\\) ٶ桪 "
+msgid "exiting..................."
+msgstr "..................."
+msgid "The Initial Tablespace Size given is not invalid"
+msgstr "֪Ϩ"
+msgid "valid range is 1 to 500 M"
+msgstr "ȴҳ 1 ̯ 500 M"
+msgid "Writing Applogin file : $2"
+msgstr "ī Applogin $2"
+msgid "file : $2, has a quit statement in it."
+msgstr "file : $2̧ȴġԶ"
+msgid "file : $str3, has a quit statement in it."
+msgstr "file : $str3̧ȴġԶ"
+msgid "need to remove quit statements, exiting........................"
+msgstr "........................"
+msgid "source file: $2 for step: $3 is missing"
+msgstr "$2$3"
+msgid "probably need to execute mkaggregatefiles.ksh"
+msgstr "ƫ mkaggregatefiles.ksh"
+msgid "source file for one or more steps is missing, exiting........................"
+msgstr "ġԶ¡........................"
+msgid " removing existing logfile : /tmp/recovery.err"
+msgstr " ܢȴ/tmp/recovery.err"
+msgid " removing existing logfile : $2"
+msgstr " ܢȴ $2"
+msgid " removing existing temporary sql : $2"
+msgstr " ܢȴ sql $2"
+msgid "Unable to successfully append $2 onto $3"
+msgstr "ȩʢ $2 $3"
+msgid "return code from cat : $2"
+msgstr " cat $2"
+msgid "$2 file not found"
+msgstr "̯ $2 "
+msgid "Unable to successfully substitue in $2"
+msgstr " $2 ȩ̽"
+msgid "substitution string : $2"
+msgstr "̽롨$2"
+msgid "return code from sed : $2"
+msgstr " sed $2"
+msgid "Unable to successfully perform all sed based substitutions on $2 into $3"
+msgstr "ȩ $2 ĸȴ sed ̽ɢ̯ $3 "
+msgid "return code from grep : $2, meaning it found un-substituted strings"
+msgstr " grep $2̯̽"
+msgid "$2 file not found\\\(1\\\)"
+msgstr "̯ $2 \\\(1\\\)"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "sqlerror code = $2"
+msgstr "sqlerror = $2"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "unhandled error detected, only recourse is to stop processing"
+msgstr "̯ݨܡ먡ġȢݨܡ"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "execution of $2 ok!!"
+msgstr "$2 ڦ"
+msgid "step file $2 not found"
+msgstr "̯ $2"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "skipping execution of $2"
+msgstr " $2 "
+msgid "$2 dependent step $3 did not execute"
+msgstr " $3 $2 "
+msgid "$2 dependent step $3 failed execution"
+msgstr " $3 $2 "
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "while in recovery mode, attempts to find a successfully executed dependent of "
+msgstr "ߦȢĶ롢ȩ $2 "
+msgid "the $2 step was unsuccessfull. premature exit!!"
+msgstr "ȩȮ֡"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "while in recovery mode, attempts to find a valid step to execute following "
+msgstr "ߦȢĶ롢ƫĶ $2 ȴ"
+msgid "the $2 step was unsuccessfull. premature exit!!"
+msgstr "ȩȮ֡"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "too many attempts to execute the $2 step"
+msgstr " $2 Ŵ"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "please see the $2 file for listing details"
+msgstr "ٶ $2 ع"
+#
+#========================================
+# <WS>/src/db/build/mkaggregatefiles.ksh
+#========================================
+msgid " removing existing verify inventory : agg-verify-proc-inventory.sql"
+msgstr " ܢȴջagg-verify-proc-inventory.sql"
+msgid "- Create agg-packages-topology.sql file -"
+msgstr "- ǡ agg-packages-topology.sql -"
+msgid "- Create agg-procedures-topology.sql file -"
+msgstr "- ǡ agg-procedures-topology.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Add to agg-dataload-preseq.sql file -"
+msgstr "- agg-dataload-preseq.sql -"
+msgid "- Create agg-packages-eventmanager.sql file -"
+msgstr "- ǡ agg-packages-eventmanager.sql -"
+msgid "- Create agg-procedures-eventmanager.sql file -"
+msgstr "- ǡ agg-procedures-eventmanager.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Create agg-packages-mgmtservice.sql file -"
+msgstr "- ǡ agg-packages-mgmtservice.sql -"
+msgid "- Create agg-procedures-mgmtservice.sql file -"
+msgstr "- ǡ agg-procedures-mgmtservice.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Create agg-verify-proc-inventory.sql file -"
+msgstr "- ǡ agg-verify-proc-inventory.sql -"
+#
+#==================================================
+# <WS>/src/oa/modules/configd4u/bin/es-setup.sh
+#==================================================
+msgid "Setup failed while adding module $2 into $3"
+msgstr " $2 $3 "
+msgid "$2 does not exist"
+msgstr "$2 "
+msgid "Added module $2 to $3."
+msgstr " $2 $3"
+msgid "$2 is not readable, Could not add the module $3"
+msgstr "$2 ƫ̽ $3"
+msgid "Setup of sunfire config reader module failed."
+msgstr "sunfire ̽"
+#
+#======================================
+# <WS>/src/oa/base/generic/bin/*.sh
+#======================================
+msgid "usage: $basename [-sh|-csh] [-internal|-external]"
+msgstr "Ρ$basename [-sh|-csh] [-internal|-external]"
+msgid "ERROR: the ESROOT environment variable has not been set"
+msgstr "먡 ESROOT "
+msgid "usage: $PROGNAME -s \\\"<secret> [-p <public>] [-u <user>[ ...]] [-h <host>] [-c <component>[ ...]]\\\""
+msgstr "Ρ$PROGNAME -s \\\"<ǵ> [-p <>] [-u <ϯ>[ ...]][-h <>] [-c <ǵ>[ ...]]\\\""
+msgid " <secret> is the superuser password\n"
+msgstr " <ǵ> ϯ\n"
+msgid " <public> is the public password (default=public)\n"
+msgstr " <> ԫ=public\n"
+msgid " <user> is the list of initial seeded users\n"
+msgstr " <ϯ> ϯ\n"
+msgid " <host> is the fallback host name\n"
+msgstr " <> \n"
+msgid " <component> is agent/cfgserver/event/cstservice/topology/trap/\n"
+msgstr " <ǵ> agent/cfgserver/event/cstservice/topology/trap/\n"
+msgid " Omit all <component>s to do them all\n"
+msgstr " ܩȴ <ǵ> \n"
+msgid "$PROGNAME: ESROOT must be set."
+msgstr "$PROGNAME: ESROOT"
+msgid "$PROGNAME: $1: unknown component"
+msgstr "$PROGNAME: $1: ǵ"
+msgid "$PROGNAME: ERROR: blank secret not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩǵ ..."
+msgid "$PROGNAME: ERROR: blank password not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩ ..."
+msgid "PROGNAME: WARNING ... secret will be truncated to 8 characters"
+msgstr "PROGNAME: ... ǵҳ 8 Զ"
+msgid "$PROGNAME: security.superuser name not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.superuser ꢡ domain-config.x user-config.x "
+msgid "$PROGNAME: security.generaluser name not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.generaluser ꢡ domain-config.x user-config.x "
+msgid "$var"
+msgstr "$var"
+msgid "Interrupted..."
+msgstr "..."
+msgid "$PROGNAME: security.userfile not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.userfile domain-config.x user-config.x "
+msgid "$PROGNAME: security.authOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.authOID domain-config.x user-config.x "
+msgid "$PROGNAME: security.privOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.privOID domain-config.x user-config.x "
+msgid "$PROGNAME: ${COMP}.${COMP}Server not found - using $DEFHOST."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}Server - $DEFHOST"
+msgid "$PROGNAME: ${COMP}.${COMP}snmpPort not found - skipping $COMP."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}snmpPort - ܩ $COMP"
+msgid "ESROOT must be set\n"
+msgstr " ESROOT\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "OS $sys $rel is not supported"
+msgstr " OS $sys $rel"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "gettext 'Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "gettext 'ɴݨܡ ID $PID \\\($COMMAND\\\)"
+#
+#=================================================
+# <WS>/src/java/base/console/bin/es-console.sh
+#=================================================
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "DISPLAY environment variable must be set"
+msgstr " DISPLAY "
+msgid "SYMON_JAVAHOME variable must be set"
+msgstr " SYMON_JAVAHOME "
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+#
+#============================================
+# <WS>/src/java/base/server/bin/es-server*
+#============================================
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯Զݨܡ \\\($COMMAND\\\)"
+msgid "No Processes Killed"
+msgstr "ɴݨܡ"
+msgid "gettext 'More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "gettext '̯Զݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID using kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID with kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "ESDIR environment variable must be set"
+msgstr " ESDIR "
+msgid "SYMON_JAVAHOME variable must be set"
+msgstr " SYMON_JAVAHOME "
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+#
+#====================================================
+# <WS>/src/java/com/sun/symon/base/cli/bin/es-cli
+#====================================================
+msgid "$SYMON_JAVAHOME/jre/bin/java must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$SYMON_JAVAHOME/jre/bin/java Solaris_JDK_1.2.1_04 \n"
+
+#
+# Strings from Halcyon scripts
+#
+msgid "usage: $basename [-sh|-csh] [-internal|-external]"
+msgstr "Ρ$basename [-sh|-csh] [-internal|-external]"
+msgid "ERROR: the ESROOT environment variable has not been set"
+msgstr "먡 ESROOT "
+msgid "usage: $PROGNAME -s <secret> [-p <public>] [-u <user>[ ...]] [-h <host>] [-c <component>[ ...]]"
+msgstr "Ρ$PROGNAME -s <ǵ> [-p <>] [-u <ϯ>[ ...]][-h <>] [-c <ǵ>[ ...]]"
+msgid "<secret> is the superuser password"
+msgstr "<ǵ> ϯ"
+msgid "<public> is the public password (default=public)"
+msgstr "<> ԫ=public"
+msgid "<user> is the list of initial seeded users"
+msgstr "<ϯ> ϯ"
+msgid "<host> is the fallback host name"
+msgstr "<> "
+msgid "<component> is agent/cfgserver/event/topology/trap"
+msgstr "<ǵ> agent/cfgserver/event/topology/trap"
+msgid "Omit all <component>s to do them all"
+msgstr "ܩȴ <ǵ> "
+msgid "$PROGNAME: ESROOT must be set."
+msgstr "$PROGNAME: ESROOT"
+msgid "$PROGNAME: $1: unknown component"
+msgstr "$PROGNAME: $1: ǵ"
+msgid "$PROGNAME: ERROR: blank secret not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩǵ ..."
+msgid "$PROGNAME: ERROR: blank password not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩ ..."
+msgid "$PROGNAME: WARNING ... secret will be truncated to 8 characters"
+msgstr "$PROGNAME: ... ǵҳ 8 Զ"
+msgid "$PROGNAME: security.superuser name not found. Check domain-confg.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.superuser ꢡ domain-confg.x user-config.x "
+msgid "$PROGNAME: security.generaluser name not found. Check domain-cofig.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.generaluser ꢡ domain-cofig.x user-config.x "
+msgid "Copying $FILENAME to $ESDIR/cfg..."
+msgstr " $FILENAME ̯ $ESDIR/cfg..."
+msgid "Copying ${1}-${FILENAME} to $ESDIR/cfg..."
+msgstr " ${1}-${FILENAME} ̯ $ESDIR/cfg..."
+msgid "Copying ${COMP}-${FILENAME} to $ESDIR/cfg..."
+msgstr " ${COMP}-${FILENAME} ̯ $ESDIR/cfg..."
+msgid "$var"
+msgstr "$var"
+msgid "Interrupted..."
+msgstr "..."
+msgid "$PROGNAME: security.userfile not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.userfile domain-config.x user-config.x "
+msgid "$PROGNAME: security.authOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.authOID domain-config.x user-config.x "
+msgid "$PROGNAME: security.privOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.privOID domain-config.x user-config.x "
+msgid "$PROGNAME: ${COMP}.${COMP}Server not found - using $DEFHOST"
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}Server - $DEFHOST"
+msgid "$PROGNAME: ${COMP}.${COMP}snmpPort not found - skipping $COP."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}snmpPort - ܩ $COP"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "OS $sys $rel is not supported"
+msgstr " OS $sys $rel"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID with the force \\\($COMMAND\\\)"
+msgstr "ڰ̱ \\\($COMMAND\\\) ݨܡ ID $PID"
+msgid "DISPLAY environment variable must be set"
+msgstr " DISPLAY "
+msgid "More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯Զݨܡ \\\($COMMAND\\\)"
+msgid "No Processes Killed"
+msgstr "ɴݨܡ"
+msgid "Terminating Process ID $PID using kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID with kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "ESDIR environment variable must be set"
+msgstr " ESDIR "
+#
+# for es-tool - a SDK tool for integrating applications into console
+#
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+
+msgid "$sdk_toolfile either does not exist or is not writable"
+msgstr "$sdk_toolfile ƫī"
+
+msgid "There is an existing $PROGRAM lockfile, $LOCKFILE"
+msgstr "ġԶ $PROGRAM $LOCKFILE"
+
+msgid "which indicates that process is executing the $PROGRAM"
+msgstr "ݨܡ $PROGRAM"
+
+msgid "If this is not the case, delete the lock file,"
+msgstr "ΪӡɴȺ"
+
+msgid "$LOCKFILE and execute $PROGRAM again."
+msgstr "$LOCKFILE ȹ $PROGRAM"
+
+msgid "$sdk_helpfile either does not exist or is not writable"
+msgstr "$sdk_helpfile ƫī"
+
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+
+msgid "Using %s"
+msgstr " %s"
+
+msgid "%s updated."
+msgstr "%s 仡"
+
+msgid "This script reads the specified configuration file or\\n%s if not specified,\\nand installs the applications with the server."
+msgstr "Ⱥ Script ̽\\n%sΪ\\nΤȢ"
+
+msgid "The configuration file contains one or more lines using the following format:\n"
+msgstr "ġĶ֪Ȣթ\n"
+
+msgid "where:\n"
+msgstr "̧㡨\n"
+
+msgid "name\tis the name of the application that appears in the Application list\n"
+msgstr " name\tȢȢ"
+
+msgid "class\tis the name of the Java class for the application\n"
+msgstr " class\tȢ Java ɱ\n"
+
+msgid "args\tare optional user defined arguments to be passed to the application\n"
+msgstr "args\tīȢϯƫ\n"
+
+msgid "help\tis the optional help specification using the format key:helpfile or :url.\n"
+msgstr "help\tkey:helpfile :url ֪Ȣɷƫ\n"
+
+msgid "There should be no quotes in the line.\n"
+msgstr "ȴſ\n"
+
+msgid "Lines beginning with # are considered as comments.\n"
+msgstr " # թݷҳء"
+
+msgid "For example:\n"
+msgstr "\n"
+
+#
+#====================================================
+# <WS>/packages/Setup/es-platform
+#====================================================
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid " Where the options represent:\n"
+msgstr " ̧\n"
+msgid " a : to add an instance of platform agent\n"
+msgstr " aƺܡȢ\n"
+msgid " d : to delete an instance of platform agent\n"
+msgstr " dɴƺܡȢ\n"
+msgid "You can not specify both a and d option in the same command"
+msgstr "ġԶ a ů d "
+msgid "You can not have spaces in the instance name."
+msgstr "ȴϨ֪"
+msgid "Port $2 is not a valid port number, try another number : "
+msgstr " $2 ȴƶġԶ "
+msgid "This port is being used by Sun Management Center agent, try another number : "
+msgstr "Ⱥ Sun Management Center ܡȢƶġԶ "
+msgid "This port is being used by some instance, try another number : "
+msgstr "ȺԶƶġԶ "
+msgid "This port is being used by some another process, try another number : "
+msgstr "ȺƶġԶݨܡƶġԶ "
+msgid "This instance is already present."
+msgstr "Ⱥ㡤"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+
+# END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/nio/cs/tradChinese.win.po Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,4760 @@
+domain "ES_SCRIPTS"
+#
+#==============================
+# <WS>/packages/Setup/es-inst
+#==============================
+msgid "You need to be root before running this program.\n"
+msgstr "ȢЩǿȩҳ root\n"
+msgid "Can not remove the directory /tmp/SunMC30Install\n"
+msgstr " /tmp/SunMC30Install\n"
+msgid "Can not create the directory /tmp/SunMC30Install/sbin\n"
+msgstr "ǡ /tmp/SunMC30Install/sbin\n"
+msgid "Can not copy the required files to /tmp/SunMC30Install\n"
+msgstr "̯ /tmp/SunMC30Install\n"
+msgid "Can not open the display. Either X server is not allowing\n"
+msgstr " Either X server is not allowing\n"
+msgid "the connection or you are running it from console login.\n"
+msgstr "ϯƺīơ\n"
+msgid "Please read Sun Management Center installation Readme and\n"
+msgstr " Sun Management Center Readme \n"
+msgid "run installation as mentioned.\n"
+msgstr "ҡ\n"
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid " Space calculations will be wrong."
+msgstr " Ϩȴ먡"
+msgid "Insufficient disk space to install the requested Sun Management Center components"
+msgstr "ȴϨƫ Sun Management Center ǵ"
+msgid " - Respecify the components to install so it takes less space"
+msgstr " - ģ́ŷϨ"
+msgid " - Uninstall some existing packages to make room for Sun Management Center"
+msgstr " - ġܢȴաϨ Sun Management Center"
+msgid " - Make a soft link for $2 that points to more space"
+msgstr " - ҳ $2 ܨġԶڰ̱Ϩ"
+msgid " - Ask your system administrator for help"
+msgstr " - ˷ܡɷ"
+msgid "Package $2 is already installed on this system."
+msgstr "Ⱥ˷ĸħ $2"
+msgid "Please verify the platform for package: $2"
+msgstr "ƺ$2"
+msgid "Found: $2"
+msgstr "̯$2"
+msgid "Skipping package $2"
+msgstr " $2"
+msgid "There appear to be some permission problems with the installation"
+msgstr "ĸƫȴġƫ"
+msgid "directory: $2"
+msgstr "$2"
+msgid "In order to install Sun Management Center, root must be able to write to the"
+msgstr " Sun Management Centerroot ϯ̦ȴ"
+msgid "installation directory and own the files in that directory."
+msgstr "īƫ⡢ȴĶ"
+msgid "Please check your configuration and try again."
+msgstr "ܡ"
+msgid "Exiting Sun Management Center installation."
+msgstr " Sun Management Center ʩ"
+msgid "Error: Cannot find pack key $2."
+msgstr "먡̯ $2"
+msgid "There are $2 layers for your selection:"
+msgstr "ȴ $2 Զȹ"
+msgid "No layers were selected for installation."
+msgstr "ȴ̽ȹ"
+msgid "No layers were found for installation."
+msgstr "̯ȹ"
+msgid "No packs are defined in the installation configuration file."
+msgstr "ա"
+msgid "Please select the packs to install:"
+msgstr "̽ա"
+msgid "No packs were selected for installation."
+msgstr "̽ա"
+msgid "Error: Cannot find component key $2."
+msgstr "먡̯ǵ $2"
+msgid "Error: Cannot find key $2."
+msgstr "먡̯ $2"
+msgid " Component $2 has already been installed."
+msgstr " ǵ $2"
+msgid " The corresponding packages are: $2"
+msgstr " ҳ$2"
+msgid " Invalid source directory."
+msgstr " 硤"
+msgid "Source directory: $2"
+msgstr "硨$2"
+msgid "Invalid parameter for productExists\\\(\\\): $2"
+msgstr " productExists ٶ\\\(\\\)$2"
+msgid "Production Environment Installation"
+msgstr "ܨ"
+msgid "Developer Environment Installation"
+msgstr "ĩ"
+msgid "Cannot find $2."
+msgstr "̯ $2"
+msgid "Invalid License, please buy a valid license."
+msgstr "桢ȴ⡤"
+msgid " Invalid entry."
+msgstr " "
+msgid " Installation configuration files not found."
+msgstr " ̯"
+msgid "You can install only agent components on Solaris 2.5.1"
+msgstr "ƫƷ Solaris 2.5.1 ĸܡȢǵ"
+msgid "Select one of the following:"
+msgstr "̽Ķġ"
+msgid "\\\(1\\\) Production Environment \\\(PE\\\)"
+msgstr "\\\(1\\\) ܨ \\\(PE\\\)"
+msgid "\\\(2\\\) Developer Environment \\\(DE\\\)"
+msgstr "\\\(2\\\) ĩ \\\(DE\\\)"
+msgid "Some components have already been installed in $2"
+msgstr " $2 ħšǵ"
+msgid "The target directory will be set to $2"
+msgstr "ҳ $2"
+msgid "Cannot create the directory $2"
+msgstr "ǡ $2"
+msgid "Target directory: $2"
+msgstr "硨$2"
+msgid "Package $2 is already installed."
+msgstr " $2 ҡ"
+msgid "Package not found: $2"
+msgstr "̯ա$2"
+msgid "Error: Cannot find pack key $2."
+msgstr "먡̯ $2"
+msgid "Pack: $2"
+msgstr "ա$2"
+msgid " Please select the components to install:"
+msgstr " ̽ǵ"
+msgid " Component $2 is essential and will be automatically installed."
+msgstr " $2 ҳǵٯҡ"
+msgid " Component $2 has already been installed."
+msgstr " ǵ $2"
+msgid " The corresponding packages are: $2"
+msgstr " ҳ$2"
+msgid " Component $2 is dependent on: $3"
+msgstr " ǵ $2 ʡ$3"
+msgid " The component\\\(s\\\) will be automatically installed."
+msgstr " ǵٯҡ"
+msgid " Selected Components: $2"
+msgstr " ̽ǵ$2"
+msgid " Selected Components: \\\<default\\\>"
+msgstr " ̽ǵ\\\<\\\>"
+msgid " Warning - Could not find pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Warning - Could not find the pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Warning - Could not find the pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Checking disk space..."
+msgstr "Ϩ..."
+msgid "Insufficient disk space to install Sun Management Center Database Software"
+msgstr "ȴϨƫ Sun Management Center ջ"
+msgid "Sun Management Center DB application software requires: $2 Kbytes"
+msgstr "Sun Management Center DB ȢϨ桨$2 KB"
+msgid "The installation directory \\\"$2\\\" has: $3 Kbytes"
+msgstr " \\\"$2\\\" ȴϨ桨$3 KB"
+msgid "Please supply a directory."
+msgstr "硤"
+msgid "Insufficient disk space to install Sun Management Center Database Dbfiles"
+msgstr "ȴϨƫ Sun Management Center ջ Db "
+msgid "Sun Management Center DB application software requires: $2 Kbytes"
+msgstr "Sun Management Center DB ȢϨ桨$2 KB"
+msgid "The installation directory \\\"$2\\\" has: $3 Kbytes"
+msgstr " \\\"$2\\\" ȴϨ桨$3 KB"
+msgid "Please supply a directory."
+msgstr "硤"
+msgid "Disk Space Requirements:"
+msgstr "Ϩ塨"
+msgid "Space required \\\(in $2\\\): $3 blocks."
+msgstr "Ϩ \\\($2 \\\)$3 Զٴۡ"
+msgid "Space available \\\(in $2\\\): $3 blocks."
+msgstr "ƫϨ \\\($2 \\\)$3 Զٴۡ"
+msgid "Insufficient space available in $2"
+msgstr "$2 ƫϨ"
+msgid "Here are some possible fixes to alleviate the disk space problem:"
+msgstr "ĶҳƫϨΡ"
+msgid "\\\"$2\\\" resides on CD \\\#$3."
+msgstr "\\\"$2\\\" \\\#$3 ĸ"
+msgid "New source directory: $2"
+msgstr "硨$2"
+msgid "Invalid directory."
+msgstr "硤"
+msgid "Installing the components..."
+msgstr "ǵ..."
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "The package $2 is already installed"
+msgstr " $2"
+msgid " Selection Summary"
+msgstr " "
+msgid "Looking for addon products on CD \\\#2..."
+msgstr " CD \\\#2 ĸܨ..."
+msgid "New source directory: $2"
+msgstr "硨$2"
+msgid " Sun Management Center 3.0 Addons Product Selection: "
+msgstr " Sun Management Center 3.0 ܨ塨 "
+msgid "Installing the product: $2"
+msgstr "ܨ¡$2"
+msgid "Cannot find pkginfo file for package: $2"
+msgstr "̯ pkginfo $2"
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "Supports: $2 - $3"
+msgstr "Ρ$2 - $3"
+msgid "Supports: $2"
+msgstr "Ρ$2"
+msgid "Name: $2"
+msgstr "ꢡ$2"
+msgid "Description: $2"
+msgstr "$2"
+msgid "Unsupported OS version: $2"
+msgstr " OS ۡ$2"
+msgid "No components to install."
+msgstr "ȴǵ"
+msgid "A previous version of Sun Management Center exists."
+msgstr "ȴ Sun Management Center 㡤"
+msgid "Please uninstall it locally in \\\"$2\\\"."
+msgstr "ҡ \\\"$2\\\" 㡿"
+msgid "Cannot find $2"
+msgstr "̯ $2"
+msgid "Error copying the locale files to: $2"
+msgstr "̯Ķ먡$2"
+msgid "Setup script will use English."
+msgstr " script ơ"
+msgid "Please run setup locally in \\\"$2\\\"."
+msgstr " \\\"$2\\\" 㡿"
+msgid "ESROOT is not set."
+msgstr " ESROOT"
+msgid "Invalid directory: $2"
+msgstr "硨$2"
+msgid "Invalid file: $2"
+msgstr "$2"
+msgid "Both -S and -T options must be specified"
+msgstr "-S -T ̥Զ"
+msgid "This script will help you to install the Sun Management Center software."
+msgstr " script ̶ɷ Sun Management Center ա"
+msgid "Do you want to install this package now?"
+msgstr "ǡɻȺա"
+msgid " Do you want to proceed?"
+msgstr " "
+msgid " Do you want to install components in layer: $2?"
+msgstr " Ķȹǵ$2?"
+msgid " Do you want to install $2?"
+msgstr " $2"
+msgid "Do you want to install the product: $2?"
+msgstr "Ⱥܨ¡$2?"
+msgid "Do you want to install this package now?"
+msgstr "ǡɻȺա"
+msgid "Would you like to uninstall it now?"
+msgstr "ǡɻá"
+msgid "Would you like to save your old data?"
+msgstr "á"
+msgid "Do you want to run setup now?"
+msgstr "ǡɻҡ"
+msgid "Please enter the source directory:"
+msgstr "ī硨"
+msgid "Enter the development system license: "
+msgstr "ī˷⡨ "
+msgid "Enter your choice: [1\\\|2]"
+msgstr "ī塨[1\\\|2]"
+msgid "Please enter the target directory [$2]:"
+msgstr "ī [$2]"
+msgid "Enter the directory to install the database: "
+msgstr "īջ硨 "
+msgid "Please insert the second CD or enter the source directory from disk 2 \\\[$2\\\]"
+msgstr "īĨگ CD ī 2 \\\[$2\\\]"
+msgid "Please enter the new source directory:"
+msgstr "ī硨"
+msgid "Please enter the OS version for \\\"$2\\\" \\\[$3\\\]: "
+msgstr "ī \\\"$2\\\" OS \\\[$3\\\] "
+msgid "Please enter the platform for \\\"$2\\\" \\\[$3\\\]: "
+msgstr "ī \\\"$2\\\" ƺ \\\[$3\\\] "
+msgid "Log file: $2"
+msgstr "$2"
+msgid " End of Installation "
+msgstr " "
+msgid "For installing Sun Management Center on $2, we need to know the"
+msgstr "ҳħ Sun Management Center $2 ĸʼԯϡ"
+msgid "operating system on $2. This should be the output of the command"
+msgstr "$2 ĸɢ˷ӡ"
+msgid "/usr/bin/uname -r. The command must be executed on a machine booted with"
+msgstr "/usr/bin/uname -r Ϊ"
+msgid "disk mounted on $2"
+msgstr " $2 ٯĸ硤"
+msgid "For installing Sun Management Center on $2, we need to know the"
+msgstr "ҳħ Sun Management Center $2 ĸʼԯϡ"
+msgid "machine type of machine whose root filesystem is or will be mounted on $2."
+msgstr "̧˷ɻ $2 ĸΡ"
+msgid "This should be the output of the following command"
+msgstr "ĶΪ"
+msgid " /usr/platform/PLATFORM/sbin/prtdiag \\\| /usr/bin/head -1 \\\| /usr/bin/cut -f2 -d:"
+msgstr " /usr/platform/PLATFORM/sbin/prtdiag \\\| /usr/bin/head -1 \\\| /usr/bin/cut -f2 -d:"
+msgid "Please note that the above commands must be executed on the target machine."
+msgstr "ĸĸ硤"
+msgid "Would you like to migrate your 2.x data?"
+msgstr " 2.x á"
+msgid "A previous version of Sun Management Center Data exists."
+msgstr "ȴ Sun Management Center 㡤"
+msgid "This will remove all files under $2. If you have any custom"
+msgstr " $2 ĶȴΪԶĶȴ"
+msgid "scripts under this directory, please move them to an alternate location"
+msgstr "Ƕ scriptsЩԯ"
+msgid "before proceeding."
+msgstr "̯"
+msgid "Do you wish to continue with the removal of the existing 2.x data"
+msgstr "ܢȴ 2.x "
+#
+#===============================
+# <WS>/packages/Setup/es-setup
+#===============================
+msgid "Setup of $2 component failed."
+msgstr " $2 ǵ"
+msgid "Exiting setup."
+msgstr ""
+msgid "The Sun Management Center Setup File \\\($2\\\)$3"
+msgstr "Sun Management Center \\\($2\\\)$3"
+msgid " is missing. Cannot Setup Sun Management Center $2."
+msgstr " ¡ Sun Management Center $2"
+msgid "Initiating setup for Sun Management Center $2 Component."
+msgstr " Sun Management Center $2 ǵ "
+msgid "Please read the release notes to configure the device type."
+msgstr "Ρ"
+msgid "Using log file: $2."
+msgstr "$2."
+msgid " Sun Management Center Setup Program"
+msgstr " Sun Management Center Ȣ"
+msgid "This program does setup of Sun Management Center components that are installed on your system."
+msgstr "ȺȢ˷ĸ Sun Management Center ǵ"
+msgid "Checking for Sun Management Center components installed on your system."
+msgstr "˷ĸ Sun Management Center ǵ"
+msgid "You Do not have any Sun Management Center components installed."
+msgstr "Ƕ Sun Management Center ǵ"
+msgid "You may want to run setup after installing"
+msgstr " Sun Management Center ǵѥƫ"
+msgid " the Sun Management Center components."
+msgstr " Ȣ"
+msgid "You have the following Sun Management Center components installed"
+msgstr "ħĶ Sun Management Center ǵ"
+msgid " Sun Management Center Server"
+msgstr " Sun Management Center Τ"
+msgid " Sun Management Center Agent"
+msgstr " Sun Management Center ܡȢ"
+msgid " Sun Management Center Console"
+msgstr " Sun Management Center ƺ"
+msgid "This script will perform the setup for each of these components"
+msgstr " Script ҳǵʩ"
+msgid "Core Sun Management Center setup complete."
+msgstr " Sun Management Center ܫ"
+msgid "Setup of Sun Management Center addons incomplete. Exiting"
+msgstr " Sun Management Center ȩ Exiting"
+msgid "Sun Management Center setup complete."
+msgstr " Sun Management Center ܫ"
+msgid "Problems occured with setup of the following addons: $2"
+msgstr "Ķ$2"
+msgid "Setup log stored in $2"
+msgstr " $2 "
+msgid "A minimum of 256 MB RAM is required to run Sun Management Center."
+msgstr "ŷȴ 256 MB RAM Sun Management Center"
+msgid "Current system has $2 MB RAM."
+msgstr "Щ˷̦ȴ $2 MB RAM"
+msgid "Can not continue to setup Sun Management Center DB."
+msgstr " Sun Management Center DB"
+msgid "Checking /etc/system file..."
+msgstr " /etc/system ..."
+msgid "Checking memory available..."
+msgstr "ƫش..."
+msgid "Checking /etc/system file error. It can not be updated."
+msgstr " /etc/system 먡 It can not be updated."
+msgid "The /etc/system file needs to be changed for Sun Management Center DB requirements."
+msgstr " /etc/system Sun Management Center DB 塤"
+msgid "Backing up /etc/system to /etc/system.SunMCDB.backup"
+msgstr "ެǹ /etc/system to /etc/system.SunMCDB.backup"
+msgid "/etc/system file has not been changed."
+msgstr " /etc/system file "
+msgid "In order for kernel variable changes to take effect, this "
+msgstr "ҳ桢ٯ"
+msgid "machine must be rebooted. You must reboot this machine now"
+msgstr "檡ǡɻٯ"
+msgid "and then run the setup again."
+msgstr "ѥԶʩ"
+msgid "Cannot create link $2 to directory $3"
+msgstr "ǡͻ $3 $2"
+msgid "Sun Management Center DB setup cannot continue."
+msgstr "Sun Management Center DB ʩ"
+msgid "Error changing ownership of $2 to root. Installation cannot continue."
+msgstr " $2 ȴҳ root ɢ먡ҡ"
+msgid "Configuring Sun Management Center DB listener and service files..."
+msgstr " Sun Management Center DB Τ٭..."
+msgid "The default listener port $2 for Sun Management Center DB has already been used."
+msgstr "Sun Management Center DB $2 ݷ"
+msgid "Please input another port number for Sun Management Center DB listener."
+msgstr "īƶġԶ Sun Management Center DB "
+msgid "Error in resetting the configuration files for Sun Management Center DB."
+msgstr " Sun Management Center DB 먡"
+msgid "Linking database, Please wait"
+msgstr "ջԷ"
+msgid "in the event of error, see /tmp/relink.log"
+msgstr "ǵ㡢ٶ /tmp/relink.log"
+msgid "Create ora passord file"
+msgstr "ǡ ora "
+msgid "/usr/bin/make is needed on Sun Management Center server machine. The current"
+msgstr "Sun Management Center Τĸȴ /usr/bin/makeЩ"
+msgid "failed to create internal user password file : $2"
+msgstr "ǡϯ$2"
+msgid "does not have it. Please make this file available and run setup again"
+msgstr "ȴԶҳƫѥʩ"
+msgid "execution of make -f ins_net_server.mk install failed"
+msgstr "make -f ins_net_server.mk install "
+msgid "see /tmp/make.log file for details"
+msgstr "ٶ /tmp/make.log ع"
+msgid "Database setup failed : $2 does not exist"
+msgstr "ջ$2 "
+msgid "Database setup failed : mkaggregatefiles.ksh failed"
+msgstr "ջmkaggregatefiles.ksh "
+msgid "Database setup failed : db-start failed"
+msgstr "ջdb-start "
+msgid "Please wait, Sun Management Center database setup in progress. It may take 15 to 20 minutes"
+msgstr "Է Sun Management Center ջƫĸ 15 ̯ 20 š"
+msgid "Database setup failed : build-smc-oracle-recovery.ksh failed"
+msgstr "ջbuild-smc-oracle-recovery.ksh "
+msgid "Please wait, Sun Management Center database setup in progress. It may take 15 to 20 minutes"
+msgstr "Է Sun Management Center ջƫĸ 15 ̯ 20 š"
+msgid "Database setup failed : build-smc-oracle-recovery.ksh failed"
+msgstr "ջbuild-smc-oracle-recovery.ksh "
+msgid "Found symon 2.x import data"
+msgstr "̯ symon 2.x ī"
+msgid "about to import symon 2.x data"
+msgstr "ī symon 2.x "
+msgid "cannot find the 2.x import script file $2"
+msgstr "̯ 2.x ī Script $2"
+msgid "will not import symon 2.x data"
+msgstr "ī symon 2.x "
+msgid "Database setup failed : db-stop failed"
+msgstr "ջdb-stop "
+msgid "A problem occured with $2 setup. Do you want to continue?"
+msgstr " $2 ܢ"
+msgid " Do you wish to update /etc/system file?"
+msgstr " /etc/system "
+msgid "A problem occured with $2 setup. Do you want to continue?"
+msgstr " $2 ܢ"
+msgid " Do you wish to keep any existing topology and event data"
+msgstr " Ƕܢůǵ"
+msgid " Do you want to perform a symon 2.x data import?"
+msgstr " symon 2.x ī"
+msgid "Do you want to start Sun Management Center agent and server components now"
+msgstr "ǡɻٯ Sun Management Center ܡȢΤǵ"
+msgid "Do you want to start Sun Management Center agent now"
+msgstr "ǡɻٯ Sun Management Center ܡȢ"
+msgid "Error: It seems the file $2 is not writable, could not update the file."
+msgstr "먡 $2 ī"
+msgid "Configuring the system for setup, please wait."
+msgstr "˷Է"
+#
+#===============================
+# <WS>/packages/Setup/db-start
+#===============================
+msgid "Listener and Database are up and running\n"
+msgstr "ջɳɢ\n"
+msgid "the current sid \n"
+msgstr "Щ sid \n"
+msgid "the current orahome \n"
+msgstr "Щ orahome \n"
+msgid "unknown system type, exiting......................\n"
+msgstr "˷......................\n"
+msgid "getHostName: failed to obtain current host from hostname command\n"
+msgstr "getHostNameڷ hostname ̽ڵЩ\n"
+msgid "current host : $2\n"
+msgstr "Щ$2\n"
+msgid "getUserName: failed to obtain user name from id command\n"
+msgstr "getUserNameڷ id ̽ڵϯ\n"
+msgid "current user name : $2\n"
+msgstr "Щϯꢡ$2\n"
+msgid "getUserGroup: failed to obtain user group from id command\n"
+msgstr "getUserGroupڷ id ̽ڵ\n"
+msgid "current user group : $2\n"
+msgstr "Щϯڡ$2\n"
+msgid "path_app : $2\n"
+msgstr "path_app :$2\n"
+msgid "found $2 on path in $3\n"
+msgstr " $3 ̯ $2\n"
+msgid "can not find $2 on path, exiting.......................\n"
+msgstr "ĸ̯ $2.......................\n"
+msgid "verifyDatabaseUp: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseUpڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseUp: instance is executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseUp: instance is not executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseDown: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseDownڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseDown: instance is executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyDatabaseDown: instance is not executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyListenerUp: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerUpڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerUp: listener $2 is execution\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerUp: listener $2 is not execution\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerDown: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerDownڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerDown: listener $2 is execution\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyListenerDown: listener $2 is not execution\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from df\n"
+msgstr "verifyFilesystemPermڷ df ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from df\n"
+msgstr "verifyFilesystemPermڷ df ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from mount comma\n"
+msgstr "verifyFilesystemPermڷ comma ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: filesystem $2 is not mounted setuid\n"
+msgstr "verifyFilesystemPerm˷ $2 setuid\n"
+msgid " must re-mount the filesystem with setuid enabled\n"
+msgstr " setuid ٯ˷\n"
+msgid "verifyFilesystemPerm: filesystem $2 is mounted setuid, OK\n"
+msgstr "verifyFilesystemPerm˷ $2 setuid\n"
+msgid "verifyListenerStatus: failed to obtain listener status for alias: $2\n"
+msgstr "verifyListenerStatusҳĶɱ̽ڵ表$2\n"
+msgid "verifyListenerStatus: listener status is good for alias: $2\n"
+msgstr "verifyListenerStatusĶɱ$2\n"
+msgid "verifyListenerStatus: listener status is not good for alias: $2\n"
+msgstr "verifyListenerStatusĶɱ$2\n"
+msgid "the specified path \\\($2\\\) does not exist\n"
+msgstr " \\\($2\\\) \n"
+msgid "tmpdir \n"
+msgstr "tmpdir \n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain accessperms from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵ̽$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain username from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵϯꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain groupname from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: access perms for \\\($2\\\) is not at least 755\n"
+msgstr "verifyGoodOraclePermOwnership \\\($2\\\) ̽ŷ 755\n"
+msgid "verifyGoodOraclePermOwnership: access perms ok\n"
+msgstr "verifyGoodOraclePermOwnership̽ڦ\n"
+msgid "verifyGoodOraclePermOwnership: owner \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 ȴϯ \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: owner ok\n"
+msgstr "verifyGoodOraclePermOwnershipȴϯڦ\n"
+msgid "verifyGoodOraclePermOwnership: group \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: group ok\n"
+msgstr "verifyGoodOraclePermOwnershipڦ\n"
+msgid "**** directory : $2 does not exist\n"
+msgstr "**** 硨$2 \n"
+msgid "loop: current new $2\n"
+msgstr "Щ $2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain accessperms from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵ̽$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain username from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵϯꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain groupname from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: access perms for \\\($2\\\) is not at least 755\n"
+msgstr "verifyGoodOraclePermOwnership \\\($2\\\) ̽ŷ 755\n"
+msgid "verifyGoodOraclePermOwnership: access perms ok\n"
+msgstr "verifyGoodOraclePermOwnership̽ڦ\n"
+msgid "verifyGoodOraclePermOwnership: owner \\\($listuser\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 ȴϯ \\\($listuser\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: owner ok\n"
+msgstr "verifyGoodOraclePermOwnershipȴϯڦ\n"
+msgid "verifyGoodOraclePermOwnership: group \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: group ok\n"
+msgstr "verifyGoodOraclePermOwnershipڦ\n"
+msgid "**** file : $2 does not exist\n"
+msgstr "**** $2 \n"
+msgid "verifySharedMemUsage: failed to obtain ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̽ڵ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifySharedMemUsage: found ipcs \\\(shared memory segment\\\) info user : $2, group : $3, \\\(shid\\\) : $4\n"
+msgstr "verifySharedMemUsage̯ ipcs \\\(شٴ\\\) عϯ$2ڡ$3, \\\(shid\\\)$4\n"
+msgid "verifySharedMemUsage: did find ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̯ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifySharedMemUsage: did not find any ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̯Ƕ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifyActiveSemaphoresUsage: failed to obtain ipcs \\\(active semaphores\\\) info user : $2, group : $3\n"
+msgstr "verifyActiveSemaphoresUsage̽ڵ ipcs \\\(ɢ\\\) عϯ$2ڡ$3\n"
+msgid "verifyActiveSemaphoresUsage: found ipcs \\\(active semaphores\\\) info user : $2, group : $3, \\\(semid\\\) : $4\n"
+msgstr "verifyActiveSemaphoresUsage̯ ipcs \\\(ɢ\\\) عϯ$2ڡ$3, \\\(semid\\\)$4\n"
+msgid "verifyActiveSemaphoresUsage: did find ipcs \\\(active semaphores\\\) info user : $2, group : \n"
+msgstr "verifyActiveSemaphoresUsage̯ ipcs \\\(ɢ\\\) عϯ$2ڡ\n"
+msgid "verifyActiveSemaphoresUsage: did not find any ipcs \\\(active semaphores\\\) info user : $2, group : $3\n"
+msgstr "verifyActiveSemaphoresUsage̯Ƕ ipcs \\\(ɢ\\\) عϯ$2ڡ$3\n"
+msgid "startListener: failed to start listener, alias: $2\n"
+msgstr "startListenerٯ¡ɱء$2\n"
+msgid "startListener: listener started, alias: $2\n"
+msgstr "startListenerٯɱء$2\n"
+msgid "stopListener: failed to stop listener, alias: $2\n"
+msgstr "stopListener¡ɱء$2\n"
+msgid "stopListener: listener stopped, alias: $2\n"
+msgstr "stopListenerϡɱء$2\n"
+msgid "removing existing listener log file $2"
+msgstr "ܢȴ $2"
+msgid "execution of verifySetuidFilesystemPerm $2 fail\n"
+msgstr "verifySetuidFilesystemPerm $2 \n"
+msgid "exiting........................\n"
+msgstr "........................\n"
+msgid "execution of $2 start $3 fail\n"
+msgstr "$2 ٯ $3 \n"
+msgid "execution of verifyListenerUp $2 fail\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "execution of verifyGoodListenerStatus $2 fail\n"
+msgstr " verifyGoodListenerStatus $2 \n"
+msgid "execution of sqlplus using @$2 fail\n"
+msgstr "ɳ @$2 sqlplus \n"
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "execution of verifyDatabaseUp $2 fail\n"
+msgstr "verifyDatabaseUp $2 \n"
+msgid "Listener and Database are up and running\n"
+msgstr "ջɳɢ\n"
+#
+#================================
+# <WS>/packages/Setup/es-device
+#================================
+msgid "Usage: $2 -ad Filename"
+msgstr "Ρ$2 -ad "
+msgid " where the options represent:"
+msgstr " ̧㡢"
+msgid " a : Add new device"
+msgstr " a"
+msgid " d : Delete device"
+msgstr " dɴ"
+msgid "This action is limited to superuser only."
+msgstr "Ⱥɢϯ"
+msgid "Exiting $2."
+msgstr " $2"
+msgid "create_node_family_file: Error! Invalid node object type $2"
+msgstr "create_node_family_file먡ǵ $2 "
+msgid "set_global_variable: Value not specified for $2"
+msgstr "set_global_variable $2 ԫ"
+msgid "set_global_variable: Invalid parameter $2"
+msgstr "set_global_variableٶ $2"
+msgid "delete_node: Invalid data in input file"
+msgstr "delete_nodeī"
+msgid "delete_node: $2 does not exist, verify input"
+msgstr "delete_node$2 㡢ī"
+msgid "delete_group: Invalid data in input file"
+msgstr "delete_groupī"
+msgid "delete_group: $2 does not exist, verify input"
+msgstr "delete_group$2 㡢ī"
+msgid "delete_group: Invalid group type $2"
+msgstr "delete_group $2 "
+msgid "delete_segment: Invalid data in input file"
+msgstr "delete_segmentī"
+msgid "delete_segment: $2 does not exist, verify input"
+msgstr "delete_segment$2 㡢ī"
+msgid "delete_segment: Invalid segment type $2"
+msgstr "delete_segmentٴ $2 "
+msgid "delete_composite: Invalid data in input file"
+msgstr "delete_compositeī"
+msgid "delete_composite: $2 does not exist, verify input"
+msgstr "delete_composite$2 㡢ī"
+msgid "validate_node_object_type: $2 or $3 exists"
+msgstr "validate_node_object_type$2 $3 "
+msgid "validate_i18n_key: Node object type exists in $2 line $3"
+msgstr "validate_i18n_keyǵ $2 $3"
+msgid "validate_i18n_key: Invalid i18n key: $2"
+msgstr "validate_i18n_keyi18n 桨$2"
+msgid "validate_group_i18n_type: $2 is invalid group type"
+msgstr "validate_group_i18n_type$2 "
+msgid "validate_group_i18n_key: Group object type exists in $2 line $3"
+msgstr "validate_group_i18n_keyǵ $2 $3"
+msgid "validate_segment_i18n_type: $2 is invalid segment type"
+msgstr "validate_segment_i18n_type$2 ٴ"
+msgid "validate_segment_i18n_key: Segment object type exists in $2 line $3"
+msgstr "validate_segment_i18n_keyٴǵ $2 $3"
+msgid "validate_composite_i18n_key: Composite object type exists in $2 line $3"
+msgstr "validate_composite_i18n_keyǵ $2 $3"
+msgid "validate_properties_file: Invalid property file name. Must be $2"
+msgstr "validate_properties_file桤 $2"
+msgid "validate_search_parameter: Invalid sysoid value $2"
+msgstr "validate_search_parametersysoid ԫ $2 "
+msgid "validate_icon_file: Check if file exists and permissions"
+msgstr "validate_icon_fileů"
+msgid "validate_hardware_module: Hardware Module name does not exist"
+msgstr "validate_hardware_module"
+msgid "validate_group_object_type: Invalid object type $2"
+msgstr "validate_group_object_typeǵ $2 "
+msgid "validate_group_object_type: Group object type exists in $2 line $3"
+msgstr "validate_group_object_typeǵ $2 $3"
+msgid "validate_segment_object_type: Invalid object type $2"
+msgstr "validate_segment_object_typeǵ $2 "
+msgid "validate_segment_object_type: Segment object type exists in $2 line $3"
+msgstr "validate_segment_object_typeٴǵ $2 $3"
+msgid "add_node: Invalid node type $2"
+msgstr "add_node $2 "
+msgid "add_node: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_node $2 ů"
+msgid "add_group: Invalid group type $2"
+msgstr "add_group $2 "
+msgid "add_group: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_group $2 ů"
+msgid "add_segment: Invalid segment type $2"
+msgstr "add_segmentٴ $2 "
+msgid "add_segment: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_segment $2 ů"
+msgid "add_composite: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_composite $2 ů"
+msgid "Package SUNWessrv is not installed on this system"
+msgstr "Ⱥ˷ SUNWessrv "
+msgid "Unable to create logfile $2"
+msgstr "ǡ $2"
+msgid "$2 file does not exist"
+msgstr "$2 "
+msgid "$2 file does not have read permissions"
+msgstr "$2 ̦̽"
+msgid "Invalid Operation: Operation not supported"
+msgstr "ɢ桨ɢ̿"
+msgid "process_delete_data: Object type $2 missing in data file"
+msgstr "process_delete_dataŷǵ $2"
+msgid "validate_monitor_via : $2 is invalid type"
+msgstr "validate_monitor_via$2 "
+msgid "validate_node_type:$2 is invalid node type"
+msgstr "validate_node_type$2 "
+msgid "validate_node_object_type: Invalid object type $2"
+msgstr "validate_node_object_typeǵ $2 "
+msgid "validate_i18n_key: Invalid object type $2"
+msgstr "validate_i18n_keyǵ $2 "
+msgid "add_device: Invalid object type $2"
+msgstr "add_deviceǵ $2 "
+msgid "validate_node_object_type: Node object type exists in $2 line $3"
+msgstr "validate_node_object_typeǵ $2 $3"
+msgid "validate_object_type: Invalid object type $2"
+msgstr "validate_object_typeǵ $2 "
+msgid "validate_group_type: $2 is invalid group type"
+msgstr "validate_group_type$2 "
+msgid "validate_segment_type: Invalid value $2 for Segment_type"
+msgstr "validate_segment_typeSegment_type ԫ $2 "
+msgid " (for example: ./es-device -a /tmp/userdata)"
+msgstr " (./es-device -a /tmp/userdata)"
+msgid " (for example: ./es-device -d /tmp/userdata)"
+msgstr " (./es-device -d /tmp/userdata)"
+msgid "validate_user_name: No value specified for User_name"
+msgstr "validate_user_name User_name ԫ"
+msgid "validate_node_object_type: No value specified for Node_object_type"
+msgstr "validate_node_object_typeNode_object_type ԫ"
+msgid "validate_i18n_key: No value specified for i18n_key"
+msgstr "validate_i18n_key i18n_key ԫ"
+msgid "validate_properties_file: No value specified for Properties_file"
+msgstr "validate_properties_file Properties_file ԫ"
+msgid "validate_search_parameter: No value specified for Search_parameter"
+msgstr "validate_search_parameter Search_parameter ԫ"
+msgid "validate_icon_file: No value specified for icon"
+msgstr "validate_icon_fileԫ"
+msgid "validate_segment_object_type: No value specified for Segment object type"
+msgstr "validate_segment_object_typeٴǵԫ"
+#
+#==============================
+# <WS>/packages/Setup/db-stop
+#==============================
+msgid "getHostName: failed to obtain current host from hostname comma"
+msgstr "getHostNameڷ hostname ̽ڵЩ"
+msgid "current host : $2\n"
+msgstr "Щ$2\n"
+msgid "getUserName: failed to obtain user name from id comma\n"
+msgstr "getUserNameڷ id ̽ڵϯ\n"
+msgid "current user name : $2\n"
+msgstr "Щϯꢡ$2\n"
+msgid "getUserGroup: failed to obtain user group from id comma\n"
+msgstr "getUserGroupڷ id ̽ڵ\n"
+msgid "current user group : $2\n"
+msgstr "Щϯڡ$2\n"
+msgid "verifyDatabaseUp: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseUpڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseUp: instance is executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseUp: instance is not executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseDown: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseDownڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseDown: instance is executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyDatabaseDown: instance is not executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyListenerUp: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerUpڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerUp: listener $2 is executing\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerUp: listener $2 is not executing\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerDown: failed to obtain listener process info from \n"
+msgstr "verifyListenerDown̽ڵݨܡعڷ\n"
+msgid "verifyListenerDown: listener $2 is executing\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyListenerDown: listener $2 is not executing\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "the file $2 does not exist, exiting........................"
+msgstr " $2 㡢........................"
+msgid "performing a (shutdown immediate)......"
+msgstr "硾ǡɻ......"
+msgid "execution of $2 using \\@$3 failed"
+msgstr " \\@$3 $2 "
+msgid "exiting..........................\n"
+msgstr "........................\n"
+msgid "unable to perform normal shutdown, executing a shutdown abort"
+msgstr "ڦ"
+msgid "execution of $2 using adhoc shutdown-abort failed"
+msgstr " adhoc shutdown-abort $2 "
+msgid "execution of $2 stop $3 failed"
+msgstr "$2 $3 "
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "execution of sqlplus using $2 fail\n"
+msgstr " $2 sqlplus \n"
+msgid "can not find $2 on path, exiting.......................\n"
+msgstr "ĸ̯ $2.......................\n"
+#
+#=========================================
+# <WS>/packages/Setup/sm_setup_server.sh
+#=========================================
+msgid "The Sun Management Center Console help configuration file cannot be found."
+msgstr "̯ Sun Management Center ƺɷ"
+msgid "Please re-install the Sun Management Center Console component"
+msgstr " Sun Management Center ƺǵ"
+msgid "The base URL has been set to $2"
+msgstr " URL ҳ $2"
+msgid "Could not find group $2. You will have to set up"
+msgstr "̯ $2ٯ"
+msgid "the groups manually. Please add $3 to group $2."
+msgstr "ڡ $3 $2"
+msgid "User $3 in group $2 is not a valid user. Leaving it out of the esusers file."
+msgstr " $2 ϯ $3 ȴϯڷ esusers 桤"
+msgid "Adding user $2 from group $3 to esusers"
+msgstr " $3 ϯ $2 esusers"
+msgid "It appears that you already have some users \\\($2\\\)"
+msgstr "ƫȴġϯ \\\($2\\\)"
+msgid "configured as Sun Management Center administrators. Leaving these users in place."
+msgstr "ҳ Sun Management Center ܡޡϯݨ"
+msgid "You should setup a user as a Sun Management Center administrator."
+msgstr "ġϯҳ Sun Management Center ܡ"
+msgid "This person will be added to the esadm and esdomadm groups."
+msgstr "Ⱥϯ̯ esadm esdomadm 㡤"
+msgid "$2 is not a valid user."
+msgstr "$2 ȴϯ"
+msgid "The group $2 already exists on your system."
+msgstr "˷ĸ $2"
+msgid "Creating the group $2 that contains Sun Management Center $3 Users."
+msgstr "ǡ Sun Management Center $3 ϯ $2"
+msgid "Could not find $2 in $3"
+msgstr "$3 ̯ $2"
+msgid "This part of the setup process does the Sun Management Center Server Component setup."
+msgstr "šݨܡȩ Sun Management Center Τǵ"
+msgid "Unable to set $2 values."
+msgstr " $2 ԫ"
+msgid "agent.snmpPort is already configured in $2"
+msgstr "$2 ħ agent.snmpPort"
+msgid "topology.snmpPort is already configured in $2"
+msgstr "$2 ħ topology.snmpPort"
+msgid "The Sun Management Center base URL is relative to the Sun Management Center Console."
+msgstr " Sun Management Center URL Sun Management Center Cosole "
+msgid "The Sun Management Center Console is able to request help documentation via the network."
+msgstr " Sun Management Center ƺƫɷǵ衤"
+msgid "If you have installed Sun Management Center help documentation in an http-accessible"
+msgstr "Ϊƫ http ̽ĸħ Sun Management Center ɷǵ衢"
+msgid "location within your network, you may specify this location."
+msgstr "Ⱥ"
+msgid "If Sun Management Center help is installed on the console host, simply accept the default value."
+msgstr "Ϊ Sun Management Center ɷƺĸЬƷ̿ԫ"
+msgid "Completing Sun Management Center Server Component setup."
+msgstr "ȩ Sun Management Center Τǵ"
+msgid "Using security seed $2 for Sun Management Center server"
+msgstr "Sun Management Center Τ $2"
+msgid "Please enter a user to be the Sun Management Center administrator: "
+msgstr "īɢҳ Sun Management Center ܡϯ "
+msgid "Please enter a valid username: "
+msgstr "īȴϯꢡ "
+msgid "Please enter base URL to Sun Management Center help [local]: "
+msgstr "ī Sun Management Center ɷ URL [áٶ] "
+#
+#===================================
+# <WS>/packages/Setup/es-common.sh
+#===================================
+msgid "Enter \\\"y\\\" or \\\"n\\\" or \\\"q\\\""
+msgstr "ī \\\"y\\\" \\\"n\\\" \\\"q\\\""
+msgid "Exiting at user request"
+msgstr "ϯĶ"
+msgid "L10N_CODE not set!, LANG=$2"
+msgstr " L10N_CODELANG=$2"
+msgid "Cannot find locale directory for LANG: $2"
+msgstr "̯ LANG 硨$2"
+msgid "Expected to find it in: $2"
+msgstr "Ķ̯ơ$2"
+msgid "No Sun Management Center Packages are installed. Exiting."
+msgstr " Sun Management Center ա֡"
+msgid "Could not find xput executable: $2"
+msgstr "̯ xput ƫ$2"
+msgid "Cannot find file $2"
+msgstr "̯ $2"
+msgid "Moving $2 to $3"
+msgstr " $2 ̯ $3"
+msgid "-------------- WARNING -------------------"
+msgstr "-------------- -------------------"
+msgid "It appears that $2 $3 is already in use."
+msgstr "$2 $3 ƫ"
+msgid "Sun Management Center $2 may not be able to run due to this conflict."
+msgstr "ȺSun Management Center $2 ƫ硤"
+msgid "There are two ways to correct this conflict:"
+msgstr "ȴ̥ƫϫȺ"
+msgid " 1. Reconfigure the port that Sun Management Center uses."
+msgstr " 1. Sun Management Center ա"
+msgid " 2. Stop the process that is using the port."
+msgstr " 2. ݨܡ"
+msgid " You are currently running snmpdx, which may be causing the conflict."
+msgstr " Щ snmpdxƫӳ"
+msgid "Skipping the setting of port number for $2"
+msgstr "ܩ $2 "
+msgid "NOTE: Prior to starting Sun Management Center $2, stop the process using port $3."
+msgstr "ٯ Sun Management Center $2 Щǿ $3 ݨܡ"
+msgid "Updating $2 with new port number."
+msgstr " $2"
+msgid "This part of setup generates security keys used for communications"
+msgstr "šʩܨʩع"
+msgid "between processes. A seed must be provided to initialize the"
+msgstr ""
+msgid "keys. You can choose to use the standard Sun Management Center default or"
+msgstr "ƫ Sun Management Center ԫī"
+msgid "enter your own seed. If you do not generate the keys now,"
+msgstr "͡Ϊܢܨ"
+msgid "you can do so later using the procedure documented in the"
+msgstr "ƫѥߧ"
+msgid "Sun Management Center 3.0 Users Guide."
+msgstr "Sun Management Center 3.0 ϯв"
+msgid "Please make sure you use the same seed for all the machines you install."
+msgstr "ȴ͡"
+msgid "Invalid seed - type s to use default seed"
+msgstr " - Ѻ s "
+msgid "Using default Sun Management Center value for seed."
+msgstr " Sun Management Center ԫɢҳ"
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+msgid "Unable to create logfile $LOGFILE."
+msgstr "ǡ $LOGFILE"
+msgid "Started $0 at"
+msgstr "ٯ $0 "
+msgid "Running on"
+msgstr ""
+msgid "What seed would you like to use?\n"
+msgstr "͡\n"
+msgid "Invalid response in automated configuration file."
+msgstr "ٯȴܡ"
+msgid "Unsupported OS version: $2"
+msgstr " OS ۡ$2"
+msgid "Do you want to use a different port number for $2?"
+msgstr " $2 "
+msgid "Do you want to generate these keys using the Sun Management Center default seed?"
+msgstr " Sun Management Center ܨ"
+msgid "Please enter any port greater or equal to 1100 : "
+msgstr "īǶġ 1100 ա "
+msgid "Port $2 is not a valid port number, try another number : "
+msgstr " $2 ȴƶġԶ "
+msgid "Port $2 is also busy, try another - use s to skip setting the port number:"
+msgstr " $2 ľȤ㡢̧ - s ܩ"
+#
+#======================================
+# <WS>/packages/Setup/install-java.sh
+#======================================
+msgid "Java packages are not in $2"
+msgstr " Java $2 "
+msgid "All required Java packages are not in $2"
+msgstr "ȴ Java $2 "
+msgid "Installing java packages $2"
+msgstr " java $2"
+msgid "the system. Please install them first and then install Sun Management Center."
+msgstr "˷㡤ǿԯѥ Sun Management Center"
+msgid "Package $2 is installed on this system. This package is"
+msgstr " $2 Ⱥ˷㡤 This package is"
+msgid "incompatible with the java version required for Sun Management Center."
+msgstr " Sun Management Center java թ"
+msgid "This package needs to be uninstalled before installing java 2"
+msgstr "ǿȺѥ java 2"
+msgid "Removal of the package $2 failed, please remove it"
+msgstr " $2 ٯ"
+msgid "manually and then install Sun Management Center."
+msgstr "ѥ Sun Management Center"
+msgid "You need to install the following packages $2"
+msgstr "Ķ $2"
+msgid "If you do not choose to install it now, the installation will abort."
+msgstr "Ϊǡɻҡʩˡ"
+msgid "It seems some other version of java packages are present in $2"
+msgstr " $2 ȴƶġ java 㡤"
+msgid "You need to install Solaris_JDK_1.2.1_04 version of the following packages"
+msgstr " Solaris_JDK_1.2.1_04 Ķ"
+msgid "You can enter any directory to install the required version of JAVA."
+msgstr "ƫīǶ JAVA"
+msgid "No java packages to be removed."
+msgstr " java "
+msgid "Sun Management Center installation had overwritten your previous java installation."
+msgstr " Sun Management Center Ȣ̽ǿЩ java Ȣ"
+msgid "You can either keep the current installation or remove it."
+msgstr "ƫЩȢ桤"
+msgid "Warning - Could not find pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid " Space calculations will be wrong."
+msgstr " Ϩȴ먡"
+msgid "Java installation:"
+msgstr "Java ҡ"
+msgid "Space required \\\(in $2\\\): $3 blocks."
+msgstr "Ϩ \\\($2 \\\)$3 Զٴۡ"
+msgid "Space available \\\(in $2\\\): $3 blocks."
+msgstr "ƫϨ \\\($2 \\\)$3 Զٴۡ"
+msgid "Insufficient disk space to install Java components"
+msgstr "ȴϨƫ Java ǵ"
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "The following packages required by Java 2 are not installed on"
+msgstr "Ķ Java 2 "
+msgid "Packages: $2"
+msgstr "ա$2"
+msgid "The required version of Java is already installed in $2"
+msgstr " Java $2 "
+msgid "It seems some of the required packages are already present."
+msgstr "ȴš㡤"
+msgid "You can either overwrite the existing java version or install the"
+msgstr "ƫܢȴ java "
+msgid "required version in some other directory."
+msgstr "̧㡤"
+msgid "Invalid directory"
+msgstr ""
+msgid "Java packages couldnot be found in directory $2"
+msgstr " $2 ̯ Java "
+msgid "Do you want to install it now?"
+msgstr "ǡɻҡ"
+msgid "Do you want to overwrite the existing one?"
+msgstr "̽ܢȴۡ"
+msgid "Do you want to remove it?"
+msgstr "桩"
+msgid "Do you want to uninstall it now"
+msgstr "ǡɻ"
+msgid "Enter the base directory for JDK installation [$2]"
+msgstr "ī JDK [$2]"
+#
+#============================
+# <WS>/packages/Setup/es-db
+#============================
+msgid "A minimum of 256 MB RAM is required to install Sun Management Center server."
+msgstr "ŷȴ 256 MB RAM Sun Management Center Τ¡"
+msgid "Current system has $2 MB RAM."
+msgstr "Щ˷̦ȴ $2 MB RAM"
+msgid "Can not continue to install Sun Management Center server."
+msgstr " Sun Management Center Τ¡"
+msgid " Sun Management Center DB "
+msgstr " Sun Management Center DB "
+msgid " Sun Management Center Database Installation "
+msgstr " Sun Management Center ջ "
+msgid "Invalid parameters for installDB\\\(\\\)"
+msgstr " installDB\\\(\\\) ٶ"
+msgid "The following Sun Management Center database packages have already been installed on your system:"
+msgstr "˷ĸħĶ Sun Management Center ջա"
+msgid "Checking memory available..."
+msgstr "ƫش..."
+msgid "Creating the mount points..."
+msgstr "ǡ..."
+msgid "Error installing SUNWesora. Installation cannot continue."
+msgstr " SUNWesora 먡ҡ"
+msgid "Error installing SUNWestbl. Installation cannot continue."
+msgstr " SUNWestbl 먡ҡ"
+msgid "Sun Management Center DB packages installed successfully"
+msgstr "Sun Management Center DB ȩ"
+msgid "es-setup will perform the remainder of the config"
+msgstr "es-setup ̧š"
+#
+#======================================
+# <WS>/packages/Setup/install-patch.sh
+#======================================
+msgid "No patch checking on this platform"
+msgstr "ȺƺĸȢ"
+msgid "Could not find the patches in the following directory."
+msgstr "Ķ̯Ȣ"
+msgid "Installing patch $2..."
+msgstr "Ȣ $2..."
+msgid "Installation of patch $2 failed."
+msgstr "Ȣ $2 "
+msgid "Installation of patch $2 complete."
+msgstr "Ȣ $2 ȩ"
+msgid "Following patches are prerequisites to the java patches."
+msgstr " java ȢЩǿĶȢ"
+msgid "Please install them manually and then install Sun Management Center."
+msgstr "ٯѥ Sun Management Center"
+msgid "Installation of following patches failed, please install"
+msgstr "ĶȢٯ"
+msgid "them manually and then install Sun Management Center."
+msgstr "ѥ Sun Management Center"
+msgid "Checking for required OS patches, Please wait..."
+msgstr " OS ȢԷ..."
+msgid "Following is the list of required patches for java 2."
+msgstr "Ķҳ java 2 Ȣ̡"
+msgid "If you do not choose to install them now installation will abort."
+msgstr "Ϊǡɻҡʩˡ"
+msgid "Checking for required OS patches done."
+msgstr "ȩ OS Ȣ硤"
+msgid "Invalid directory."
+msgstr "硤"
+msgid "Do you want to install now"
+msgstr "ǡɻҡ"
+msgid "Please enter the directory that contains patches: "
+msgstr "īȴȢ硨 "
+#
+#=================================
+# <WS>/packages/Setup/es-restore
+#=================================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "The backup $2 does not exist"
+msgstr "ެǹ $2 "
+msgid "Checking installed Sun Management Center..."
+msgstr " Sun Management Center..."
+msgid "Recover the Sun Management Center Database and it will take a few minutes..."
+msgstr "ߦ Sun Management Center ջĸš..."
+msgid "Restore the Sun Management Center data."
+msgstr "ߦ Sun Management Center 衤"
+msgid "Shutdown Sun Management Center database, please wait."
+msgstr " Sun Management Center ջԷ"
+msgid "Recovery is fnished successfully. Please start Sun Management Center."
+msgstr "ɳȩߦϡٯ Sun Management Center"
+msgid "The Sun Management Center server components are not found or"
+msgstr "̯ Sun Management Center Τģ́"
+msgid "its installation is damaged. You need to run"
+msgstr "䴡"
+msgid "es-inst/es-setup to install Sun Management Center and then "
+msgstr "es-inst/es-setup Sun Management Centerѥ"
+msgid "start es-restore."
+msgstr "ٯ es-restore"
+msgid "Cannot restore $2"
+msgstr "ߦ $2"
+msgid "Cannot import database. Please check $2"
+msgstr "īջ $2"
+msgid "The recovery need to shudown Sun Management Center servers."
+msgstr "ߦɢ Sun Management Center Τ¡"
+msgid "Please get the backup of es-backup ready."
+msgstr "ެ es-backup ެǹ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the backup data directory:"
+msgstr "īެǹ"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_metadata.sh
+#==========================================
+msgid "$2 appears to be configured as your Sun Management Center server."
+msgstr "$2 ƫҳ Sun Management Center Τ¡"
+msgid "Error - Unable to set $2 values."
+msgstr " - $2 ԫ"
+msgid "agent.snmpPort already configured in $2"
+msgstr " $2 ħ agent.snmpPort"
+msgid "This part of the setup process does the Sun Management Center Agent Component setup."
+msgstr "šݨܡȩ Sun Management Center ܡȢǵ"
+msgid "snmpd.conf already exists in $2. Leaving it in place"
+msgstr "$2 snmpd.conf̧ݨ"
+msgid "Copying snmpd.conf file into $2"
+msgstr " snmpd.conf ̯ $2"
+msgid "Server component also installed locally."
+msgstr "ħΤǵ"
+msgid "Using this machine as the Sun Management Center server."
+msgstr "ɢҳ Sun Management Center Τ¡"
+msgid "Completing Sun Management Center Agent Component setup."
+msgstr "ȩ Sun Management Center ܡȢǵ"
+msgid "Using security seed $2 for Sun Management Center metadata"
+msgstr " $2 ɢҳ Sun Management Center "
+msgid "Please enter the Sun Management Center Server Hostname: "
+msgstr "ī Sun Management Center Τꢡ "
+msgid "Is this correct?"
+msgstr ""
+#
+#============================
+# <WS>/packages/Setup/es-lic
+#============================
+msgid "Topology server is currently running."
+msgstr "ЩΤ¡"
+msgid "It must be restarted for the license file update to take effect."
+msgstr "桢ٯ"
+msgid "Please stop and restart topology server using:"
+msgstr "ٯΤ¡"
+msgid "$2 -p\\\; $3 -p"
+msgstr "$2 -p\\\; $3 -p"
+msgid "Invalid License, Exiting..."
+msgstr "桢..."
+msgid " Sun Management Center License Program\n"
+msgstr " Sun Management Center Ȣ\n"
+msgid " Invalid parameters passed to es-lic script\n"
+msgstr " ̯ es-lic Script ٶ\n"
+msgid "Please enter license key: "
+msgstr "ī "
+#
+#===============================
+# <WS>/packages/Setup/es-dbimp
+#===============================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "The backup $2 does not exist"
+msgstr "ެǹ $2 "
+msgid "------------------- WARNING !!! ----------------"
+msgstr "------------------- ˡ ----------------"
+msgid "The process need Sun Management Center server components stopped."
+msgstr "Ⱥݨܡ Sun Management Center Τǵ硤"
+msgid "And import the backup data to Sun Management Center database."
+msgstr "ެǹī Sun Management Center ջ"
+msgid "As a result, all current data will be destroyed."
+msgstr "Ϊȩȴܢȴڡ"
+msgid "Done"
+msgstr "ȩ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+#
+#=======================================
+# <WS>/packages/Setup/sm_setup_agent.sh
+#=======================================
+msgid "$2 appears to be configured as your Sun Management Center server."
+msgstr "$2 ƫҳ Sun Management Center Τ¡"
+msgid "Error - Unable to set $2 values."
+msgstr " - $2 ԫ"
+msgid "agent.snmpPort already configured in $2"
+msgstr " $2 ħ agent.snmpPort"
+msgid "This part of the setup process does the Sun Management Center Agent Component setup."
+msgstr "šݨܡȩ Sun Management Center ܡȢǵ"
+msgid "snmpd.conf already exists in $2. Leaving it in place"
+msgstr "$2 snmpd.conf̧ݨ"
+msgid "Copying snmpd.conf file into $2"
+msgstr " snmpd.conf ̯ $2"
+msgid "Server component also installed locally."
+msgstr "ħΤǵ"
+msgid "Using this machine as the Sun Management Center server."
+msgstr "ɢҳ Sun Management Center Τ¡"
+msgid "Completing Sun Management Center Agent Component setup."
+msgstr "ȩ Sun Management Center ܡȢǵ"
+msgid "Using security seed $2 for Sun Management Center agent"
+msgstr " $2 ɢҳ Sun Management Center ܡȢ"
+msgid "Please enter the Sun Management Center Server Hostname: "
+msgstr "ī Sun Management Center Τꢡ "
+msgid "Is this correct?"
+msgstr ""
+#
+#================================
+# <WS>/packages/Setup/es-backup
+#================================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Can not create the directory $2"
+msgstr "ǡ $2"
+msgid "Backup is successful."
+msgstr "ެǹȩ"
+msgid "Please save following files for the restore of Sun Management Center"
+msgstr "Ķߦ Sun Management Center "
+msgid "Starting Sun Management Center...."
+msgstr "ٯ Sun Management Center...."
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "Backup Sun Management Center data failed. Please check $2"
+msgstr "Sun Management Center ެǹ $2"
+msgid "The operation requires to shutdown Sun Management Center."
+msgstr "Ⱥɢ Sun Management Center"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the directory to store the backup data file:"
+msgstr "īެǹ表"
+#
+#=======================================
+# <WS>/packages/Setup/sm_setup_mib2.sh
+#=======================================
+msgid "Subagent sunmib_sea already set up - leaving it untouched"
+msgstr "ħܡȢ sunmib_sea - ̧ѽ"
+msgid "Subagent registry file is: $2"
+msgstr "ܡȢҳ$2"
+msgid "Unable to update subagent-registry-d.x"
+msgstr " subagent-registry-d.x"
+msgid "Updated subagent-registry-d.x for mib2 subagent"
+msgstr "ҳ mib2 ܡȢħ subagent-registry-d.x"
+#
+#================================
+# <WS>/packages/Setup/es-uninst
+#================================
+msgid "Removing $2"
+msgstr " $2"
+msgid "Package Removal: Failed for $2"
+msgstr "桨$2 "
+msgid "Reattempting to uninstall the package\\\(s\\\): $2"
+msgstr "ա$2"
+msgid "Please remove the following packages manually.\n"
+msgstr "ٯĶա\n"
+msgid "Sun Management Center uninstall complete.\n"
+msgstr " Sun Management Center ܫ\n"
+msgid " Sun Management Center Uninstallation \n"
+msgstr " Sun Management Center \n"
+msgid "No Sun Management Center packages installed.\n"
+msgstr " Sun Management Center ա\n"
+msgid "This utility removes all the Sun Management Center packages. \n"
+msgstr "ȺȢȴ Sun Management Center ա\n"
+msgid "Exiting uninstall utility.\n"
+msgstr "Ȣ\n"
+msgid "Stopping all Sun Management Center processes. This may take a few moments...\n"
+msgstr "ȴ Sun Management Center ݨܡƫġ...\n"
+msgid "If you are upgrading Sun Management Center, you may want to save your existing data.\n"
+msgstr "ΪŪ Sun Management Centerƫܢȴ衤\n"
+msgid "Will not remove the existing data\n"
+msgstr "ܢȴ\n"
+msgid "Will remove the existing data\n"
+msgstr "ܢȴ\n"
+msgid " Would you like to continue?"
+msgstr " "
+msgid "Do you want to preserve your existing data"
+msgstr "ܢȴ"
+msgid "Do you wish to continue with the removal of the existing data"
+msgstr "ܢȴ"
+#
+#==============================
+# <WS>/packages/Setup/es-dbexp
+#==============================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Can not create the directory $2"
+msgstr "ǡ $2"
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "The operation requires some of Sun Management Center components to be shutdown."
+msgstr "Ⱥɢġ Sun Management Center ǵ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the directory to store the backup data file:"
+msgstr "īެǹ表"
+msgid "Enter the path of the backup directory:"
+msgstr "īެǹ"
+#
+#=================================
+# <WS>/packages/Setup/es-keys.sh
+#=================================
+msgid "Generating $2 security keys."
+msgstr "ܨ $2 "
+msgid "Error generating keys. Return code was $2."
+msgstr "ܨ먡ҳ $2"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_service.sh
+#==========================================
+msgid "This part of the setup process does the Sun Management Center Services Component setup."
+msgstr "šݨܡȩ Sun Management Center Τ٭ǵ"
+msgid "Completing Sun Management Center Services Component setup."
+msgstr "ȩ Sun Management Center Τ٭ǵ"
+#
+#===============================
+# <WS>/packages/Setup/es-start
+#===============================
+msgid "It seems component $2 has not been setup, so skipping it."
+msgstr " $2Ⱥܩơ"
+msgid "Sun Management Center Web Server is not installed, Can not start web server\n"
+msgstr " Sun Management Center Τ¡ٯΤ\n"
+msgid "Sun Management Center Web Server is not completely installed, Can not start web server\n"
+msgstr " Sun Management Center Τ¡ٯΤ\n"
+msgid "web server started\n"
+msgstr "Τٯ\n"
+msgid "Equivalent to %s -aefgmprstxw"
+msgstr "̧ %s -aefgmprstxw"
+msgid "Equivalent to %s -efgmprstxw"
+msgstr "̧ %s -efgmprstxw "
+msgid "Usage: $PROGNAME -acefghilmpstwxrAS [-y instanceName] [ -- args... ]"
+msgstr "Ρ$PROGNAME -acefghilmpstwxrAS [-y instanceName] [ -- args... ]"
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : starts Sun Management Center Agent\n"
+msgstr " aٯ Sun Management Center ܡȢ\n"
+msgid " c : starts Sun Management Center Console\n"
+msgstr " cٯ Sun Management Center Console\n"
+msgid " Optionally, maximum heap size could be customized,\n"
+msgstr " ڰ̱ƫҳԫ\n"
+msgid " e.g., ./es-start -c -- -Xmx100m specifies 100 MBytes\n"
+msgstr " ./es-start -c -- -Xmx100m 100 MB\n"
+msgid " as max heap size; Default size is 64m.\n"
+msgstr " ҳѡҳ 64m\n"
+msgid " e : starts Sun Management Center Event manager\n"
+msgstr " eٯ Sun Management Center ǵܡȢ\n"
+msgid " f : starts Sun Management Center Configuration manager\n"
+msgstr " fٯ Sun Management Center ܡȢ\n"
+msgid " g : starts Sun Management Center Grouping services\n"
+msgstr " gٯSun Management Center Τ٭\n"
+msgid " h : prints this usage report\n"
+msgstr " hȺ\n"
+msgid " i : start agent in interactive mode, valid only for one of\n"
+msgstr " iٯȢɢȢٯܡȢ\n"
+msgid " the a, t, f, p, and e options\n"
+msgstr " atfp e ġȴ\n"
+msgid " l : starts Platform Agent for SSP\n"
+msgstr " lٯ SSP ƺܡȢ\n"
+msgid " m : starts Sun Management Center Metadata Repository\n"
+msgstr " mٯ Sun Management Center ջ\n"
+msgid " q : start components in quiet mode, effective only for one of\n"
+msgstr " qٯȢɢȢٯǵ\n"
+msgid " the A, a, t, f, p, and e options\n"
+msgstr " Aatfp e ġȴ\n"
+msgid " p : starts Sun Management Center Topology manager\n"
+msgstr " pٯ Sun Management Center ܡȢ\n"
+msgid " r : starts Hardware Diagnostic Suite Service\n"
+msgstr " rٯ Hardware Diagnostic Suite Τ٭\n"
+msgid " s : starts Sun Management Center Server\n"
+msgstr " sٯ Sun Management Center Τ\n"
+msgid " Optionally, maximum heap size could be customized,\n"
+msgstr " ڰ̱ƫҳԫ\n"
+msgid " e.g., ./es-start -s -- -Xmx100m specifies 100 MBytes\n"
+msgstr " ./es-start -s -- -Xmx100m 100 MB\n"
+msgid " as max heap size; Default size is 64m.\n"
+msgstr " ҳѡҳ 64m\n"
+msgid " t : starts Sun Management Center Trap Handler\n"
+msgstr " tٯ Sun Management Center ݨܡȢ\n"
+msgid " x : starts CST Service\n"
+msgstr " xٯ CST Τ٭\n"
+msgid " y : starts new instance of platform agent\n"
+msgstr " yٯƺܡȢ\n"
+msgid " w : starts web server\n"
+msgstr " wٯΤ\n"
+msgid " A : starts All Sun Management Center components except the console,\n"
+msgstr " Aٯħƺȴ Sun Management Center ǵ\n"
+msgid " S : starts Sun Management Center Server and all the server subcomponents\n"
+msgstr " Sٯ Sun Management Center ΤȴΤǵ\n"
+msgid " args are passed to console or server when started.\n"
+msgstr " ſƺΤٯԯ\n"
+msgid " (for example: es-start -c -- -p 2099)\n\n"
+msgstr " es-start -c -- -p 2099\n\n"
+msgid "ERROR: Sun Management Center has not been set up.\nRun es-setup to set up Sun Management Center."
+msgstr "먡 Sun Management Center\n es-setup Sun Management Center"
+msgid "Please specify a component to be started."
+msgstr "ٯǵ"
+msgid "Use the following single letter arguments instead:\n"
+msgstr "Ķġſ\n"
+msgid "Console package not installed\n"
+msgstr "ƺ\n"
+msgid "Interactive option invalid with -A or -S option"
+msgstr "ٯȢɢ -A -S "
+msgid "Invalid command line option. Please use just one option\n"
+msgstr "ƷġԶ\n"
+msgid "You have not specified any components to run.\n"
+msgstr "ǵ\n"
+msgid "Only one component may be started in interactive mode\n"
+msgstr "ٯȢɢȢĶƷٯġԶǵ\n"
+msgid "You cannot start console in interactive mode\n"
+msgstr "ٯȢɢȢٯƺ\n"
+msgid "DISPLAY environment variable must be set\n"
+msgstr " DISPLAY \n"
+msgid "Interactive server session:\n"
+msgstr "ٯȢɢΤɢơ\n"
+msgid "SUNWcstv or SUNWcstve package should be installed before start cstservice agent."
+msgstr "ٯ cstservice ܡȢЩǿ SUNWcstv SUNWcstve ա"
+msgid "Interactive option invalid with $OPT option"
+msgstr "ٯȢɢ $OPT "
+msgid "Unable to open DISPLAY: $DISPLAY"
+msgstr " DISPLAY: $DISPLAY"
+msgid "Equivalent to %s -aefgmpstxw"
+msgstr "̧ %s -aefgmpstxw"
+msgid "Equivalent to %s -efgmpstxw"
+msgstr "̧ %s -efgmpstxw"
+msgid "$2 Component not installed"
+msgstr " $2 ǵ"
+msgid "Invalid option\\\($1\\\). Options have changed to single letters:"
+msgstr " \\\($1\\\)ҳġࡨ"
+msgid "Starting all platform instances"
+msgstr "ٯȴƺ"
+msgid "Instances are $2"
+msgstr "ҳ $2"
+msgid "Starting platform instances $2"
+msgstr "ٯƺ $2"
+msgid "ERROR: Could not start Hardware Diagnostic Suite Service."
+msgstr "먡ٯ Hardware Diagnostic Suite Τ٭"
+msgid "SUNWed package should be installed before start Hardware Diagnostic Suite Service."
+msgstr "SUNWed ٯ Hardware Diagnostic Suite Τ٭Щҡ"
+msgid "Sun Management Center is not setup. Please setup first and then run es-start."
+msgstr " Sun Management Centerǿҡѥ es-start"
+msgid "Sun Management Center $2 is not setup."
+msgstr " Sun Management Center $2"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_console.sh
+#==========================================
+msgid "This part of the setup process does the Sun Management Center Console Component setup."
+msgstr "šݨܡȩ Sun Management Center ƺǵ"
+#
+#==============================
+# <WS>/packages/Setup/es-stop
+#==============================
+msgid "Please specify a component to be stopped."
+msgstr "ǵ"
+msgid "Usage : $PROGNAME -aefghmprstxAS [-y instanceName]"
+msgstr "Ρ$PROGNAME -aefghmprstxAS [-y instanceName]"
+msgid " a : stops Sun Management Center Agent\n"
+msgstr " a Sun Management Center ܡȢ\n"
+msgid " e : stops Sun Management Center Event manager\n"
+msgstr " e Sun Management Center ǵܡȢ\n"
+msgid " f : stops Sun Management Center Configuration manager\n"
+msgstr " f Sun Management Center ܡȢ\n"
+msgid " g : stops Sun Management Center Services\n"
+msgstr " g Sun Management Center Τ٭\n"
+msgid " h : prints this usage report\n"
+msgstr " hȺ\n"
+msgid " l : stops Platform Agent for SSP\n"
+msgstr " l SSP ƺܡȢ\n"
+msgid " m : stops Sun Management Center Metadata Agent\n"
+msgstr " m Sun Management Center ܡȢ\n"
+msgid " p : stops Sun Management Center Topology manager\n"
+msgstr " p Sun Management Center ܡȢ\n"
+msgid " r : stops Hardware Diagnostic Suite Service\n"
+msgstr " r Hardware Diagnostic Suite Τ٭\n"
+msgid " s : stops Sun Management Center Server\n"
+msgstr " s Sun Management Center Τ\n"
+msgid " t : stops Sun Management Center Trap Handler\n"
+msgstr " t Sun Management Center ݨܡȢ\n"
+msgid " x : stops CST Service\n"
+msgstr " x CST Τ٭\n"
+msgid " y : stops instance of platform agent\n"
+msgstr " yƺܡȢ\n"
+msgid " w : stops web server\n"
+msgstr " wΤ\n"
+msgid " A : stops all Sun Management Center components listed above\n"
+msgstr " Aĸȴ Sun Management Center ǵ\n"
+msgid "equivalent to %s -aefgmprstxw"
+msgstr "̧ %s -aefgmprstxw"
+msgid " S : stops all Sun Management Center components listed above except Sun Management Center Agent\n"
+msgstr " Sħ Sun Management Center ܡȢȴ Sun Management Center ǵ\n"
+msgid "equivalent to %s -efgmprstxw"
+msgstr "̧ %s -efgmprstxw"
+msgid "Use the following single letter arguments instead:\n"
+msgstr "Ķġſ\n"
+msgid "Invalid option\\\($1\\\). Options have changed to single letters:"
+msgstr " \\\($1\\\)ҳġࡨ"
+msgid "$1 Component not installed"
+msgstr " $1 ǵ"
+msgid "Stopping all platform instances"
+msgstr "ȴƺ"
+msgid "$COMPONENT component is not running"
+msgstr "$COMPONENT ǵ"
+msgid "Stopping $COMPONENT component"
+msgstr " $COMPONENT ǵ"
+msgid "Error in stopping $COMPONENT component"
+msgstr " $COMPONENT ǵ"
+#
+#================================
+# <WS>/packages/Setup/es-crlcon
+#================================
+msgid " Sun Management Center Light Console Creation Program\n"
+msgstr " Sun Management Center ƺǡȢ\n"
+msgid "This program creates a directory of minimun required console components.\n"
+msgstr "ȺȢǡŷƺǵ硤\n"
+msgid "User can copy this directory to any machine with supported configuration\n"
+msgstr "ϯƫȺ̯Ƕ̦ȴ̿ĸ\n"
+msgid "to run Console."
+msgstr "ƺ"
+msgid "Destination [/tmp]: "
+msgstr " [/tmp] "
+msgid "Please remove the directory $dirname before proceeding"
+msgstr "Щ $dirname"
+msgid "or use a different directory.\n"
+msgstr "硤\n"
+msgid "Do you want the directory to be in zip format [y|n] [y]: "
+msgstr "ȩҳ zip ֪Ȣ [y|n] [y] "
+msgid "Please enter path to the executable - zip: "
+msgstr "īƫ - zip "
+msgid "Cannot find zip in $zippath."
+msgstr "$zippath ̯ zip"
+msgid "Source will be taken from [/opt/SUNWsymon]: "
+msgstr "̽ [/opt/SUNWsymon] "
+msgid "Directory ${dirname} is created."
+msgstr " ${dirname} ǡ"
+msgid "Creating zip file ...\n"
+msgstr "ǡ zip ...\n"
+msgid "SUNWsymon.zip can be transferred to other systems, unzip,\n"
+msgstr "SUNWsymon.zip ƫ̧˷ӡ㡤\n"
+msgid "Zip file is created in "
+msgstr "Zip ǡ "
+msgid "\nPlease note:\n\n Light console can be invoked by running:\n\n"
+msgstr "\n\n\n ƫĶƵƺ\n\n"
+#
+#================================
+# <WS>/packages/Setup/es-sfix.sh
+#================================
+msgid "usage:\n"
+msgstr "Ρ\n"
+msgid "process all modules : es-sfix.sh\n"
+msgstr "ݨܡȴ es-sfix.sh\n"
+msgid "flush db & process all modules : es-sfix.sh [-c | -C]\n"
+msgstr " db ݨܡȴ es-sfix.sh [-c | -C]\n"
+msgid "process only for specifiec module : es-sfix.sh [-m | -M] [module name]\n"
+msgstr "Ʒݨܡ es-sfix.sh [-m | -M] []\n"
+msgid "starting Sun Management Center database\n"
+msgstr "ٯ Sun Management Center ջ\n"
+msgid "database startup failed, exiting\n"
+msgstr "ջٯ\n"
+msgid "database is up\n"
+msgstr "ջƵ\n"
+msgid "executing suggested fix script\n"
+msgstr "Ժߦ Script\n"
+msgid "execution successful\n"
+msgstr "ȩ\n"
+msgid "error in execution\n"
+msgstr "\n"
+msgid "shutting down the database\n"
+msgstr "ջ\n"
+msgid "db-stop failed\n"
+msgstr "db-stop \n"
+msgid "purge database and process\n"
+msgstr "ջݨܡ\n"
+msgid "process only for module\n"
+msgstr "ݨܡ\n"
+msgid "incorrect usage\n"
+msgstr "\n"
+msgid "invalid arguments\n"
+msgstr "ſ\n"
+msgid "default processing\n"
+msgstr "ݨܡʩ\n"
+msgid "could not set java home directory\n"
+msgstr " java \n"
+msgid "please see the suggested fix log file in "
+msgstr "ٶԺߦ"
+#
+#=================================
+# <WS>/packages/Setup/es-details
+#=================================
+msgid "ERROR: "
+msgstr "먡 "
+msgid " Specify the tabs for a given Node_Object_Type. The -f and -u\n"
+msgstr " ҳ Node_Object_Type -f -u\n"
+msgid " options are mutually exclusive.\n"
+msgstr " 桤\n"
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : All tabs provided by Sun Management Center\n"
+msgstr " a Sun Management Center ȴ\n"
+msgid " will be included.\n"
+msgstr " \n"
+msgid " f inputfile : Input file which contains list of tabs to\n"
+msgstr " f inputfile ī\n"
+msgid " be used for the specified Node_Object_Type.\n"
+msgstr " Node_Object_Type\n"
+msgid " n Node_Object_Type : Corresponds to the Node_Object_Type\n"
+msgstr " n Node_Object_Type es-device Script \n"
+msgid " entered in the es-device script.\n"
+msgstr " ī Node_Object_Type\n"
+msgid " o : Overwrite previously created tab file.\n"
+msgstr " o Щǡ\n"
+msgid " Only meaningful when used with the -f\n"
+msgstr " Ʒȴ -f ȴ\n"
+msgid " option.\n"
+msgstr " \n"
+msgid " u : Undo. Restores the Node_Object_Type\n"
+msgstr " u ߦϡ Node_Object_Type ߦ\n"
+msgid " to its original state.\n"
+msgstr " ҳ̧ȴ衤\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "Usage: $2 [ -a ] [ -f inputfile ] -n Node_Object_Type [ -o ] [ -u ]\n"
+msgstr "Ρ$2 [ -a ] [ -f inputfile ] -n Node_Object_Type [ -o ] [ -u ]\n"
+msgid "Input file $2 does not exist"
+msgstr "ī $2 "
+msgid "The Node_Object_Type must be specified."
+msgstr " Node_Object_Type"
+msgid "Either option -f or -u must be specified."
+msgstr " -f -u ġ"
+msgid "Options -f or -u cannot both be specified."
+msgstr " -f -u"
+msgid "Options -o and -u cannot both be specified."
+msgstr " -o -u"
+msgid "Options -a and -u cannot both be specified."
+msgstr " -a -u"
+msgid "es-details has not yet been run with Node_Object_Type $2."
+msgstr " Node_Object_Type $2 es-details"
+msgid "Tab name not specified for DEFAULT statement on line $2."
+msgstr " $2 ĸ ҳ DEFAULT ꢡ"
+msgid "Only one tab can be defined as the DEFAULT."
+msgstr "ƷġԶɢҳ DEFAULT"
+msgid "Tab name not specified for INCLUDE statement on line $2."
+msgstr " $2 ĸҳ INCLUDE ꢡ"
+msgid "$2 is not a valid Sun Management Center tab on line $3."
+msgstr "$2 $3 ĸȴ Sun Management Center "
+msgid "Tab name not specified for APPEND statement on line $2."
+msgstr " $2 ĸҳ APPEND ꢡ"
+msgid "Tab name $2 must be in format file:key on line $3."
+msgstr " $3 ĸ $2 ֪Ȣҳ file:key"
+msgid "Help key not specified for user-defined tab $2 on line $3."
+msgstr " $3 ĸҳϯ $2 ɷ"
+msgid "Help Key $2 must be in format key:file on line $3."
+msgstr " $3 ĸɷ $2 ֪Ȣҳ key:file"
+msgid "Java class not specified for user-defined tab $2 on line $3."
+msgstr " $3 ĸҳϯ $2 Java ɱ"
+msgid "Key $2 is not a valid key on line $3."
+msgstr " $2 $3 ĸȴ"
+msgid "Input file $2 contains no APPEND or INCLUDE statements"
+msgstr "ī $2 APPEND INCLUDE "
+msgid "$2 is not a valid Node_Object_Type."
+msgstr "$2 ȴ Node_Object_Type"
+msgid "The specified default tab $2 was not found in the inputfile."
+msgstr "ī̯ $2"
+msgid "The tabs for this object have already been specified, use -o option to overwrite."
+msgstr "Ⱥǵ -o ѡ"
+msgid "Can only modify the family file for Sun Management Center agents."
+msgstr "Ʒҳ Sun Management Center ܡȢԺե"
+#
+#===========================
+# <WS>/packages/Setup/es-dt
+#===========================
+msgid "ERROR: "
+msgstr "먡 "
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : Add a reference.\n"
+msgstr " a ٶ衤\n"
+msgid " d : Delete a reference.\n"
+msgstr " d ɴٶ衤\n"
+msgid " v : View references. This is the default option.\n"
+msgstr " v ٶ衤Ⱥҳ\n"
+msgid " s : Add/Delete/View on the Platform Agent. By default the\n"
+msgstr " s ƺܡȢĸ/ɴ/á\n"
+msgid " operation is performed on the Agent.\n"
+msgstr " ɢܡȢĸ硤\n"
+msgid " h hostname : Agent hostname of machine running the Discovery Object Table.\n"
+msgstr " h ꢡǵܡꢡ\n"
+msgid " l label : Unique label for the Composite Object to add or delete.\n"
+msgstr " l ɴǵȴ\n"
+msgid " n not : Node_Object_Type for the Composite Object to add.\n"
+msgstr " n not ǵ Node_Object_Type\n"
+msgid " o OID : Discovery Object Table OID to add.\n"
+msgstr " o OID ǵ OID\n"
+msgid " p port : Agent port of machine running the Discovery Object Table.\n"
+msgstr " p port ǵܡȢա\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "ESDIR must be set"
+msgstr " ESDIR"
+msgid "Usage: $2 -a \\\| -d \\\| -v [ -s ] -h hostname -l label -n not -o OID -p port\n"
+msgstr "Ρ$2 -a \\\| -d \\\| -v [ -s ] -h -l -n not -o OID -p port\n"
+msgid "It cannot be loaded on both the Agent and Platform Agent."
+msgstr "ܡȢůƺܡȢīơ"
+msgid "The options -h, -l, -n, -o, and -p must all be used with the -a option."
+msgstr " -h-l-n-o -p -a "
+msgid "An entry for $2 already exists."
+msgstr " $2 㡤"
+msgid "The option -l must be used with the -d option."
+msgstr " -l -d "
+msgid "The options -h, -n, -o, and -p are not valid with the -d option."
+msgstr " -h-n-o -p -d "
+msgid "An entry for $2 does not exist."
+msgstr " $2 㡤"
+msgid "The options -h, -l, -n, -o, and -p are not valid with the -v option."
+msgstr " -h-l-n-o -p -v "
+msgid "No entries."
+msgstr "ȴ"
+msgid "The file $2 is not readable."
+msgstr " $2 ƫ̽"
+msgid "Discovery Service loaded on: Agent"
+msgstr "Τ٭īAgent"
+msgid "Discovery Service loaded on: Platform Agent."
+msgstr "Τ٭īƺܡȢ"
+msgid "Entries:"
+msgstr ""
+msgid "The discovery table is already loaded on the Agent."
+msgstr "ܡȢĸī"
+msgid "The discovery table is already loaded on the Platform Agent."
+msgstr "ƺܡȢĸī"
+#
+#=============================
+# <WS>/packages/Setup/es-apps
+#=============================
+msgid "This script reads the specified configuration file or\\n%s if not specified,\\nand installs the applications with the server."
+msgstr "Ⱥ Script ̽\\n%sΪ\\nΤȢ"
+msgid "The configuration file contains one or more lines using the following format:\n"
+msgstr "ġĶ֪Ȣթ\n"
+msgid "where:\n"
+msgstr "̧㡨\n"
+msgid "name\tis the name of the application that appears in the Application list\n"
+msgstr " name\tȢȢ"
+msgid "class\tis the name of the Java class for the application\n"
+msgstr " class\tȢ Java ɱ\n"
+msgid "args\tare optional user defined arguments to be passed to the application\n"
+msgstr "args\tīȢϯƫ\n"
+msgid "help\tis the optional help specification using the format key:helpfile or :url.\n"
+msgstr "help\tkey:helpfile :url ֪Ȣɷƫ\n"
+msgid "There should be no quotes in the line.\n"
+msgstr "ȴſ\n"
+msgid "Lines beginning with # are considered as comments.\n"
+msgstr " # թݷҳء"
+msgid "For example:\n"
+msgstr "\n"
+msgid "Using %s"
+msgstr " %s"
+msgid "%s updated."
+msgstr "%s 仡"
+#
+#================================
+# <WS>/packages/Setup/db-export.sh
+#================================
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+#
+#==================================
+# <WS>/packages/Setup/db-import.sh
+#==================================
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+msgid "please ensure Topology & Event agents are not running..."
+msgstr "ůǵܡȢ..."
+#
+#============================
+# <WS>/packages/Setup/es-run
+#============================
+msgid "Usage : $PROGNAME option1 [option2,...]"
+msgstr "Ρ$PROGNAME 1 [ 2,...]"
+msgid " where option1 is a Sun Management Center utility\n and option2,... are the arguments for 'option1'\n\n If option1 is '-help', then the usage is printed.\n\n"
+msgstr " ̧㡢 1 Sun Management Center Ȣ\n 2,... ҡ 1ſ\n\n Ϊ 1 '-help'̧Ρ\n\n"
+#
+#==============================
+# <WS>/packages/Setup/es-chelp
+#===============================
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+msgid "There is an existing $PROGRAM lockfile, $LOCKFILE"
+msgstr "ġԶ $PROGRAM $LOCKFILE"
+msgid "which indicates that process is executing the $PROGRAM"
+msgstr "ݨܡ $PROGRAM"
+msgid "If this is not the case, delete the lock file,"
+msgstr "ΪӡɴȺ"
+msgid "$LOCKFILE and execute $PROGRAM again."
+msgstr "$LOCKFILE ȹ $PROGRAM"
+msgid "$sdk_helpfile either does not exist or is not writable"
+msgstr "$sdk_helpfile ƫī"
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+#
+#========================================
+# <WS>/src/db/build/build-recovery*.ksh
+#========================================
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Usage: $PROGNAME -au auid -ap apword -wu wuid -wp wpword -sp syspword -s osrvname -tsn tsname -tsp tsphyspath -tsis tssize -olfp olfpath [-cdb] [-vr]"
+msgstr "Ρ$PROGNAME -au auid -ap apword -wu wuid -wp wpword -sp syspword -s osrvname -tsn tsname -tsp tsphyspath -tsis tssize -olfp olfpath [-cdb] [-vr]"
+msgid " -au auid : userid used to admin smc tablespace"
+msgstr " -au auid ܡ smc ֪Ϩ userid"
+msgid " -ap apword : password for corresponding admin userid"
+msgstr " -ap apword ܡ userid "
+msgid " -wu wuid : working userid used by application"
+msgstr " -wu wuid Ȣɢ userid"
+msgid " -wp wpword : working password for corresponding working userid"
+msgstr " -wp wpword ɢ userid ɢ"
+msgid " -sp syspword : password for system userid \\\(system\\\)"
+msgstr " -sp syspword ˷ userid \\\(system\\\)"
+msgid " -s osrvname : name of the oracle service used to connect to db"
+msgstr " -s osrvname ̯ջ oracle Τ٭"
+msgid " -tsn tsname : name of the tablespace"
+msgstr " -tsn tsname ֪Ϩ"
+msgid " -tsp tsphyspath : physical location of tablespace"
+msgstr " -tsp tsphyspath ֪Ϩ"
+msgid " -tsis tssize : initial size of tablespace \\\(in M bytes\\\)"
+msgstr " -tsis tssize ֪Ϩ \\\( MB ҳ\\\)"
+msgid " -olfp olfpath : physical location \\\(local\\\) to write the smc30.oracle file"
+msgstr " -olfp olfpath ī smc30.oracle \\\(\\\)"
+msgid " -cdb : indicates that any existing tablespace and user"
+msgstr " -cdb ȴܢȴ֪Ϩůϯ"
+msgid " matching the specified parameters above are"
+msgstr " ĸٶϯ"
+msgid " dropped before proceeding. use is optional"
+msgstr " Щ۹ƫ"
+msgid " -vr : this option is used to verify all objects"
+msgstr " -vr Ⱥȴǵ"
+msgid " and to perform a recovery sequence if any"
+msgstr " ůߦѥٯɢΪ"
+msgid " problems are detected"
+msgstr " ̯Ƕ"
+msgid " -ver : option"
+msgstr " -ver "
+msgid " -lf logfile : logfile name"
+msgstr " -lf logfile "
+msgid "ERROR: the ESDIR environment variable has not been set"
+msgstr "먡 ESDIR "
+msgid "illegal option encoutered : $2"
+msgstr "̯$2"
+msgid "this is a pc installation : $2"
+msgstr "Ⱥҳ pc ҡ$2"
+msgid "this is a sparc installation : $2"
+msgstr "Ⱥҳ sparc ҡ$2"
+msgid "unknown system type, exiting........................"
+msgstr "˷........................"
+msgid "can not find sqlplus on path, exiting........................."
+msgstr "ĸ̯ sqlplus........................."
+msgid "the current directory is not writable "
+msgstr "Щƫī "
+msgid "sqlplus writes an error log \\\(sqlnet.log\\\)"
+msgstr "sqlplus ī \\\(sqlnet.log\\\)"
+msgid "to the current directory in the event of"
+msgstr "Щ㡾"
+msgid "a connection problem"
+msgstr "ǵ㡿"
+msgid "the /tmp directory does not exist"
+msgstr "/tmp "
+msgid "however, a file named /tmp does exist"
+msgstr "紡ȴԶҳ /tmp "
+msgid "/tmp directory is not writable "
+msgstr "/tmp ƫī"
+msgid "the \\\(-au auid\\\) command line parameter was not specified "
+msgstr " \\\(-au auid\\\) ٶ"
+msgid "the \\\(-ap apword\\\) command line parameter was not specified "
+msgstr " \\\(-ap apword\\\) ٶ"
+msgid "the \\\(-wu wuid\\\) command line parameter was not specified "
+msgstr " \\\(-wu wuid\\\) ٶ"
+msgid "the \\\(-wp wpword\\\) command line parameter was not specified "
+msgstr " \\\(-wp wpword\\\) ٶ"
+msgid "the \\\(-sp syspword\\\) command line parameter was not specified "
+msgstr " \\\(-sp syspword\\\) ٶ"
+msgid "the \\\(-s osrvname\\\) command line parameter was not specified "
+msgstr " \\\(-s osrvname\\\) ٶ"
+msgid "the \\\(-tsn tsname\\\) command line parameter was not specified "
+msgstr " \\\(-tsn tsname\\\) ٶ"
+msgid "the \\\(-tsp tsphyspath\\\) command line parameter was not specified "
+msgstr " \\\(-tsp tsphyspath\\\) ٶ"
+msgid "the \\\(-tsis tssize\\\) command line parameter was not specified "
+msgstr " \\\(-tsis tssize\\\) ٶ"
+msgid "the \\\(-olfp olfpath\\\) command line parameter was invalid! "
+msgstr "\\\(-olfp olfpath\\\) ٶ桪 "
+msgid "exiting..................."
+msgstr "..................."
+msgid "The Initial Tablespace Size given is not invalid"
+msgstr "֪Ϩ"
+msgid "valid range is 1 to 500 M"
+msgstr "ȴҳ 1 ̯ 500 M"
+msgid "Writing Applogin file : $2"
+msgstr "ī Applogin $2"
+msgid "file : $2, has a quit statement in it."
+msgstr "file : $2̧ȴġԶ"
+msgid "file : $str3, has a quit statement in it."
+msgstr "file : $str3̧ȴġԶ"
+msgid "need to remove quit statements, exiting........................"
+msgstr "........................"
+msgid "source file: $2 for step: $3 is missing"
+msgstr "$2$3"
+msgid "probably need to execute mkaggregatefiles.ksh"
+msgstr "ƫ mkaggregatefiles.ksh"
+msgid "source file for one or more steps is missing, exiting........................"
+msgstr "ġԶ¡........................"
+msgid " removing existing logfile : /tmp/recovery.err"
+msgstr " ܢȴ/tmp/recovery.err"
+msgid " removing existing logfile : $2"
+msgstr " ܢȴ $2"
+msgid " removing existing temporary sql : $2"
+msgstr " ܢȴ sql $2"
+msgid "Unable to successfully append $2 onto $3"
+msgstr "ȩʢ $2 $3"
+msgid "return code from cat : $2"
+msgstr " cat $2"
+msgid "$2 file not found"
+msgstr "̯ $2 "
+msgid "Unable to successfully substitue in $2"
+msgstr " $2 ȩ̽"
+msgid "substitution string : $2"
+msgstr "̽롨$2"
+msgid "return code from sed : $2"
+msgstr " sed $2"
+msgid "Unable to successfully perform all sed based substitutions on $2 into $3"
+msgstr "ȩ $2 ĸȴ sed ̽ɢ̯ $3 "
+msgid "return code from grep : $2, meaning it found un-substituted strings"
+msgstr " grep $2̯̽"
+msgid "$2 file not found\\\(1\\\)"
+msgstr "̯ $2 \\\(1\\\)"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "sqlerror code = $2"
+msgstr "sqlerror = $2"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "unhandled error detected, only recourse is to stop processing"
+msgstr "̯ݨܡ먡ġȢݨܡ"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "execution of $2 ok!!"
+msgstr "$2 ڦ"
+msgid "step file $2 not found"
+msgstr "̯ $2"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "skipping execution of $2"
+msgstr " $2 "
+msgid "$2 dependent step $3 did not execute"
+msgstr " $3 $2 "
+msgid "$2 dependent step $3 failed execution"
+msgstr " $3 $2 "
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "while in recovery mode, attempts to find a successfully executed dependent of "
+msgstr "ߦȢĶ롢ȩ $2 "
+msgid "the $2 step was unsuccessfull. premature exit!!"
+msgstr "ȩȮ֡"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "while in recovery mode, attempts to find a valid step to execute following "
+msgstr "ߦȢĶ롢ƫĶ $2 ȴ"
+msgid "the $2 step was unsuccessfull. premature exit!!"
+msgstr "ȩȮ֡"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "too many attempts to execute the $2 step"
+msgstr " $2 Ŵ"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "please see the $2 file for listing details"
+msgstr "ٶ $2 ع"
+#
+#========================================
+# <WS>/src/db/build/mkaggregatefiles.ksh
+#========================================
+msgid " removing existing verify inventory : agg-verify-proc-inventory.sql"
+msgstr " ܢȴջagg-verify-proc-inventory.sql"
+msgid "- Create agg-packages-topology.sql file -"
+msgstr "- ǡ agg-packages-topology.sql -"
+msgid "- Create agg-procedures-topology.sql file -"
+msgstr "- ǡ agg-procedures-topology.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Add to agg-dataload-preseq.sql file -"
+msgstr "- agg-dataload-preseq.sql -"
+msgid "- Create agg-packages-eventmanager.sql file -"
+msgstr "- ǡ agg-packages-eventmanager.sql -"
+msgid "- Create agg-procedures-eventmanager.sql file -"
+msgstr "- ǡ agg-procedures-eventmanager.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Create agg-packages-mgmtservice.sql file -"
+msgstr "- ǡ agg-packages-mgmtservice.sql -"
+msgid "- Create agg-procedures-mgmtservice.sql file -"
+msgstr "- ǡ agg-procedures-mgmtservice.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Create agg-verify-proc-inventory.sql file -"
+msgstr "- ǡ agg-verify-proc-inventory.sql -"
+#
+#==================================================
+# <WS>/src/oa/modules/configd4u/bin/es-setup.sh
+#==================================================
+msgid "Setup failed while adding module $2 into $3"
+msgstr " $2 $3 "
+msgid "$2 does not exist"
+msgstr "$2 "
+msgid "Added module $2 to $3."
+msgstr " $2 $3"
+msgid "$2 is not readable, Could not add the module $3"
+msgstr "$2 ƫ̽ $3"
+msgid "Setup of sunfire config reader module failed."
+msgstr "sunfire ̽"
+#
+#======================================
+# <WS>/src/oa/base/generic/bin/*.sh
+#======================================
+msgid "usage: $basename [-sh|-csh] [-internal|-external]"
+msgstr "Ρ$basename [-sh|-csh] [-internal|-external]"
+msgid "ERROR: the ESROOT environment variable has not been set"
+msgstr "먡 ESROOT "
+msgid "usage: $PROGNAME -s \\\"<secret> [-p <public>] [-u <user>[ ...]] [-h <host>] [-c <component>[ ...]]\\\""
+msgstr "Ρ$PROGNAME -s \\\"<ǵ> [-p <>] [-u <ϯ>[ ...]][-h <>] [-c <ǵ>[ ...]]\\\""
+msgid " <secret> is the superuser password\n"
+msgstr " <ǵ> ϯ\n"
+msgid " <public> is the public password (default=public)\n"
+msgstr " <> ԫ=public\n"
+msgid " <user> is the list of initial seeded users\n"
+msgstr " <ϯ> ϯ\n"
+msgid " <host> is the fallback host name\n"
+msgstr " <> \n"
+msgid " <component> is agent/cfgserver/event/cstservice/topology/trap/\n"
+msgstr " <ǵ> agent/cfgserver/event/cstservice/topology/trap/\n"
+msgid " Omit all <component>s to do them all\n"
+msgstr " ܩȴ <ǵ> \n"
+msgid "$PROGNAME: ESROOT must be set."
+msgstr "$PROGNAME: ESROOT"
+msgid "$PROGNAME: $1: unknown component"
+msgstr "$PROGNAME: $1: ǵ"
+msgid "$PROGNAME: ERROR: blank secret not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩǵ ..."
+msgid "$PROGNAME: ERROR: blank password not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩ ..."
+msgid "PROGNAME: WARNING ... secret will be truncated to 8 characters"
+msgstr "PROGNAME: ... ǵҳ 8 Զ"
+msgid "$PROGNAME: security.superuser name not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.superuser ꢡ domain-config.x user-config.x "
+msgid "$PROGNAME: security.generaluser name not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.generaluser ꢡ domain-config.x user-config.x "
+msgid "$var"
+msgstr "$var"
+msgid "Interrupted..."
+msgstr "..."
+msgid "$PROGNAME: security.userfile not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.userfile domain-config.x user-config.x "
+msgid "$PROGNAME: security.authOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.authOID domain-config.x user-config.x "
+msgid "$PROGNAME: security.privOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.privOID domain-config.x user-config.x "
+msgid "$PROGNAME: ${COMP}.${COMP}Server not found - using $DEFHOST."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}Server - $DEFHOST"
+msgid "$PROGNAME: ${COMP}.${COMP}snmpPort not found - skipping $COMP."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}snmpPort - ܩ $COMP"
+msgid "ESROOT must be set\n"
+msgstr " ESROOT\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "OS $sys $rel is not supported"
+msgstr " OS $sys $rel"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "gettext 'Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "gettext 'ɴݨܡ ID $PID \\\($COMMAND\\\)"
+#
+#=================================================
+# <WS>/src/java/base/console/bin/es-console.sh
+#=================================================
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "DISPLAY environment variable must be set"
+msgstr " DISPLAY "
+msgid "SYMON_JAVAHOME variable must be set"
+msgstr " SYMON_JAVAHOME "
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+#
+#============================================
+# <WS>/src/java/base/server/bin/es-server*
+#============================================
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯Զݨܡ \\\($COMMAND\\\)"
+msgid "No Processes Killed"
+msgstr "ɴݨܡ"
+msgid "gettext 'More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "gettext '̯Զݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID using kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID with kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "ESDIR environment variable must be set"
+msgstr " ESDIR "
+msgid "SYMON_JAVAHOME variable must be set"
+msgstr " SYMON_JAVAHOME "
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+#
+#====================================================
+# <WS>/src/java/com/sun/symon/base/cli/bin/es-cli
+#====================================================
+msgid "$SYMON_JAVAHOME/jre/bin/java must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$SYMON_JAVAHOME/jre/bin/java Solaris_JDK_1.2.1_04 \n"
+
+#
+# Strings from Halcyon scripts
+#
+msgid "usage: $basename [-sh|-csh] [-internal|-external]"
+msgstr "Ρ$basename [-sh|-csh] [-internal|-external]"
+msgid "ERROR: the ESROOT environment variable has not been set"
+msgstr "먡 ESROOT "
+msgid "usage: $PROGNAME -s <secret> [-p <public>] [-u <user>[ ...]] [-h <host>] [-c <component>[ ...]]"
+msgstr "Ρ$PROGNAME -s <ǵ> [-p <>] [-u <ϯ>[ ...]][-h <>] [-c <ǵ>[ ...]]"
+msgid "<secret> is the superuser password"
+msgstr "<ǵ> ϯ"
+msgid "<public> is the public password (default=public)"
+msgstr "<> ԫ=public"
+msgid "<user> is the list of initial seeded users"
+msgstr "<ϯ> ϯ"
+msgid "<host> is the fallback host name"
+msgstr "<> "
+msgid "<component> is agent/cfgserver/event/topology/trap"
+msgstr "<ǵ> agent/cfgserver/event/topology/trap"
+msgid "Omit all <component>s to do them all"
+msgstr "ܩȴ <ǵ> "
+msgid "$PROGNAME: ESROOT must be set."
+msgstr "$PROGNAME: ESROOT"
+msgid "$PROGNAME: $1: unknown component"
+msgstr "$PROGNAME: $1: ǵ"
+msgid "$PROGNAME: ERROR: blank secret not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩǵ ..."
+msgid "$PROGNAME: ERROR: blank password not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩ ..."
+msgid "$PROGNAME: WARNING ... secret will be truncated to 8 characters"
+msgstr "$PROGNAME: ... ǵҳ 8 Զ"
+msgid "$PROGNAME: security.superuser name not found. Check domain-confg.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.superuser ꢡ domain-confg.x user-config.x "
+msgid "$PROGNAME: security.generaluser name not found. Check domain-cofig.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.generaluser ꢡ domain-cofig.x user-config.x "
+msgid "Copying $FILENAME to $ESDIR/cfg..."
+msgstr " $FILENAME ̯ $ESDIR/cfg..."
+msgid "Copying ${1}-${FILENAME} to $ESDIR/cfg..."
+msgstr " ${1}-${FILENAME} ̯ $ESDIR/cfg..."
+msgid "Copying ${COMP}-${FILENAME} to $ESDIR/cfg..."
+msgstr " ${COMP}-${FILENAME} ̯ $ESDIR/cfg..."
+msgid "$var"
+msgstr "$var"
+msgid "Interrupted..."
+msgstr "..."
+msgid "$PROGNAME: security.userfile not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.userfile domain-config.x user-config.x "
+msgid "$PROGNAME: security.authOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.authOID domain-config.x user-config.x "
+msgid "$PROGNAME: security.privOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.privOID domain-config.x user-config.x "
+msgid "$PROGNAME: ${COMP}.${COMP}Server not found - using $DEFHOST"
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}Server - $DEFHOST"
+msgid "$PROGNAME: ${COMP}.${COMP}snmpPort not found - skipping $COP."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}snmpPort - ܩ $COP"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "OS $sys $rel is not supported"
+msgstr " OS $sys $rel"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID with the force \\\($COMMAND\\\)"
+msgstr "ڰ̱ \\\($COMMAND\\\) ݨܡ ID $PID"
+msgid "DISPLAY environment variable must be set"
+msgstr " DISPLAY "
+msgid "More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯Զݨܡ \\\($COMMAND\\\)"
+msgid "No Processes Killed"
+msgstr "ɴݨܡ"
+msgid "Terminating Process ID $PID using kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID with kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "ESDIR environment variable must be set"
+msgstr " ESDIR "
+#
+# for es-tool - a SDK tool for integrating applications into console
+#
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+
+msgid "$sdk_toolfile either does not exist or is not writable"
+msgstr "$sdk_toolfile ƫī"
+
+msgid "There is an existing $PROGRAM lockfile, $LOCKFILE"
+msgstr "ġԶ $PROGRAM $LOCKFILE"
+
+msgid "which indicates that process is executing the $PROGRAM"
+msgstr "ݨܡ $PROGRAM"
+
+msgid "If this is not the case, delete the lock file,"
+msgstr "ΪӡɴȺ"
+
+msgid "$LOCKFILE and execute $PROGRAM again."
+msgstr "$LOCKFILE ȹ $PROGRAM"
+
+msgid "$sdk_helpfile either does not exist or is not writable"
+msgstr "$sdk_helpfile ƫī"
+
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+
+msgid "Using %s"
+msgstr " %s"
+
+msgid "%s updated."
+msgstr "%s 仡"
+
+msgid "This script reads the specified configuration file or\\n%s if not specified,\\nand installs the applications with the server."
+msgstr "Ⱥ Script ̽\\n%sΪ\\nΤȢ"
+
+msgid "The configuration file contains one or more lines using the following format:\n"
+msgstr "ġĶ֪Ȣթ\n"
+
+msgid "where:\n"
+msgstr "̧㡨\n"
+
+msgid "name\tis the name of the application that appears in the Application list\n"
+msgstr " name\tȢȢ"
+
+msgid "class\tis the name of the Java class for the application\n"
+msgstr " class\tȢ Java ɱ\n"
+
+msgid "args\tare optional user defined arguments to be passed to the application\n"
+msgstr "args\tīȢϯƫ\n"
+
+msgid "help\tis the optional help specification using the format key:helpfile or :url.\n"
+msgstr "help\tkey:helpfile :url ֪Ȣɷƫ\n"
+
+msgid "There should be no quotes in the line.\n"
+msgstr "ȴſ\n"
+
+msgid "Lines beginning with # are considered as comments.\n"
+msgstr " # թݷҳء"
+
+msgid "For example:\n"
+msgstr "\n"
+
+#
+#====================================================
+# <WS>/packages/Setup/es-platform
+#====================================================
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid " Where the options represent:\n"
+msgstr " ̧\n"
+msgid " a : to add an instance of platform agent\n"
+msgstr " aƺܡȢ\n"
+msgid " d : to delete an instance of platform agent\n"
+msgstr " dɴƺܡȢ\n"
+msgid "You can not specify both a and d option in the same command"
+msgstr "ġԶ a ů d "
+msgid "You can not have spaces in the instance name."
+msgstr "ȴϨ֪"
+msgid "Port $2 is not a valid port number, try another number : "
+msgstr " $2 ȴƶġԶ "
+msgid "This port is being used by Sun Management Center agent, try another number : "
+msgstr "Ⱥ Sun Management Center ܡȢƶġԶ "
+msgid "This port is being used by some instance, try another number : "
+msgstr "ȺԶƶġԶ "
+msgid "This port is being used by some another process, try another number : "
+msgstr "ȺƶġԶݨܡƶġԶ "
+msgid "This instance is already present."
+msgstr "Ⱥ㡤"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+
+# END
+domain "ES_SCRIPTS"
+#
+#==============================
+# <WS>/packages/Setup/es-inst
+#==============================
+msgid "You need to be root before running this program.\n"
+msgstr "ȢЩǿȩҳ root\n"
+msgid "Can not remove the directory /tmp/SunMC30Install\n"
+msgstr " /tmp/SunMC30Install\n"
+msgid "Can not create the directory /tmp/SunMC30Install/sbin\n"
+msgstr "ǡ /tmp/SunMC30Install/sbin\n"
+msgid "Can not copy the required files to /tmp/SunMC30Install\n"
+msgstr "̯ /tmp/SunMC30Install\n"
+msgid "Can not open the display. Either X server is not allowing\n"
+msgstr " Either X server is not allowing\n"
+msgid "the connection or you are running it from console login.\n"
+msgstr "ϯƺīơ\n"
+msgid "Please read Sun Management Center installation Readme and\n"
+msgstr " Sun Management Center Readme \n"
+msgid "run installation as mentioned.\n"
+msgstr "ҡ\n"
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid " Space calculations will be wrong."
+msgstr " Ϩȴ먡"
+msgid "Insufficient disk space to install the requested Sun Management Center components"
+msgstr "ȴϨƫ Sun Management Center ǵ"
+msgid " - Respecify the components to install so it takes less space"
+msgstr " - ģ́ŷϨ"
+msgid " - Uninstall some existing packages to make room for Sun Management Center"
+msgstr " - ġܢȴաϨ Sun Management Center"
+msgid " - Make a soft link for $2 that points to more space"
+msgstr " - ҳ $2 ܨġԶڰ̱Ϩ"
+msgid " - Ask your system administrator for help"
+msgstr " - ˷ܡɷ"
+msgid "Package $2 is already installed on this system."
+msgstr "Ⱥ˷ĸħ $2"
+msgid "Please verify the platform for package: $2"
+msgstr "ƺ$2"
+msgid "Found: $2"
+msgstr "̯$2"
+msgid "Skipping package $2"
+msgstr " $2"
+msgid "There appear to be some permission problems with the installation"
+msgstr "ĸƫȴġƫ"
+msgid "directory: $2"
+msgstr "$2"
+msgid "In order to install Sun Management Center, root must be able to write to the"
+msgstr " Sun Management Centerroot ϯ̦ȴ"
+msgid "installation directory and own the files in that directory."
+msgstr "īƫ⡢ȴĶ"
+msgid "Please check your configuration and try again."
+msgstr "ܡ"
+msgid "Exiting Sun Management Center installation."
+msgstr " Sun Management Center ʩ"
+msgid "Error: Cannot find pack key $2."
+msgstr "먡̯ $2"
+msgid "There are $2 layers for your selection:"
+msgstr "ȴ $2 Զȹ"
+msgid "No layers were selected for installation."
+msgstr "ȴ̽ȹ"
+msgid "No layers were found for installation."
+msgstr "̯ȹ"
+msgid "No packs are defined in the installation configuration file."
+msgstr "ա"
+msgid "Please select the packs to install:"
+msgstr "̽ա"
+msgid "No packs were selected for installation."
+msgstr "̽ա"
+msgid "Error: Cannot find component key $2."
+msgstr "먡̯ǵ $2"
+msgid "Error: Cannot find key $2."
+msgstr "먡̯ $2"
+msgid " Component $2 has already been installed."
+msgstr " ǵ $2"
+msgid " The corresponding packages are: $2"
+msgstr " ҳ$2"
+msgid " Invalid source directory."
+msgstr " 硤"
+msgid "Source directory: $2"
+msgstr "硨$2"
+msgid "Invalid parameter for productExists\\\(\\\): $2"
+msgstr " productExists ٶ\\\(\\\)$2"
+msgid "Production Environment Installation"
+msgstr "ܨ"
+msgid "Developer Environment Installation"
+msgstr "ĩ"
+msgid "Cannot find $2."
+msgstr "̯ $2"
+msgid "Invalid License, please buy a valid license."
+msgstr "桢ȴ⡤"
+msgid " Invalid entry."
+msgstr " "
+msgid " Installation configuration files not found."
+msgstr " ̯"
+msgid "You can install only agent components on Solaris 2.5.1"
+msgstr "ƫƷ Solaris 2.5.1 ĸܡȢǵ"
+msgid "Select one of the following:"
+msgstr "̽Ķġ"
+msgid "\\\(1\\\) Production Environment \\\(PE\\\)"
+msgstr "\\\(1\\\) ܨ \\\(PE\\\)"
+msgid "\\\(2\\\) Developer Environment \\\(DE\\\)"
+msgstr "\\\(2\\\) ĩ \\\(DE\\\)"
+msgid "Some components have already been installed in $2"
+msgstr " $2 ħšǵ"
+msgid "The target directory will be set to $2"
+msgstr "ҳ $2"
+msgid "Cannot create the directory $2"
+msgstr "ǡ $2"
+msgid "Target directory: $2"
+msgstr "硨$2"
+msgid "Package $2 is already installed."
+msgstr " $2 ҡ"
+msgid "Package not found: $2"
+msgstr "̯ա$2"
+msgid "Error: Cannot find pack key $2."
+msgstr "먡̯ $2"
+msgid "Pack: $2"
+msgstr "ա$2"
+msgid " Please select the components to install:"
+msgstr " ̽ǵ"
+msgid " Component $2 is essential and will be automatically installed."
+msgstr " $2 ҳǵٯҡ"
+msgid " Component $2 has already been installed."
+msgstr " ǵ $2"
+msgid " The corresponding packages are: $2"
+msgstr " ҳ$2"
+msgid " Component $2 is dependent on: $3"
+msgstr " ǵ $2 ʡ$3"
+msgid " The component\\\(s\\\) will be automatically installed."
+msgstr " ǵٯҡ"
+msgid " Selected Components: $2"
+msgstr " ̽ǵ$2"
+msgid " Selected Components: \\\<default\\\>"
+msgstr " ̽ǵ\\\<\\\>"
+msgid " Warning - Could not find pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Warning - Could not find the pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Warning - Could not find the pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid "Checking disk space..."
+msgstr "Ϩ..."
+msgid "Insufficient disk space to install Sun Management Center Database Software"
+msgstr "ȴϨƫ Sun Management Center ջ"
+msgid "Sun Management Center DB application software requires: $2 Kbytes"
+msgstr "Sun Management Center DB ȢϨ桨$2 KB"
+msgid "The installation directory \\\"$2\\\" has: $3 Kbytes"
+msgstr " \\\"$2\\\" ȴϨ桨$3 KB"
+msgid "Please supply a directory."
+msgstr "硤"
+msgid "Insufficient disk space to install Sun Management Center Database Dbfiles"
+msgstr "ȴϨƫ Sun Management Center ջ Db "
+msgid "Sun Management Center DB application software requires: $2 Kbytes"
+msgstr "Sun Management Center DB ȢϨ桨$2 KB"
+msgid "The installation directory \\\"$2\\\" has: $3 Kbytes"
+msgstr " \\\"$2\\\" ȴϨ桨$3 KB"
+msgid "Please supply a directory."
+msgstr "硤"
+msgid "Disk Space Requirements:"
+msgstr "Ϩ塨"
+msgid "Space required \\\(in $2\\\): $3 blocks."
+msgstr "Ϩ \\\($2 \\\)$3 Զٴۡ"
+msgid "Space available \\\(in $2\\\): $3 blocks."
+msgstr "ƫϨ \\\($2 \\\)$3 Զٴۡ"
+msgid "Insufficient space available in $2"
+msgstr "$2 ƫϨ"
+msgid "Here are some possible fixes to alleviate the disk space problem:"
+msgstr "ĶҳƫϨΡ"
+msgid "\\\"$2\\\" resides on CD \\\#$3."
+msgstr "\\\"$2\\\" \\\#$3 ĸ"
+msgid "New source directory: $2"
+msgstr "硨$2"
+msgid "Invalid directory."
+msgstr "硤"
+msgid "Installing the components..."
+msgstr "ǵ..."
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "The package $2 is already installed"
+msgstr " $2"
+msgid " Selection Summary"
+msgstr " "
+msgid "Looking for addon products on CD \\\#2..."
+msgstr " CD \\\#2 ĸܨ..."
+msgid "New source directory: $2"
+msgstr "硨$2"
+msgid " Sun Management Center 3.0 Addons Product Selection: "
+msgstr " Sun Management Center 3.0 ܨ塨 "
+msgid "Installing the product: $2"
+msgstr "ܨ¡$2"
+msgid "Cannot find pkginfo file for package: $2"
+msgstr "̯ pkginfo $2"
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "Supports: $2 - $3"
+msgstr "Ρ$2 - $3"
+msgid "Supports: $2"
+msgstr "Ρ$2"
+msgid "Name: $2"
+msgstr "ꢡ$2"
+msgid "Description: $2"
+msgstr "$2"
+msgid "Unsupported OS version: $2"
+msgstr " OS ۡ$2"
+msgid "No components to install."
+msgstr "ȴǵ"
+msgid "A previous version of Sun Management Center exists."
+msgstr "ȴ Sun Management Center 㡤"
+msgid "Please uninstall it locally in \\\"$2\\\"."
+msgstr "ҡ \\\"$2\\\" 㡿"
+msgid "Cannot find $2"
+msgstr "̯ $2"
+msgid "Error copying the locale files to: $2"
+msgstr "̯Ķ먡$2"
+msgid "Setup script will use English."
+msgstr " script ơ"
+msgid "Please run setup locally in \\\"$2\\\"."
+msgstr " \\\"$2\\\" 㡿"
+msgid "ESROOT is not set."
+msgstr " ESROOT"
+msgid "Invalid directory: $2"
+msgstr "硨$2"
+msgid "Invalid file: $2"
+msgstr "$2"
+msgid "Both -S and -T options must be specified"
+msgstr "-S -T ̥Զ"
+msgid "This script will help you to install the Sun Management Center software."
+msgstr " script ̶ɷ Sun Management Center ա"
+msgid "Do you want to install this package now?"
+msgstr "ǡɻȺա"
+msgid " Do you want to proceed?"
+msgstr " "
+msgid " Do you want to install components in layer: $2?"
+msgstr " Ķȹǵ$2?"
+msgid " Do you want to install $2?"
+msgstr " $2"
+msgid "Do you want to install the product: $2?"
+msgstr "Ⱥܨ¡$2?"
+msgid "Do you want to install this package now?"
+msgstr "ǡɻȺա"
+msgid "Would you like to uninstall it now?"
+msgstr "ǡɻá"
+msgid "Would you like to save your old data?"
+msgstr "á"
+msgid "Do you want to run setup now?"
+msgstr "ǡɻҡ"
+msgid "Please enter the source directory:"
+msgstr "ī硨"
+msgid "Enter the development system license: "
+msgstr "ī˷⡨ "
+msgid "Enter your choice: [1\\\|2]"
+msgstr "ī塨[1\\\|2]"
+msgid "Please enter the target directory [$2]:"
+msgstr "ī [$2]"
+msgid "Enter the directory to install the database: "
+msgstr "īջ硨 "
+msgid "Please insert the second CD or enter the source directory from disk 2 \\\[$2\\\]"
+msgstr "īĨگ CD ī 2 \\\[$2\\\]"
+msgid "Please enter the new source directory:"
+msgstr "ī硨"
+msgid "Please enter the OS version for \\\"$2\\\" \\\[$3\\\]: "
+msgstr "ī \\\"$2\\\" OS \\\[$3\\\] "
+msgid "Please enter the platform for \\\"$2\\\" \\\[$3\\\]: "
+msgstr "ī \\\"$2\\\" ƺ \\\[$3\\\] "
+msgid "Log file: $2"
+msgstr "$2"
+msgid " End of Installation "
+msgstr " "
+msgid "For installing Sun Management Center on $2, we need to know the"
+msgstr "ҳħ Sun Management Center $2 ĸʼԯϡ"
+msgid "operating system on $2. This should be the output of the command"
+msgstr "$2 ĸɢ˷ӡ"
+msgid "/usr/bin/uname -r. The command must be executed on a machine booted with"
+msgstr "/usr/bin/uname -r Ϊ"
+msgid "disk mounted on $2"
+msgstr " $2 ٯĸ硤"
+msgid "For installing Sun Management Center on $2, we need to know the"
+msgstr "ҳħ Sun Management Center $2 ĸʼԯϡ"
+msgid "machine type of machine whose root filesystem is or will be mounted on $2."
+msgstr "̧˷ɻ $2 ĸΡ"
+msgid "This should be the output of the following command"
+msgstr "ĶΪ"
+msgid " /usr/platform/PLATFORM/sbin/prtdiag \\\| /usr/bin/head -1 \\\| /usr/bin/cut -f2 -d:"
+msgstr " /usr/platform/PLATFORM/sbin/prtdiag \\\| /usr/bin/head -1 \\\| /usr/bin/cut -f2 -d:"
+msgid "Please note that the above commands must be executed on the target machine."
+msgstr "ĸĸ硤"
+msgid "Would you like to migrate your 2.x data?"
+msgstr " 2.x á"
+msgid "A previous version of Sun Management Center Data exists."
+msgstr "ȴ Sun Management Center 㡤"
+msgid "This will remove all files under $2. If you have any custom"
+msgstr " $2 ĶȴΪԶĶȴ"
+msgid "scripts under this directory, please move them to an alternate location"
+msgstr "Ƕ scriptsЩԯ"
+msgid "before proceeding."
+msgstr "̯"
+msgid "Do you wish to continue with the removal of the existing 2.x data"
+msgstr "ܢȴ 2.x "
+#
+#===============================
+# <WS>/packages/Setup/es-setup
+#===============================
+msgid "Setup of $2 component failed."
+msgstr " $2 ǵ"
+msgid "Exiting setup."
+msgstr ""
+msgid "The Sun Management Center Setup File \\\($2\\\)$3"
+msgstr "Sun Management Center \\\($2\\\)$3"
+msgid " is missing. Cannot Setup Sun Management Center $2."
+msgstr " ¡ Sun Management Center $2"
+msgid "Initiating setup for Sun Management Center $2 Component."
+msgstr " Sun Management Center $2 ǵ "
+msgid "Please read the release notes to configure the device type."
+msgstr "Ρ"
+msgid "Using log file: $2."
+msgstr "$2."
+msgid " Sun Management Center Setup Program"
+msgstr " Sun Management Center Ȣ"
+msgid "This program does setup of Sun Management Center components that are installed on your system."
+msgstr "ȺȢ˷ĸ Sun Management Center ǵ"
+msgid "Checking for Sun Management Center components installed on your system."
+msgstr "˷ĸ Sun Management Center ǵ"
+msgid "You Do not have any Sun Management Center components installed."
+msgstr "Ƕ Sun Management Center ǵ"
+msgid "You may want to run setup after installing"
+msgstr " Sun Management Center ǵѥƫ"
+msgid " the Sun Management Center components."
+msgstr " Ȣ"
+msgid "You have the following Sun Management Center components installed"
+msgstr "ħĶ Sun Management Center ǵ"
+msgid " Sun Management Center Server"
+msgstr " Sun Management Center Τ"
+msgid " Sun Management Center Agent"
+msgstr " Sun Management Center ܡȢ"
+msgid " Sun Management Center Console"
+msgstr " Sun Management Center ƺ"
+msgid "This script will perform the setup for each of these components"
+msgstr " Script ҳǵʩ"
+msgid "Core Sun Management Center setup complete."
+msgstr " Sun Management Center ܫ"
+msgid "Setup of Sun Management Center addons incomplete. Exiting"
+msgstr " Sun Management Center ȩ Exiting"
+msgid "Sun Management Center setup complete."
+msgstr " Sun Management Center ܫ"
+msgid "Problems occured with setup of the following addons: $2"
+msgstr "Ķ$2"
+msgid "Setup log stored in $2"
+msgstr " $2 "
+msgid "A minimum of 256 MB RAM is required to run Sun Management Center."
+msgstr "ŷȴ 256 MB RAM Sun Management Center"
+msgid "Current system has $2 MB RAM."
+msgstr "Щ˷̦ȴ $2 MB RAM"
+msgid "Can not continue to setup Sun Management Center DB."
+msgstr " Sun Management Center DB"
+msgid "Checking /etc/system file..."
+msgstr " /etc/system ..."
+msgid "Checking memory available..."
+msgstr "ƫش..."
+msgid "Checking /etc/system file error. It can not be updated."
+msgstr " /etc/system 먡 It can not be updated."
+msgid "The /etc/system file needs to be changed for Sun Management Center DB requirements."
+msgstr " /etc/system Sun Management Center DB 塤"
+msgid "Backing up /etc/system to /etc/system.SunMCDB.backup"
+msgstr "ެǹ /etc/system to /etc/system.SunMCDB.backup"
+msgid "/etc/system file has not been changed."
+msgstr " /etc/system file "
+msgid "In order for kernel variable changes to take effect, this "
+msgstr "ҳ桢ٯ"
+msgid "machine must be rebooted. You must reboot this machine now"
+msgstr "檡ǡɻٯ"
+msgid "and then run the setup again."
+msgstr "ѥԶʩ"
+msgid "Cannot create link $2 to directory $3"
+msgstr "ǡͻ $3 $2"
+msgid "Sun Management Center DB setup cannot continue."
+msgstr "Sun Management Center DB ʩ"
+msgid "Error changing ownership of $2 to root. Installation cannot continue."
+msgstr " $2 ȴҳ root ɢ먡ҡ"
+msgid "Configuring Sun Management Center DB listener and service files..."
+msgstr " Sun Management Center DB Τ٭..."
+msgid "The default listener port $2 for Sun Management Center DB has already been used."
+msgstr "Sun Management Center DB $2 ݷ"
+msgid "Please input another port number for Sun Management Center DB listener."
+msgstr "īƶġԶ Sun Management Center DB "
+msgid "Error in resetting the configuration files for Sun Management Center DB."
+msgstr " Sun Management Center DB 먡"
+msgid "Linking database, Please wait"
+msgstr "ջԷ"
+msgid "in the event of error, see /tmp/relink.log"
+msgstr "ǵ㡢ٶ /tmp/relink.log"
+msgid "Create ora passord file"
+msgstr "ǡ ora "
+msgid "/usr/bin/make is needed on Sun Management Center server machine. The current"
+msgstr "Sun Management Center Τĸȴ /usr/bin/makeЩ"
+msgid "failed to create internal user password file : $2"
+msgstr "ǡϯ$2"
+msgid "does not have it. Please make this file available and run setup again"
+msgstr "ȴԶҳƫѥʩ"
+msgid "execution of make -f ins_net_server.mk install failed"
+msgstr "make -f ins_net_server.mk install "
+msgid "see /tmp/make.log file for details"
+msgstr "ٶ /tmp/make.log ع"
+msgid "Database setup failed : $2 does not exist"
+msgstr "ջ$2 "
+msgid "Database setup failed : mkaggregatefiles.ksh failed"
+msgstr "ջmkaggregatefiles.ksh "
+msgid "Database setup failed : db-start failed"
+msgstr "ջdb-start "
+msgid "Please wait, Sun Management Center database setup in progress. It may take 15 to 20 minutes"
+msgstr "Է Sun Management Center ջƫĸ 15 ̯ 20 š"
+msgid "Database setup failed : build-smc-oracle-recovery.ksh failed"
+msgstr "ջbuild-smc-oracle-recovery.ksh "
+msgid "Please wait, Sun Management Center database setup in progress. It may take 15 to 20 minutes"
+msgstr "Է Sun Management Center ջƫĸ 15 ̯ 20 š"
+msgid "Database setup failed : build-smc-oracle-recovery.ksh failed"
+msgstr "ջbuild-smc-oracle-recovery.ksh "
+msgid "Found symon 2.x import data"
+msgstr "̯ symon 2.x ī"
+msgid "about to import symon 2.x data"
+msgstr "ī symon 2.x "
+msgid "cannot find the 2.x import script file $2"
+msgstr "̯ 2.x ī Script $2"
+msgid "will not import symon 2.x data"
+msgstr "ī symon 2.x "
+msgid "Database setup failed : db-stop failed"
+msgstr "ջdb-stop "
+msgid "A problem occured with $2 setup. Do you want to continue?"
+msgstr " $2 ܢ"
+msgid " Do you wish to update /etc/system file?"
+msgstr " /etc/system "
+msgid "A problem occured with $2 setup. Do you want to continue?"
+msgstr " $2 ܢ"
+msgid " Do you wish to keep any existing topology and event data"
+msgstr " Ƕܢůǵ"
+msgid " Do you want to perform a symon 2.x data import?"
+msgstr " symon 2.x ī"
+msgid "Do you want to start Sun Management Center agent and server components now"
+msgstr "ǡɻٯ Sun Management Center ܡȢΤǵ"
+msgid "Do you want to start Sun Management Center agent now"
+msgstr "ǡɻٯ Sun Management Center ܡȢ"
+msgid "Error: It seems the file $2 is not writable, could not update the file."
+msgstr "먡 $2 ī"
+msgid "Configuring the system for setup, please wait."
+msgstr "˷Է"
+#
+#===============================
+# <WS>/packages/Setup/db-start
+#===============================
+msgid "Listener and Database are up and running\n"
+msgstr "ջɳɢ\n"
+msgid "the current sid \n"
+msgstr "Щ sid \n"
+msgid "the current orahome \n"
+msgstr "Щ orahome \n"
+msgid "unknown system type, exiting......................\n"
+msgstr "˷......................\n"
+msgid "getHostName: failed to obtain current host from hostname command\n"
+msgstr "getHostNameڷ hostname ̽ڵЩ\n"
+msgid "current host : $2\n"
+msgstr "Щ$2\n"
+msgid "getUserName: failed to obtain user name from id command\n"
+msgstr "getUserNameڷ id ̽ڵϯ\n"
+msgid "current user name : $2\n"
+msgstr "Щϯꢡ$2\n"
+msgid "getUserGroup: failed to obtain user group from id command\n"
+msgstr "getUserGroupڷ id ̽ڵ\n"
+msgid "current user group : $2\n"
+msgstr "Щϯڡ$2\n"
+msgid "path_app : $2\n"
+msgstr "path_app :$2\n"
+msgid "found $2 on path in $3\n"
+msgstr " $3 ̯ $2\n"
+msgid "can not find $2 on path, exiting.......................\n"
+msgstr "ĸ̯ $2.......................\n"
+msgid "verifyDatabaseUp: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseUpڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseUp: instance is executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseUp: instance is not executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseDown: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseDownڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseDown: instance is executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyDatabaseDown: instance is not executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyListenerUp: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerUpڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerUp: listener $2 is execution\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerUp: listener $2 is not execution\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerDown: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerDownڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerDown: listener $2 is execution\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyListenerDown: listener $2 is not execution\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from df\n"
+msgstr "verifyFilesystemPermڷ df ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from df\n"
+msgstr "verifyFilesystemPermڷ df ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: failed to obtain filesystem info from mount comma\n"
+msgstr "verifyFilesystemPermڷ comma ̽ڵ˷ع\n"
+msgid "verifyFilesystemPerm: filesystem $2 is not mounted setuid\n"
+msgstr "verifyFilesystemPerm˷ $2 setuid\n"
+msgid " must re-mount the filesystem with setuid enabled\n"
+msgstr " setuid ٯ˷\n"
+msgid "verifyFilesystemPerm: filesystem $2 is mounted setuid, OK\n"
+msgstr "verifyFilesystemPerm˷ $2 setuid\n"
+msgid "verifyListenerStatus: failed to obtain listener status for alias: $2\n"
+msgstr "verifyListenerStatusҳĶɱ̽ڵ表$2\n"
+msgid "verifyListenerStatus: listener status is good for alias: $2\n"
+msgstr "verifyListenerStatusĶɱ$2\n"
+msgid "verifyListenerStatus: listener status is not good for alias: $2\n"
+msgstr "verifyListenerStatusĶɱ$2\n"
+msgid "the specified path \\\($2\\\) does not exist\n"
+msgstr " \\\($2\\\) \n"
+msgid "tmpdir \n"
+msgstr "tmpdir \n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain accessperms from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵ̽$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain username from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵϯꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain groupname from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: access perms for \\\($2\\\) is not at least 755\n"
+msgstr "verifyGoodOraclePermOwnership \\\($2\\\) ̽ŷ 755\n"
+msgid "verifyGoodOraclePermOwnership: access perms ok\n"
+msgstr "verifyGoodOraclePermOwnership̽ڦ\n"
+msgid "verifyGoodOraclePermOwnership: owner \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 ȴϯ \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: owner ok\n"
+msgstr "verifyGoodOraclePermOwnershipȴϯڦ\n"
+msgid "verifyGoodOraclePermOwnership: group \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: group ok\n"
+msgstr "verifyGoodOraclePermOwnershipڦ\n"
+msgid "**** directory : $2 does not exist\n"
+msgstr "**** 硨$2 \n"
+msgid "loop: current new $2\n"
+msgstr "Щ $2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain accessperms from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵ̽$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain username from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵϯꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: failed to obtain groupname from ls command for : $2\n"
+msgstr "verifyGoodOraclePermOwnership ls ҳĶ̽ڵꢡ$2\n"
+msgid "verifyGoodOraclePermOwnership: access perms for \\\($2\\\) is not at least 755\n"
+msgstr "verifyGoodOraclePermOwnership \\\($2\\\) ̽ŷ 755\n"
+msgid "verifyGoodOraclePermOwnership: access perms ok\n"
+msgstr "verifyGoodOraclePermOwnership̽ڦ\n"
+msgid "verifyGoodOraclePermOwnership: owner \\\($listuser\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 ȴϯ \\\($listuser\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: owner ok\n"
+msgstr "verifyGoodOraclePermOwnershipȴϯڦ\n"
+msgid "verifyGoodOraclePermOwnership: group \\\($2\\\) of $3 is not $4\n"
+msgstr "verifyGoodOraclePermOwnership$3 \\\($2\\\) $4\n"
+msgid "verifyGoodOraclePermOwnership: group ok\n"
+msgstr "verifyGoodOraclePermOwnershipڦ\n"
+msgid "**** file : $2 does not exist\n"
+msgstr "**** $2 \n"
+msgid "verifySharedMemUsage: failed to obtain ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̽ڵ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifySharedMemUsage: found ipcs \\\(shared memory segment\\\) info user : $2, group : $3, \\\(shid\\\) : $4\n"
+msgstr "verifySharedMemUsage̯ ipcs \\\(شٴ\\\) عϯ$2ڡ$3, \\\(shid\\\)$4\n"
+msgid "verifySharedMemUsage: did find ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̯ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifySharedMemUsage: did not find any ipcs \\\(shared memory segment\\\) info user : $2, group : $3\n"
+msgstr "verifySharedMemUsage̯Ƕ ipcs \\\(شٴ\\\) عϯ$2ڡ$3\n"
+msgid "verifyActiveSemaphoresUsage: failed to obtain ipcs \\\(active semaphores\\\) info user : $2, group : $3\n"
+msgstr "verifyActiveSemaphoresUsage̽ڵ ipcs \\\(ɢ\\\) عϯ$2ڡ$3\n"
+msgid "verifyActiveSemaphoresUsage: found ipcs \\\(active semaphores\\\) info user : $2, group : $3, \\\(semid\\\) : $4\n"
+msgstr "verifyActiveSemaphoresUsage̯ ipcs \\\(ɢ\\\) عϯ$2ڡ$3, \\\(semid\\\)$4\n"
+msgid "verifyActiveSemaphoresUsage: did find ipcs \\\(active semaphores\\\) info user : $2, group : \n"
+msgstr "verifyActiveSemaphoresUsage̯ ipcs \\\(ɢ\\\) عϯ$2ڡ\n"
+msgid "verifyActiveSemaphoresUsage: did not find any ipcs \\\(active semaphores\\\) info user : $2, group : $3\n"
+msgstr "verifyActiveSemaphoresUsage̯Ƕ ipcs \\\(ɢ\\\) عϯ$2ڡ$3\n"
+msgid "startListener: failed to start listener, alias: $2\n"
+msgstr "startListenerٯ¡ɱء$2\n"
+msgid "startListener: listener started, alias: $2\n"
+msgstr "startListenerٯɱء$2\n"
+msgid "stopListener: failed to stop listener, alias: $2\n"
+msgstr "stopListener¡ɱء$2\n"
+msgid "stopListener: listener stopped, alias: $2\n"
+msgstr "stopListenerϡɱء$2\n"
+msgid "removing existing listener log file $2"
+msgstr "ܢȴ $2"
+msgid "execution of verifySetuidFilesystemPerm $2 fail\n"
+msgstr "verifySetuidFilesystemPerm $2 \n"
+msgid "exiting........................\n"
+msgstr "........................\n"
+msgid "execution of $2 start $3 fail\n"
+msgstr "$2 ٯ $3 \n"
+msgid "execution of verifyListenerUp $2 fail\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "execution of verifyGoodListenerStatus $2 fail\n"
+msgstr " verifyGoodListenerStatus $2 \n"
+msgid "execution of sqlplus using @$2 fail\n"
+msgstr "ɳ @$2 sqlplus \n"
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "execution of verifyDatabaseUp $2 fail\n"
+msgstr "verifyDatabaseUp $2 \n"
+msgid "Listener and Database are up and running\n"
+msgstr "ջɳɢ\n"
+#
+#================================
+# <WS>/packages/Setup/es-device
+#================================
+msgid "Usage: $2 -ad Filename"
+msgstr "Ρ$2 -ad "
+msgid " where the options represent:"
+msgstr " ̧㡢"
+msgid " a : Add new device"
+msgstr " a"
+msgid " d : Delete device"
+msgstr " dɴ"
+msgid "This action is limited to superuser only."
+msgstr "Ⱥɢϯ"
+msgid "Exiting $2."
+msgstr " $2"
+msgid "create_node_family_file: Error! Invalid node object type $2"
+msgstr "create_node_family_file먡ǵ $2 "
+msgid "set_global_variable: Value not specified for $2"
+msgstr "set_global_variable $2 ԫ"
+msgid "set_global_variable: Invalid parameter $2"
+msgstr "set_global_variableٶ $2"
+msgid "delete_node: Invalid data in input file"
+msgstr "delete_nodeī"
+msgid "delete_node: $2 does not exist, verify input"
+msgstr "delete_node$2 㡢ī"
+msgid "delete_group: Invalid data in input file"
+msgstr "delete_groupī"
+msgid "delete_group: $2 does not exist, verify input"
+msgstr "delete_group$2 㡢ī"
+msgid "delete_group: Invalid group type $2"
+msgstr "delete_group $2 "
+msgid "delete_segment: Invalid data in input file"
+msgstr "delete_segmentī"
+msgid "delete_segment: $2 does not exist, verify input"
+msgstr "delete_segment$2 㡢ī"
+msgid "delete_segment: Invalid segment type $2"
+msgstr "delete_segmentٴ $2 "
+msgid "delete_composite: Invalid data in input file"
+msgstr "delete_compositeī"
+msgid "delete_composite: $2 does not exist, verify input"
+msgstr "delete_composite$2 㡢ī"
+msgid "validate_node_object_type: $2 or $3 exists"
+msgstr "validate_node_object_type$2 $3 "
+msgid "validate_i18n_key: Node object type exists in $2 line $3"
+msgstr "validate_i18n_keyǵ $2 $3"
+msgid "validate_i18n_key: Invalid i18n key: $2"
+msgstr "validate_i18n_keyi18n 桨$2"
+msgid "validate_group_i18n_type: $2 is invalid group type"
+msgstr "validate_group_i18n_type$2 "
+msgid "validate_group_i18n_key: Group object type exists in $2 line $3"
+msgstr "validate_group_i18n_keyǵ $2 $3"
+msgid "validate_segment_i18n_type: $2 is invalid segment type"
+msgstr "validate_segment_i18n_type$2 ٴ"
+msgid "validate_segment_i18n_key: Segment object type exists in $2 line $3"
+msgstr "validate_segment_i18n_keyٴǵ $2 $3"
+msgid "validate_composite_i18n_key: Composite object type exists in $2 line $3"
+msgstr "validate_composite_i18n_keyǵ $2 $3"
+msgid "validate_properties_file: Invalid property file name. Must be $2"
+msgstr "validate_properties_file桤 $2"
+msgid "validate_search_parameter: Invalid sysoid value $2"
+msgstr "validate_search_parametersysoid ԫ $2 "
+msgid "validate_icon_file: Check if file exists and permissions"
+msgstr "validate_icon_fileů"
+msgid "validate_hardware_module: Hardware Module name does not exist"
+msgstr "validate_hardware_module"
+msgid "validate_group_object_type: Invalid object type $2"
+msgstr "validate_group_object_typeǵ $2 "
+msgid "validate_group_object_type: Group object type exists in $2 line $3"
+msgstr "validate_group_object_typeǵ $2 $3"
+msgid "validate_segment_object_type: Invalid object type $2"
+msgstr "validate_segment_object_typeǵ $2 "
+msgid "validate_segment_object_type: Segment object type exists in $2 line $3"
+msgstr "validate_segment_object_typeٴǵ $2 $3"
+msgid "add_node: Invalid node type $2"
+msgstr "add_node $2 "
+msgid "add_node: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_node $2 ů"
+msgid "add_group: Invalid group type $2"
+msgstr "add_group $2 "
+msgid "add_group: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_group $2 ů"
+msgid "add_segment: Invalid segment type $2"
+msgstr "add_segmentٴ $2 "
+msgid "add_segment: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_segment $2 ů"
+msgid "add_composite: Cannot copy $2 file, check if file exists and permissions"
+msgstr "add_composite $2 ů"
+msgid "Package SUNWessrv is not installed on this system"
+msgstr "Ⱥ˷ SUNWessrv "
+msgid "Unable to create logfile $2"
+msgstr "ǡ $2"
+msgid "$2 file does not exist"
+msgstr "$2 "
+msgid "$2 file does not have read permissions"
+msgstr "$2 ̦̽"
+msgid "Invalid Operation: Operation not supported"
+msgstr "ɢ桨ɢ̿"
+msgid "process_delete_data: Object type $2 missing in data file"
+msgstr "process_delete_dataŷǵ $2"
+msgid "validate_monitor_via : $2 is invalid type"
+msgstr "validate_monitor_via$2 "
+msgid "validate_node_type:$2 is invalid node type"
+msgstr "validate_node_type$2 "
+msgid "validate_node_object_type: Invalid object type $2"
+msgstr "validate_node_object_typeǵ $2 "
+msgid "validate_i18n_key: Invalid object type $2"
+msgstr "validate_i18n_keyǵ $2 "
+msgid "add_device: Invalid object type $2"
+msgstr "add_deviceǵ $2 "
+msgid "validate_node_object_type: Node object type exists in $2 line $3"
+msgstr "validate_node_object_typeǵ $2 $3"
+msgid "validate_object_type: Invalid object type $2"
+msgstr "validate_object_typeǵ $2 "
+msgid "validate_group_type: $2 is invalid group type"
+msgstr "validate_group_type$2 "
+msgid "validate_segment_type: Invalid value $2 for Segment_type"
+msgstr "validate_segment_typeSegment_type ԫ $2 "
+msgid " (for example: ./es-device -a /tmp/userdata)"
+msgstr " (./es-device -a /tmp/userdata)"
+msgid " (for example: ./es-device -d /tmp/userdata)"
+msgstr " (./es-device -d /tmp/userdata)"
+msgid "validate_user_name: No value specified for User_name"
+msgstr "validate_user_name User_name ԫ"
+msgid "validate_node_object_type: No value specified for Node_object_type"
+msgstr "validate_node_object_typeNode_object_type ԫ"
+msgid "validate_i18n_key: No value specified for i18n_key"
+msgstr "validate_i18n_key i18n_key ԫ"
+msgid "validate_properties_file: No value specified for Properties_file"
+msgstr "validate_properties_file Properties_file ԫ"
+msgid "validate_search_parameter: No value specified for Search_parameter"
+msgstr "validate_search_parameter Search_parameter ԫ"
+msgid "validate_icon_file: No value specified for icon"
+msgstr "validate_icon_fileԫ"
+msgid "validate_segment_object_type: No value specified for Segment object type"
+msgstr "validate_segment_object_typeٴǵԫ"
+#
+#==============================
+# <WS>/packages/Setup/db-stop
+#==============================
+msgid "getHostName: failed to obtain current host from hostname comma"
+msgstr "getHostNameڷ hostname ̽ڵЩ"
+msgid "current host : $2\n"
+msgstr "Щ$2\n"
+msgid "getUserName: failed to obtain user name from id comma\n"
+msgstr "getUserNameڷ id ̽ڵϯ\n"
+msgid "current user name : $2\n"
+msgstr "Щϯꢡ$2\n"
+msgid "getUserGroup: failed to obtain user group from id comma\n"
+msgstr "getUserGroupڷ id ̽ڵ\n"
+msgid "current user group : $2\n"
+msgstr "Щϯڡ$2\n"
+msgid "verifyDatabaseUp: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseUpڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseUp: instance is executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseUp: instance is not executing\n"
+msgstr "verifyDatabaseUp\n"
+msgid "verifyDatabaseDown: failed to obtain instance process info from ps\n"
+msgstr "verifyDatabaseDownڷ ps ̽ڵݨܡʩ\n"
+msgid "verifyDatabaseDown: instance is executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyDatabaseDown: instance is not executing\n"
+msgstr "verifyDatabaseDown\n"
+msgid "verifyListenerUp: failed to obtain listener process info from ps\n"
+msgstr "verifyListenerUpڷ ps ̽ڵݨܡع\n"
+msgid "verifyListenerUp: listener $2 is executing\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerUp: listener $2 is not executing\n"
+msgstr "verifyListenerUp $2 \n"
+msgid "verifyListenerDown: failed to obtain listener process info from \n"
+msgstr "verifyListenerDown̽ڵݨܡعڷ\n"
+msgid "verifyListenerDown: listener $2 is executing\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "verifyListenerDown: listener $2 is not executing\n"
+msgstr "verifyListenerDown $2 \n"
+msgid "the file $2 does not exist, exiting........................"
+msgstr " $2 㡢........................"
+msgid "performing a (shutdown immediate)......"
+msgstr "硾ǡɻ......"
+msgid "execution of $2 using \\@$3 failed"
+msgstr " \\@$3 $2 "
+msgid "exiting..........................\n"
+msgstr "........................\n"
+msgid "unable to perform normal shutdown, executing a shutdown abort"
+msgstr "ڦ"
+msgid "execution of $2 using adhoc shutdown-abort failed"
+msgstr " adhoc shutdown-abort $2 "
+msgid "execution of $2 stop $3 failed"
+msgstr "$2 $3 "
+msgid "sqlerror code = $2\n"
+msgstr "sqlerror =$2\n"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "execution of sqlplus using $2 fail\n"
+msgstr " $2 sqlplus \n"
+msgid "can not find $2 on path, exiting.......................\n"
+msgstr "ĸ̯ $2.......................\n"
+#
+#=========================================
+# <WS>/packages/Setup/sm_setup_server.sh
+#=========================================
+msgid "The Sun Management Center Console help configuration file cannot be found."
+msgstr "̯ Sun Management Center ƺɷ"
+msgid "Please re-install the Sun Management Center Console component"
+msgstr " Sun Management Center ƺǵ"
+msgid "The base URL has been set to $2"
+msgstr " URL ҳ $2"
+msgid "Could not find group $2. You will have to set up"
+msgstr "̯ $2ٯ"
+msgid "the groups manually. Please add $3 to group $2."
+msgstr "ڡ $3 $2"
+msgid "User $3 in group $2 is not a valid user. Leaving it out of the esusers file."
+msgstr " $2 ϯ $3 ȴϯڷ esusers 桤"
+msgid "Adding user $2 from group $3 to esusers"
+msgstr " $3 ϯ $2 esusers"
+msgid "It appears that you already have some users \\\($2\\\)"
+msgstr "ƫȴġϯ \\\($2\\\)"
+msgid "configured as Sun Management Center administrators. Leaving these users in place."
+msgstr "ҳ Sun Management Center ܡޡϯݨ"
+msgid "You should setup a user as a Sun Management Center administrator."
+msgstr "ġϯҳ Sun Management Center ܡ"
+msgid "This person will be added to the esadm and esdomadm groups."
+msgstr "Ⱥϯ̯ esadm esdomadm 㡤"
+msgid "$2 is not a valid user."
+msgstr "$2 ȴϯ"
+msgid "The group $2 already exists on your system."
+msgstr "˷ĸ $2"
+msgid "Creating the group $2 that contains Sun Management Center $3 Users."
+msgstr "ǡ Sun Management Center $3 ϯ $2"
+msgid "Could not find $2 in $3"
+msgstr "$3 ̯ $2"
+msgid "This part of the setup process does the Sun Management Center Server Component setup."
+msgstr "šݨܡȩ Sun Management Center Τǵ"
+msgid "Unable to set $2 values."
+msgstr " $2 ԫ"
+msgid "agent.snmpPort is already configured in $2"
+msgstr "$2 ħ agent.snmpPort"
+msgid "topology.snmpPort is already configured in $2"
+msgstr "$2 ħ topology.snmpPort"
+msgid "The Sun Management Center base URL is relative to the Sun Management Center Console."
+msgstr " Sun Management Center URL Sun Management Center Cosole "
+msgid "The Sun Management Center Console is able to request help documentation via the network."
+msgstr " Sun Management Center ƺƫɷǵ衤"
+msgid "If you have installed Sun Management Center help documentation in an http-accessible"
+msgstr "Ϊƫ http ̽ĸħ Sun Management Center ɷǵ衢"
+msgid "location within your network, you may specify this location."
+msgstr "Ⱥ"
+msgid "If Sun Management Center help is installed on the console host, simply accept the default value."
+msgstr "Ϊ Sun Management Center ɷƺĸЬƷ̿ԫ"
+msgid "Completing Sun Management Center Server Component setup."
+msgstr "ȩ Sun Management Center Τǵ"
+msgid "Using security seed $2 for Sun Management Center server"
+msgstr "Sun Management Center Τ $2"
+msgid "Please enter a user to be the Sun Management Center administrator: "
+msgstr "īɢҳ Sun Management Center ܡϯ "
+msgid "Please enter a valid username: "
+msgstr "īȴϯꢡ "
+msgid "Please enter base URL to Sun Management Center help [local]: "
+msgstr "ī Sun Management Center ɷ URL [áٶ] "
+#
+#===================================
+# <WS>/packages/Setup/es-common.sh
+#===================================
+msgid "Enter \\\"y\\\" or \\\"n\\\" or \\\"q\\\""
+msgstr "ī \\\"y\\\" \\\"n\\\" \\\"q\\\""
+msgid "Exiting at user request"
+msgstr "ϯĶ"
+msgid "L10N_CODE not set!, LANG=$2"
+msgstr " L10N_CODELANG=$2"
+msgid "Cannot find locale directory for LANG: $2"
+msgstr "̯ LANG 硨$2"
+msgid "Expected to find it in: $2"
+msgstr "Ķ̯ơ$2"
+msgid "No Sun Management Center Packages are installed. Exiting."
+msgstr " Sun Management Center ա֡"
+msgid "Could not find xput executable: $2"
+msgstr "̯ xput ƫ$2"
+msgid "Cannot find file $2"
+msgstr "̯ $2"
+msgid "Moving $2 to $3"
+msgstr " $2 ̯ $3"
+msgid "-------------- WARNING -------------------"
+msgstr "-------------- -------------------"
+msgid "It appears that $2 $3 is already in use."
+msgstr "$2 $3 ƫ"
+msgid "Sun Management Center $2 may not be able to run due to this conflict."
+msgstr "ȺSun Management Center $2 ƫ硤"
+msgid "There are two ways to correct this conflict:"
+msgstr "ȴ̥ƫϫȺ"
+msgid " 1. Reconfigure the port that Sun Management Center uses."
+msgstr " 1. Sun Management Center ա"
+msgid " 2. Stop the process that is using the port."
+msgstr " 2. ݨܡ"
+msgid " You are currently running snmpdx, which may be causing the conflict."
+msgstr " Щ snmpdxƫӳ"
+msgid "Skipping the setting of port number for $2"
+msgstr "ܩ $2 "
+msgid "NOTE: Prior to starting Sun Management Center $2, stop the process using port $3."
+msgstr "ٯ Sun Management Center $2 Щǿ $3 ݨܡ"
+msgid "Updating $2 with new port number."
+msgstr " $2"
+msgid "This part of setup generates security keys used for communications"
+msgstr "šʩܨʩع"
+msgid "between processes. A seed must be provided to initialize the"
+msgstr ""
+msgid "keys. You can choose to use the standard Sun Management Center default or"
+msgstr "ƫ Sun Management Center ԫī"
+msgid "enter your own seed. If you do not generate the keys now,"
+msgstr "͡Ϊܢܨ"
+msgid "you can do so later using the procedure documented in the"
+msgstr "ƫѥߧ"
+msgid "Sun Management Center 3.0 Users Guide."
+msgstr "Sun Management Center 3.0 ϯв"
+msgid "Please make sure you use the same seed for all the machines you install."
+msgstr "ȴ͡"
+msgid "Invalid seed - type s to use default seed"
+msgstr " - Ѻ s "
+msgid "Using default Sun Management Center value for seed."
+msgstr " Sun Management Center ԫɢҳ"
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+msgid "Unable to create logfile $LOGFILE."
+msgstr "ǡ $LOGFILE"
+msgid "Started $0 at"
+msgstr "ٯ $0 "
+msgid "Running on"
+msgstr ""
+msgid "What seed would you like to use?\n"
+msgstr "͡\n"
+msgid "Invalid response in automated configuration file."
+msgstr "ٯȴܡ"
+msgid "Unsupported OS version: $2"
+msgstr " OS ۡ$2"
+msgid "Do you want to use a different port number for $2?"
+msgstr " $2 "
+msgid "Do you want to generate these keys using the Sun Management Center default seed?"
+msgstr " Sun Management Center ܨ"
+msgid "Please enter any port greater or equal to 1100 : "
+msgstr "īǶġ 1100 ա "
+msgid "Port $2 is not a valid port number, try another number : "
+msgstr " $2 ȴƶġԶ "
+msgid "Port $2 is also busy, try another - use s to skip setting the port number:"
+msgstr " $2 ľȤ㡢̧ - s ܩ"
+#
+#======================================
+# <WS>/packages/Setup/install-java.sh
+#======================================
+msgid "Java packages are not in $2"
+msgstr " Java $2 "
+msgid "All required Java packages are not in $2"
+msgstr "ȴ Java $2 "
+msgid "Installing java packages $2"
+msgstr " java $2"
+msgid "the system. Please install them first and then install Sun Management Center."
+msgstr "˷㡤ǿԯѥ Sun Management Center"
+msgid "Package $2 is installed on this system. This package is"
+msgstr " $2 Ⱥ˷㡤 This package is"
+msgid "incompatible with the java version required for Sun Management Center."
+msgstr " Sun Management Center java թ"
+msgid "This package needs to be uninstalled before installing java 2"
+msgstr "ǿȺѥ java 2"
+msgid "Removal of the package $2 failed, please remove it"
+msgstr " $2 ٯ"
+msgid "manually and then install Sun Management Center."
+msgstr "ѥ Sun Management Center"
+msgid "You need to install the following packages $2"
+msgstr "Ķ $2"
+msgid "If you do not choose to install it now, the installation will abort."
+msgstr "Ϊǡɻҡʩˡ"
+msgid "It seems some other version of java packages are present in $2"
+msgstr " $2 ȴƶġ java 㡤"
+msgid "You need to install Solaris_JDK_1.2.1_04 version of the following packages"
+msgstr " Solaris_JDK_1.2.1_04 Ķ"
+msgid "You can enter any directory to install the required version of JAVA."
+msgstr "ƫīǶ JAVA"
+msgid "No java packages to be removed."
+msgstr " java "
+msgid "Sun Management Center installation had overwritten your previous java installation."
+msgstr " Sun Management Center Ȣ̽ǿЩ java Ȣ"
+msgid "You can either keep the current installation or remove it."
+msgstr "ƫЩȢ桤"
+msgid "Warning - Could not find pkgmap file for $2"
+msgstr " - ̯ $2 pkgmap "
+msgid " Space calculations will be wrong."
+msgstr " Ϩȴ먡"
+msgid "Java installation:"
+msgstr "Java ҡ"
+msgid "Space required \\\(in $2\\\): $3 blocks."
+msgstr "Ϩ \\\($2 \\\)$3 Զٴۡ"
+msgid "Space available \\\(in $2\\\): $3 blocks."
+msgstr "ƫϨ \\\($2 \\\)$3 Զٴۡ"
+msgid "Insufficient disk space to install Java components"
+msgstr "ȴϨƫ Java ǵ"
+msgid "Error installing package: $2"
+msgstr "먡$2"
+msgid "The following packages required by Java 2 are not installed on"
+msgstr "Ķ Java 2 "
+msgid "Packages: $2"
+msgstr "ա$2"
+msgid "The required version of Java is already installed in $2"
+msgstr " Java $2 "
+msgid "It seems some of the required packages are already present."
+msgstr "ȴš㡤"
+msgid "You can either overwrite the existing java version or install the"
+msgstr "ƫܢȴ java "
+msgid "required version in some other directory."
+msgstr "̧㡤"
+msgid "Invalid directory"
+msgstr ""
+msgid "Java packages couldnot be found in directory $2"
+msgstr " $2 ̯ Java "
+msgid "Do you want to install it now?"
+msgstr "ǡɻҡ"
+msgid "Do you want to overwrite the existing one?"
+msgstr "̽ܢȴۡ"
+msgid "Do you want to remove it?"
+msgstr "桩"
+msgid "Do you want to uninstall it now"
+msgstr "ǡɻ"
+msgid "Enter the base directory for JDK installation [$2]"
+msgstr "ī JDK [$2]"
+#
+#============================
+# <WS>/packages/Setup/es-db
+#============================
+msgid "A minimum of 256 MB RAM is required to install Sun Management Center server."
+msgstr "ŷȴ 256 MB RAM Sun Management Center Τ¡"
+msgid "Current system has $2 MB RAM."
+msgstr "Щ˷̦ȴ $2 MB RAM"
+msgid "Can not continue to install Sun Management Center server."
+msgstr " Sun Management Center Τ¡"
+msgid " Sun Management Center DB "
+msgstr " Sun Management Center DB "
+msgid " Sun Management Center Database Installation "
+msgstr " Sun Management Center ջ "
+msgid "Invalid parameters for installDB\\\(\\\)"
+msgstr " installDB\\\(\\\) ٶ"
+msgid "The following Sun Management Center database packages have already been installed on your system:"
+msgstr "˷ĸħĶ Sun Management Center ջա"
+msgid "Checking memory available..."
+msgstr "ƫش..."
+msgid "Creating the mount points..."
+msgstr "ǡ..."
+msgid "Error installing SUNWesora. Installation cannot continue."
+msgstr " SUNWesora 먡ҡ"
+msgid "Error installing SUNWestbl. Installation cannot continue."
+msgstr " SUNWestbl 먡ҡ"
+msgid "Sun Management Center DB packages installed successfully"
+msgstr "Sun Management Center DB ȩ"
+msgid "es-setup will perform the remainder of the config"
+msgstr "es-setup ̧š"
+#
+#======================================
+# <WS>/packages/Setup/install-patch.sh
+#======================================
+msgid "No patch checking on this platform"
+msgstr "ȺƺĸȢ"
+msgid "Could not find the patches in the following directory."
+msgstr "Ķ̯Ȣ"
+msgid "Installing patch $2..."
+msgstr "Ȣ $2..."
+msgid "Installation of patch $2 failed."
+msgstr "Ȣ $2 "
+msgid "Installation of patch $2 complete."
+msgstr "Ȣ $2 ȩ"
+msgid "Following patches are prerequisites to the java patches."
+msgstr " java ȢЩǿĶȢ"
+msgid "Please install them manually and then install Sun Management Center."
+msgstr "ٯѥ Sun Management Center"
+msgid "Installation of following patches failed, please install"
+msgstr "ĶȢٯ"
+msgid "them manually and then install Sun Management Center."
+msgstr "ѥ Sun Management Center"
+msgid "Checking for required OS patches, Please wait..."
+msgstr " OS ȢԷ..."
+msgid "Following is the list of required patches for java 2."
+msgstr "Ķҳ java 2 Ȣ̡"
+msgid "If you do not choose to install them now installation will abort."
+msgstr "Ϊǡɻҡʩˡ"
+msgid "Checking for required OS patches done."
+msgstr "ȩ OS Ȣ硤"
+msgid "Invalid directory."
+msgstr "硤"
+msgid "Do you want to install now"
+msgstr "ǡɻҡ"
+msgid "Please enter the directory that contains patches: "
+msgstr "īȴȢ硨 "
+#
+#=================================
+# <WS>/packages/Setup/es-restore
+#=================================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "The backup $2 does not exist"
+msgstr "ެǹ $2 "
+msgid "Checking installed Sun Management Center..."
+msgstr " Sun Management Center..."
+msgid "Recover the Sun Management Center Database and it will take a few minutes..."
+msgstr "ߦ Sun Management Center ջĸš..."
+msgid "Restore the Sun Management Center data."
+msgstr "ߦ Sun Management Center 衤"
+msgid "Shutdown Sun Management Center database, please wait."
+msgstr " Sun Management Center ջԷ"
+msgid "Recovery is fnished successfully. Please start Sun Management Center."
+msgstr "ɳȩߦϡٯ Sun Management Center"
+msgid "The Sun Management Center server components are not found or"
+msgstr "̯ Sun Management Center Τģ́"
+msgid "its installation is damaged. You need to run"
+msgstr "䴡"
+msgid "es-inst/es-setup to install Sun Management Center and then "
+msgstr "es-inst/es-setup Sun Management Centerѥ"
+msgid "start es-restore."
+msgstr "ٯ es-restore"
+msgid "Cannot restore $2"
+msgstr "ߦ $2"
+msgid "Cannot import database. Please check $2"
+msgstr "īջ $2"
+msgid "The recovery need to shudown Sun Management Center servers."
+msgstr "ߦɢ Sun Management Center Τ¡"
+msgid "Please get the backup of es-backup ready."
+msgstr "ެ es-backup ެǹ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the backup data directory:"
+msgstr "īެǹ"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_metadata.sh
+#==========================================
+msgid "$2 appears to be configured as your Sun Management Center server."
+msgstr "$2 ƫҳ Sun Management Center Τ¡"
+msgid "Error - Unable to set $2 values."
+msgstr " - $2 ԫ"
+msgid "agent.snmpPort already configured in $2"
+msgstr " $2 ħ agent.snmpPort"
+msgid "This part of the setup process does the Sun Management Center Agent Component setup."
+msgstr "šݨܡȩ Sun Management Center ܡȢǵ"
+msgid "snmpd.conf already exists in $2. Leaving it in place"
+msgstr "$2 snmpd.conf̧ݨ"
+msgid "Copying snmpd.conf file into $2"
+msgstr " snmpd.conf ̯ $2"
+msgid "Server component also installed locally."
+msgstr "ħΤǵ"
+msgid "Using this machine as the Sun Management Center server."
+msgstr "ɢҳ Sun Management Center Τ¡"
+msgid "Completing Sun Management Center Agent Component setup."
+msgstr "ȩ Sun Management Center ܡȢǵ"
+msgid "Using security seed $2 for Sun Management Center metadata"
+msgstr " $2 ɢҳ Sun Management Center "
+msgid "Please enter the Sun Management Center Server Hostname: "
+msgstr "ī Sun Management Center Τꢡ "
+msgid "Is this correct?"
+msgstr ""
+#
+#============================
+# <WS>/packages/Setup/es-lic
+#============================
+msgid "Topology server is currently running."
+msgstr "ЩΤ¡"
+msgid "It must be restarted for the license file update to take effect."
+msgstr "桢ٯ"
+msgid "Please stop and restart topology server using:"
+msgstr "ٯΤ¡"
+msgid "$2 -p\\\; $3 -p"
+msgstr "$2 -p\\\; $3 -p"
+msgid "Invalid License, Exiting..."
+msgstr "桢..."
+msgid " Sun Management Center License Program\n"
+msgstr " Sun Management Center Ȣ\n"
+msgid " Invalid parameters passed to es-lic script\n"
+msgstr " ̯ es-lic Script ٶ\n"
+msgid "Please enter license key: "
+msgstr "ī "
+#
+#===============================
+# <WS>/packages/Setup/es-dbimp
+#===============================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "The backup $2 does not exist"
+msgstr "ެǹ $2 "
+msgid "------------------- WARNING !!! ----------------"
+msgstr "------------------- ˡ ----------------"
+msgid "The process need Sun Management Center server components stopped."
+msgstr "Ⱥݨܡ Sun Management Center Τǵ硤"
+msgid "And import the backup data to Sun Management Center database."
+msgstr "ެǹī Sun Management Center ջ"
+msgid "As a result, all current data will be destroyed."
+msgstr "Ϊȩȴܢȴڡ"
+msgid "Done"
+msgstr "ȩ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+#
+#=======================================
+# <WS>/packages/Setup/sm_setup_agent.sh
+#=======================================
+msgid "$2 appears to be configured as your Sun Management Center server."
+msgstr "$2 ƫҳ Sun Management Center Τ¡"
+msgid "Error - Unable to set $2 values."
+msgstr " - $2 ԫ"
+msgid "agent.snmpPort already configured in $2"
+msgstr " $2 ħ agent.snmpPort"
+msgid "This part of the setup process does the Sun Management Center Agent Component setup."
+msgstr "šݨܡȩ Sun Management Center ܡȢǵ"
+msgid "snmpd.conf already exists in $2. Leaving it in place"
+msgstr "$2 snmpd.conf̧ݨ"
+msgid "Copying snmpd.conf file into $2"
+msgstr " snmpd.conf ̯ $2"
+msgid "Server component also installed locally."
+msgstr "ħΤǵ"
+msgid "Using this machine as the Sun Management Center server."
+msgstr "ɢҳ Sun Management Center Τ¡"
+msgid "Completing Sun Management Center Agent Component setup."
+msgstr "ȩ Sun Management Center ܡȢǵ"
+msgid "Using security seed $2 for Sun Management Center agent"
+msgstr " $2 ɢҳ Sun Management Center ܡȢ"
+msgid "Please enter the Sun Management Center Server Hostname: "
+msgstr "ī Sun Management Center Τꢡ "
+msgid "Is this correct?"
+msgstr ""
+#
+#================================
+# <WS>/packages/Setup/es-backup
+#================================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Can not create the directory $2"
+msgstr "ǡ $2"
+msgid "Backup is successful."
+msgstr "ެǹȩ"
+msgid "Please save following files for the restore of Sun Management Center"
+msgstr "Ķߦ Sun Management Center "
+msgid "Starting Sun Management Center...."
+msgstr "ٯ Sun Management Center...."
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "Backup Sun Management Center data failed. Please check $2"
+msgstr "Sun Management Center ެǹ $2"
+msgid "The operation requires to shutdown Sun Management Center."
+msgstr "Ⱥɢ Sun Management Center"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the directory to store the backup data file:"
+msgstr "īެǹ表"
+#
+#=======================================
+# <WS>/packages/Setup/sm_setup_mib2.sh
+#=======================================
+msgid "Subagent sunmib_sea already set up - leaving it untouched"
+msgstr "ħܡȢ sunmib_sea - ̧ѽ"
+msgid "Subagent registry file is: $2"
+msgstr "ܡȢҳ$2"
+msgid "Unable to update subagent-registry-d.x"
+msgstr " subagent-registry-d.x"
+msgid "Updated subagent-registry-d.x for mib2 subagent"
+msgstr "ҳ mib2 ܡȢħ subagent-registry-d.x"
+#
+#================================
+# <WS>/packages/Setup/es-uninst
+#================================
+msgid "Removing $2"
+msgstr " $2"
+msgid "Package Removal: Failed for $2"
+msgstr "桨$2 "
+msgid "Reattempting to uninstall the package\\\(s\\\): $2"
+msgstr "ա$2"
+msgid "Please remove the following packages manually.\n"
+msgstr "ٯĶա\n"
+msgid "Sun Management Center uninstall complete.\n"
+msgstr " Sun Management Center ܫ\n"
+msgid " Sun Management Center Uninstallation \n"
+msgstr " Sun Management Center \n"
+msgid "No Sun Management Center packages installed.\n"
+msgstr " Sun Management Center ա\n"
+msgid "This utility removes all the Sun Management Center packages. \n"
+msgstr "ȺȢȴ Sun Management Center ա\n"
+msgid "Exiting uninstall utility.\n"
+msgstr "Ȣ\n"
+msgid "Stopping all Sun Management Center processes. This may take a few moments...\n"
+msgstr "ȴ Sun Management Center ݨܡƫġ...\n"
+msgid "If you are upgrading Sun Management Center, you may want to save your existing data.\n"
+msgstr "ΪŪ Sun Management Centerƫܢȴ衤\n"
+msgid "Will not remove the existing data\n"
+msgstr "ܢȴ\n"
+msgid "Will remove the existing data\n"
+msgstr "ܢȴ\n"
+msgid " Would you like to continue?"
+msgstr " "
+msgid "Do you want to preserve your existing data"
+msgstr "ܢȴ"
+msgid "Do you wish to continue with the removal of the existing data"
+msgstr "ܢȴ"
+#
+#==============================
+# <WS>/packages/Setup/es-dbexp
+#==============================
+msgid "The directory name should start with /"
+msgstr " / "
+msgid "The directory name is invalid"
+msgstr ""
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Can not create the directory $2"
+msgstr "ǡ $2"
+msgid "Cannot export database. Please check $2"
+msgstr "ջ $2"
+msgid "The operation requires some of Sun Management Center components to be shutdown."
+msgstr "Ⱥɢġ Sun Management Center ǵ"
+msgid "Usage: $PROGNAME"
+msgstr "Ρ$PROGNAME"
+msgid "Do you want to create it?"
+msgstr "ǡ"
+msgid "Do you want to proceed [yes/no]:"
+msgstr " [yes/no]"
+msgid "Enter the path of the directory to store the backup data file:"
+msgstr "īެǹ表"
+msgid "Enter the path of the backup directory:"
+msgstr "īެǹ"
+#
+#=================================
+# <WS>/packages/Setup/es-keys.sh
+#=================================
+msgid "Generating $2 security keys."
+msgstr "ܨ $2 "
+msgid "Error generating keys. Return code was $2."
+msgstr "ܨ먡ҳ $2"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_service.sh
+#==========================================
+msgid "This part of the setup process does the Sun Management Center Services Component setup."
+msgstr "šݨܡȩ Sun Management Center Τ٭ǵ"
+msgid "Completing Sun Management Center Services Component setup."
+msgstr "ȩ Sun Management Center Τ٭ǵ"
+#
+#===============================
+# <WS>/packages/Setup/es-start
+#===============================
+msgid "It seems component $2 has not been setup, so skipping it."
+msgstr " $2Ⱥܩơ"
+msgid "Sun Management Center Web Server is not installed, Can not start web server\n"
+msgstr " Sun Management Center Τ¡ٯΤ\n"
+msgid "Sun Management Center Web Server is not completely installed, Can not start web server\n"
+msgstr " Sun Management Center Τ¡ٯΤ\n"
+msgid "web server started\n"
+msgstr "Τٯ\n"
+msgid "Equivalent to %s -aefgmprstxw"
+msgstr "̧ %s -aefgmprstxw"
+msgid "Equivalent to %s -efgmprstxw"
+msgstr "̧ %s -efgmprstxw "
+msgid "Usage: $PROGNAME -acefghilmpstwxrAS [-y instanceName] [ -- args... ]"
+msgstr "Ρ$PROGNAME -acefghilmpstwxrAS [-y instanceName] [ -- args... ]"
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : starts Sun Management Center Agent\n"
+msgstr " aٯ Sun Management Center ܡȢ\n"
+msgid " c : starts Sun Management Center Console\n"
+msgstr " cٯ Sun Management Center Console\n"
+msgid " Optionally, maximum heap size could be customized,\n"
+msgstr " ڰ̱ƫҳԫ\n"
+msgid " e.g., ./es-start -c -- -Xmx100m specifies 100 MBytes\n"
+msgstr " ./es-start -c -- -Xmx100m 100 MB\n"
+msgid " as max heap size; Default size is 64m.\n"
+msgstr " ҳѡҳ 64m\n"
+msgid " e : starts Sun Management Center Event manager\n"
+msgstr " eٯ Sun Management Center ǵܡȢ\n"
+msgid " f : starts Sun Management Center Configuration manager\n"
+msgstr " fٯ Sun Management Center ܡȢ\n"
+msgid " g : starts Sun Management Center Grouping services\n"
+msgstr " gٯSun Management Center Τ٭\n"
+msgid " h : prints this usage report\n"
+msgstr " hȺ\n"
+msgid " i : start agent in interactive mode, valid only for one of\n"
+msgstr " iٯȢɢȢٯܡȢ\n"
+msgid " the a, t, f, p, and e options\n"
+msgstr " atfp e ġȴ\n"
+msgid " l : starts Platform Agent for SSP\n"
+msgstr " lٯ SSP ƺܡȢ\n"
+msgid " m : starts Sun Management Center Metadata Repository\n"
+msgstr " mٯ Sun Management Center ջ\n"
+msgid " q : start components in quiet mode, effective only for one of\n"
+msgstr " qٯȢɢȢٯǵ\n"
+msgid " the A, a, t, f, p, and e options\n"
+msgstr " Aatfp e ġȴ\n"
+msgid " p : starts Sun Management Center Topology manager\n"
+msgstr " pٯ Sun Management Center ܡȢ\n"
+msgid " r : starts Hardware Diagnostic Suite Service\n"
+msgstr " rٯ Hardware Diagnostic Suite Τ٭\n"
+msgid " s : starts Sun Management Center Server\n"
+msgstr " sٯ Sun Management Center Τ\n"
+msgid " Optionally, maximum heap size could be customized,\n"
+msgstr " ڰ̱ƫҳԫ\n"
+msgid " e.g., ./es-start -s -- -Xmx100m specifies 100 MBytes\n"
+msgstr " ./es-start -s -- -Xmx100m 100 MB\n"
+msgid " as max heap size; Default size is 64m.\n"
+msgstr " ҳѡҳ 64m\n"
+msgid " t : starts Sun Management Center Trap Handler\n"
+msgstr " tٯ Sun Management Center ݨܡȢ\n"
+msgid " x : starts CST Service\n"
+msgstr " xٯ CST Τ٭\n"
+msgid " y : starts new instance of platform agent\n"
+msgstr " yٯƺܡȢ\n"
+msgid " w : starts web server\n"
+msgstr " wٯΤ\n"
+msgid " A : starts All Sun Management Center components except the console,\n"
+msgstr " Aٯħƺȴ Sun Management Center ǵ\n"
+msgid " S : starts Sun Management Center Server and all the server subcomponents\n"
+msgstr " Sٯ Sun Management Center ΤȴΤǵ\n"
+msgid " args are passed to console or server when started.\n"
+msgstr " ſƺΤٯԯ\n"
+msgid " (for example: es-start -c -- -p 2099)\n\n"
+msgstr " es-start -c -- -p 2099\n\n"
+msgid "ERROR: Sun Management Center has not been set up.\nRun es-setup to set up Sun Management Center."
+msgstr "먡 Sun Management Center\n es-setup Sun Management Center"
+msgid "Please specify a component to be started."
+msgstr "ٯǵ"
+msgid "Use the following single letter arguments instead:\n"
+msgstr "Ķġſ\n"
+msgid "Console package not installed\n"
+msgstr "ƺ\n"
+msgid "Interactive option invalid with -A or -S option"
+msgstr "ٯȢɢ -A -S "
+msgid "Invalid command line option. Please use just one option\n"
+msgstr "ƷġԶ\n"
+msgid "You have not specified any components to run.\n"
+msgstr "ǵ\n"
+msgid "Only one component may be started in interactive mode\n"
+msgstr "ٯȢɢȢĶƷٯġԶǵ\n"
+msgid "You cannot start console in interactive mode\n"
+msgstr "ٯȢɢȢٯƺ\n"
+msgid "DISPLAY environment variable must be set\n"
+msgstr " DISPLAY \n"
+msgid "Interactive server session:\n"
+msgstr "ٯȢɢΤɢơ\n"
+msgid "SUNWcstv or SUNWcstve package should be installed before start cstservice agent."
+msgstr "ٯ cstservice ܡȢЩǿ SUNWcstv SUNWcstve ա"
+msgid "Interactive option invalid with $OPT option"
+msgstr "ٯȢɢ $OPT "
+msgid "Unable to open DISPLAY: $DISPLAY"
+msgstr " DISPLAY: $DISPLAY"
+msgid "Equivalent to %s -aefgmpstxw"
+msgstr "̧ %s -aefgmpstxw"
+msgid "Equivalent to %s -efgmpstxw"
+msgstr "̧ %s -efgmpstxw"
+msgid "$2 Component not installed"
+msgstr " $2 ǵ"
+msgid "Invalid option\\\($1\\\). Options have changed to single letters:"
+msgstr " \\\($1\\\)ҳġࡨ"
+msgid "Starting all platform instances"
+msgstr "ٯȴƺ"
+msgid "Instances are $2"
+msgstr "ҳ $2"
+msgid "Starting platform instances $2"
+msgstr "ٯƺ $2"
+msgid "ERROR: Could not start Hardware Diagnostic Suite Service."
+msgstr "먡ٯ Hardware Diagnostic Suite Τ٭"
+msgid "SUNWed package should be installed before start Hardware Diagnostic Suite Service."
+msgstr "SUNWed ٯ Hardware Diagnostic Suite Τ٭Щҡ"
+msgid "Sun Management Center is not setup. Please setup first and then run es-start."
+msgstr " Sun Management Centerǿҡѥ es-start"
+msgid "Sun Management Center $2 is not setup."
+msgstr " Sun Management Center $2"
+#
+#==========================================
+# <WS>/packages/Setup/sm_setup_console.sh
+#==========================================
+msgid "This part of the setup process does the Sun Management Center Console Component setup."
+msgstr "šݨܡȩ Sun Management Center ƺǵ"
+#
+#==============================
+# <WS>/packages/Setup/es-stop
+#==============================
+msgid "Please specify a component to be stopped."
+msgstr "ǵ"
+msgid "Usage : $PROGNAME -aefghmprstxAS [-y instanceName]"
+msgstr "Ρ$PROGNAME -aefghmprstxAS [-y instanceName]"
+msgid " a : stops Sun Management Center Agent\n"
+msgstr " a Sun Management Center ܡȢ\n"
+msgid " e : stops Sun Management Center Event manager\n"
+msgstr " e Sun Management Center ǵܡȢ\n"
+msgid " f : stops Sun Management Center Configuration manager\n"
+msgstr " f Sun Management Center ܡȢ\n"
+msgid " g : stops Sun Management Center Services\n"
+msgstr " g Sun Management Center Τ٭\n"
+msgid " h : prints this usage report\n"
+msgstr " hȺ\n"
+msgid " l : stops Platform Agent for SSP\n"
+msgstr " l SSP ƺܡȢ\n"
+msgid " m : stops Sun Management Center Metadata Agent\n"
+msgstr " m Sun Management Center ܡȢ\n"
+msgid " p : stops Sun Management Center Topology manager\n"
+msgstr " p Sun Management Center ܡȢ\n"
+msgid " r : stops Hardware Diagnostic Suite Service\n"
+msgstr " r Hardware Diagnostic Suite Τ٭\n"
+msgid " s : stops Sun Management Center Server\n"
+msgstr " s Sun Management Center Τ\n"
+msgid " t : stops Sun Management Center Trap Handler\n"
+msgstr " t Sun Management Center ݨܡȢ\n"
+msgid " x : stops CST Service\n"
+msgstr " x CST Τ٭\n"
+msgid " y : stops instance of platform agent\n"
+msgstr " yƺܡȢ\n"
+msgid " w : stops web server\n"
+msgstr " wΤ\n"
+msgid " A : stops all Sun Management Center components listed above\n"
+msgstr " Aĸȴ Sun Management Center ǵ\n"
+msgid "equivalent to %s -aefgmprstxw"
+msgstr "̧ %s -aefgmprstxw"
+msgid " S : stops all Sun Management Center components listed above except Sun Management Center Agent\n"
+msgstr " Sħ Sun Management Center ܡȢȴ Sun Management Center ǵ\n"
+msgid "equivalent to %s -efgmprstxw"
+msgstr "̧ %s -efgmprstxw"
+msgid "Use the following single letter arguments instead:\n"
+msgstr "Ķġſ\n"
+msgid "Invalid option\\\($1\\\). Options have changed to single letters:"
+msgstr " \\\($1\\\)ҳġࡨ"
+msgid "$1 Component not installed"
+msgstr " $1 ǵ"
+msgid "Stopping all platform instances"
+msgstr "ȴƺ"
+msgid "$COMPONENT component is not running"
+msgstr "$COMPONENT ǵ"
+msgid "Stopping $COMPONENT component"
+msgstr " $COMPONENT ǵ"
+msgid "Error in stopping $COMPONENT component"
+msgstr " $COMPONENT ǵ"
+#
+#================================
+# <WS>/packages/Setup/es-crlcon
+#================================
+msgid " Sun Management Center Light Console Creation Program\n"
+msgstr " Sun Management Center ƺǡȢ\n"
+msgid "This program creates a directory of minimun required console components.\n"
+msgstr "ȺȢǡŷƺǵ硤\n"
+msgid "User can copy this directory to any machine with supported configuration\n"
+msgstr "ϯƫȺ̯Ƕ̦ȴ̿ĸ\n"
+msgid "to run Console."
+msgstr "ƺ"
+msgid "Destination [/tmp]: "
+msgstr " [/tmp] "
+msgid "Please remove the directory $dirname before proceeding"
+msgstr "Щ $dirname"
+msgid "or use a different directory.\n"
+msgstr "硤\n"
+msgid "Do you want the directory to be in zip format [y|n] [y]: "
+msgstr "ȩҳ zip ֪Ȣ [y|n] [y] "
+msgid "Please enter path to the executable - zip: "
+msgstr "īƫ - zip "
+msgid "Cannot find zip in $zippath."
+msgstr "$zippath ̯ zip"
+msgid "Source will be taken from [/opt/SUNWsymon]: "
+msgstr "̽ [/opt/SUNWsymon] "
+msgid "Directory ${dirname} is created."
+msgstr " ${dirname} ǡ"
+msgid "Creating zip file ...\n"
+msgstr "ǡ zip ...\n"
+msgid "SUNWsymon.zip can be transferred to other systems, unzip,\n"
+msgstr "SUNWsymon.zip ƫ̧˷ӡ㡤\n"
+msgid "Zip file is created in "
+msgstr "Zip ǡ "
+msgid "\nPlease note:\n\n Light console can be invoked by running:\n\n"
+msgstr "\n\n\n ƫĶƵƺ\n\n"
+#
+#================================
+# <WS>/packages/Setup/es-sfix.sh
+#================================
+msgid "usage:\n"
+msgstr "Ρ\n"
+msgid "process all modules : es-sfix.sh\n"
+msgstr "ݨܡȴ es-sfix.sh\n"
+msgid "flush db & process all modules : es-sfix.sh [-c | -C]\n"
+msgstr " db ݨܡȴ es-sfix.sh [-c | -C]\n"
+msgid "process only for specifiec module : es-sfix.sh [-m | -M] [module name]\n"
+msgstr "Ʒݨܡ es-sfix.sh [-m | -M] []\n"
+msgid "starting Sun Management Center database\n"
+msgstr "ٯ Sun Management Center ջ\n"
+msgid "database startup failed, exiting\n"
+msgstr "ջٯ\n"
+msgid "database is up\n"
+msgstr "ջƵ\n"
+msgid "executing suggested fix script\n"
+msgstr "Ժߦ Script\n"
+msgid "execution successful\n"
+msgstr "ȩ\n"
+msgid "error in execution\n"
+msgstr "\n"
+msgid "shutting down the database\n"
+msgstr "ջ\n"
+msgid "db-stop failed\n"
+msgstr "db-stop \n"
+msgid "purge database and process\n"
+msgstr "ջݨܡ\n"
+msgid "process only for module\n"
+msgstr "ݨܡ\n"
+msgid "incorrect usage\n"
+msgstr "\n"
+msgid "invalid arguments\n"
+msgstr "ſ\n"
+msgid "default processing\n"
+msgstr "ݨܡʩ\n"
+msgid "could not set java home directory\n"
+msgstr " java \n"
+msgid "please see the suggested fix log file in "
+msgstr "ٶԺߦ"
+#
+#=================================
+# <WS>/packages/Setup/es-details
+#=================================
+msgid "ERROR: "
+msgstr "먡 "
+msgid " Specify the tabs for a given Node_Object_Type. The -f and -u\n"
+msgstr " ҳ Node_Object_Type -f -u\n"
+msgid " options are mutually exclusive.\n"
+msgstr " 桤\n"
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : All tabs provided by Sun Management Center\n"
+msgstr " a Sun Management Center ȴ\n"
+msgid " will be included.\n"
+msgstr " \n"
+msgid " f inputfile : Input file which contains list of tabs to\n"
+msgstr " f inputfile ī\n"
+msgid " be used for the specified Node_Object_Type.\n"
+msgstr " Node_Object_Type\n"
+msgid " n Node_Object_Type : Corresponds to the Node_Object_Type\n"
+msgstr " n Node_Object_Type es-device Script \n"
+msgid " entered in the es-device script.\n"
+msgstr " ī Node_Object_Type\n"
+msgid " o : Overwrite previously created tab file.\n"
+msgstr " o Щǡ\n"
+msgid " Only meaningful when used with the -f\n"
+msgstr " Ʒȴ -f ȴ\n"
+msgid " option.\n"
+msgstr " \n"
+msgid " u : Undo. Restores the Node_Object_Type\n"
+msgstr " u ߦϡ Node_Object_Type ߦ\n"
+msgid " to its original state.\n"
+msgstr " ҳ̧ȴ衤\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "Usage: $2 [ -a ] [ -f inputfile ] -n Node_Object_Type [ -o ] [ -u ]\n"
+msgstr "Ρ$2 [ -a ] [ -f inputfile ] -n Node_Object_Type [ -o ] [ -u ]\n"
+msgid "Input file $2 does not exist"
+msgstr "ī $2 "
+msgid "The Node_Object_Type must be specified."
+msgstr " Node_Object_Type"
+msgid "Either option -f or -u must be specified."
+msgstr " -f -u ġ"
+msgid "Options -f or -u cannot both be specified."
+msgstr " -f -u"
+msgid "Options -o and -u cannot both be specified."
+msgstr " -o -u"
+msgid "Options -a and -u cannot both be specified."
+msgstr " -a -u"
+msgid "es-details has not yet been run with Node_Object_Type $2."
+msgstr " Node_Object_Type $2 es-details"
+msgid "Tab name not specified for DEFAULT statement on line $2."
+msgstr " $2 ĸ ҳ DEFAULT ꢡ"
+msgid "Only one tab can be defined as the DEFAULT."
+msgstr "ƷġԶɢҳ DEFAULT"
+msgid "Tab name not specified for INCLUDE statement on line $2."
+msgstr " $2 ĸҳ INCLUDE ꢡ"
+msgid "$2 is not a valid Sun Management Center tab on line $3."
+msgstr "$2 $3 ĸȴ Sun Management Center "
+msgid "Tab name not specified for APPEND statement on line $2."
+msgstr " $2 ĸҳ APPEND ꢡ"
+msgid "Tab name $2 must be in format file:key on line $3."
+msgstr " $3 ĸ $2 ֪Ȣҳ file:key"
+msgid "Help key not specified for user-defined tab $2 on line $3."
+msgstr " $3 ĸҳϯ $2 ɷ"
+msgid "Help Key $2 must be in format key:file on line $3."
+msgstr " $3 ĸɷ $2 ֪Ȣҳ key:file"
+msgid "Java class not specified for user-defined tab $2 on line $3."
+msgstr " $3 ĸҳϯ $2 Java ɱ"
+msgid "Key $2 is not a valid key on line $3."
+msgstr " $2 $3 ĸȴ"
+msgid "Input file $2 contains no APPEND or INCLUDE statements"
+msgstr "ī $2 APPEND INCLUDE "
+msgid "$2 is not a valid Node_Object_Type."
+msgstr "$2 ȴ Node_Object_Type"
+msgid "The specified default tab $2 was not found in the inputfile."
+msgstr "ī̯ $2"
+msgid "The tabs for this object have already been specified, use -o option to overwrite."
+msgstr "Ⱥǵ -o ѡ"
+msgid "Can only modify the family file for Sun Management Center agents."
+msgstr "Ʒҳ Sun Management Center ܡȢԺե"
+#
+#===========================
+# <WS>/packages/Setup/es-dt
+#===========================
+msgid "ERROR: "
+msgstr "먡 "
+msgid " where the options represent:\n"
+msgstr " ̧㡢\n"
+msgid " a : Add a reference.\n"
+msgstr " a ٶ衤\n"
+msgid " d : Delete a reference.\n"
+msgstr " d ɴٶ衤\n"
+msgid " v : View references. This is the default option.\n"
+msgstr " v ٶ衤Ⱥҳ\n"
+msgid " s : Add/Delete/View on the Platform Agent. By default the\n"
+msgstr " s ƺܡȢĸ/ɴ/á\n"
+msgid " operation is performed on the Agent.\n"
+msgstr " ɢܡȢĸ硤\n"
+msgid " h hostname : Agent hostname of machine running the Discovery Object Table.\n"
+msgstr " h ꢡǵܡꢡ\n"
+msgid " l label : Unique label for the Composite Object to add or delete.\n"
+msgstr " l ɴǵȴ\n"
+msgid " n not : Node_Object_Type for the Composite Object to add.\n"
+msgstr " n not ǵ Node_Object_Type\n"
+msgid " o OID : Discovery Object Table OID to add.\n"
+msgstr " o OID ǵ OID\n"
+msgid " p port : Agent port of machine running the Discovery Object Table.\n"
+msgstr " p port ǵܡȢա\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "ESDIR must be set"
+msgstr " ESDIR"
+msgid "Usage: $2 -a \\\| -d \\\| -v [ -s ] -h hostname -l label -n not -o OID -p port\n"
+msgstr "Ρ$2 -a \\\| -d \\\| -v [ -s ] -h -l -n not -o OID -p port\n"
+msgid "It cannot be loaded on both the Agent and Platform Agent."
+msgstr "ܡȢůƺܡȢīơ"
+msgid "The options -h, -l, -n, -o, and -p must all be used with the -a option."
+msgstr " -h-l-n-o -p -a "
+msgid "An entry for $2 already exists."
+msgstr " $2 㡤"
+msgid "The option -l must be used with the -d option."
+msgstr " -l -d "
+msgid "The options -h, -n, -o, and -p are not valid with the -d option."
+msgstr " -h-n-o -p -d "
+msgid "An entry for $2 does not exist."
+msgstr " $2 㡤"
+msgid "The options -h, -l, -n, -o, and -p are not valid with the -v option."
+msgstr " -h-l-n-o -p -v "
+msgid "No entries."
+msgstr "ȴ"
+msgid "The file $2 is not readable."
+msgstr " $2 ƫ̽"
+msgid "Discovery Service loaded on: Agent"
+msgstr "Τ٭īAgent"
+msgid "Discovery Service loaded on: Platform Agent."
+msgstr "Τ٭īƺܡȢ"
+msgid "Entries:"
+msgstr ""
+msgid "The discovery table is already loaded on the Agent."
+msgstr "ܡȢĸī"
+msgid "The discovery table is already loaded on the Platform Agent."
+msgstr "ƺܡȢĸī"
+#
+#=============================
+# <WS>/packages/Setup/es-apps
+#=============================
+msgid "This script reads the specified configuration file or\\n%s if not specified,\\nand installs the applications with the server."
+msgstr "Ⱥ Script ̽\\n%sΪ\\nΤȢ"
+msgid "The configuration file contains one or more lines using the following format:\n"
+msgstr "ġĶ֪Ȣթ\n"
+msgid "where:\n"
+msgstr "̧㡨\n"
+msgid "name\tis the name of the application that appears in the Application list\n"
+msgstr " name\tȢȢ"
+msgid "class\tis the name of the Java class for the application\n"
+msgstr " class\tȢ Java ɱ\n"
+msgid "args\tare optional user defined arguments to be passed to the application\n"
+msgstr "args\tīȢϯƫ\n"
+msgid "help\tis the optional help specification using the format key:helpfile or :url.\n"
+msgstr "help\tkey:helpfile :url ֪Ȣɷƫ\n"
+msgid "There should be no quotes in the line.\n"
+msgstr "ȴſ\n"
+msgid "Lines beginning with # are considered as comments.\n"
+msgstr " # թݷҳء"
+msgid "For example:\n"
+msgstr "\n"
+msgid "Using %s"
+msgstr " %s"
+msgid "%s updated."
+msgstr "%s 仡"
+#
+#================================
+# <WS>/packages/Setup/db-export.sh
+#================================
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+#
+#==================================
+# <WS>/packages/Setup/db-import.sh
+#==================================
+msgid "This action is limited to superuser only.\n"
+msgstr "Ⱥɢϯ\n"
+msgid "Exiting $PROGNAME."
+msgstr " $PROGNAME"
+msgid "please ensure Topology & Event agents are not running..."
+msgstr "ůǵܡȢ..."
+#
+#============================
+# <WS>/packages/Setup/es-run
+#============================
+msgid "Usage : $PROGNAME option1 [option2,...]"
+msgstr "Ρ$PROGNAME 1 [ 2,...]"
+msgid " where option1 is a Sun Management Center utility\n and option2,... are the arguments for 'option1'\n\n If option1 is '-help', then the usage is printed.\n\n"
+msgstr " ̧㡢 1 Sun Management Center Ȣ\n 2,... ҡ 1ſ\n\n Ϊ 1 '-help'̧Ρ\n\n"
+#
+#==============================
+# <WS>/packages/Setup/es-chelp
+#===============================
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+msgid "There is an existing $PROGRAM lockfile, $LOCKFILE"
+msgstr "ġԶ $PROGRAM $LOCKFILE"
+msgid "which indicates that process is executing the $PROGRAM"
+msgstr "ݨܡ $PROGRAM"
+msgid "If this is not the case, delete the lock file,"
+msgstr "ΪӡɴȺ"
+msgid "$LOCKFILE and execute $PROGRAM again."
+msgstr "$LOCKFILE ȹ $PROGRAM"
+msgid "$sdk_helpfile either does not exist or is not writable"
+msgstr "$sdk_helpfile ƫī"
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+#
+#========================================
+# <WS>/src/db/build/build-recovery*.ksh
+#========================================
+msgid "The directory $2 does not exist"
+msgstr " $2 "
+msgid "Usage: $PROGNAME -au auid -ap apword -wu wuid -wp wpword -sp syspword -s osrvname -tsn tsname -tsp tsphyspath -tsis tssize -olfp olfpath [-cdb] [-vr]"
+msgstr "Ρ$PROGNAME -au auid -ap apword -wu wuid -wp wpword -sp syspword -s osrvname -tsn tsname -tsp tsphyspath -tsis tssize -olfp olfpath [-cdb] [-vr]"
+msgid " -au auid : userid used to admin smc tablespace"
+msgstr " -au auid ܡ smc ֪Ϩ userid"
+msgid " -ap apword : password for corresponding admin userid"
+msgstr " -ap apword ܡ userid "
+msgid " -wu wuid : working userid used by application"
+msgstr " -wu wuid Ȣɢ userid"
+msgid " -wp wpword : working password for corresponding working userid"
+msgstr " -wp wpword ɢ userid ɢ"
+msgid " -sp syspword : password for system userid \\\(system\\\)"
+msgstr " -sp syspword ˷ userid \\\(system\\\)"
+msgid " -s osrvname : name of the oracle service used to connect to db"
+msgstr " -s osrvname ̯ջ oracle Τ٭"
+msgid " -tsn tsname : name of the tablespace"
+msgstr " -tsn tsname ֪Ϩ"
+msgid " -tsp tsphyspath : physical location of tablespace"
+msgstr " -tsp tsphyspath ֪Ϩ"
+msgid " -tsis tssize : initial size of tablespace \\\(in M bytes\\\)"
+msgstr " -tsis tssize ֪Ϩ \\\( MB ҳ\\\)"
+msgid " -olfp olfpath : physical location \\\(local\\\) to write the smc30.oracle file"
+msgstr " -olfp olfpath ī smc30.oracle \\\(\\\)"
+msgid " -cdb : indicates that any existing tablespace and user"
+msgstr " -cdb ȴܢȴ֪Ϩůϯ"
+msgid " matching the specified parameters above are"
+msgstr " ĸٶϯ"
+msgid " dropped before proceeding. use is optional"
+msgstr " Щ۹ƫ"
+msgid " -vr : this option is used to verify all objects"
+msgstr " -vr Ⱥȴǵ"
+msgid " and to perform a recovery sequence if any"
+msgstr " ůߦѥٯɢΪ"
+msgid " problems are detected"
+msgstr " ̯Ƕ"
+msgid " -ver : option"
+msgstr " -ver "
+msgid " -lf logfile : logfile name"
+msgstr " -lf logfile "
+msgid "ERROR: the ESDIR environment variable has not been set"
+msgstr "먡 ESDIR "
+msgid "illegal option encoutered : $2"
+msgstr "̯$2"
+msgid "this is a pc installation : $2"
+msgstr "Ⱥҳ pc ҡ$2"
+msgid "this is a sparc installation : $2"
+msgstr "Ⱥҳ sparc ҡ$2"
+msgid "unknown system type, exiting........................"
+msgstr "˷........................"
+msgid "can not find sqlplus on path, exiting........................."
+msgstr "ĸ̯ sqlplus........................."
+msgid "the current directory is not writable "
+msgstr "Щƫī "
+msgid "sqlplus writes an error log \\\(sqlnet.log\\\)"
+msgstr "sqlplus ī \\\(sqlnet.log\\\)"
+msgid "to the current directory in the event of"
+msgstr "Щ㡾"
+msgid "a connection problem"
+msgstr "ǵ㡿"
+msgid "the /tmp directory does not exist"
+msgstr "/tmp "
+msgid "however, a file named /tmp does exist"
+msgstr "紡ȴԶҳ /tmp "
+msgid "/tmp directory is not writable "
+msgstr "/tmp ƫī"
+msgid "the \\\(-au auid\\\) command line parameter was not specified "
+msgstr " \\\(-au auid\\\) ٶ"
+msgid "the \\\(-ap apword\\\) command line parameter was not specified "
+msgstr " \\\(-ap apword\\\) ٶ"
+msgid "the \\\(-wu wuid\\\) command line parameter was not specified "
+msgstr " \\\(-wu wuid\\\) ٶ"
+msgid "the \\\(-wp wpword\\\) command line parameter was not specified "
+msgstr " \\\(-wp wpword\\\) ٶ"
+msgid "the \\\(-sp syspword\\\) command line parameter was not specified "
+msgstr " \\\(-sp syspword\\\) ٶ"
+msgid "the \\\(-s osrvname\\\) command line parameter was not specified "
+msgstr " \\\(-s osrvname\\\) ٶ"
+msgid "the \\\(-tsn tsname\\\) command line parameter was not specified "
+msgstr " \\\(-tsn tsname\\\) ٶ"
+msgid "the \\\(-tsp tsphyspath\\\) command line parameter was not specified "
+msgstr " \\\(-tsp tsphyspath\\\) ٶ"
+msgid "the \\\(-tsis tssize\\\) command line parameter was not specified "
+msgstr " \\\(-tsis tssize\\\) ٶ"
+msgid "the \\\(-olfp olfpath\\\) command line parameter was invalid! "
+msgstr "\\\(-olfp olfpath\\\) ٶ桪 "
+msgid "exiting..................."
+msgstr "..................."
+msgid "The Initial Tablespace Size given is not invalid"
+msgstr "֪Ϩ"
+msgid "valid range is 1 to 500 M"
+msgstr "ȴҳ 1 ̯ 500 M"
+msgid "Writing Applogin file : $2"
+msgstr "ī Applogin $2"
+msgid "file : $2, has a quit statement in it."
+msgstr "file : $2̧ȴġԶ"
+msgid "file : $str3, has a quit statement in it."
+msgstr "file : $str3̧ȴġԶ"
+msgid "need to remove quit statements, exiting........................"
+msgstr "........................"
+msgid "source file: $2 for step: $3 is missing"
+msgstr "$2$3"
+msgid "probably need to execute mkaggregatefiles.ksh"
+msgstr "ƫ mkaggregatefiles.ksh"
+msgid "source file for one or more steps is missing, exiting........................"
+msgstr "ġԶ¡........................"
+msgid " removing existing logfile : /tmp/recovery.err"
+msgstr " ܢȴ/tmp/recovery.err"
+msgid " removing existing logfile : $2"
+msgstr " ܢȴ $2"
+msgid " removing existing temporary sql : $2"
+msgstr " ܢȴ sql $2"
+msgid "Unable to successfully append $2 onto $3"
+msgstr "ȩʢ $2 $3"
+msgid "return code from cat : $2"
+msgstr " cat $2"
+msgid "$2 file not found"
+msgstr "̯ $2 "
+msgid "Unable to successfully substitue in $2"
+msgstr " $2 ȩ̽"
+msgid "substitution string : $2"
+msgstr "̽롨$2"
+msgid "return code from sed : $2"
+msgstr " sed $2"
+msgid "Unable to successfully perform all sed based substitutions on $2 into $3"
+msgstr "ȩ $2 ĸȴ sed ̽ɢ̯ $3 "
+msgid "return code from grep : $2, meaning it found un-substituted strings"
+msgstr " grep $2̯̽"
+msgid "$2 file not found\\\(1\\\)"
+msgstr "̯ $2 \\\(1\\\)"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "sqlerror code = $2"
+msgstr "sqlerror = $2"
+msgid "sqlerrmsg full = \\\>\\\>\\\> $2\\\<\n"
+msgstr "sqlerrmsg =\\\>\\\>\\\> $2\\\<\n"
+msgid "unhandled error detected, only recourse is to stop processing"
+msgstr "̯ݨܡ먡ġȢݨܡ"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "execution of $2 ok!!"
+msgstr "$2 ڦ"
+msgid "step file $2 not found"
+msgstr "̯ $2"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "skipping execution of $2"
+msgstr " $2 "
+msgid "$2 dependent step $3 did not execute"
+msgstr " $3 $2 "
+msgid "$2 dependent step $3 failed execution"
+msgstr " $3 $2 "
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "while in recovery mode, attempts to find a successfully executed dependent of "
+msgstr "ߦȢĶ롢ȩ $2 "
+msgid "the $2 step was unsuccessfull. premature exit!!"
+msgstr "ȩȮ֡"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "while in recovery mode, attempts to find a valid step to execute following "
+msgstr "ߦȢĶ롢ƫĶ $2 ȴ"
+msgid "the $2 step was unsuccessfull. premature exit!!"
+msgstr "ȩȮ֡"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "too many attempts to execute the $2 step"
+msgstr " $2 Ŵ"
+msgid "please see the $2 file for additional details"
+msgstr "ٶ $2 ̧ع"
+msgid "exiting main processing loop..................."
+msgstr "ݨܡ..................."
+msgid "please see the $2 file for listing details"
+msgstr "ٶ $2 ع"
+#
+#========================================
+# <WS>/src/db/build/mkaggregatefiles.ksh
+#========================================
+msgid " removing existing verify inventory : agg-verify-proc-inventory.sql"
+msgstr " ܢȴջagg-verify-proc-inventory.sql"
+msgid "- Create agg-packages-topology.sql file -"
+msgstr "- ǡ agg-packages-topology.sql -"
+msgid "- Create agg-procedures-topology.sql file -"
+msgstr "- ǡ agg-procedures-topology.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Add to agg-dataload-preseq.sql file -"
+msgstr "- agg-dataload-preseq.sql -"
+msgid "- Create agg-packages-eventmanager.sql file -"
+msgstr "- ǡ agg-packages-eventmanager.sql -"
+msgid "- Create agg-procedures-eventmanager.sql file -"
+msgstr "- ǡ agg-procedures-eventmanager.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Create agg-packages-mgmtservice.sql file -"
+msgstr "- ǡ agg-packages-mgmtservice.sql -"
+msgid "- Create agg-procedures-mgmtservice.sql file -"
+msgstr "- ǡ agg-procedures-mgmtservice.sql -"
+msgid "- Add to agg-createalltables.sql file -"
+msgstr "- agg-createalltables.sql -"
+msgid "- Add to agg-verifyalltableattribs.sql file -"
+msgstr "- agg-verifyalltableattribs.sql -"
+msgid "- Create agg-verify-proc-inventory.sql file -"
+msgstr "- ǡ agg-verify-proc-inventory.sql -"
+#
+#==================================================
+# <WS>/src/oa/modules/configd4u/bin/es-setup.sh
+#==================================================
+msgid "Setup failed while adding module $2 into $3"
+msgstr " $2 $3 "
+msgid "$2 does not exist"
+msgstr "$2 "
+msgid "Added module $2 to $3."
+msgstr " $2 $3"
+msgid "$2 is not readable, Could not add the module $3"
+msgstr "$2 ƫ̽ $3"
+msgid "Setup of sunfire config reader module failed."
+msgstr "sunfire ̽"
+#
+#======================================
+# <WS>/src/oa/base/generic/bin/*.sh
+#======================================
+msgid "usage: $basename [-sh|-csh] [-internal|-external]"
+msgstr "Ρ$basename [-sh|-csh] [-internal|-external]"
+msgid "ERROR: the ESROOT environment variable has not been set"
+msgstr "먡 ESROOT "
+msgid "usage: $PROGNAME -s \\\"<secret> [-p <public>] [-u <user>[ ...]] [-h <host>] [-c <component>[ ...]]\\\""
+msgstr "Ρ$PROGNAME -s \\\"<ǵ> [-p <>] [-u <ϯ>[ ...]][-h <>] [-c <ǵ>[ ...]]\\\""
+msgid " <secret> is the superuser password\n"
+msgstr " <ǵ> ϯ\n"
+msgid " <public> is the public password (default=public)\n"
+msgstr " <> ԫ=public\n"
+msgid " <user> is the list of initial seeded users\n"
+msgstr " <ϯ> ϯ\n"
+msgid " <host> is the fallback host name\n"
+msgstr " <> \n"
+msgid " <component> is agent/cfgserver/event/cstservice/topology/trap/\n"
+msgstr " <ǵ> agent/cfgserver/event/cstservice/topology/trap/\n"
+msgid " Omit all <component>s to do them all\n"
+msgstr " ܩȴ <ǵ> \n"
+msgid "$PROGNAME: ESROOT must be set."
+msgstr "$PROGNAME: ESROOT"
+msgid "$PROGNAME: $1: unknown component"
+msgstr "$PROGNAME: $1: ǵ"
+msgid "$PROGNAME: ERROR: blank secret not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩǵ ..."
+msgid "$PROGNAME: ERROR: blank password not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩ ..."
+msgid "PROGNAME: WARNING ... secret will be truncated to 8 characters"
+msgstr "PROGNAME: ... ǵҳ 8 Զ"
+msgid "$PROGNAME: security.superuser name not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.superuser ꢡ domain-config.x user-config.x "
+msgid "$PROGNAME: security.generaluser name not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.generaluser ꢡ domain-config.x user-config.x "
+msgid "$var"
+msgstr "$var"
+msgid "Interrupted..."
+msgstr "..."
+msgid "$PROGNAME: security.userfile not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.userfile domain-config.x user-config.x "
+msgid "$PROGNAME: security.authOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.authOID domain-config.x user-config.x "
+msgid "$PROGNAME: security.privOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.privOID domain-config.x user-config.x "
+msgid "$PROGNAME: ${COMP}.${COMP}Server not found - using $DEFHOST."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}Server - $DEFHOST"
+msgid "$PROGNAME: ${COMP}.${COMP}snmpPort not found - skipping $COMP."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}snmpPort - ܩ $COMP"
+msgid "ESROOT must be set\n"
+msgstr " ESROOT\n"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "OS $sys $rel is not supported"
+msgstr " OS $sys $rel"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "gettext 'Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "gettext 'ɴݨܡ ID $PID \\\($COMMAND\\\)"
+#
+#=================================================
+# <WS>/src/java/base/console/bin/es-console.sh
+#=================================================
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "DISPLAY environment variable must be set"
+msgstr " DISPLAY "
+msgid "SYMON_JAVAHOME variable must be set"
+msgstr " SYMON_JAVAHOME "
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+#
+#============================================
+# <WS>/src/java/base/server/bin/es-server*
+#============================================
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯Զݨܡ \\\($COMMAND\\\)"
+msgid "No Processes Killed"
+msgstr "ɴݨܡ"
+msgid "gettext 'More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "gettext '̯Զݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID using kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID with kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "ESDIR environment variable must be set"
+msgstr " ESDIR "
+msgid "SYMON_JAVAHOME variable must be set"
+msgstr " SYMON_JAVAHOME "
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+#
+#====================================================
+# <WS>/src/java/com/sun/symon/base/cli/bin/es-cli
+#====================================================
+msgid "$SYMON_JAVAHOME/jre/bin/java must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$SYMON_JAVAHOME/jre/bin/java Solaris_JDK_1.2.1_04 \n"
+
+#
+# Strings from Halcyon scripts
+#
+msgid "usage: $basename [-sh|-csh] [-internal|-external]"
+msgstr "Ρ$basename [-sh|-csh] [-internal|-external]"
+msgid "ERROR: the ESROOT environment variable has not been set"
+msgstr "먡 ESROOT "
+msgid "usage: $PROGNAME -s <secret> [-p <public>] [-u <user>[ ...]] [-h <host>] [-c <component>[ ...]]"
+msgstr "Ρ$PROGNAME -s <ǵ> [-p <>] [-u <ϯ>[ ...]][-h <>] [-c <ǵ>[ ...]]"
+msgid "<secret> is the superuser password"
+msgstr "<ǵ> ϯ"
+msgid "<public> is the public password (default=public)"
+msgstr "<> ԫ=public"
+msgid "<user> is the list of initial seeded users"
+msgstr "<ϯ> ϯ"
+msgid "<host> is the fallback host name"
+msgstr "<> "
+msgid "<component> is agent/cfgserver/event/topology/trap"
+msgstr "<ǵ> agent/cfgserver/event/topology/trap"
+msgid "Omit all <component>s to do them all"
+msgstr "ܩȴ <ǵ> "
+msgid "$PROGNAME: ESROOT must be set."
+msgstr "$PROGNAME: ESROOT"
+msgid "$PROGNAME: $1: unknown component"
+msgstr "$PROGNAME: $1: ǵ"
+msgid "$PROGNAME: ERROR: blank secret not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩǵ ..."
+msgid "$PROGNAME: ERROR: blank password not allowed, exiting ..."
+msgstr "$PROGNAME: 먡Ϩ ..."
+msgid "$PROGNAME: WARNING ... secret will be truncated to 8 characters"
+msgstr "$PROGNAME: ... ǵҳ 8 Զ"
+msgid "$PROGNAME: security.superuser name not found. Check domain-confg.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.superuser ꢡ domain-confg.x user-config.x "
+msgid "$PROGNAME: security.generaluser name not found. Check domain-cofig.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.generaluser ꢡ domain-cofig.x user-config.x "
+msgid "Copying $FILENAME to $ESDIR/cfg..."
+msgstr " $FILENAME ̯ $ESDIR/cfg..."
+msgid "Copying ${1}-${FILENAME} to $ESDIR/cfg..."
+msgstr " ${1}-${FILENAME} ̯ $ESDIR/cfg..."
+msgid "Copying ${COMP}-${FILENAME} to $ESDIR/cfg..."
+msgstr " ${COMP}-${FILENAME} ̯ $ESDIR/cfg..."
+msgid "$var"
+msgstr "$var"
+msgid "Interrupted..."
+msgstr "..."
+msgid "$PROGNAME: security.userfile not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.userfile domain-config.x user-config.x "
+msgid "$PROGNAME: security.authOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.authOID domain-config.x user-config.x "
+msgid "$PROGNAME: security.privOID not found. Check domain-config.x or user-config.x files"
+msgstr "$PROGNAME: ̯ security.privOID domain-config.x user-config.x "
+msgid "$PROGNAME: ${COMP}.${COMP}Server not found - using $DEFHOST"
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}Server - $DEFHOST"
+msgid "$PROGNAME: ${COMP}.${COMP}snmpPort not found - skipping $COP."
+msgstr "$PROGNAME: ̯ ${COMP}.${COMP}snmpPort - ܩ $COP"
+msgid "ESROOT must be set"
+msgstr " ESROOT"
+msgid "OS $sys $rel is not supported"
+msgstr " OS $sys $rel"
+msgid "Terminating Process ID $PID \\\($COMMAND\\\)"
+msgstr "ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID \\\($COMMAND\\\)"
+msgstr "ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "No Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯ݨܡ \\\($COMMAND\\\)"
+msgid "Terminating Process ID $PID with the force \\\($COMMAND\\\)"
+msgstr "ڰ̱ \\\($COMMAND\\\) ݨܡ ID $PID"
+msgid "DISPLAY environment variable must be set"
+msgstr " DISPLAY "
+msgid "More Than One Matching Process Found \\\($COMMAND\\\)"
+msgstr "̯Զݨܡ \\\($COMMAND\\\)"
+msgid "No Processes Killed"
+msgstr "ɴݨܡ"
+msgid "Terminating Process ID $PID using kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "Error Killing Process ID $PID with kill -9 \\\($COMMAND\\\)"
+msgstr " kill -9 ɴݨܡ ID $PID \\\($COMMAND\\\)"
+msgid "ESROOT environment variable must be set"
+msgstr " ESROOT "
+msgid "ESDIR environment variable must be set"
+msgstr " ESDIR "
+#
+# for es-tool - a SDK tool for integrating applications into console
+#
+msgid "Must be root to run $PROGRAM"
+msgstr " root ϯ $PROGRAM "
+
+msgid "$sdk_toolfile either does not exist or is not writable"
+msgstr "$sdk_toolfile ƫī"
+
+msgid "There is an existing $PROGRAM lockfile, $LOCKFILE"
+msgstr "ġԶ $PROGRAM $LOCKFILE"
+
+msgid "which indicates that process is executing the $PROGRAM"
+msgstr "ݨܡ $PROGRAM"
+
+msgid "If this is not the case, delete the lock file,"
+msgstr "ΪӡɴȺ"
+
+msgid "$LOCKFILE and execute $PROGRAM again."
+msgstr "$LOCKFILE ȹ $PROGRAM"
+
+msgid "$sdk_helpfile either does not exist or is not writable"
+msgstr "$sdk_helpfile ƫī"
+
+msgid "$JAVA must exist and be of version Solaris_JDK_1.2.1_04\n"
+msgstr "$JAVA Solaris_JDK_1.2.1_04 \n"
+
+msgid "Using %s"
+msgstr " %s"
+
+msgid "%s updated."
+msgstr "%s 仡"
+
+msgid "This script reads the specified configuration file or\\n%s if not specified,\\nand installs the applications with the server."
+msgstr "Ⱥ Script ̽\\n%sΪ\\nΤȢ"
+
+msgid "The configuration file contains one or more lines using the following format:\n"
+msgstr "ġĶ֪Ȣթ\n"
+
+msgid "where:\n"
+msgstr "̧㡨\n"
+
+msgid "name\tis the name of the application that appears in the Application list\n"
+msgstr " name\tȢȢ"
+
+msgid "class\tis the name of the Java class for the application\n"
+msgstr " class\tȢ Java ɱ\n"
+
+msgid "args\tare optional user defined arguments to be passed to the application\n"
+msgstr "args\tīȢϯƫ\n"
+
+msgid "help\tis the optional help specification using the format key:helpfile or :url.\n"
+msgstr "help\tkey:helpfile :url ֪Ȣɷƫ\n"
+
+msgid "There should be no quotes in the line.\n"
+msgstr "ȴſ\n"
+
+msgid "Lines beginning with # are considered as comments.\n"
+msgstr " # թݷҳء"
+
+msgid "For example:\n"
+msgstr "\n"
+
+#
+#====================================================
+# <WS>/packages/Setup/es-platform
+#====================================================
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid " Where the options represent:\n"
+msgstr " ̧\n"
+msgid " a : to add an instance of platform agent\n"
+msgstr " aƺܡȢ\n"
+msgid " d : to delete an instance of platform agent\n"
+msgstr " dɴƺܡȢ\n"
+msgid "You can not specify both a and d option in the same command"
+msgstr "ġԶ a ů d "
+msgid "You can not have spaces in the instance name."
+msgstr "ȴϨ֪"
+msgid "Port $2 is not a valid port number, try another number : "
+msgstr " $2 ȴƶġԶ "
+msgid "This port is being used by Sun Management Center agent, try another number : "
+msgstr "Ⱥ Sun Management Center ܡȢƶġԶ "
+msgid "This port is being used by some instance, try another number : "
+msgstr "ȺԶƶġԶ "
+msgid "This port is being used by some another process, try another number : "
+msgstr "ȺƶġԶݨܡƶġԶ "
+msgid "This instance is already present."
+msgstr "Ⱥ㡤"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+msgid "Usage: $PROGNAME -ad instanceName"
+msgstr "Ρ$PROGNAME -ad instanceName"
+
+# END
--- a/test/jdk/sun/security/tools/jarsigner/multiRelease/MVJarSigningTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/security/tools/jarsigner/multiRelease/MVJarSigningTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -81,7 +81,7 @@
private static final String KEYPASS = "changeit";
private static final String SIGNED_JAR = "Signed.jar";
private static final String POLICY_FILE = "SignedJar.policy";
- private static final String VERSION = "" + Runtime.version().major();
+ private static final String VERSION = Integer.toString(10);
private static final String VERSION_MESSAGE = "I am running on version " + VERSION;
public static void main(String[] args) throws Throwable {
--- a/test/jdk/sun/util/calendar/zi/tzdata/VERSION Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/VERSION Fri Feb 02 09:04:45 2018 -0800
@@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
-tzdata2017c
+tzdata2018c
--- a/test/jdk/sun/util/calendar/zi/tzdata/africa Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/africa Fri Feb 02 09:04:45 2018 -0800
@@ -181,7 +181,6 @@
Link Africa/Abidjan Africa/Lome # Togo
Link Africa/Abidjan Africa/Nouakchott # Mauritania
Link Africa/Abidjan Africa/Ouagadougou # Burkina Faso
-Link Africa/Abidjan Africa/Sao_Tome # São Tomé and Príncipe
Link Africa/Abidjan Atlantic/St_Helena # St Helena
# Djibouti
@@ -448,7 +447,7 @@
#
# The Nautical Almanac for the Year 1970, p 264, is the source for -0:44:30.
#
-# In 1972 Liberia was the last country to switch from a UTC offset
+# In 1972 Liberia was the last country to switch from a UT offset
# that was not a multiple of 15 or 20 minutes. The 1972 change was on
# 1972-01-07, according to an entry dated 1972-01-04 on p 330 of:
# Presidential Papers: First year of the administration of
@@ -1060,6 +1059,19 @@
# Inaccessible, Nightingale: uninhabited
# São Tomé and Príncipe
+
+# From Steffen Thorsen (2018-01-08):
+# Multiple sources tell that São Tomé changed from UTC to UTC+1 as
+# they entered the year 2018.
+# From Michael Deckers (2018-01-08):
+# the switch is from 01:00 to 02:00 ... [Decree No. 25/2017]
+# http://www.mnec.gov.st/index.php/publicacoes/documentos/file/90-decreto-lei-n-25-2017
+
+Zone Africa/Sao_Tome 0:26:56 - LMT 1884
+ -0:36:45 - LMT 1912 # Lisbon Mean Time
+ 0:00 - GMT 2018 Jan 1 01:00
+ 1:00 - WAT
+
# Senegal
# See Africa/Abidjan.
--- a/test/jdk/sun/util/calendar/zi/tzdata/asia Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/asia Fri Feb 02 09:04:45 2018 -0800
@@ -73,7 +73,7 @@
# 9:00 KST KDT Korea when at +09
# 9:30 ACST Australian Central Standard Time
# Otherwise, these tables typically use numeric abbreviations like +03
-# and +0330 for integer hour and minute UTC offsets. Although earlier
+# and +0330 for integer hour and minute UT offsets. Although earlier
# editions invented alphabetic time zone abbreviations for every
# offset, this did not reflect common practice.
#
@@ -670,17 +670,17 @@
# time", in which abolished the adoption of Western Standard Time in
# western islands (listed above), which means the whole Japan
# territory, including later occupations, adopt Japan Central Time
-# (UTC+9). The adoption began on Oct 1, 1937. The original text can
+# (UT+9). The adoption began on Oct 1, 1937. The original text can
# be found on Wikisource:
# https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
#
-# That is, the time zone of Taipei switched to UTC+9 on Oct 1, 1937.
+# That is, the time zone of Taipei switched to UT+9 on Oct 1, 1937.
# From Yu-Cheng Chuang (2014-07-02):
-# I've found more evidence about when the time zone was switched from UTC+9
-# back to UTC+8 after WW2. I believe it was on Sep 21, 1945. In a document
+# I've found more evidence about when the time zone was switched from UT+9
+# back to UT+8 after WW2. I believe it was on Sep 21, 1945. In a document
# during Japanese era [1] in which the officer told the staff to change time
-# zone back to Western Standard Time (UTC+8) on Sep 21. And in another
+# zone back to Western Standard Time (UT+8) on Sep 21. And in another
# history page of National Cheng Kung University [2], on Sep 21 there is a
# note "from today, switch back to Western Standard Time". From these two
# materials, I believe that the time zone change happened on Sep 21. And
@@ -1487,17 +1487,17 @@
# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who
# wanted to keep it.)
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger write that DST in Japan during those years was as follows:
+# From Takayuki Nikai (2018-01-19):
+# The source of information is Japanese law.
+# http://www.shugiin.go.jp/internet/itdb_housei.nsf/html/houritsu/00219480428029.htm
+# http://www.shugiin.go.jp/internet/itdb_housei.nsf/html/houritsu/00719500331039.htm
+# ... In summary, it is written as follows. From 24:00 on the first Saturday
+# in May, until 0:00 on the day after the second Saturday in September.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Japan 1948 only - May Sun>=1 2:00 1:00 D
-Rule Japan 1948 1951 - Sep Sat>=8 2:00 0 S
-Rule Japan 1949 only - Apr Sun>=1 2:00 1:00 D
-Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D
-# but the only locations using it (for birth certificates, presumably, since
-# their audience is astrologers) were US military bases. For now, assume
-# that for most purposes daylight-saving time was observed; otherwise, what
-# would have been the point of the 1951 poll?
+Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
+Rule Japan 1948 1951 - Sep Sun>=9 0:00 0 S
+Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
+Rule Japan 1950 1951 - May Sat>=1 24:00 1:00 D
# From Hideyuki Suzuki (1998-11-09):
# 'Tokyo' usually stands for the former location of Tokyo Astronomical
@@ -1528,7 +1528,7 @@
#
# ...the Showa Emperor announced Ordinance No. 529 of Showa Year 12 ... which
# means the whole Japan territory, including later occupations, adopt Japan
-# Central Time (UTC+9). The adoption began on Oct 1, 1937.
+# Central Time (UT+9). The adoption began on Oct 1, 1937.
# https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -2089,8 +2089,8 @@
# Maldives
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Indian/Maldives 4:54:00 - LMT 1880 # Male
- 4:54:00 - MMT 1960 # Male Mean Time
+Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
+ 4:54:00 - MMT 1960 # Malé Mean Time
5:00 - +05
# Mongolia
--- a/test/jdk/sun/util/calendar/zi/tzdata/australasia Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/australasia Fri Feb 02 09:04:45 2018 -0800
@@ -706,8 +706,8 @@
# From Steffen Thorsen (2012-07-25)
# ... we double checked by calling hotels and offices based in Tokelau asking
# about the time there, and they all told a time that agrees with UTC+13....
-# Shanks says UTC-10 from 1901 [but] ... there is a good chance the change
-# actually was to UTC-11 back then.
+# Shanks says UT-10 from 1901 [but] ... there is a good chance the change
+# actually was to UT-11 back then.
#
# From Paul Eggert (2012-07-25)
# A Google Books snippet of Appendix to the Journals of the House of
@@ -1473,7 +1473,7 @@
#
# From Paul Eggert (2006-03-22):
# The Department of Internal Affairs (DIA) maintains a brief history,
-# as does Carol Squires; see tz-link.htm for the full references.
+# as does Carol Squires; see tz-link.html for the full references.
# Use these sources in preference to Shanks & Pottenger.
#
# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with
--- a/test/jdk/sun/util/calendar/zi/tzdata/europe Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/europe Fri Feb 02 09:04:45 2018 -0800
@@ -91,14 +91,15 @@
# 0:00 WET WEST WEMT Western Europe
# 0:19:32.13 AMT* NST* Amsterdam, Netherlands Summer (1835-1937)
# 1:00 BST British Standard (1968-1971)
+# 1:00 IST GMT Irish Standard (1968-) with winter DST
# 1:00 CET CEST CEMT Central Europe
# 1:00:14 SET Swedish (1879-1899)
# 1:36:34 RMT* LST* Riga, Latvian Summer (1880-1926)*
# 2:00 EET EEST Eastern Europe
# 3:00 MSK MSD MDST* Moscow
-# From Peter Ilieve (1994-12-04),
-# The original six [EU members]: Belgium, France, (West) Germany, Italy,
+# From Peter Ilieve (1994-12-04), re EEC/EC/EU members:
+# The original six: Belgium, France, (West) Germany, Italy,
# Luxembourg, the Netherlands.
# Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom.
# Plus, from 1 Jan 81: Greece.
@@ -301,16 +302,31 @@
# The following claim by Shanks & Pottenger is possible though doubtful;
# we'll ignore it for now.
# * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00.
-#
+
+# From Paul Eggert (2017-12-04):
#
-# Whitman says Dublin Mean Time was -0:25:21, which is more precise than
-# Shanks & Pottenger.
-# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory
-# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was
-# to London. For example:
+# Dunsink Observatory (8 km NW of Dublin's center) was to Dublin as
+# Greenwich was to London. For example:
#
# "Timeball on the ballast office is down. Dunsink time."
# -- James Joyce, Ulysses
+#
+# The abbreviation DMT stood for "Dublin Mean Time" or "Dunsink Mean Time";
+# this being Ireland, opinions differed.
+#
+# Whitman says Dublin/Dunsink Mean Time was UT-00:25:21, which agrees
+# with measurements of recent visitors to the Meridian Room of Dunsink
+# Observatory; see Malone D. Dunsink and timekeeping. 2016-01-24.
+# <https://www.maths.tcd.ie/~dwmalone/time/dunsink.html>. Malone
+# writes that the Nautical Almanac listed UT-00:25:22 until 1896, when
+# it moved to UT-00:25:21.1 (I confirmed that the 1893 edition used
+# the former and the 1896 edition used the latter). Evidently the
+# news of this change propagated slowly, as Milne 1899 still lists
+# UT-00:25:22 and cites the International Telegraph Bureau. As it is
+# not clear that there was any practical significance to the change
+# from UT-00:25:22 to UT-00:25:21.1 in civil timekeeping, omit this
+# transition for now and just use the latter value, omitting its
+# fraction since our format cannot represent fractions.
# "Countess Markievicz ... claimed that the [1916] abolition of Dublin Mean Time
# was among various actions undertaken by the 'English' government that
@@ -370,12 +386,28 @@
# regulations. I spoke this morning with the Secretary of the Department of
# Justice (tel +353 1 678 9711) who confirmed to me that the correct name is
# "Irish Summer Time", abbreviated to "IST".
+#
+# From Paul Eggert (2017-12-07):
+# The 1996 anonymous contributor's goal was to determine the correct
+# abbreviation for summer time in Dublin and so the contributor
+# focused on the "IST", not on the "Irish Summer Time". Though the
+# "IST" was correct, the "Irish Summer Time" appears to have been an
+# error, as Ireland's Standard Time (Amendment) Act, 1971 states that
+# standard time in Ireland remains at UT +01 and is observed in
+# summer, and that Greenwich mean time is observed in winter. (Thanks
+# to Derick Rethans for pointing out the error.) That is, when
+# Ireland amended the 1968 act that established UT +01 as Irish
+# Standard Time, it left standard time unchanged and established GMT
+# as a negative daylight saving time in winter. So, in this database
+# IST stands for Irish Summer Time for timestamps before 1968, and for
+# Irish Standard Time after that. See:
+# http://www.irishstatutebook.ie/eli/1971/act/17/enacted/en/print
# Michael Deckers (2017-06-01) gave the following URLs for Ireland's
# Summer Time Act, 1925 and Summer Time Orders, 1926 and 1947:
-# http://www.irishstatutebook.ie/eli/1925/act/8/enacted/en/print.html
-# http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print.html
-# http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print.html
+# http://www.irishstatutebook.ie/eli/1925/act/8/enacted/en/print
+# http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print
+# http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# Summer Time Act, 1916
@@ -499,9 +531,23 @@
Link Europe/London Europe/Guernsey
Link Europe/London Europe/Isle_of_Man
+# From Paul Eggert (2018-01-19):
+# The following is like GB-Eire and EU, except with standard time in
+# summer and negative daylight saving time in winter.
+# Although currently commented out, this will need to become uncommented
+# once the ICU/OpenJDK workaround is removed; see below.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+#Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT
+#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST
+#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT
+#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST
+#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT
+#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT
+#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT
+
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
- -0:25:21 - DMT 1916 May 21 2:00s # Dublin MT
+ -0:25:21 - DMT 1916 May 21 2:00s
-0:25:21 1:00 IST 1916 Oct 1 2:00s
0:00 GB-Eire %s 1921 Dec 6 # independence
0:00 GB-Eire GMT/IST 1940 Feb 25 2:00s
@@ -510,16 +556,33 @@
0:00 1:00 IST 1947 Nov 2 2:00s
0:00 - GMT 1948 Apr 18 2:00s
0:00 GB-Eire GMT/IST 1968 Oct 27
+# From Paul Eggert (2018-01-18):
+# The next line should look like this:
+# 1:00 Eire IST/GMT
+# However, in January 2018 we discovered that the Eire rules cause
+# problems with tests for ICU:
+# https://mm.icann.org/pipermail/tz/2018-January/025825.html
+# and with tests for OpenJDK:
+# https://mm.icann.org/pipermail/tz/2018-January/025822.html
+# To work around this problem, use a traditional approximation for
+# time stamps after 1971-10-31 02:00 UTC, to give ICU and OpenJDK
+# developers breathing room to fix bugs. This approximation has
+# correct UTC offsets, but results in tm_isdst flags are the reverse
+# of what they should be. This workaround is temporary and should be
+# removed reasonably soon.
1:00 - IST 1971 Oct 31 2:00u
0:00 GB-Eire GMT/IST 1996
0:00 EU GMT/IST
+# End of workaround for ICU and OpenJDK bugs.
+
###############################################################################
# Europe
-# EU rules are for the European Union, previously known as the EC, EEC,
-# Common Market, etc.
+# The following rules are for the European Union and for its
+# predecessor organization, the European Communities.
+# For brevity they are called "EU rules" elsewhere in this file.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
@@ -952,7 +1015,7 @@
# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
# confirms this, and states that the law was put forth 1893-03-29.
#
-# The EU treaty with effect from 1973:
+# The EU [actually, EEC and Euratom] treaty with effect from 1973:
# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
#
# This provoked a new law from 1974 to make possible summer time changes
@@ -1008,9 +1071,10 @@
# East Greenland and Franz Josef Land, but we don't know their time zones.
# My source for this is Wilhelm Dege's book mentioned under Svalbard.
#
-# From Paul Eggert (2006-03-22):
-# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
-# and left the EU on 1985-02-01. It therefore should have been using EU
+# From Paul Eggert (2017-12-10):
+# Greenland joined the European Communities as part of Denmark,
+# obtained home rule on 1979-05-01, and left the European Communities
+# on 1985-02-01. It therefore should have been using EU
# rules at least through 1984. Shanks & Pottenger say Scoresbysund and Godthåb
# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
# rules since at least 1991. Assume EU rules since 1980.
@@ -1324,7 +1388,7 @@
# From Markus Kuhn (1998-09-29):
# The German time zone web site by the Physikalisch-Technische
# Bundesanstalt contains DST information back to 1916.
-# [See tz-link.htm for the URL.]
+# [See tz-link.html for the URL.]
# From Jörg Schilling (2002-10-23):
# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by
@@ -1421,7 +1485,7 @@
1:00 Greece CE%sT 1944 Apr 4
2:00 Greece EE%sT 1981
# Shanks & Pottenger say it switched to C-Eur in 1981;
- # go with EU instead, since Greece joined it on Jan 1.
+ # go with EU rules instead, since Greece joined Jan 1.
2:00 EU EE%sT
# Hungary
@@ -2120,7 +2184,7 @@
# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
-# harmonized with the EU), and that they stayed +0:00 that winter.
+# harmonized with EU rules), and that they stayed +0:00 that winter.
#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
@@ -2795,9 +2859,9 @@
#
# https://regnum.ru/news/society/1957270.html
# has some historical data for Altai Krai:
-# before 1957: west part on UTC+6, east on UTC+7
-# after 1957: UTC+7
-# since 1995: UTC+6
+# before 1957: west part on UT+6, east on UT+7
+# after 1957: UT+7
+# since 1995: UT+6
# http://barnaul.rusplt.ru/index/pochemu_altajskij_kraj_okazalsja_v_neprivychnom_chasovom_pojase-17648.html
# confirms that and provides more details including 1995-05-28 transition date.
@@ -3605,6 +3669,17 @@
# The change is permanent, so this is the new standard time in Turkey.
# It takes effect today, which is not much notice.
+# From Kıvanç Yazan (2017-10-28):
+# Turkey will go back to Daylight Saving Time starting 2018-10.
+# http://www.resmigazete.gov.tr/eskiler/2017/10/20171028-5.pdf
+#
+# From Even Scharning (2017-11-08):
+# ... today it was announced that the DST will become "continuous":
+# http://www.hurriyet.com.tr/son-dakika-yaz-saati-uygulamasi-surekli-hale-geldi-40637482
+# From Paul Eggert (2017-11-08):
+# Although Google Translate misfires on that source, it looks like
+# Turkey reversed last month's decision, and so will stay at +03.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Turkey 1916 only - May 1 0:00 1:00 S
Rule Turkey 1916 only - Oct 1 0:00 0 -
--- a/test/jdk/sun/util/calendar/zi/tzdata/leapseconds Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/leapseconds Fri Feb 02 09:04:45 2018 -0800
@@ -80,5 +80,5 @@
Leap 2015 Jun 30 23:59:60 + S
Leap 2016 Dec 31 23:59:60 + S
-# Updated through IERS Bulletin C54
-# File expires on: 28 June 2018
+# Updated through IERS Bulletin C55
+# File expires on: 28 December 2018
--- a/test/jdk/sun/util/calendar/zi/tzdata/northamerica Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/northamerica Fri Feb 02 09:04:45 2018 -0800
@@ -371,6 +371,18 @@
# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
# western Tennessee, most of Texas, Wisconsin
+# From Paul Eggert (2018-01-07):
+# In 1869 the Chicago Astronomical Society contracted with the city to keep
+# time. Though delayed by the Great Fire, by 1880 a wire ran from the
+# Dearborn Observatory (on the University of Chicago campus) to City Hall,
+# which then sent signals to police and fire stations. However, railroads got
+# their time signals from the Allegheny Observatory, the Madison Observatory,
+# the Ann Arbor Observatory, etc., so their clocks did not agree with each
+# other or with the city's official time. The confusion took some years to
+# clear up. See:
+# Moser M. How Chicago gave America its time zones. Chicago. 2018-01-04.
+# http://www.chicagomag.com/city-life/January-2018/How-Chicago-Gave-America-Its-Time-Zones/
+
# From Larry M. Smith (2006-04-26) re Wisconsin:
# https://docs.legis.wisconsin.gov/statutes/statutes/175.pdf
# is currently enforced at the 01:00 time of change. Because the local
@@ -1919,7 +1931,7 @@
# manager of the Creston & District Museum. The article was written in May 2009.
# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
# According to the article, Creston has not changed its clocks since June 1918.
-# i.e. Creston has been stuck on UTC-7 for 93 years.
+# i.e. Creston has been stuck on UT-7 for 93 years.
# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
# Unfortunately the exact date for the time change in June 1918 remains
--- a/test/jdk/sun/util/calendar/zi/tzdata/southamerica Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/southamerica Fri Feb 02 09:04:45 2018 -0800
@@ -48,7 +48,7 @@
# https://www.jstor.org/stable/1774359
#
# These tables use numeric abbreviations like -03 and -0330 for
-# integer hour and minute UTC offsets. Although earlier editions used
+# integer hour and minute UT offsets. Although earlier editions used
# alphabetic time zone abbreviations, these abbreviations were
# invented and did not reflect common practice.
@@ -602,7 +602,7 @@
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/La_Paz -4:32:36 - LMT 1890
-4:32:36 - CMT 1931 Oct 15 # Calamarca MT
- -4:32:36 1:00 BOST 1932 Mar 21 # Bolivia ST
+ -4:32:36 1:00 BST 1932 Mar 21 # Bolivia ST
-4:00 - -04
# Brazil
@@ -931,12 +931,25 @@
# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
# 3rd Feb Sunday. There is an exception on the return date when this is
# the Carnival Sunday then the return date will be the next Sunday...
-Rule Brazil 2008 max - Oct Sun>=15 0:00 1:00 S
+Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 S
Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
+# Decree 7,584 <http://pcdsh01.on.br/HVdecreto7584_20111013.jpg> (2011-10-13)
+# added Bahia.
Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
+# Decree 7,826 <http://pcdsh01.on.br/HVdecreto7826_20121015.jpg> (2012-10-15)
+# removed Bahia and added Tocantins.
+# Decree 8,112 <http://pcdsh01.on.br/HVdecreto8112_20130930.JPG> (2013-09-30)
+# removed Tocantins.
Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
+# From Steffen Thorsen (2017-12-18):
+# According to many media sources, next year's DST start in Brazil will move to
+# the first Sunday of November, and it will stay like that for the years after.
+# ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html
+# From Steffen Thorsen (2017-12-20):
+# http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm
+Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 S
Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
@@ -1091,7 +1104,7 @@
# From Paul Eggert (2015-04-03):
# Shanks & Pottenger says America/Santiago introduced standard time in
-# 1890 and rounds its UTC offset to 70W40; guess that in practice this
+# 1890 and rounds its UT offset to 70W40; guess that in practice this
# was the same offset as in 1916-1919. It also says Pacific/Easter
# standardized on 109W22 in 1890; assume this didn't change the clocks.
#
--- a/test/jdk/sun/util/calendar/zi/tzdata/zone.tab Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/sun/util/calendar/zi/tzdata/zone.tab Fri Feb 02 09:04:45 2018 -0800
@@ -395,7 +395,7 @@
SN +1440-01726 Africa/Dakar
SO +0204+04522 Africa/Mogadishu
SR +0550-05510 America/Paramaribo
-SS +0451+03136 Africa/Juba
+SS +0451+03137 Africa/Juba
ST +0020+00644 Africa/Sao_Tome
SV +1342-08912 America/El_Salvador
SX +180305-0630250 America/Lower_Princes
--- a/test/jdk/tools/jimage/JImageExtractTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/tools/jimage/JImageExtractTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -124,18 +124,21 @@
public void testExtractToDirBySymlink() throws IOException {
Path tmp = Files.createTempDirectory(Paths.get("."), getClass().getName());
+ Path symlink;
try {
- Path symlink = Files.createSymbolicLink(Paths.get(".", "symlink"), tmp);
- jimage("extract", "--dir", symlink.toString(), getImagePath())
- .assertSuccess()
- .resultChecker(r -> {
- assertTrue(r.output.isEmpty(), "Output is not expected");
- });
- verifyExplodedImage(tmp);
- } catch (UnsupportedOperationException e) {
+ symlink = Files.createSymbolicLink(Paths.get(".", "symlink"), tmp);
+ } catch (IOException|UnsupportedOperationException e) {
// symlinks are not supported
// nothing to test
+ return;
}
+
+ jimage("extract", "--dir", symlink.toString(), getImagePath())
+ .assertSuccess()
+ .resultChecker(r -> {
+ assertTrue(r.output.isEmpty(), "Output is not expected");
+ });
+ verifyExplodedImage(tmp);
}
public void testExtractToReadOnlyDir() throws IOException {
--- a/test/jdk/tools/jmod/JmodTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/jdk/tools/jmod/JmodTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -104,7 +104,7 @@
Path link = Files.createSymbolicLink(
libDir.resolve("baz"), libDir.resolve("foo").toAbsolutePath());
assertTrue(Files.exists(link));
- } catch (UnsupportedOperationException uoe) {
+ } catch (IOException|UnsupportedOperationException uoe) {
// OS does not support symlinks. Nothing to test!
return;
}
--- a/test/langtools/tools/javac/6304921/TestLog.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/langtools/tools/javac/6304921/TestLog.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
* jdk.compiler/com.sun.tools.javac.parser
* jdk.compiler/com.sun.tools.javac.tree
* jdk.compiler/com.sun.tools.javac.util:+open
+ * jdk.compiler/com.sun.tools.javac.resources
*/
import java.lang.reflect.Field;
import java.io.InputStream;
@@ -49,6 +50,8 @@
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
import com.sun.tools.javac.util.JCDiagnostic.Factory;
import com.sun.tools.javac.util.Options;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
public class TestLog
{
@@ -122,15 +125,15 @@
public void visitIf(JCTree.JCIf tree) {
JCDiagnostic.DiagnosticPosition nil = null;
// generate dummy messages to exercise the log API
- log.error("not.stmt");
- log.error(tree.pos, "not.stmt");
- log.error(tree.pos(), "not.stmt");
- log.error(nil, "not.stmt");
+ log.error(Errors.NotStmt);
+ log.error(tree.pos, Errors.NotStmt);
+ log.error(tree.pos(), Errors.NotStmt);
+ log.error(nil, Errors.NotStmt);
- log.warning("div.zero");
- log.warning(tree.pos, "div.zero");
- log.warning(tree.pos(), "div.zero");
- log.warning(nil, "div.zero");
+ log.warning(Warnings.DivZero);
+ log.warning(tree.pos, Warnings.DivZero);
+ log.warning(tree.pos(), Warnings.DivZero);
+ log.warning(nil, Warnings.DivZero);
}
private Log log;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/diags/examples/WithExpected/module-info.java Fri Feb 02 09:04:45 2018 -0800
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+// key: compiler.err.expected.str
+
+module WithExpected {
+ provides p.C;
+}
--- a/test/langtools/tools/javac/modules/ProvidesTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/langtools/tools/javac/modules/ProvidesTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -103,7 +103,7 @@
.writeAll()
.getOutput(Task.OutputKind.DIRECT);
- if (!log.contains("module-info.java:1:24: compiler.err.expected: 'with'"))
+ if (!log.contains("module-info.java:1:24: compiler.err.expected.str: 'with'"))
throw new Exception("expected output not found");
}
--- a/test/langtools/tools/javac/parser/extend/JavacExtensionTest.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/langtools/tools/javac/parser/extend/JavacExtensionTest.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,6 +56,7 @@
* jdk.compiler/com.sun.tools.javac.parser
* jdk.compiler/com.sun.tools.javac.tree
* jdk.compiler/com.sun.tools.javac.util
+ * jdk.compiler/com.sun.tools.javac.resources
*/
public class JavacExtensionTest {
--- a/test/langtools/tools/javac/parser/extend/TrialParser.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/langtools/tools/javac/parser/extend/TrialParser.java Fri Feb 02 09:04:45 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -55,6 +55,7 @@
import com.sun.tools.javac.util.ListBuffer;
import com.sun.tools.javac.util.Name;
import com.sun.tools.javac.util.Position;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
/**
*
@@ -236,11 +237,11 @@
? List.<JCTree>of(toP(F.at(pos).MethodDef(mods, name, t, typarams,
List.<JCVariableDecl>nil(), List.<JCExpression>nil(), null, null)))
: null;
- return List.<JCTree>of(syntaxError(token.pos, err, "expected", LPAREN));
+ return List.<JCTree>of(syntaxError(token.pos, err, Errors.Expected(LPAREN)));
}
} else if (!typarams.isEmpty()) {
// type parameters on non-variable non-method -- error
- return List.<JCTree>of(syntaxError(token.pos, "illegal.start.of.type"));
+ return List.<JCTree>of(syntaxError(token.pos, Errors.IllegalStartOfType));
} else {
// expression-statement or expression to evaluate
accept(SEMI);
--- a/test/langtools/tools/javac/processing/model/TestSourceVersion.java Fri Feb 02 17:02:45 2018 +0530
+++ b/test/langtools/tools/javac/processing/model/TestSourceVersion.java Fri Feb 02 09:04:45 2018 -0800
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 7025809 8028543 6415644 8028544 8029942 8187951 8193291
+ * @bug 7025809 8028543 6415644 8028544 8029942 8187951 8193291 8196551
* @summary Test latest, latestSupported, underscore as keyword, etc.
* @author Joseph D. Darcy
* @modules java.compiler
@@ -46,11 +46,20 @@
}
private static void testLatestSupported() {
- if (SourceVersion.latest() != RELEASE_11 ||
- SourceVersion.latestSupported() != RELEASE_10)
+ SourceVersion[] values = SourceVersion.values();
+ SourceVersion last = values[values.length - 1];
+ SourceVersion latest = SourceVersion.latest();
+ SourceVersion latestSupported = SourceVersion.latestSupported();
+
+ if (latest == last &&
+ latestSupported == SourceVersion.valueOf("RELEASE_" + Runtime.version().feature()) &&
+ (latest == latestSupported || (latest.ordinal() - latestSupported.ordinal() == 1)) )
+ return;
+ else {
throw new RuntimeException("Unexpected release value(s) found:\n" +
- "latest:\t" + SourceVersion.latest() + "\n" +
- "latestSupported:\t" + SourceVersion.latestSupported());
+ "latest:\t" + latest + "\n" +
+ "latestSupported:\t" + latestSupported);
+ }
}
private static void testVersionVaryingKeywords() {