From: Andrew John Hughes Date: Fri, 23 Mar 2012 15:19:26 +0000 (+0000) Subject: Merge GNU Classpath 0.99 into libjava. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0563022a206294757effa44686727bffc4f7c2bd;p=gcc.git Merge GNU Classpath 0.99 into libjava. From-SVN: r185741 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index ccce6d8965b..b5f65ef18e6 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,37 @@ +2012-03-16 Andrew John Hughes + + * Makefile.am: Add natVMConsole.cc. + * Makefile.in: Regenerated. + * gcj/Makefile.in: Likewise. + * gcj/javaprims.h: Classes updated. + * gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.h, + * gnu/javax/net/ssl/provider/CipherSuite.h, + * gnu/javax/net/ssl/provider/OutputSecurityParameters.h, + * include/Makefile.in: + Regenerated. + * java/io/Console.h, + * java/io/IOError.h, + * java/io/ObjectOutputStream$2.h: + Initial generation. + * java/io/ObjectOutputStream.h: Regenerated. + * java/io/VMConsole.h: Initial generation. + * java/io/VMConsole.java: Copied from classpath/vm/reference. + * java/io/natVMConsole.cc: Implemented readPassword. + * java/nio/channels/spi/SelectorProvider$1.h, + * java/security/KeyStore$1.h: + Initial generation. + * java/security/ProtectionDomain.h, + * java/text/DateFormatSymbols.h, + * java/util/HashMap.h, + * java/util/regex/Matcher.h, + * java/util/regex/Pattern.h: + Regenerated. + * javax/xml/stream/util/ReaderDelegate.h: + Removed. + * sources.am, + * testsuite/Makefile.in: + Regenerated. + 2012-03-14 Rainer Orth * configure.ac (THREADLIBS): Remove *-*-solaris2.8 handling. diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 1309defb623..1b7196285aa 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -1360,6 +1360,7 @@ gnu/java/nio/natVMChannel.cc \ gnu/java/nio/channels/natFileChannelImpl.cc \ gnu/java/security/jce/prng/natVMSecureRandom.cc \ java/io/natFile.cc \ +java/io/natVMConsole.cc \ java/io/natVMObjectInputStream.cc \ java/io/natVMObjectStreamClass.cc \ java/lang/natCharacter.cc \ diff --git a/libjava/Makefile.in b/libjava/Makefile.in index e741f26d06d..1380a7ef633 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -358,7 +358,8 @@ am__objects_5 = $(am__objects_3) gnu/classpath/natConfiguration.lo \ gnu/java/nio/natVMChannel.lo \ gnu/java/nio/channels/natFileChannelImpl.lo \ gnu/java/security/jce/prng/natVMSecureRandom.lo \ - java/io/natFile.lo java/io/natVMObjectInputStream.lo \ + java/io/natFile.lo java/io/natVMConsole.lo \ + java/io/natVMObjectInputStream.lo \ java/io/natVMObjectStreamClass.lo java/lang/natCharacter.lo \ java/lang/natClass.lo java/lang/natClassLoader.lo \ java/lang/natConcreteProcess.lo java/lang/natVMDouble.lo \ @@ -4275,6 +4276,7 @@ classpath/java/io/CharArrayReader.java \ classpath/java/io/CharArrayWriter.java \ classpath/java/io/CharConversionException.java \ classpath/java/io/Closeable.java \ +classpath/java/io/Console.java \ classpath/java/io/DataInput.java \ classpath/java/io/DataInputStream.java \ classpath/java/io/DataOutput.java \ @@ -4297,6 +4299,7 @@ classpath/java/io/FilterOutputStream.java \ classpath/java/io/FilterReader.java \ classpath/java/io/FilterWriter.java \ classpath/java/io/Flushable.java \ +classpath/java/io/IOError.java \ classpath/java/io/IOException.java \ classpath/java/io/InputStream.java \ java/io/InputStreamReader.java \ @@ -4340,6 +4343,7 @@ classpath/java/io/StringWriter.java \ classpath/java/io/SyncFailedException.java \ classpath/java/io/UTFDataFormatException.java \ classpath/java/io/UnsupportedEncodingException.java \ +java/io/VMConsole.java \ java/io/VMObjectInputStream.java \ java/io/VMObjectStreamClass.java \ classpath/java/io/WriteAbortedException.java \ @@ -8352,8 +8356,8 @@ property_files = \ classpath/resource/gnu/java/util/regex/MessagesBundle.properties \ classpath/resource/gnu/java/util/regex/MessagesBundle_fr.properties \ classpath/resource/gnu/java/util/regex/MessagesBundle_it.properties \ - classpath/resource/gnu/javax/print/PrinterDialog.properties \ - classpath/resource/gnu/javax/print/PrinterDialog_de.properties \ + classpath/resource/gnu/javax/print/MessagesBundle.properties \ + classpath/resource/gnu/javax/print/MessagesBundle_de.properties \ classpath/resource/gnu/javax/security/auth/callback/MessagesBundle.properties \ classpath/resource/java/text/metazones.properties \ classpath/resource/java/util/iso4217.properties \ @@ -8605,6 +8609,7 @@ gnu/java/nio/natVMChannel.cc \ gnu/java/nio/channels/natFileChannelImpl.cc \ gnu/java/security/jce/prng/natVMSecureRandom.cc \ java/io/natFile.cc \ +java/io/natVMConsole.cc \ java/io/natVMObjectInputStream.cc \ java/io/natVMObjectStreamClass.cc \ java/lang/natCharacter.cc \ @@ -9128,6 +9133,8 @@ java/io/$(DEPDIR)/$(am__dirstamp): @: > java/io/$(DEPDIR)/$(am__dirstamp) java/io/natFile.lo: java/io/$(am__dirstamp) \ java/io/$(DEPDIR)/$(am__dirstamp) +java/io/natVMConsole.lo: java/io/$(am__dirstamp) \ + java/io/$(DEPDIR)/$(am__dirstamp) java/io/natVMObjectInputStream.lo: java/io/$(am__dirstamp) \ java/io/$(DEPDIR)/$(am__dirstamp) java/io/natVMObjectStreamClass.lo: java/io/$(am__dirstamp) \ @@ -9636,6 +9643,8 @@ mostlyclean-compile: -rm -f gnu/java/security/jce/prng/natVMSecureRandom.lo -rm -f java/io/natFile.$(OBJEXT) -rm -f java/io/natFile.lo + -rm -f java/io/natVMConsole.$(OBJEXT) + -rm -f java/io/natVMConsole.lo -rm -f java/io/natVMObjectInputStream.$(OBJEXT) -rm -f java/io/natVMObjectInputStream.lo -rm -f java/io/natVMObjectStreamClass.$(OBJEXT) @@ -9810,6 +9819,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/nio/channels/$(DEPDIR)/natFileChannelImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/security/jce/prng/$(DEPDIR)/natVMSecureRandom.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/io/$(DEPDIR)/natFile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@java/io/$(DEPDIR)/natVMConsole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/io/$(DEPDIR)/natVMObjectInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/io/$(DEPDIR)/natVMObjectStreamClass.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/lang/$(DEPDIR)/Object.Plo@am__quote@ diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index 0ba40b04c35..0bd2e6ee128 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,9 +1,1080 @@ +2012-03-08 Andrew John Hughes + + * NEWS: Set correct release date. + * configure.ac: Bump to 0.99 proper. + +2012-03-07 Andrew John Hughes + + * tools/Makefile.am: + (TOOLS_JAVA_FILES): Remove duplication. + (dist-hook): Fail if copying fails. + +2012-03-07 Andrew John Hughes + + * doc/cp-tools.texinfo: + Move macro definition outside of if block + so gcctabopt is always defined. + +2012-02-15 Andrew John Hughes + + * native/jni/gstreamer-peer/gst_classpath_src.c, + (gst_classpath_src_class_init(GstClasspathSrcClass)): + Remove unused gstelement_class. + +2012-02-15 Andrew John Hughes + + * NEWS: Updated prior to release. + +2012-02-15 Andrew John Hughes + + * java/text/DateFormatSymbols.java: + (getStringArray(List,String,int,String)): Remove hack which + removes last character of the input data; now unnecessary. + * resource/gnu/java/locale/LocaleInformation.properties, + * resource/gnu/java/locale/LocaleInformation_aa.properties, + * resource/gnu/java/locale/LocaleInformation_aa_DJ.properties, + * resource/gnu/java/locale/LocaleInformation_aa_ER_SAAHO.properties, + * resource/gnu/java/locale/LocaleInformation_af.properties, + * resource/gnu/java/locale/LocaleInformation_ak.properties, + * resource/gnu/java/locale/LocaleInformation_am.properties, + * resource/gnu/java/locale/LocaleInformation_ar.properties, + * resource/gnu/java/locale/LocaleInformation_ar_JO.properties, + * resource/gnu/java/locale/LocaleInformation_ar_LB.properties, + * resource/gnu/java/locale/LocaleInformation_ar_QA.properties, + * resource/gnu/java/locale/LocaleInformation_ar_SA.properties, + * resource/gnu/java/locale/LocaleInformation_ar_SY.properties, + * resource/gnu/java/locale/LocaleInformation_ar_TN.properties, + * resource/gnu/java/locale/LocaleInformation_ar_YE.properties, + * resource/gnu/java/locale/LocaleInformation_as.properties, + * resource/gnu/java/locale/LocaleInformation_az.properties, + * resource/gnu/java/locale/LocaleInformation_az_Cyrl.properties, + * resource/gnu/java/locale/LocaleInformation_be.properties, + * resource/gnu/java/locale/LocaleInformation_bg.properties, + * resource/gnu/java/locale/LocaleInformation_bn.properties, + * resource/gnu/java/locale/LocaleInformation_bs.properties, + * resource/gnu/java/locale/LocaleInformation_byn.properties, + * resource/gnu/java/locale/LocaleInformation_ca.properties, + * resource/gnu/java/locale/LocaleInformation_cch.properties, + * resource/gnu/java/locale/LocaleInformation_cop.properties, + * resource/gnu/java/locale/LocaleInformation_cs.properties, + * resource/gnu/java/locale/LocaleInformation_cy.properties, + * resource/gnu/java/locale/LocaleInformation_da.properties, + * resource/gnu/java/locale/LocaleInformation_de.properties, + * resource/gnu/java/locale/LocaleInformation_de_AT.properties, + * resource/gnu/java/locale/LocaleInformation_de_BE.properties, + * resource/gnu/java/locale/LocaleInformation_dv.properties, + * resource/gnu/java/locale/LocaleInformation_dz.properties, + * resource/gnu/java/locale/LocaleInformation_ee.properties, + * resource/gnu/java/locale/LocaleInformation_el.properties, + * resource/gnu/java/locale/LocaleInformation_en.properties, + * resource/gnu/java/locale/LocaleInformation_en_Dsrt.properties, + * resource/gnu/java/locale/LocaleInformation_en_Shaw.properties, + * resource/gnu/java/locale/LocaleInformation_eo.properties, + * resource/gnu/java/locale/LocaleInformation_es.properties, + * resource/gnu/java/locale/LocaleInformation_et.properties, + * resource/gnu/java/locale/LocaleInformation_eu.properties, + * resource/gnu/java/locale/LocaleInformation_fa.properties, + * resource/gnu/java/locale/LocaleInformation_fa_AF.properties, + * resource/gnu/java/locale/LocaleInformation_fi.properties, + * resource/gnu/java/locale/LocaleInformation_fil.properties, + * resource/gnu/java/locale/LocaleInformation_fo.properties, + * resource/gnu/java/locale/LocaleInformation_fr.properties, + * resource/gnu/java/locale/LocaleInformation_fur.properties, + * resource/gnu/java/locale/LocaleInformation_ga.properties, + * resource/gnu/java/locale/LocaleInformation_gaa.properties, + * resource/gnu/java/locale/LocaleInformation_gez.properties, + * resource/gnu/java/locale/LocaleInformation_gl.properties, + * resource/gnu/java/locale/LocaleInformation_gu.properties, + * resource/gnu/java/locale/LocaleInformation_gv.properties, + * resource/gnu/java/locale/LocaleInformation_ha.properties, + * resource/gnu/java/locale/LocaleInformation_ha_Arab.properties, + * resource/gnu/java/locale/LocaleInformation_haw.properties, + * resource/gnu/java/locale/LocaleInformation_he.properties, + * resource/gnu/java/locale/LocaleInformation_hi.properties, + * resource/gnu/java/locale/LocaleInformation_hr.properties, + * resource/gnu/java/locale/LocaleInformation_hu.properties, + * resource/gnu/java/locale/LocaleInformation_hy.properties, + * resource/gnu/java/locale/LocaleInformation_hy_AM_REVISED.properties, + * resource/gnu/java/locale/LocaleInformation_ia.properties, + * resource/gnu/java/locale/LocaleInformation_id.properties, + * resource/gnu/java/locale/LocaleInformation_ig.properties, + * resource/gnu/java/locale/LocaleInformation_ii.properties, + * resource/gnu/java/locale/LocaleInformation_is.properties, + * resource/gnu/java/locale/LocaleInformation_it.properties, + * resource/gnu/java/locale/LocaleInformation_iu.properties, + * resource/gnu/java/locale/LocaleInformation_ja.properties, + * resource/gnu/java/locale/LocaleInformation_ka.properties, + * resource/gnu/java/locale/LocaleInformation_kaj.properties, + * resource/gnu/java/locale/LocaleInformation_kam.properties, + * resource/gnu/java/locale/LocaleInformation_kcg.properties, + * resource/gnu/java/locale/LocaleInformation_kfo.properties, + * resource/gnu/java/locale/LocaleInformation_kk.properties, + * resource/gnu/java/locale/LocaleInformation_kl.properties, + * resource/gnu/java/locale/LocaleInformation_km.properties, + * resource/gnu/java/locale/LocaleInformation_kn.properties, + * resource/gnu/java/locale/LocaleInformation_ko.properties, + * resource/gnu/java/locale/LocaleInformation_kok.properties, + * resource/gnu/java/locale/LocaleInformation_kpe.properties, + * resource/gnu/java/locale/LocaleInformation_ku_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_kw.properties, + * resource/gnu/java/locale/LocaleInformation_ky.properties, + * resource/gnu/java/locale/LocaleInformation_ln.properties, + * resource/gnu/java/locale/LocaleInformation_lo.properties, + * resource/gnu/java/locale/LocaleInformation_lt.properties, + * resource/gnu/java/locale/LocaleInformation_lv.properties, + * resource/gnu/java/locale/LocaleInformation_mk.properties, + * resource/gnu/java/locale/LocaleInformation_ml.properties, + * resource/gnu/java/locale/LocaleInformation_mn.properties, + * resource/gnu/java/locale/LocaleInformation_mr.properties, + * resource/gnu/java/locale/LocaleInformation_ms.properties, + * resource/gnu/java/locale/LocaleInformation_mt.properties, + * resource/gnu/java/locale/LocaleInformation_my.properties, + * resource/gnu/java/locale/LocaleInformation_nb.properties, + * resource/gnu/java/locale/LocaleInformation_ne.properties, + * resource/gnu/java/locale/LocaleInformation_nl.properties, + * resource/gnu/java/locale/LocaleInformation_nn.properties, + * resource/gnu/java/locale/LocaleInformation_nr.properties, + * resource/gnu/java/locale/LocaleInformation_nso.properties, + * resource/gnu/java/locale/LocaleInformation_ny.properties, + * resource/gnu/java/locale/LocaleInformation_om.properties, + * resource/gnu/java/locale/LocaleInformation_or.properties, + * resource/gnu/java/locale/LocaleInformation_pa.properties, + * resource/gnu/java/locale/LocaleInformation_pa_Arab.properties, + * resource/gnu/java/locale/LocaleInformation_pl.properties, + * resource/gnu/java/locale/LocaleInformation_ps.properties, + * resource/gnu/java/locale/LocaleInformation_pt.properties, + * resource/gnu/java/locale/LocaleInformation_pt_PT.properties, + * resource/gnu/java/locale/LocaleInformation_ro.properties, + * resource/gnu/java/locale/LocaleInformation_ru.properties, + * resource/gnu/java/locale/LocaleInformation_rw.properties, + * resource/gnu/java/locale/LocaleInformation_sa.properties, + * resource/gnu/java/locale/LocaleInformation_se.properties, + * resource/gnu/java/locale/LocaleInformation_se_FI.properties, + * resource/gnu/java/locale/LocaleInformation_si.properties, + * resource/gnu/java/locale/LocaleInformation_sid.properties, + * resource/gnu/java/locale/LocaleInformation_sk.properties, + * resource/gnu/java/locale/LocaleInformation_sl.properties, + * resource/gnu/java/locale/LocaleInformation_so.properties, + * resource/gnu/java/locale/LocaleInformation_sq.properties, + * resource/gnu/java/locale/LocaleInformation_sr.properties, + * resource/gnu/java/locale/LocaleInformation_sr_BA_Cyrl.properties, + * resource/gnu/java/locale/LocaleInformation_sr_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_ss.properties, + * resource/gnu/java/locale/LocaleInformation_st.properties, + * resource/gnu/java/locale/LocaleInformation_sv.properties, + * resource/gnu/java/locale/LocaleInformation_sw.properties, + * resource/gnu/java/locale/LocaleInformation_syr.properties, + * resource/gnu/java/locale/LocaleInformation_ta.properties, + * resource/gnu/java/locale/LocaleInformation_te.properties, + * resource/gnu/java/locale/LocaleInformation_tg.properties, + * resource/gnu/java/locale/LocaleInformation_th.properties, + * resource/gnu/java/locale/LocaleInformation_ti.properties, + * resource/gnu/java/locale/LocaleInformation_ti_ER.properties, + * resource/gnu/java/locale/LocaleInformation_tig.properties, + * resource/gnu/java/locale/LocaleInformation_tn.properties, + * resource/gnu/java/locale/LocaleInformation_to.properties, + * resource/gnu/java/locale/LocaleInformation_tr.properties, + * resource/gnu/java/locale/LocaleInformation_trv.properties, + * resource/gnu/java/locale/LocaleInformation_ts.properties, + * resource/gnu/java/locale/LocaleInformation_tt.properties, + * resource/gnu/java/locale/LocaleInformation_ug.properties, + * resource/gnu/java/locale/LocaleInformation_uk.properties, + * resource/gnu/java/locale/LocaleInformation_ur.properties, + * resource/gnu/java/locale/LocaleInformation_uz.properties, + * resource/gnu/java/locale/LocaleInformation_uz_Arab.properties, + * resource/gnu/java/locale/LocaleInformation_uz_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_ve.properties, + * resource/gnu/java/locale/LocaleInformation_vi.properties, + * resource/gnu/java/locale/LocaleInformation_wal.properties, + * resource/gnu/java/locale/LocaleInformation_wo.properties, + * resource/gnu/java/locale/LocaleInformation_xh.properties, + * resource/gnu/java/locale/LocaleInformation_yo.properties, + * resource/gnu/java/locale/LocaleInformation_zh.properties, + * resource/gnu/java/locale/LocaleInformation_zh_Hant.properties, + * resource/gnu/java/locale/LocaleInformation_zu.properties: + Update locale data without trailing separator. + +2012-02-08 Andrew John Hughes + + PR classpath/42390 + * java/nio/channels/spi/SelectorProvider.java: + (provider()): Retrieve property value using + PrivilegedAction. + * java/security/KeyStore.java: + (getDefaultType()): Likewise. + +2012-02-06 Andrew John Hughes + + PR classpath/42390 + * java/net/DatagramSocket.java: + (connect(InetAddress,int)): Add missing security + checks which OpenJDK performs and we don't. It's + possible to initialise a DatagramSocket with null + so we should also ensure we are bound. + +2012-02-01 Andrew John Hughes + + * resource/gnu/java/locale/LocaleInformation.properties, + * resource/gnu/java/locale/LocaleInformation_ar.properties, + * resource/gnu/java/locale/LocaleInformation_az.properties, + * resource/gnu/java/locale/LocaleInformation_be.properties, + * resource/gnu/java/locale/LocaleInformation_bg.properties, + * resource/gnu/java/locale/LocaleInformation_bn.properties, + * resource/gnu/java/locale/LocaleInformation_ca.properties, + * resource/gnu/java/locale/LocaleInformation_cs.properties, + * resource/gnu/java/locale/LocaleInformation_cy.properties, + * resource/gnu/java/locale/LocaleInformation_da.properties, + * resource/gnu/java/locale/LocaleInformation_de.properties, + * resource/gnu/java/locale/LocaleInformation_ee.properties, + * resource/gnu/java/locale/LocaleInformation_el.properties, + * resource/gnu/java/locale/LocaleInformation_en.properties, + * resource/gnu/java/locale/LocaleInformation_en_Dsrt.properties, + * resource/gnu/java/locale/LocaleInformation_en_Shaw.properties, + * resource/gnu/java/locale/LocaleInformation_es.properties, + * resource/gnu/java/locale/LocaleInformation_fa.properties, + * resource/gnu/java/locale/LocaleInformation_fi.properties, + * resource/gnu/java/locale/LocaleInformation_fil.properties, + * resource/gnu/java/locale/LocaleInformation_fr.properties, + * resource/gnu/java/locale/LocaleInformation_gaa.properties, + * resource/gnu/java/locale/LocaleInformation_he.properties, + * resource/gnu/java/locale/LocaleInformation_hi.properties, + * resource/gnu/java/locale/LocaleInformation_hr.properties, + * resource/gnu/java/locale/LocaleInformation_hu.properties, + * resource/gnu/java/locale/LocaleInformation_is.properties, + * resource/gnu/java/locale/LocaleInformation_it.properties, + * resource/gnu/java/locale/LocaleInformation_ja.properties, + * resource/gnu/java/locale/LocaleInformation_ko.properties, + * resource/gnu/java/locale/LocaleInformation_lt.properties, + * resource/gnu/java/locale/LocaleInformation_lv.properties, + * resource/gnu/java/locale/LocaleInformation_ml.properties, + * resource/gnu/java/locale/LocaleInformation_my.properties, + * resource/gnu/java/locale/LocaleInformation_nb.properties, + * resource/gnu/java/locale/LocaleInformation_nl.properties, + * resource/gnu/java/locale/LocaleInformation_nn.properties, + * resource/gnu/java/locale/LocaleInformation_pl.properties, + * resource/gnu/java/locale/LocaleInformation_pt.properties, + * resource/gnu/java/locale/LocaleInformation_pt_PT.properties, + * resource/gnu/java/locale/LocaleInformation_ro.properties, + * resource/gnu/java/locale/LocaleInformation_ru.properties, + * resource/gnu/java/locale/LocaleInformation_si.properties, + * resource/gnu/java/locale/LocaleInformation_sr.properties, + * resource/gnu/java/locale/LocaleInformation_sr_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_sv.properties, + * resource/gnu/java/locale/LocaleInformation_th.properties, + * resource/gnu/java/locale/LocaleInformation_tr.properties, + * resource/gnu/java/locale/LocaleInformation_uk.properties, + * resource/gnu/java/locale/LocaleInformation_ur.properties, + * resource/gnu/java/locale/LocaleInformation_uz_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_vi.properties, + * resource/gnu/java/locale/LocaleInformation_zh.properties, + * resource/gnu/java/locale/LocaleInformation_zh_Hant.properties, + * resource/gnu/java/locale/LocaleInformation_zu.properties: + Use the 'format' context type for months and days, and avoid + alternatives for other elements. + +2012-01-30 Andrew John Hughes + + * resource/gnu/java/locale/LocaleInformation_ar.properties, + * resource/gnu/java/locale/LocaleInformation_ar_LB.properties, + * resource/gnu/java/locale/LocaleInformation_az.properties, + * resource/gnu/java/locale/LocaleInformation_be.properties, + * resource/gnu/java/locale/LocaleInformation_bg.properties, + * resource/gnu/java/locale/LocaleInformation_bn.properties, + * resource/gnu/java/locale/LocaleInformation_bn_IN.properties, + * resource/gnu/java/locale/LocaleInformation_ca.properties, + * resource/gnu/java/locale/LocaleInformation_cs.properties, + * resource/gnu/java/locale/LocaleInformation_cy.properties, + * resource/gnu/java/locale/LocaleInformation_da.properties, + * resource/gnu/java/locale/LocaleInformation_de.properties, + * resource/gnu/java/locale/LocaleInformation_el.properties, + * resource/gnu/java/locale/LocaleInformation_en.properties, + * resource/gnu/java/locale/LocaleInformation_en_Dsrt.properties, + * resource/gnu/java/locale/LocaleInformation_eo.properties, + * resource/gnu/java/locale/LocaleInformation_es.properties, + * resource/gnu/java/locale/LocaleInformation_et.properties, + * resource/gnu/java/locale/LocaleInformation_fa.properties, + * resource/gnu/java/locale/LocaleInformation_fi.properties, + * resource/gnu/java/locale/LocaleInformation_fil.properties, + * resource/gnu/java/locale/LocaleInformation_fo.properties, + * resource/gnu/java/locale/LocaleInformation_fr.properties, + * resource/gnu/java/locale/LocaleInformation_ga.properties, + * resource/gnu/java/locale/LocaleInformation_gl.properties, + * resource/gnu/java/locale/LocaleInformation_gu.properties, + * resource/gnu/java/locale/LocaleInformation_he.properties, + * resource/gnu/java/locale/LocaleInformation_hi.properties, + * resource/gnu/java/locale/LocaleInformation_hr.properties, + * resource/gnu/java/locale/LocaleInformation_hu.properties, + * resource/gnu/java/locale/LocaleInformation_is.properties, + * resource/gnu/java/locale/LocaleInformation_it.properties, + * resource/gnu/java/locale/LocaleInformation_ja.properties, + * resource/gnu/java/locale/LocaleInformation_ka.properties, + * resource/gnu/java/locale/LocaleInformation_ko.properties, + * resource/gnu/java/locale/LocaleInformation_lt.properties, + * resource/gnu/java/locale/LocaleInformation_lv.properties, + * resource/gnu/java/locale/LocaleInformation_ml.properties, + * resource/gnu/java/locale/LocaleInformation_my.properties, + * resource/gnu/java/locale/LocaleInformation_nb.properties, + * resource/gnu/java/locale/LocaleInformation_ne.properties, + * resource/gnu/java/locale/LocaleInformation_nl.properties, + * resource/gnu/java/locale/LocaleInformation_nn.properties, + * resource/gnu/java/locale/LocaleInformation_pl.properties, + * resource/gnu/java/locale/LocaleInformation_pt.properties, + * resource/gnu/java/locale/LocaleInformation_pt_PT.properties, + * resource/gnu/java/locale/LocaleInformation_ro.properties, + * resource/gnu/java/locale/LocaleInformation_ru.properties, + * resource/gnu/java/locale/LocaleInformation_se.properties, + * resource/gnu/java/locale/LocaleInformation_se_FI.properties, + * resource/gnu/java/locale/LocaleInformation_si.properties, + * resource/gnu/java/locale/LocaleInformation_sk.properties, + * resource/gnu/java/locale/LocaleInformation_sl.properties, + * resource/gnu/java/locale/LocaleInformation_sr.properties, + * resource/gnu/java/locale/LocaleInformation_sr_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_sv.properties, + * resource/gnu/java/locale/LocaleInformation_ta.properties, + * resource/gnu/java/locale/LocaleInformation_th.properties, + * resource/gnu/java/locale/LocaleInformation_to.properties, + * resource/gnu/java/locale/LocaleInformation_tr.properties, + * resource/gnu/java/locale/LocaleInformation_uk.properties, + * resource/gnu/java/locale/LocaleInformation_vi.properties, + * resource/gnu/java/locale/LocaleInformation_zh.properties, + * resource/gnu/java/locale/LocaleInformation_zh_Hant.properties: + Use the main approved value for our properties, rather than + just the one that happens to appear last in the XML source file. + +2012-01-20 Andrew John Hughes + + * resource/gnu/java/locale/LocaleInformation.properties, + * resource/gnu/java/locale/LocaleInformation_aa.properties, + * resource/gnu/java/locale/LocaleInformation_aa_DJ.properties, + * resource/gnu/java/locale/LocaleInformation_aa_ER.properties, + * resource/gnu/java/locale/LocaleInformation_af.properties, + * resource/gnu/java/locale/LocaleInformation_am.properties, + * resource/gnu/java/locale/LocaleInformation_ar.properties, + * resource/gnu/java/locale/LocaleInformation_as.properties, + * resource/gnu/java/locale/LocaleInformation_az.properties, + * resource/gnu/java/locale/LocaleInformation_az_Cyrl.properties, + * resource/gnu/java/locale/LocaleInformation_be.properties, + * resource/gnu/java/locale/LocaleInformation_bg.properties, + * resource/gnu/java/locale/LocaleInformation_bn.properties, + * resource/gnu/java/locale/LocaleInformation_bn_IN.properties, + * resource/gnu/java/locale/LocaleInformation_bs.properties, + * resource/gnu/java/locale/LocaleInformation_byn.properties, + * resource/gnu/java/locale/LocaleInformation_ca.properties, + * resource/gnu/java/locale/LocaleInformation_cs.properties, + * resource/gnu/java/locale/LocaleInformation_cy.properties, + * resource/gnu/java/locale/LocaleInformation_da.properties, + * resource/gnu/java/locale/LocaleInformation_de.properties, + * resource/gnu/java/locale/LocaleInformation_de_CH.properties, + * resource/gnu/java/locale/LocaleInformation_dz.properties, + * resource/gnu/java/locale/LocaleInformation_el.properties, + * resource/gnu/java/locale/LocaleInformation_en.properties, + * resource/gnu/java/locale/LocaleInformation_en_Dsrt.properties, + * resource/gnu/java/locale/LocaleInformation_en_IE.properties, + * resource/gnu/java/locale/LocaleInformation_eo.properties, + * resource/gnu/java/locale/LocaleInformation_es.properties, + * resource/gnu/java/locale/LocaleInformation_es_AR.properties, + * resource/gnu/java/locale/LocaleInformation_es_CL.properties, + * resource/gnu/java/locale/LocaleInformation_et.properties, + * resource/gnu/java/locale/LocaleInformation_eu.properties, + * resource/gnu/java/locale/LocaleInformation_fa.properties, + * resource/gnu/java/locale/LocaleInformation_fa_AF.properties, + * resource/gnu/java/locale/LocaleInformation_fi.properties, + * resource/gnu/java/locale/LocaleInformation_fil.properties, + * resource/gnu/java/locale/LocaleInformation_fo.properties, + * resource/gnu/java/locale/LocaleInformation_fr.properties, + * resource/gnu/java/locale/LocaleInformation_fur.properties, + * resource/gnu/java/locale/LocaleInformation_ga.properties, + * resource/gnu/java/locale/LocaleInformation_gez.properties, + * resource/gnu/java/locale/LocaleInformation_gez_ET.properties, + * resource/gnu/java/locale/LocaleInformation_gl.properties, + * resource/gnu/java/locale/LocaleInformation_gu.properties, + * resource/gnu/java/locale/LocaleInformation_ha.properties, + * resource/gnu/java/locale/LocaleInformation_haw.properties, + * resource/gnu/java/locale/LocaleInformation_he.properties, + * resource/gnu/java/locale/LocaleInformation_hi.properties, + * resource/gnu/java/locale/LocaleInformation_hr.properties, + * resource/gnu/java/locale/LocaleInformation_hu.properties, + * resource/gnu/java/locale/LocaleInformation_hy.properties, + * resource/gnu/java/locale/LocaleInformation_ia.properties, + * resource/gnu/java/locale/LocaleInformation_id.properties, + * resource/gnu/java/locale/LocaleInformation_ii.properties, + * resource/gnu/java/locale/LocaleInformation_is.properties, + * resource/gnu/java/locale/LocaleInformation_it.properties, + * resource/gnu/java/locale/LocaleInformation_ja.properties, + * resource/gnu/java/locale/LocaleInformation_ka.properties, + * resource/gnu/java/locale/LocaleInformation_kk.properties, + * resource/gnu/java/locale/LocaleInformation_km.properties, + * resource/gnu/java/locale/LocaleInformation_kn.properties, + * resource/gnu/java/locale/LocaleInformation_ko.properties, + * resource/gnu/java/locale/LocaleInformation_kok.properties, + * resource/gnu/java/locale/LocaleInformation_ku.properties, + * resource/gnu/java/locale/LocaleInformation_ku_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_ky.properties, + * resource/gnu/java/locale/LocaleInformation_ln.properties, + * resource/gnu/java/locale/LocaleInformation_lo.properties, + * resource/gnu/java/locale/LocaleInformation_lt.properties, + * resource/gnu/java/locale/LocaleInformation_lv.properties, + * resource/gnu/java/locale/LocaleInformation_mk.properties, + * resource/gnu/java/locale/LocaleInformation_ml.properties, + * resource/gnu/java/locale/LocaleInformation_mn.properties, + * resource/gnu/java/locale/LocaleInformation_mr.properties, + * resource/gnu/java/locale/LocaleInformation_ms.properties, + * resource/gnu/java/locale/LocaleInformation_mt.properties, + * resource/gnu/java/locale/LocaleInformation_my.properties, + * resource/gnu/java/locale/LocaleInformation_nb.properties, + * resource/gnu/java/locale/LocaleInformation_ne.properties, + * resource/gnu/java/locale/LocaleInformation_nl.properties, + * resource/gnu/java/locale/LocaleInformation_nl_BE.properties, + * resource/gnu/java/locale/LocaleInformation_nn.properties, + * resource/gnu/java/locale/LocaleInformation_om.properties, + * resource/gnu/java/locale/LocaleInformation_pa.properties, + * resource/gnu/java/locale/LocaleInformation_pa_Arab.properties, + * resource/gnu/java/locale/LocaleInformation_pl.properties, + * resource/gnu/java/locale/LocaleInformation_ps.properties, + * resource/gnu/java/locale/LocaleInformation_pt.properties, + * resource/gnu/java/locale/LocaleInformation_pt_PT.properties, + * resource/gnu/java/locale/LocaleInformation_ro.properties, + * resource/gnu/java/locale/LocaleInformation_ru.properties, + * resource/gnu/java/locale/LocaleInformation_ru_UA.properties, + * resource/gnu/java/locale/LocaleInformation_rw.properties, + * resource/gnu/java/locale/LocaleInformation_sa.properties, + * resource/gnu/java/locale/LocaleInformation_se.properties, + * resource/gnu/java/locale/LocaleInformation_se_FI.properties, + * resource/gnu/java/locale/LocaleInformation_sid.properties, + * resource/gnu/java/locale/LocaleInformation_sk.properties, + * resource/gnu/java/locale/LocaleInformation_sl.properties, + * resource/gnu/java/locale/LocaleInformation_so.properties, + * resource/gnu/java/locale/LocaleInformation_sq.properties, + * resource/gnu/java/locale/LocaleInformation_sr.properties, + * resource/gnu/java/locale/LocaleInformation_sr_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_st.properties, + * resource/gnu/java/locale/LocaleInformation_sv.properties, + * resource/gnu/java/locale/LocaleInformation_sv_FI.properties, + * resource/gnu/java/locale/LocaleInformation_sw.properties, + * resource/gnu/java/locale/LocaleInformation_ta.properties, + * resource/gnu/java/locale/LocaleInformation_te.properties, + * resource/gnu/java/locale/LocaleInformation_tg.properties, + * resource/gnu/java/locale/LocaleInformation_th.properties, + * resource/gnu/java/locale/LocaleInformation_ti.properties, + * resource/gnu/java/locale/LocaleInformation_ti_ER.properties, + * resource/gnu/java/locale/LocaleInformation_tig.properties, + * resource/gnu/java/locale/LocaleInformation_tn.properties, + * resource/gnu/java/locale/LocaleInformation_to.properties, + * resource/gnu/java/locale/LocaleInformation_tr.properties, + * resource/gnu/java/locale/LocaleInformation_trv.properties, + * resource/gnu/java/locale/LocaleInformation_ts.properties, + * resource/gnu/java/locale/LocaleInformation_uk.properties, + * resource/gnu/java/locale/LocaleInformation_ur.properties, + * resource/gnu/java/locale/LocaleInformation_uz.properties, + * resource/gnu/java/locale/LocaleInformation_uz_Arab.properties, + * resource/gnu/java/locale/LocaleInformation_uz_Latn.properties, + * resource/gnu/java/locale/LocaleInformation_vi.properties, + * resource/gnu/java/locale/LocaleInformation_wal.properties, + * resource/gnu/java/locale/LocaleInformation_wo.properties, + * resource/gnu/java/locale/LocaleInformation_xh.properties, + * resource/gnu/java/locale/LocaleInformation_yo.properties, + * resource/gnu/java/locale/LocaleInformation_zh.properties, + * resource/gnu/java/locale/LocaleInformation_zh_HK_Hant.properties, + * resource/gnu/java/locale/LocaleInformation_zh_Hant.properties, + * resource/gnu/java/locale/LocaleInformation_zu.properties: + Update property files so that the keys are sorted, making later + changes visible. No actual data changes. + +2011-12-12 Andrew John Hughes + + RH712013: pdftk crashes with java.lang.ArrayIndexOutOfBoundsException + * java/text/DateFormatSymbols.java: + (getStringArray(List, String, int)): + Calls getStringArray(list,string,int,null). + (getStringArray(List, String, int, String[])): + Populate a String array with locale data. The data + used is the first non-null non-empty element found + as we traverse the locale hierarchy. May be supplemented + by fallback data. + (DateFormatSymbols(Locale)): Get a list of all bundles up the + locale hierarchy, rather than just using the one specific locale. + Use the improved getStringArray method to populate the arrays, + supplying existing data where "sideways" inheritance takes place. + +2012-01-07 Pekka Enberg + + * include/Makefile.am: + Add java_io_VMConsole.h. + * java/io/Console: + Add Java 1.6 java/io/Console API. + * java/lang/System.java: + (console): Add Java 1.6 console() API. + * vm/reference/java/io/VMConsole: + Add new class. + * native/jni/java-io/Makefile.am: + Add java_io_VMConsole.c. + * native/jni/java-io/java_io_VMConsole.c: + Add native helpers for java/io/Console. + +2012-01-05 Pekka Enberg + + * java/io/IOError: + Add new class. + +2011-12-01 Andrew John Hughes + + * gnu/javax/net/ssl/provider/CipherSuite.java: + Pass CBC mode to the static CipherSuite instances. + (isCBCMode): New variable. + (CipherSuite(CipherAlgorithm, KeyExchangeAlgorithm, + SignatureAlgorithm, MacAlgorithm, int, int, int, String, boolean)): + Allow isCBCMode to be specified. + (CipherSuite(CipherAlgorithm, KeyExchangeAlgorithm, boolean, + SignatureAlgorithm, MacAlgorithm, int, int, int, String, boolean)): + Likewise. + (cipher()): Generalise setting of 'alg' to work with any suite + that does not use CBC, not just "RC4". + (isCBCMode()): New method. Returns true if the CBC mode is used. + * gnu/javax/net/ssl/provider/OutputSecurityParameters.java: + (enableCBCProtection): Set to true by default of if jsse.enableCBCProtection + is true. + (needToSplitPayload()): Returns true if TLS < 1.1 is in use with + a CBC mode cipher and CBC protection is enabled. + * gnu/javax/net/ssl/provider/SSLEngineImpl.java: + (wrap(ByteBuffer[], int, int, ByteBuffer)): Send application data + as two packets (1 and n - 1) if CBC protection is enabled. + +2011-10-24 Pekka Enberg + + * java/util/HashMap.java: + (put): Fix NullPointerException for null keys. + 2011-09-29 Jan Beulich * tools/Makefile.am (TOOLS_ZIP): Make writable the copied subtrees asm/ and classes/. * tools/Makefile.in: Re-generate. +2011-09-09 Andrew John Hughes + + PR classpath/45526: Produce header files for + any inner classes found. + * tools/gnu/classpath/tools/javah/Main.java: + (parsed): Set of class names that have been parsed. + (writeHeader(Map,Printer)): Take a general Map + rather than a specific HashMap. + (parseClasses(Iterator)): Factor out + the parsing of class files into a separate + method so it can be called recursively for + inner classes. + (getClass(String)): Remove redundant cast. + +2011-07-07 Andrew John Hughes + + PR classpath/45527 + * tools/gnu/classpath/tools/javah/JniHelper.java: + (mangle(String)): Replace '$' with '_' rather than + encoding it as hex. + +2011-07-07 Andrew John Hughes + + PR classpath/40188 + * tools/gnu/classpath/tools/javah/JniIncludePrinter.java: + (writeFields(ClassWrapper,JniPrintStream)): Retain a + reference to the original class and use it in naming + fields, as opposed to the class in which it occurs. + +2011-07-05 Pekka Enberg + + * configure.ac: + Check for clock_gettime(). + native/jni/java-lang/java_lang_VMSystem.c: + (Java_java_lang_VMSystem_nanoTime): + Fix compile error on systems that don't have clock_gettime(). + +2011-06-27 Andrew John Hughes + + Fix issues with building with -Werror and gcc 4.6. + * native/jni/gtk-peer/GtkDragSourceContextPeer.c: + (Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeSetCursor): + Remove unused ptr variable and mark env as unused. + (connect_signals_for_widget(GtkWidget*)): Mark w unused and don't set it. + (Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeStartDrag): + Remove unused ptr variable. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c: + (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState): + Remove unused width and height variables. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c: + (Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mouseMove): + Check result of XTestFakeMotionEvent call. + (Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mousePress): Likewise for + XTestFakeButtonEvent call. + (Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mouseRelease): Likewise. + (Java_gnu_java_awt_peer_gtk_GdkRobotPeer_keyPress): Use g_message + instead of deprecated g_printerr. Check result of XTestFakeKeyEvent. + (Java_gnu_java_awt_peer_gtk_GdkRobotPeer_keyRelease): Likewise. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c: + (Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_setupAccelGroup): + Completely disable code to attach parent, including use of ptr2 + and parent argument, and reinstate original FIXME to explain why. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c: + (Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels): + Remove unused depth variable. + * native/jni/midi-alsa/gnu_javax_sound_midi_alsa_AlsaPortDevice.c, + (Java_gnu_javax_sound_midi_alsa_AlsaPortDevice_run_1receiver_1thread_1): + Check return values and throw an InternalError if a problem occurs. + +2011-05-29 Pekka Enberg + + * lib/Makefile.am: + Generate META-INF/INDEX.LST for glibj.zip. + +2011-04-25 Pekka Enberg + + * java/util/regex/Matcher.java: + (quoteReplacement): Implement missing Java 1.5 API method. + +2011-03-30 Gert Brettlecker + + PR classpath/42823 + * native/jni/java-net/java_net_VMInetAddress.c, + (Java_VMInetAddress_getHostByAddr(JNIEnv*,jclass,jarray)): + Free address structure after use. + (Java_java_net_VMInetAddress_aton(JNIEnv*,jclass,jstring)): + Release UTF string after use. + +2011-03-17 Pekka Enberg + + * native/jni/java-nio/java_nio_VMDirectByteBuffer.c: + (Java_java_nio_VMDirectByteBuffer_allocate): Check for negative + capacity. + +2011-03-14 Andrew John Hughes + + PR classpath/42390 + * java/net/Socket.java: + (connect(SocketAddress, int)): Add missing call + to SecurityManager. + +2011-03-15 Jeroen Frijters + + PR classpath/48131 + * java/util/zip/InflaterHuffmanTree.java: + (buildTree): Handle empty tree. + +2011-03-14 Pekka Enberg + + * javax/swing/text/html/StyleSheet.java: + (resolveStyle()): Fix misuse of ArrayList.set(). + +2011-02-22 Andrew John Hughes + + PR classpath/42390 + * java/security/ProtectionDomain.java: + (toString()): Don't include permissions from + the policy if we don't have permission to read + it. + +2011-03-02 Pekka Enberg + + * java/util/regex/Matcher: + (find): Make sure match is within input data limits. + +2011-02-22 Pekka Enberg + + * java/util/HashMap: + (put): Check for key hashCode equality before invoking + Object.equals() to fix compatibility issue with Jython. + +2011-02-22 Pekka Enberg + + * java/util/HashMap: + (DEFAULT_CAPACITY): Make default initial capacity 16 as it is + defined in official Javadocs. + +2010-02-16 Pekka Enberg + + * java/util/Formatter.java: + (parseInt): Use Integer.parseInt() insted of Integer.decode() + because the latter doesn't work with leading zeros which are + used in String.format() formatting, for example. + +2010-07-02 Ivan Maidanski + + * java/util/regex/Pattern.java: + (quote): Implement new 1.5 Java API method. + +2011-01-23 Pekka Enberg + + * java/io/PrintStream.java + (PrintStream): Throw NullPointerException if out or encoding + is null to be compatible with OpenJDK. + +2011-01-22 Pekka Enberg + + * native/jni/java-lang/java_lang_VMSystem.c + (Java_java_lang_VMSystem_nanoTime): Fallback to + gettimeofday() if clock_gettime(CLOCK_MONOTONIC) fails. + +2011-01-22 Pekka Enberg + + * native/jni/java-lang/java_lang_VMSystem.c + (currentTimeMillis): Rename currentTimeMillis to + currentTimeMicros to reflect what the function returns. + +2011-01-21 Pekka Enberg + + * java/lang/Class.java: + (getDeclaredField): Throw NullPointerException instead of + NoSuchFieldException if name is null. + (getField): Likewise. + (getDeclaredMethod): Throw NullPointerException instead of + NoSuchMethodException if name is null. + (getMethod): Likewise. + +2010-12-25 Andrew John Hughes + + PR classpath/42390 + * java/io/File.java: + (isHidden()): Add and document missing + security check. + +2010-12-25 Andrew John Hughes + + PR classpath/42390 + * java/util/logging/LogManager.java: + (addPropertyChangeListener(PropertyChangeListener)): + Document fully. Throw NPE in a clearer way. Add + SecurityException. + (removePropertyChangeListener(PropertyChangeListener)): + Document fully. Add SecurityException. + +2010-12-25 Andrew John Hughes + + PR classpath/42390 + * java/io/ObjectOutputStream.java: + (ObjectOutputStream(OutputStream)): Add + required security check. + (overridesMethods(Class)): Check whether + the subclass overrides one of the methods + which requires a security check. + +2010-12-24 Andrew John Hughes + + * java/security/ProtectionDomain.java, + (hasAllPermissions): Add new field. + (ProtectionDomain(CodeSource,PermissionCollection, + ClassLoader,Principal,boolean)): Check if permission + collection includes AllPermission and, if so, set + hasAllPermissions. + (implies(Permission)): Immediately return true if + hasAllPermissions is set. + +2006-07-21 Tom Tromey + + * vm/reference/java/lang/VMClass.java: + (getSimpleName()): Use implementation from + gcj. + +2010-12-02 Andrew John Hughes + + PR classpath/46775 + * vm/reference/java/security/VMAccessController.java: + (DEFAULT_CONTEXT): Create ProtectionDomain with + four argument constructor (arguments are the same + as those implied by the two argument constructor). + (getContext()): Create ProtectionDomain instances + with four argument constructor using a null Principal + array (as before) but including the classloader, which + was always null before. + +2010-11-04 Andrew John Hughes + + * config.rpath: + Add file required by autogen.sh due to use + of AM_ICONV. + * m4/ax_func_which_gethostbyname_r.m4: + Use AC_LANG_SOURCE as suggested by warnings from + autoconf 2.68. + +2010-11-04 Andrew John Hughes + + Provide a fallback for systems without POSIX timers. + * native/jni/java-lang/java_lang_VMSystem.c: + (currentTimeMillis): New function which provides + the behaviour for both Java_java_lang_VMSystem_currentTimeMillis + and the fallback by obtaining the result of gettimeofday. + (Java_java_lang_VMSystem_nanoTime): Return currentTimeMillis + multiplied by a 1000 if a monotonic clock is unavailable. + (Java_java_lang_VMSystem_currentTimeMillis): Split main behaviour + out into currentTimeMillis and then return its result divided by a + 1000. + +2010-07-08 Roland Brand + Pekka Enberg + + PR classpath/44411 + * native/jni/java-lang/java_lang_VMSystem.c: + (Java_java_lang_VMSystem_nanoTime): Implement + using POSIX monotonic clock support and clock_gettime. + (Java_java_lang_VMSystem_currentTimeMillis): + Use old nanoTime method (which uses gettimeofday) to + provide the current time in milliseconds. + * vm/reference/java/lang/VMSystem.java: + (currentTimeMillis()): Make native with its own implementation + rather than using nanoTime, which should be + independent of wall-clock time. + +2010-05-09 Ivan Maidanski + + * gnu/java/security/Properties.java: Only + initialise log if Configuration.DEBUG is true. + * gnu/java/security/der/DERWriter.java: + (toUtf8(String)): Calculate 1.5 * len using + len + (len >> 1) to avoid multiplication by a floating-point + number. + * gnu/java/security/hash/Whirlpool.java: Only + initialise log if Configuration.DEBUG is true. + * gnu/java/security/jce/sig/EncodedKeyFactory.java: Likewise. + * gnu/java/security/jce/sig/SignatureAdapter.java: Likewise. + * gnu/java/security/key/dss/DSSKeyPairGenerator.java: Likewise. + * gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.java: Likewise. + * gnu/java/security/key/rsa/RSAKeyPairGenerator.java: Likewise. + * gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.java: Likewise. + * gnu/java/security/key/rsa/RSAKeyPairX509Codec.java: Likewise. + * gnu/java/security/pkcs/PKCS7SignedData.java: Likewise. + * gnu/java/security/pkcs/SignerInfo.java: Likewise. + (SignerInfo(BERReader)): Only print version if Configuration.DEBUG is + true, as with other output. + * gnu/java/security/provider/PKIXCertPathValidatorImpl.java: + Only initialise log if Configuration.DEBUG is true. + * gnu/java/security/sig/rsa/EMSA_PSS.java: Likewise. + * gnu/java/security/sig/rsa/RSAPSSSignature.java: Likewise. + * gnu/java/security/x509/X509CRL.java: Likewise. + * gnu/java/security/x509/X509CRLEntry.java: Likewise. + * gnu/java/security/x509/ext/Extension.java: Likewise. + * gnu/javax/crypto/cipher/Anubis.java: Likewise. + * gnu/javax/crypto/cipher/BaseCipher.java: Likewise. + * gnu/javax/crypto/cipher/Khazad.java: Likewise. + * gnu/javax/crypto/cipher/Rijndael.java: Likewise. + * gnu/javax/crypto/cipher/Twofish.java: Likewise. + * gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.java: Likewise. + * gnu/javax/crypto/jce/keyring/GnuKeyring.java: Likewise. + * gnu/javax/crypto/jce/params/BlockCipherParameters.java: Likewise. + * gnu/javax/crypto/jce/prng/ICMRandomSpi.java: Likewise. + * gnu/javax/crypto/jce/prng/UMacRandomSpi.java: Likewise. + * gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.java: Likewise. + (sha): Drop unused variable. + (rnd): Use implicit initialisation to null as with other variables. + * gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.java: + Only initialise log if Configuration.DEBUG is true. + * gnu/javax/crypto/keyring/Entry.java: Likewise. + * gnu/javax/crypto/keyring/EnvelopeEntry.java: Likewise. + * gnu/javax/crypto/keyring/GnuPublicKeyring.java: Likewise. + * gnu/javax/crypto/mac/OMAC.java: Likewise. + * gnu/javax/crypto/pad/BasePad.java: Likewise. + * gnu/javax/crypto/pad/PKCS1_V1_5.java: Likewise. + * gnu/javax/crypto/pad/PKCS7.java: Likewise. + * gnu/javax/crypto/pad/TBC.java: Likewise. + * gnu/javax/crypto/prng/CSPRNG.java: Likewise. + (getSystemInstance()): Clarify bracketing of for loop + and ignorance of exceptions in the OTHER case. + * gnu/javax/crypto/sasl/SaslInputStream.java: + Only initialise log if Configuration.DEBUG is true. + * gnu/javax/crypto/sasl/SaslOutputStream.java: Likewise. + * gnu/javax/crypto/sasl/srp/SRPClient.java: Likewise. + * gnu/javax/crypto/sasl/srp/SRPServer.java: Likewise. + * gnu/javax/security/auth/login/ConfigFileParser.java: Likewise. + (map): Make final. + * gnu/javax/security/auth/login/ConfigFileTokenizer.java: + Only initialise log if Configuration.DEBUG is true. + (br): Make final. + (ConfigFileTokenizer(Reader)): Remove explicit initialisation of + initialised and call to superclass when superclass is Object. + * gnu/javax/security/auth/login/GnuConfiguration.java: + Only iniialise log if Configuration.DEBUG is true. + * java/math/BigInteger.java: Likewise. + +2010-04-12 Ivan Maidanski + + PR classpath/40889 + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c: + (Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Convert gtktoolkit + value to a global reference (to be accessible in set_running_flag, + clear_running_flag). + +2010-04-12 Ivan Maidanski + + * native/jni/classpath/jcl.c: + Simplify attribute #ifndef block. + (JCL_POINTER_CLASSNAME): Define dependent on size of void*. + (JCL_POINTER_DATASIGN): Likewise. + (JCL_POINTER_INTTYPE): Likewise. + (JCL_POINTER_GETFIELD): Likewise. + (JNI_OnLoad): Define only if not JCL_NO_JNIONLOAD. + Use JCL_POINTER_xxx macros instead of SIZEOF_VOID_P. + (JCL_NewRawDataObject): Use JCL_POINTER_xxx macros instead of SIZEOF_VOID_P. + Initialize rawDataClass, rawData_fid, rawData_mid global variables if JCL_NO_JNIONLOAD. + (JCL_realloc): Don't call free() for NULL pointer. + (JCL_GetRawData): Use JCL_POINTER_xxx macros instead of SIZEOF_VOID_P. + Initialize rawDataClass, rawData_fid, rawData_mid global variables + if JCL_NO_JNIONLOAD. + +2010-07-30 Andrew Haley + + * javax/print/attribute/standard/JobStateReasons.java (add): Fix + infinite recursion with call to super. + +2010-07-13 Jeroen Frijters + + * java/util/zip/ZipFile.java: + (readEntries): Throw exception when an encrypted entry is encountered. + +2010-07-13 Daniel Noll + + * java/util/zip/InflaterHuffmanTree.java: + (buildTree): Fix for #36560. + +2010-04-12 Ivan Maidanski + + * vm/reference/gnu/classpath/VMStackWalker.java: Make the default + constructor private. + * vm/reference/gnu/classpath/VMSystemProperties.java: Likewise and make class final. + * vm/reference/gnu/java/lang/VMCPStringBuilder.java: Likewise. + * vm/reference/gnu/java/lang/VMInstrumentationImpl.java: Likewise. + * vm/reference/gnu/java/lang/management/VMClassLoadingMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/lang/management/VMCompilationMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/lang/management/VMRuntimeMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/lang/management/VMThreadMXBeanImpl.java: + Likewise. + * vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java: Likewise. + Make class non-public and add missing full stop in comment. + * vm/reference/gnu/java/nio/VMPipe.java: Make the default constructor private. + * vm/reference/gnu/java/nio/VMSelector.java: Likewise and make class non-public. + * vm/reference/gnu/java/security/jce/prng/VMSecureRandom.java: + Make the default constructor private. + (Spinner.stop()): Make package-private to ease access from enclosing class. + * vm/reference/java/io/VMFile.java: Make the default constructor private. + Fix punctuation in documentation. + (getTotalSpace(String)): Make package-private. + (getFreeSpace(String)): Likewise. + (getUsableSpace(String)): Likewise. + (setReadable(String,boolean,boolean)): Likewise. + (setExecutable(String,boolean,boolean)): Likewise. + (toCanonicalForm(String)): Likewise. + * vm/reference/java/io/VMObjectInputStream.java: Make default constructor private. + * vm/reference/java/io/VMObjectStreamClass.java: Likewise. + * vm/reference/java/lang/VMClassLoader.java: Likewise. + * vm/reference/java/lang/VMCompiler.java: + (compileClass(Class)): Make package-private. + (compileClasses(String)): Likewise. + (command(String)): Likewise. + (enable()): Likewise. + (disable()): Likewise. + * vm/reference/java/lang/VMDouble.java: Make constructor package-private. + (doubleToRawLongBits(double)): Make package-private. + (longBitsToDouble(long)): Likewise. + (toString(double, boolean)): Likewise. + (initIDs()): Make private. + (parseDouble(String)): Make package-private. + * vm/reference/java/lang/VMFloat.java: Make constructor package-private. + * vm/reference/java/lang/VMMath.java: Likewise and make class final. + (sin(double)): Make package-private. + (cos(double)): Likewise. + (tan(double)): Likewise. + (asin(double)): Likewise. + (acos(double)): Likewise. + (atan(double)): Likewise. + (atan2(double, double)): Likewise. + (exp(double)): Likewise. + (log(double)): Likewise. + (sqrt(double)): Likewise. + (pow(double)): Likewise. + (IEEEremainder(double, double)): Likewise. + (ceil(double)): Likewise. + (floor(double)): Likewise. + (rint(double)): Likewise. + (cbrt(double)): Likewise. + (cosh(double)): Likewise. + (expm1(double)): Likewise. + (hypot(double)): Likewise. + (log10(double)): Likewise. + (log1p(double)): Likewise. + (sinh(double)): Likewise. + (tanh(double)): Likewise. + * vm/reference/java/lang/VMObject.java: Make constructor package-private. + * vm/reference/java/lang/VMString.java: Likewise. + * vm/reference/java/lang/VMSystem.java: Likewise. + (mapLibraryName(String)): Remove the commented out function (since + exists in VMRuntime). + (currentTimeMillis()): Make package-private. + (nanoTime()): Likewise. + * vm/reference/java/lang/management/VMManagementFactory.java: + Make constructor package-private. + * vm/reference/java/lang/reflect/VMArray.java: Make constructor + package-private and class final. + * vm/reference/java/lang/reflect/VMProxy.java: Make constructor + package-private. + * vm/reference/java/net/VMInetAddress.java: Make constructor package-private + and class final.. + (getLocalHostname()): Make package-private. + (lookupInaddrAny()): Likewise. + (getHostByAddr(byte[])): Likewise. + (getHostByName(String)): Likewise. + (aton(String)): Likewise. + * vm/reference/java/net/VMURLConnection.java: Make constructor package-private. + (LENGTH): Likewise. + * vm/reference/java/nio/VMDirectByteBuffer.java: Make constructor package-private. + Fix indenting. + * vm/reference/java/security/VMSecureRandom.java: Make constructor package-private. + Make the default constructor private. + (Spinner.stop()): Make package-private to ease access from enclosing class. + * vm/reference/java/util/VMTimeZone.java: Make constructor package-private. + * vm/reference/sun/misc/Unsafe.java: Make class final. + (unsafe): Make final. + +2010-06-21 Andrew John Hughes + + * tools/Makefile.am: + Fix patch to message bundles. + +2010-04-12 Ivan Maidanski + + * examples/gnu/classpath/examples/swing/Demo.java: + (mkMenuBar): Don't pass null as a second argument to getMethod() (to suppress + a warning). + * resource/gnu/javax/print/PrinterDialog.properties: Rename to + "MessagesBundle.properties" (to prevent class name collision + in case the properties file is converted to a class). + * resource/gnu/javax/print/PrinterDialog_de.properties: Likewise. + * gnu/javax/print/PrinterDialog.java (messages): Get resources from + "gnu.javax.print.MessagesBundle" bundle instead of + "gnu/javax/print/PrinterDialog" one. + * tools/gnu/classpath/tools/common/Messages.java (BUNDLE_NAME): + Convert "gnu.classpath.tools.common.Messages" to lowercase (to be + consistent with other tools resource bundle names and to prevent class + name collision in case the properties file is converted to a class). + * tools/resource/gnu/classpath/tools/common/Messages.properties: + Rename to "messages.properties". + * tools/resource/gnu/classpath/tools/getopt/Messages.properties: + Likewise. + * testsuite/javax.swing.text.html.parser/test/gnu/javax/swing/text/html/parser/Parser_Test.java: + Rename "enum" local variable to "en". + * testsuite/javax.swing.text.html.parser/test/gnu/javax/swing/text/html/parser/ParserTest.java: + Likewise. + +2010-06-05 Mark Wielaard + + * doc/cp-tools.texinfo: Move copying information in @copying section. + 2010-06-03 Andrew John Hughes * examples/gnu/classpath/examples/CORBA/NamingService/Demo.java, diff --git a/libjava/classpath/INSTALL b/libjava/classpath/INSTALL index 7d1c323beae..a1e89e18ad2 100644 --- a/libjava/classpath/INSTALL +++ b/libjava/classpath/INSTALL @@ -1,8 +1,8 @@ Installation Instructions ************************* -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, +Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -226,6 +226,11 @@ order to use an ANSI C compiler: and if that doesn't work, install pre-built binaries of GCC for HP-UX. + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended diff --git a/libjava/classpath/NEWS b/libjava/classpath/NEWS index 095f9700b8d..dd2e1568ff2 100644 --- a/libjava/classpath/NEWS +++ b/libjava/classpath/NEWS @@ -1,4 +1,52 @@ -New in release 0.99 (XXX XX, XXXX) +New in release 0.99 (Mar 08, 2012) + +* Addition of java.util.regex.Pattern.quote. +* Addition of java.io.IOError. +* Addition of java.io.Console. +* Bug fixes: + - PR39408: gjavah doesn't generate constants in header files where they occur in a superclass + - PR40590: namespace namespace broken in CNI + - PR40630: java.util.Scanner fails when used for charset generation by the OpenJDK build + - PR40653: Issue with XML stream writer and namespaces + - PR40663: Support Stax API 1.0.1 + - PR39177: trunk revision 144128 - jar: internal error: java.lang.NullPointerException + - PR41696: java.util.zip.Inflater:finished () returns false when it should return true + - PR43536: CopyOnWriteArrayList bug in delete() when empty + - PR36560: java.util.zip: Error parsing zip file with larger files in it + - Restrict access to VM classes. + - Cleanup use of message resources. + - Throw exception when encrypted zip file entries are encountered. + - Fix infinite recursion in javax.print.attribute.standard.JobStateReasons.add. + - Native code cleanups in GtkToolkit.c and jcl.c. + - Only log when debugging is on. + - PR44411: System.nanoTime() is not independent of wall-clock time + - PR46775: Calling Policy.setPolicy with a new Policy object has no effect on the DefaultSecurityManager + - Use implementation of VMClass.getSimpleName from gcj. + - Simplify security determination in ProtectionDomain in situations where all permissions are available. + - PR42390: Missing Security Manager checks in classpath apis + - Throw NullPointerExceptions appropriately for compatibility with OpenJDK. + - Use Integer.parseInt in preference to Integer.decode in java.util.Formatter. + - Use same default capacity in java.util.HashMap as documented in OpenJDK. + - Check for hashcode equality before calling equals in java.util.HashMap.put + - Make sure match is within input data limits in java.util.regex.Matcher.find. + - Fix misuse of ArrayList.set in javax.swing.text.html.StyleSheet.resolveStyle. + - PR48131: java.util.zip.ZipException: incomplete dynamic bit lengths tree + - Check for negative capacity in VMDirectByteBuffer's native code. + - PR42823: tcp/ip sockets read/write operations causes memory leak + - Generate META-INF/INDEX.LST for glibj.zip + - Fix issues when building with -Werror and gcc 4.6. + - PR40188: javah creates constants using name of superclass + - PR45527: gjavah encodes $ as used in inner classes as 00024 where Oracle's javah does not + - PR45526: gjavah does not implicitly produce header files for inner classes + - Fix NullPointerException for null keys in java.util.HashMap.put. + - Fix BEAST security issue in gnu.javax.net.ssl.provider. + - RH712013: pdftk crashes with java.lang.ArrayIndexOutOfBoundsException +* Updated to libtool 2.x. +* Lots of warning fixes / addition of generics. +* Fix license headers in tools. +* Normalise whitespace. +* Maintenance work on javac detection. +* Mark plugin as unmaintained and disable by default. New in release 0.98 (Feb 05, 2009) diff --git a/libjava/classpath/config.guess b/libjava/classpath/config.guess index aeb53233ecb..b02565c7b2f 100755 --- a/libjava/classpath/config.guess +++ b/libjava/classpath/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -# Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. -timestamp='2008-12-18' +timestamp='2011-06-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,16 +27,16 @@ timestamp='2008-12-18' # the same distribution terms that you use for the rest of that program. -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` @@ -56,8 +56,9 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -170,7 +171,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -180,7 +181,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release @@ -223,7 +224,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -269,7 +270,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead @@ -295,7 +299,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} @@ -324,12 +328,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" @@ -388,23 +398,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; @@ -474,8 +484,8 @@ EOF echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -488,7 +498,7 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -545,7 +555,7 @@ EOF echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[456]) + *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -588,52 +598,52 @@ EOF 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + esac ;; + esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >$dummy.c - #define _HPUX_SOURCE - #include - #include + #define _HPUX_SOURCE + #include + #include - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa @@ -653,7 +663,7 @@ EOF # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null + grep -q __LP64__ then HP_ARCH="hppa2.0w" else @@ -724,22 +734,22 @@ EOF exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; @@ -763,14 +773,14 @@ EOF exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} @@ -798,18 +808,18 @@ EOF echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; - *:Interix*:[3456]*) - case ${UNAME_MACHINE} in + *:Interix*:*) + case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; - EM64T | authenticamd | genuineintel) + authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) @@ -819,6 +829,9 @@ EOF [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -848,6 +861,20 @@ EOF i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -855,7 +882,13 @@ EOF then echo ${UNAME_MACHINE}-unknown-linux-gnu else - echo ${UNAME_MACHINE}-unknown-linux-gnueabi + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi fi exit ;; avr32*:Linux:*:*) @@ -868,7 +901,18 @@ EOF echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) - echo frv-unknown-linux-gnu + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -879,78 +923,34 @@ EOF m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - mips:Linux:*:*) + mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU - #undef mips - #undef mipsel + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel + CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips + CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -959,14 +959,17 @@ EOF *) echo hppa-unknown-linux-gnu ;; esac exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -974,6 +977,9 @@ EOF sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; @@ -981,68 +987,8 @@ EOF echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both @@ -1050,11 +996,11 @@ EOF echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. + # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) @@ -1071,7 +1017,7 @@ EOF i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) @@ -1086,7 +1032,7 @@ EOF fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; @@ -1114,10 +1060,13 @@ EOF exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit ;; + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1152,8 +1101,18 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; @@ -1166,7 +1125,7 @@ EOF rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) @@ -1186,10 +1145,10 @@ EOF echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1215,11 +1174,11 @@ EOF exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv${UNAME_RELEASE} fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1259,6 +1218,16 @@ EOF *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} @@ -1274,6 +1243,9 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; @@ -1319,13 +1291,13 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1340,6 +1312,9 @@ EOF i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1362,11 +1337,11 @@ main () #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif diff --git a/libjava/classpath/config.sub b/libjava/classpath/config.sub index 9489dc7867b..78176a44029 100755 --- a/libjava/classpath/config.sub +++ b/libjava/classpath/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -# Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. -timestamp='2008-12-11' +timestamp='2011-10-29' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -32,13 +32,16 @@ timestamp='2008-12-11' # Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. @@ -72,8 +75,9 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -120,8 +124,10 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -148,10 +154,13 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) + -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; + -bluegene*) + os=-cnk + ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 @@ -166,10 +175,10 @@ case $os in os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; @@ -242,13 +251,17 @@ case $basic_machine in | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ + | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ @@ -271,28 +284,42 @@ case $basic_machine in | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | moxie \ | mt \ | msp430 \ + | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ + | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ + | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12) + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none @@ -303,6 +330,18 @@ case $basic_machine in basic_machine=mt-unknown ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -322,20 +361,23 @@ case $basic_machine in | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | be32-* | be64-* \ | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -357,24 +399,29 @@ case $basic_machine in | mmix-* \ | mt-* \ | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ - | romp-* | rs6000-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ | tron-* \ - | v850-* | v850e-* | vax-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) @@ -399,7 +446,7 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; - abacus) + abacus) basic_machine=abacus-unknown ;; adobe68k) @@ -445,6 +492,10 @@ case $basic_machine in basic_machine=m68k-apollo os=-bsd ;; + aros) + basic_machine=i386-pc + os=-aros + ;; aux) basic_machine=m68k-apple os=-aux @@ -461,11 +512,24 @@ case $basic_machine in basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; c90) basic_machine=c90-cray os=-unicos ;; - cegcc) + cegcc) basic_machine=arm-unknown os=-cegcc ;; @@ -497,7 +561,7 @@ case $basic_machine in basic_machine=craynv-cray os=-unicosmp ;; - cr16) + cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; @@ -713,6 +777,9 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + microblaze) + basic_machine=microblaze-xilinx + ;; mingw32) basic_machine=i386-pc os=-mingw32 @@ -753,6 +820,10 @@ case $basic_machine in basic_machine=i370-ibm os=-mvs ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; ncr3000) basic_machine=i486-ncr os=-sysv4 @@ -817,6 +888,12 @@ case $basic_machine in np1) basic_machine=np1-gould ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -899,9 +976,10 @@ case $basic_machine in ;; power) basic_machine=power-ibm ;; - ppc) basic_machine=powerpc-unknown + ppc | ppcbe) basic_machine=powerpc-unknown ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown @@ -995,6 +1073,9 @@ case $basic_machine in basic_machine=i860-stratus os=-sysv4 ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; sun2) basic_machine=m68000-sun ;; @@ -1051,20 +1132,8 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; tile*) - basic_machine=tile-unknown + basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) @@ -1134,6 +1203,9 @@ case $basic_machine in xps | xps100) basic_machine=xps100-honeywell ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; ymp) basic_machine=ymp-cray os=-unicos @@ -1231,9 +1303,12 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases + # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; @@ -1254,10 +1329,11 @@ case $os in # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ @@ -1268,7 +1344,8 @@ case $os in | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ @@ -1276,7 +1353,7 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1315,7 +1392,7 @@ case $os in -opened*) os=-openedition ;; - -os400*) + -os400*) os=-os400 ;; -wince*) @@ -1364,7 +1441,7 @@ case $os in -sinix*) os=-sysv4 ;; - -tpf*) + -tpf*) os=-tpf ;; -triton*) @@ -1409,6 +1486,8 @@ case $os in -dicos*) os=-dicos ;; + -nacl*) + ;; -none) ;; *) @@ -1431,10 +1510,10 @@ else # system, and we'll never get to this point. case $basic_machine in - score-*) + score-*) os=-elf ;; - spu-*) + spu-*) os=-elf ;; *-acorn) @@ -1446,8 +1525,17 @@ case $basic_machine in arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff ;; # This must come before the *-dec entry. pdp10-*) @@ -1474,7 +1562,7 @@ case $basic_machine in m68*-cisco) os=-aout ;; - mep-*) + mep-*) os=-elf ;; mips*-cisco) @@ -1501,7 +1589,7 @@ case $basic_machine in *-ibm) os=-aix ;; - *-knuth) + *-knuth) os=-mmixware ;; *-wec) @@ -1606,7 +1694,7 @@ case $basic_machine in -sunos*) vendor=sun ;; - -aix*) + -cnk*|-aix*) vendor=ibm ;; -beos*) diff --git a/libjava/classpath/configure b/libjava/classpath/configure index a25f5f75a47..5874086aa0c 100755 --- a/libjava/classpath/configure +++ b/libjava/classpath/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for GNU Classpath 0.99-pre. +# Generated by GNU Autoconf 2.64 for GNU Classpath 0.99. # # Report bugs to . # @@ -559,8 +559,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GNU Classpath' PACKAGE_TARNAME='classpath' -PACKAGE_VERSION='0.99-pre' -PACKAGE_STRING='GNU Classpath 0.99-pre' +PACKAGE_VERSION='0.99' +PACKAGE_STRING='GNU Classpath 0.99' PACKAGE_BUGREPORT='classpath@gnu.org' PACKAGE_URL='http://www.gnu.org/software/classpath/' @@ -1490,7 +1490,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures GNU Classpath 0.99-pre to adapt to many kinds of systems. +\`configure' configures GNU Classpath 0.99 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1565,7 +1565,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Classpath 0.99-pre:";; + short | recursive ) echo "Configuration of GNU Classpath 0.99:";; esac cat <<\_ACEOF @@ -1757,7 +1757,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Classpath configure 0.99-pre +GNU Classpath configure 0.99 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2586,7 +2586,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU Classpath $as_me 0.99-pre, which was +It was created by GNU Classpath $as_me 0.99, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -3621,7 +3621,7 @@ fi # Define the identity of the package. PACKAGE='classpath' - VERSION='0.99-pre' + VERSION='0.99' cat >>confdefs.h <<_ACEOF @@ -17059,6 +17059,65 @@ fi rm -f conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +$as_echo_n "checking for library containing clock_gettime... " >&6; } +if test "${ac_cv_search_clock_gettime+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_clock_gettime+set}" = set; then : + break +fi +done +if test "${ac_cv_search_clock_gettime+set}" = set; then : + +else + ac_cv_search_clock_gettime=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +$as_echo "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing inet_pton" >&5 $as_echo_n "checking for library containing inet_pton... " >&6; } if test "${ac_cv_search_inet_pton+set}" = set; then : @@ -17166,11 +17225,12 @@ _ACEOF fi + for ac_func in ftruncate fsync select \ gethostname socket strerror fork pipe execve open close \ lseek fstat read readv write writev htonl memset htons connect \ getsockname getpeername bind listen accept \ - recvfrom send sendto setsockopt getsockopt time mktime \ + recvfrom send sendto setsockopt getsockopt time mktime clock_gettime \ gethostbyname_r localtime_r \ strerror_r \ fcntl \ @@ -17663,7 +17723,8 @@ ac_cv_func_which_gethostbyname_r=unknown # cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + + #include int main () { @@ -17689,7 +17750,8 @@ if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + + #include int main () { @@ -17721,7 +17783,8 @@ if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + + #include int main () { @@ -17753,7 +17816,8 @@ if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + + #include int main () { @@ -23814,7 +23878,7 @@ else JAVA_TEST=Object.java CLASS_TEST=Object.class cat << \EOF > $JAVA_TEST -/* #line 23817 "configure" */ +/* #line 23881 "configure" */ package java.lang; public class Object @@ -23907,7 +23971,7 @@ EOF if uudecode$EXEEXT Test.uue; then ac_cv_prog_uudecode_base64=yes else - echo "configure: 23910: uudecode had trouble decoding base 64 file 'Test.uue'" >&5 + echo "configure: 23974: uudecode had trouble decoding base 64 file 'Test.uue'" >&5 echo "configure: failed file was:" >&5 cat Test.uue >&5 ac_cv_prog_uudecode_base64=no @@ -23935,7 +23999,7 @@ JAVA_TEST=Test.java CLASS_TEST=Test.class TEST=Test cat << \EOF > $JAVA_TEST -/* [#]line 23938 "configure" */ +/* [#]line 24002 "configure" */ public class Test { public static void main (String args[]) { System.exit (0); @@ -24143,7 +24207,7 @@ if test "x${use_glibj_zip}" = xfalse || \ JAVA_TEST=Test.java CLASS_TEST=Test.class cat << \EOF > $JAVA_TEST - /* #line 24146 "configure" */ + /* #line 24210 "configure" */ public class Test { public static void main(String args) @@ -24988,7 +25052,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Classpath $as_me 0.99-pre, which was +This file was extended by GNU Classpath $as_me 0.99, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -25058,7 +25122,7 @@ General help using GNU software: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -GNU Classpath config.status 0.99-pre +GNU Classpath config.status 0.99 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/libjava/classpath/configure.ac b/libjava/classpath/configure.ac index 0a267851a19..60121a56356 100644 --- a/libjava/classpath/configure.ac +++ b/libjava/classpath/configure.ac @@ -6,7 +6,7 @@ dnl ----------------------------------------------------------- dnl define([AC_CACHE_LOAD], )dnl dnl define([AC_CACHE_SAVE], )dnl -AC_INIT([GNU Classpath],[0.99-pre],[classpath@gnu.org],[classpath]) +AC_INIT([GNU Classpath],[0.99],[classpath@gnu.org],[classpath]) AC_CONFIG_SRCDIR(java/lang/System.java) AC_CONFIG_MACRO_DIR([m4]) @@ -489,13 +489,15 @@ if test "x${COMPILE_JNI}" = xyes; then AC_EGREP_HEADER(u_int32_t, sys/types.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1, [Define to 1 if you have BSD u_int32_t])) AC_EGREP_HEADER(u_int32_t, sys/config.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1, [Define to 1 if you have BSD u_int32_t])) + AC_SEARCH_LIBS([clock_gettime], [rt]) AC_SEARCH_LIBS([inet_pton],[nsl]) AC_CHECK_LIB([socket], [gethostname]) + AC_CHECK_FUNCS([ftruncate fsync select \ gethostname socket strerror fork pipe execve open close \ lseek fstat read readv write writev htonl memset htons connect \ getsockname getpeername bind listen accept \ - recvfrom send sendto setsockopt getsockopt time mktime \ + recvfrom send sendto setsockopt getsockopt time mktime clock_gettime \ gethostbyname_r localtime_r \ strerror_r \ fcntl \ diff --git a/libjava/classpath/depcomp b/libjava/classpath/depcomp index df8eea7e4ce..bd0ac089584 100755 --- a/libjava/classpath/depcomp +++ b/libjava/classpath/depcomp @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2009-04-28.21; # UTC +scriptversion=2011-12-04.11; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, +# 2011 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ Environment variables: object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. + tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . @@ -90,10 +90,18 @@ if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" + cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -158,10 +166,12 @@ gcc) ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as -## well. +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -405,6 +415,52 @@ tru64) rm -f "$tmpdepfile" ;; +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test "$stat" = 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/ \1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/ / + G + p +}' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. @@ -503,7 +559,9 @@ makedepend) touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation diff --git a/libjava/classpath/doc/cp-tools.texinfo b/libjava/classpath/doc/cp-tools.texinfo index f7a2d245e7d..7b4e747319e 100644 --- a/libjava/classpath/doc/cp-tools.texinfo +++ b/libjava/classpath/doc/cp-tools.texinfo @@ -5,7 +5,20 @@ @settitle GNU Classpath Tools Guide @c %**end of header -@setchapternewpage on +@copying +This file documents the Tools included in a standard distribution of the GNU +Classpath project deliverables. + +Copyright @copyright{} 2006, 2007 Free Software Foundation, Inc. + +@quotation +Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. +@end quotation +@end copying @c Common macros to support generating man pages: @@ -19,12 +32,9 @@ @end macro @ifinfo -This file documents the Tools included in a standard distribution of the GNU -Classpath project deliverables. - -Copyright (C) 2006, 2007 Free Software Foundation, Inc. - @ifnotplaintext +@setchapternewpage on + @dircategory GNU Libraries @direntry * Classpath Tools: (cp-tools). GNU Classpath Tools Guide @@ -38,14 +48,7 @@ Copyright (C) 2006, 2007 Free Software Foundation, Inc. @page @vskip 0pt plus 1filll -Copyright @copyright{} 2006 Free Software Foundation, Inc. -@sp 2 -Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. - +@insertcopying @end titlepage @contents @@ -2435,14 +2438,14 @@ with the header @samp{CVS ID}, you would specify: Let's say that a class javadoc comment contains @smallexample -@@cvsid $Id: cp-tools.texinfo,v 1.7 2008/08/13 13:32:05 jsumali Exp $ +@@cvsid $Id: cp-tools.texinfo,v 1.9 2012/03/07 15:27:27 gnu_andrew Exp $ @end smallexample Then the HTML output will contain something like @smallexample CVS ID: - $Id: cp-tools.texinfo,v 1.7 2008/08/13 13:32:05 jsumali Exp $ + $Id: cp-tools.texinfo,v 1.9 2012/03/07 15:27:27 gnu_andrew Exp $ @end smallexample @end table diff --git a/libjava/classpath/doc/texinfo.tex b/libjava/classpath/doc/texinfo.tex index 91408263bc9..2abda0f3daf 100644 --- a/libjava/classpath/doc/texinfo.tex +++ b/libjava/classpath/doc/texinfo.tex @@ -3,11 +3,11 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2009-08-14.15} +\def\texinfoversion{2012-01-03.09} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009 Free Software Foundation, Inc. +% 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -65,7 +65,6 @@ \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} - \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. @@ -93,14 +92,13 @@ \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ +\let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top -{\catcode`\'=\active -\global\let\ptexquoteright'}% Math-mode def from plain.tex. -\let\ptexraggedright=\raggedright +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. @@ -118,10 +116,11 @@ % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi -\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi -\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi @@ -160,15 +159,18 @@ \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. +\chardef\ampChar = `\& \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! +\chardef\hashChar = `\# \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; +\chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. @@ -199,36 +201,7 @@ % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % -\def\finalout{\overfullrule=0pt} - -% @| inserts a changebar to the left of the current line. It should -% surround any changed text. This approach does *not* work if the -% change spans more than two lines of output. To handle that, we would -% have adopt a much more difficult approach (putting marks into the main -% vertical list for the beginning and end of each change). -% -\def\|{% - % \vadjust can only be used in horizontal mode. - \leavevmode - % - % Append this vertical mode material after the current line in the output. - \vadjust{% - % We want to insert a rule with the height and depth of the current - % leading; that is exactly what \strutbox is supposed to record. - \vskip-\baselineskip - % - % \vadjust-items are inserted at the left edge of the type. So - % the \llap here moves out into the left-hand margin. - \llap{% - % - % For a thicker or thinner bar, change the `1pt'. - \vrule height\baselineskip width1pt - % - % This is the space between the bar and the text. - \hskip 12pt - }% - }% -} +\def\finalout{\overfullrule=0pt } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, @@ -246,7 +219,7 @@ \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen - \ifx\eTeXversion\undefined\else % etex gives us more logging + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 @@ -257,6 +230,13 @@ \errorcontextlines16 }% +% @errormsg{MSG}. Do the index-like expansions on MSG, but if things +% aren't perfect, it's not the end of the world, being an error message, +% after all. +% +\def\errormsg{\begingroup \indexnofonts \doerrormsg} +\def\doerrormsg#1{\errmessage{#1}} + % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % @@ -267,7 +247,6 @@ \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} -% For @cropmarks command. % Do @cropmarks to get crop marks. % \newif\ifcropmarks @@ -577,7 +556,7 @@ } \def\inenvironment#1{% \ifx#1\empty - out of any environment% + outside of any environment% \else in environment \expandafter\string#1% \fi @@ -589,7 +568,7 @@ \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else - % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03 + % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup @@ -599,85 +578,6 @@ \newhelp\EMsimple{Press RETURN to continue.} -%% Simple single-character @ commands - -% @@ prints an @ -% Kludge this until the fonts are right (grr). -\def\@{{\tt\char64}} - -% This is turned off because it was never documented -% and you can use @w{...} around a quote to suppress ligatures. -%% Define @` and @' to be the same as ` and ' -%% but suppressing ligatures. -%\def\`{{`}} -%\def\'{{'}} - -% Used to generate quoted braces. -\def\mylbrace {{\tt\char123}} -\def\myrbrace {{\tt\char125}} -\let\{=\mylbrace -\let\}=\myrbrace -\begingroup - % Definitions to produce \{ and \} commands for indices, - % and @{ and @} for the aux/toc files. - \catcode`\{ = \other \catcode`\} = \other - \catcode`\[ = 1 \catcode`\] = 2 - \catcode`\! = 0 \catcode`\\ = \other - !gdef!lbracecmd[\{]% - !gdef!rbracecmd[\}]% - !gdef!lbraceatcmd[@{]% - !gdef!rbraceatcmd[@}]% -!endgroup - -% @comma{} to avoid , parsing problems. -\let\comma = , - -% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent -% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. -\let\, = \c -\let\dotaccent = \. -\def\ringaccent#1{{\accent23 #1}} -\let\tieaccent = \t -\let\ubaraccent = \b -\let\udotaccent = \d - -% Other special characters: @questiondown @exclamdown @ordf @ordm -% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. -\def\questiondown{?`} -\def\exclamdown{!`} -\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} -\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} - -% Dotless i and dotless j, used for accents. -\def\imacro{i} -\def\jmacro{j} -\def\dotless#1{% - \def\temp{#1}% - \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi - \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi - \else \errmessage{@dotless can be used only with i or j}% - \fi\fi -} - -% The \TeX{} logo, as in plain, but resetting the spacing so that a -% period following counts as ending a sentence. (Idea found in latex.) -% -\edef\TeX{\TeX \spacefactor=1000 } - -% @LaTeX{} logo. Not quite the same results as the definition in -% latex.ltx, since we use a different font for the raised A; it's most -% convenient for us to use an explicitly smaller font, rather than using -% the \scriptstyle font (since we don't reset \scriptstyle and -% \scriptscriptstyle). -% -\def\LaTeX{% - L\kern-.36em - {\setbox0=\hbox{T}% - \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}% - \kern-.15em - \TeX -} - % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and @@ -719,7 +619,7 @@ \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple - \errmessage{Unknown @frenchspacing option `\temp', must be on/off}% + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi } @@ -801,15 +701,6 @@ where each line of input produces a line of output.} \newdimen\mil \mil=0.001in -% Old definition--didn't work. -%\parseargdef\need{\par % -%% This method tries to make TeX break the page naturally -%% if the depth of the box does not fit. -%{\baselineskip=0pt% -%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak -%\prevdepth=-1000pt -%}} - \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. @@ -873,7 +764,7 @@ where each line of input produces a line of output.} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion -% class. WHICH is `l' or `r'. +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} @@ -920,6 +811,36 @@ where each line of input produces a line of output.} \temp } +% @| inserts a changebar to the left of the current line. It should +% surround any changed text. This approach does *not* work if the +% change spans more than two lines of output. To handle that, we would +% have adopt a much more difficult approach (putting marks into the main +% vertical list for the beginning and end of each change). This command +% is not documented, not supported, and doesn't work. +% +\def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% +} + % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} @@ -930,6 +851,7 @@ where each line of input produces a line of output.} \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes @@ -1095,109 +1017,6 @@ where each line of input produces a line of output.} } -% @asis just yields its argument. Used with @table, for example. -% -\def\asis#1{#1} - -% @math outputs its argument in math mode. -% -% One complication: _ usually means subscripts, but it could also mean -% an actual _ character, as in @math{@var{some_variable} + 1}. So make -% _ active, and distinguish by seeing if the current family is \slfam, -% which is what @var uses. -{ - \catcode`\_ = \active - \gdef\mathunderscore{% - \catcode`\_=\active - \def_{\ifnum\fam=\slfam \_\else\sb\fi}% - } -} -% Another complication: we want \\ (and @\) to output a \ character. -% FYI, plain.tex uses \\ as a temporary control sequence (why?), but -% this is not advertised and we don't care. Texinfo does not -% otherwise define @\. -% -% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. -\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} -% -\def\math{% - \tex - \mathunderscore - \let\\ = \mathbackslash - \mathactive - % make the texinfo accent commands work in math mode - \let\"=\ddot - \let\'=\acute - \let\==\bar - \let\^=\hat - \let\`=\grave - \let\u=\breve - \let\v=\check - \let\~=\tilde - \let\dotaccent=\dot - $\finishmath -} -\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. - -% Some active characters (such as <) are spaced differently in math. -% We have to reset their definitions in case the @math was an argument -% to a command which sets the catcodes (such as @item or @section). -% -{ - \catcode`^ = \active - \catcode`< = \active - \catcode`> = \active - \catcode`+ = \active - \catcode`' = \active - \gdef\mathactive{% - \let^ = \ptexhat - \let< = \ptexless - \let> = \ptexgtr - \let+ = \ptexplus - \let' = \ptexquoteright - } -} - -% Some math mode symbols. -\def\bullet{$\ptexbullet$} -\def\geq{\ifmmode \ge\else $\ge$\fi} -\def\leq{\ifmmode \le\else $\le$\fi} -\def\minus{\ifmmode -\else $-$\fi} - -% @dots{} outputs an ellipsis using the current font. -% We do .5em per period so that it has the same spacing in the cm -% typewriter fonts as three actual period characters; on the other hand, -% in other typewriter fonts three periods are wider than 1.5em. So do -% whichever is larger. -% -\def\dots{% - \leavevmode - \setbox0=\hbox{...}% get width of three periods - \ifdim\wd0 > 1.5em - \dimen0 = \wd0 - \else - \dimen0 = 1.5em - \fi - \hbox to \dimen0{% - \hskip 0pt plus.25fil - .\hskip 0pt plus1fil - .\hskip 0pt plus1fil - .\hskip 0pt plus.5fil - }% -} - -% @enddots{} is an end-of-sentence ellipsis. -% -\def\enddots{% - \dots - \spacefactor=\endofsentencespacefactor -} - -% @comma{} is so commas can be inserted into text without messing up -% Texinfo's parsing. -% -\let\comma = , - % @refill is a no-op. \let\refill=\relax @@ -1262,9 +1081,8 @@ where each line of input produces a line of output.} \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 -% can be set). So we test for \relax and 0 as well as \undefined, -% borrowed from ifpdf.sty. -\ifx\pdfoutput\undefined +% can be set). So we test for \relax and 0 as well as being undefined. +\ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else @@ -1279,50 +1097,24 @@ where each line of input produces a line of output.} % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. -% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html -% (and related messages, the final outcome is that it is up to the TeX -% user to double the backslashes and otherwise make the string valid, so -% that's what we do). - -% double active backslashes. -% -{\catcode`\@=0 \catcode`\\=\active - @gdef@activebackslashdouble{% - @catcode`@\=@active - @let\=@doublebackslash} -} - -% To handle parens, we must adopt a different approach, since parens are -% not active characters. hyperref.dtx (which has the same problem as -% us) handles it with this amazing macro to replace tokens, with minor -% changes for Texinfo. It is included here under the GPL by permission -% from the author, Heiko Oberdiek. -% -% #1 is the tokens to replace. -% #2 is the replacement. -% #3 is the control sequence with the string. -% -\def\HyPsdSubst#1#2#3{% - \def\HyPsdReplace##1#1##2\END{% - ##1% - \ifx\\##2\\% - \else - #2% - \HyReturnAfterFi{% - \HyPsdReplace##2\END - }% - \fi - }% - \xdef#3{\expandafter\HyPsdReplace#3#1\END}% -} -\long\def\HyReturnAfterFi#1\fi{\fi#1} - -% #1 is a control sequence in which to do the replacements. -\def\backslashparens#1{% - \xdef#1{#1}% redefine it as its expansion; the definition is simply - % \lastnode when called from \setref -> \pdfmkdest. - \HyPsdSubst{(}{\realbackslash(}{#1}% - \HyPsdSubst{)}{\realbackslash)}{#1}% +% +% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and +% related messages. The final outcome is that it is up to the TeX user +% to double the backslashes and otherwise make the string valid, so +% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to +% do this reliably, so we use it. + +% #1 is a control sequence in which to do the replacements, +% which we \xdef. +\def\txiescapepdf#1{% + \ifx\pdfescapestring\relax + % No primitive available; should we give a warning or log? + % Many times it won't matter. + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images @@ -1384,29 +1176,31 @@ output) for that.)} \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % - % pdftex (and the PDF format) support .png, .jpg, .pdf (among - % others). Let's try in that order. + % pdftex (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. \let\pdfimgext=\empty \begingroup - \openin 1 #1.png \ifeof 1 - \openin 1 #1.jpg \ifeof 1 - \openin 1 #1.jpeg \ifeof 1 - \openin 1 #1.JPG \ifeof 1 - \openin 1 #1.pdf \ifeof 1 - \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% - \else \gdef\pdfimgext{PDF}% + \else \gdef\pdfimgext{JPG}% \fi - \else \gdef\pdfimgext{pdf}% + \else \gdef\pdfimgext{jpeg}% \fi - \else \gdef\pdfimgext{JPG}% + \else \gdef\pdfimgext{jpg}% \fi - \else \gdef\pdfimgext{jpeg}% + \else \gdef\pdfimgext{png}% \fi - \else \gdef\pdfimgext{jpg}% + \else \gdef\pdfimgext{PDF}% \fi - \else \gdef\pdfimgext{png}% + \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup @@ -1434,10 +1228,9 @@ output) for that.)} % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive - \activebackslashdouble \makevalueexpandable \def\pdfdestname{#1}% - \backslashparens\pdfdestname + \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % @@ -1469,29 +1262,24 @@ output) for that.)} % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. - \def\pdfoutlinedest{#3}% + \edef\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else - % Doubled backslashes in the name. - {\activebackslashdouble \xdef\pdfoutlinedest{#3}% - \backslashparens\pdfoutlinedest}% + \txiescapepdf\pdfoutlinedest \fi % - % Also double the backslashes in the display string. - {\activebackslashdouble \xdef\pdfoutlinetext{#1}% - \backslashparens\pdfoutlinetext}% + % Also escape PDF chars in the display string. + \edef\pdfoutlinetext{#1}% + \txiescapepdf\pdfoutlinetext % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup - % Thanh's hack / proper braces in bookmarks - \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace - \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace - % % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% @@ -1545,15 +1333,26 @@ output) for that.)} % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % - % xx to do this right, we have to translate 8-bit characters to - % their "best" equivalent, based on the @documentencoding. Right - % now, I guess we'll just let the pdf reader have its way. + % TODO this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Too + % much work for too little return. Just use the ASCII equivalents + % we use for the index sort strings. + % \indexnofonts \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax @@ -1695,7 +1494,7 @@ output) for that.)} % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) -\ifpdf \ifx\pdffontattr\undefined \else +\ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap @@ -1962,7 +1761,7 @@ end % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. -\ifx\fontprefix\undefined +\ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. @@ -2105,8 +1904,8 @@ end \font\reducedsy=cmsy10 \def\reducedecsize{1000} -% reset the current fonts -\textfonts +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts \rm } % end of 11pt text font size definitions @@ -2236,11 +2035,9 @@ end \font\reducedsy=cmsy9 \def\reducedecsize{0900} -% reduce space between paragraphs -\divide\parskip by 2 - -% reset the current fonts -\textfonts +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts \rm } % end of 10pt text font size definitions @@ -2249,12 +2046,13 @@ end % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % -\def\xword{10} \def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% - \wlog{doing @fonttextsize \textsizearg}% + %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. @@ -2308,7 +2106,7 @@ end \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% - \resetmathfonts \setleading{25pt}} + \resetmathfonts \setleading{27pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl @@ -2436,12 +2234,14 @@ end % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% - \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname + \expandafter\let\expandafter \temp + \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% - \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname + \expandafter\let\expandafter \temp + \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } @@ -2460,22 +2260,26 @@ end \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright +% \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright +% +\let\markupsetuplqsamp \markupsetcodequoteleft +\let\markupsetuprqsamp \markupsetcodequoteright +% \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright +% \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright -\let\markupsetuplqsamp \markupsetnoligaturesquoteleft \let\markupsetuplqkbd \markupsetnoligaturesquoteleft -% Allow an option to not replace quotes with a regular directed right -% quote/apostrophe (char 0x27), but instead use the undirected quote -% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it -% the default, but it works for pasting with more pdf viewers (at least -% evince), the lilypond developers report. xpdf does work with the -% regular 0x27. +% Allow an option to not use regular directed right quote/apostrophe +% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). +% The undirected quote is ugly, so don't make it the default, but it +% works for pasting with more pdf viewers (at least evince), the +% lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax @@ -2499,33 +2303,84 @@ end \else \char'22 \fi } +% Commands to set the quote options. +% +\parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi +} +% +\parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi +} + % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 -%% Add scribe-like font environments, plus @l for inline lisp (usually sans -%% serif) and @ii for TeX italic +% Font commands. -% \smartitalic{ARG} outputs arg in italics, followed by an italic correction -% unless the following character is such as not to need one. -\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else - \ptexslash\fi\fi\fi} -\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} -\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} -% like \smartslanted except unconditionally uses \ttsl. +% Output an italic correction unless \next (presumed to be the following +% character) is such as not to need one. +\def\smartitaliccorrection{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ptexslash + \fi\fi\fi + \aftersmartic +} + +% like \smartslanted except unconditionally uses \ttsl, and no ic. % @var is set to this for defun arguments. -\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} +\def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? -\def\cite#1{{\sl #1}\futurelet\next\smartitalicx} +\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} + +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + \smartslanted{#1}% +} \let\i=\smartitalic \let\slanted=\smartslanted -\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} \let\dfn=\smartslanted \let\emph=\smartitalic @@ -2621,7 +2476,7 @@ end \plainfrenchspacing #1% }% - \null + \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. @@ -2653,6 +2508,8 @@ end } } +\def\codex #1{\tclose{#1}\endgroup} + \def\realdash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% @@ -2666,7 +2523,6 @@ end \discretionary{}{}{}}% {\_}% } -\def\codex #1{\tclose{#1}\endgroup} % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is undesirable in @@ -2686,10 +2542,156 @@ end \allowcodebreaksfalse \else \errhelp = \EMsimple - \errmessage{Unknown @allowcodebreaks option `\txiarg'}% + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } +% @uref (abbreviation for `urlref') takes an optional (comma-separated) +% second argument specifying the text to display and an optional third +% arg as text to display instead of (rather than in addition to) the url +% itself. First (mandatory) arg is the url. +% (This \urefnobreak definition isn't used now, leaving it for a while +% for comparison.) +\def\urefnobreak#1{\dourefnobreak #1,,,\finish} +\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \code{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% This \urefbreak definition is the active one. +\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +\let\uref=\urefbreak +\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% Allow line breaks around only a few characters (only). +\def\urefcatcodes{% + \catcode\ampChar=\active \catcode\dotChar=\active + \catcode\hashChar=\active \catcode\questChar=\active + \catcode\slashChar=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setupmarkupstyle{code}% + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} +} + +% we put a little stretch before and after the breakable chars, to help +% line breaking of long url's. The unequal skips make look better in +% cmtt at least, especially for dots. +\def\urefprestretch{\urefprebreak \hskip0pt plus.13em } +\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } +% +\def\urefcodeamp{\urefprestretch \&\urefpoststretch} +\def\urefcodedot{\urefprestretch .\urefpoststretch} +\def\urefcodehash{\urefprestretch \#\urefpoststretch} +\def\urefcodequest{\urefprestretch ?\urefpoststretch} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprestretch \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpoststretch \fi + } +} + +% One more complication: by default we'll break after the special +% characters, but some people like to break before the special chars, so +% allow that. Also allow no breaking at all, for manual control. +% +\parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +\urefbreakstyle after + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \let\email=\uref +\fi + % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. \def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} @@ -2707,7 +2709,7 @@ end \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple - \errmessage{Unknown @kbdinputstyle option `\txiarg'}% + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} @@ -2735,92 +2737,253 @@ end \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} -% @uref (abbreviation for `urlref') takes an optional (comma-separated) -% second argument specifying the text to display and an optional third -% arg as text to display instead of (rather than in addition to) the url -% itself. First (mandatory) arg is the url. Perhaps eventually put in -% a hypertex \special here. +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % -\def\uref#1{\douref #1,,,\finish} -\def\douref#1,#2,#3,#4\finish{\begingroup - \unsepspaces - \pdfurl{#1}% - \setbox0 = \hbox{\ignorespaces #3}% - \ifdim\wd0 > 0pt - \unhbox0 % third arg given, show only that - \else - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \ifpdf - \unhbox0 % PDF: 2nd arg given, show only it - \else - \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url - \fi - \else - \code{#1}% only url given, so show it - \fi +\def\dmn#1{\thinspace #1} + +% @l was never documented to mean ``switch to the Lisp font'', +% and it is not used as such in any manual I can find. We need it for +% Polish suppressed-l. --karl, 22sep96. +%\def\l#1{{\li #1}\null} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\selectfonts\lsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi - \endlink -\endgroup} + \null % reset \spacefactor=1000 +} -% @url synonym for @uref, since that's how everyone uses it. +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. % -\let\url=\uref +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} -% rms does not like angle brackets --karl, 17may97. -% So now @email is just like @uref, unless we are pdf. +% @asis just yields its argument. Used with @table, for example. % -%\def\email#1{\angleleft{\tt #1}\angleright} -\ifpdf - \def\email#1{\doemail#1,,\finish} - \def\doemail#1,#2,#3\finish{\begingroup - \unsepspaces - \pdfurl{mailto:#1}% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi - \endlink - \endgroup} -\else - \let\email=\uref -\fi +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + $\finishmath +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. +% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, +% except specified as a normal braced arg, so no newlines to worry about. +% +\def\outfmtnametex{tex} +% +\def\inlinefmt#1{\doinlinefmt #1,\finish} +\def\doinlinefmt#1,#2,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi +} +% For raw, must switch into @tex before parsing the argument, to avoid +% setting catcodes prematurely. Doing it this way means that, for +% example, @inlineraw{html, foo{bar} gets a parse error instead of being +% ignored. But this isn't important because if people want a literal +% *right* brace they would have to use a command anyway, so they may as +% well use a command to get a left brace too. We could re-use the +% delimiter character idea from \verb, but it seems like overkill. +% +\def\inlineraw{\tex \doinlineraw} +\def\doinlineraw#1{\doinlinerawtwo #1,\finish} +\def\doinlinerawtwo#1,#2,\finish{% + \def\inlinerawname{#1}% + \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi + \endgroup % close group opened by \tex. +} + + +\message{glyphs,} +% and logos. + +% @@ prints an @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +% Unless we're in typewriter, use \ecfont because the CM text fonts do +% not have braces, and we don't want to switch into math. +\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} +\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} +\let\{=\mylbrace \let\lbracechar=\{ +\let\}=\myrbrace \let\rbracechar=\} +\begingroup + % Definitions to produce \{ and \} commands for indices, + % and @{ and @} for the aux/toc files. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% +!endgroup + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} -% Typeset a dimension, e.g., `in' or `pt'. The only reason for the -% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) % -\def\dmn#1{\thinspace #1} - -% @l was never documented to mean ``switch to the Lisp font'', -% and it is not used as such in any manual I can find. We need it for -% Polish suppressed-l. --karl, 22sep96. -%\def\l#1{{\li #1}\null} +\edef\TeX{\TeX \spacefactor=1000 } -% @acronym for "FBI", "NATO", and the like. -% We print this one point size smaller, since it's intended for -% all-uppercase. +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). % -\def\acronym#1{\doacronym #1,,\finish} -\def\doacronym#1,#2,#3\finish{% - {\selectfonts\lsize #1}% - \def\temp{#2}% - \ifx\temp\empty \else - \space ({\unsepspaces \ignorespaces \temp \unskip})% - \fi +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \selectfonts\lllsize A% + \fi + }% + \vss + }}% + \kern-.15em + \TeX } -% @abbr for "Comput. J." and the like. -% No font change, but don't do end-of-sentence spacing. +% Some math mode symbols. +\def\bullet{$\ptexbullet$} +\def\geq{\ifmmode \ge\else $\ge$\fi} +\def\leq{\ifmmode \le\else $\le$\fi} +\def\minus{\ifmmode -\else $-$\fi} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. % -\def\abbr#1{\doabbr #1,,\finish} -\def\doabbr#1,#2,#3\finish{% - {\plainfrenchspacing #1}% - \def\temp{#2}% - \ifx\temp\empty \else - \space ({\unsepspaces \ignorespaces \temp \unskip})% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% } - -\message{glyphs,} +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % @@ -2842,7 +3005,7 @@ end {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} +\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. @@ -2991,7 +3154,7 @@ end % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % -\ifx\Orb\undefined +\ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi @@ -3019,8 +3182,9 @@ end \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue -\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} +\parseargdef\shorttitlepage{% + \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. @@ -3080,7 +3244,7 @@ end \finishedtitlepagetrue } -%%% Macros to be used within @titlepage: +% Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} @@ -3113,7 +3277,7 @@ end } -%%% Set up page headings and footings. +% Set up page headings and footings. \let\thispage=\folio @@ -3207,10 +3371,14 @@ end \def\headings #1 {\csname HEADINGS#1\endcsname} -\def\HEADINGSoff{% -\global\evenheadline={\hfil} \global\evenfootline={\hfil} -\global\oddheadline={\hfil} \global\oddfootline={\hfil}} -\HEADINGSoff +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting +\HEADINGSoff % it's the default + % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document @@ -3261,7 +3429,7 @@ end % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). -\ifx\today\undefined +\ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month @@ -3322,7 +3490,7 @@ end \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent - \advance\rightskip by0pt plus1fil + \advance\rightskip by0pt plus1fil\relax \leavevmode\unhbox0\par \endgroup % @@ -3808,18 +3976,18 @@ end \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi -%% Test to see if parskip is larger than space between lines of -%% table. If not, do nothing. -%% If so, set to same dimension as multitablelinespace. +% Test to see if parskip is larger than space between lines of +% table. If not, do nothing. +% If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. \fi} @@ -4134,11 +4302,14 @@ end \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % - % Need these in case \tex is in effect and \{ is a \delimiter again. - % But can't use \lbracecmd and \rbracecmd because texindex assumes - % braces and backslashes are used only as delimiters. - \let\{ = \mylbrace - \let\} = \myrbrace + % Need these unexpandable (because we define \tt as a dummy) + % definitions when @{ or @} appear in index entry text. Also, more + % complicated, when \tex is in effect and \{ is a \delimiter again. + % We can't use \lbracecmd and \rbracecmd because texindex assumes + % braces and backslashes are used only as delimiters. Perhaps we + % should define @lbrace and @rbrace commands a la @comma. + \def\{{{\tt\char123}}% + \def\}{{\tt\char125}}% % % I don't entirely understand this, but when an index entry is % generated from a macro call, the \endinput which \scanmacro inserts @@ -4191,7 +4362,7 @@ end \def\commondummies{% % % \definedummyword defines \#1 as \string\#1\space, thus effectively - % preventing its expansion. This is used only for control% words, + % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. @@ -4210,6 +4381,7 @@ end \commondummiesnofonts % \definedummyletter\_% + \definedummyletter\-% % % Non-English letters. \definedummyword\AA @@ -4246,20 +4418,24 @@ end \definedummyword\TeX % % Assorted special characters. + \definedummyword\arrow \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots + \definedummyword\entrybreak \definedummyword\equiv \definedummyword\error \definedummyword\euro + \definedummyword\expansion + \definedummyword\geq \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright - \definedummyword\expansion + \definedummyword\leq \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds @@ -4316,19 +4492,24 @@ end \definedummyword\b \definedummyword\i \definedummyword\r + \definedummyword\sansserif \definedummyword\sc + \definedummyword\slanted \definedummyword\t % % Commands that take arguments. \definedummyword\acronym + \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn + \definedummyword\dmn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file + \definedummyword\indicateurl \definedummyword\kbd \definedummyword\key \definedummyword\math @@ -4356,7 +4537,7 @@ end \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% - % Hopefully, all control words can become @asis. + % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent % \commondummiesnofonts @@ -4368,8 +4549,14 @@ end % \def\ { }% \def\@{@}% - % how to handle braces? \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + % Unfortunately, texindex is not prepared to handle braces in the + % content at all. So for index sorting, we map @{ and @} to strings + % starting with |, since that ASCII character is between ASCII { and }. + \def\{{|a}% + \def\}{|b}% % % Non-English letters. \def\AA{AA}% @@ -4397,6 +4584,7 @@ end % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) + \def\arrow{->}% \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% @@ -4406,10 +4594,12 @@ end \def\error{error}% \def\euro{euro}% \def\expansion{==>}% + \def\geq{>=}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% + \def\leq{<=}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% @@ -4424,6 +4614,9 @@ end \def\result{=>}% \def\textdegree{o}% % + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax + \else \indexlquoteignore \fi + % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up @@ -4437,6 +4630,11 @@ end \macrolist } +% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us +% ignore left quotes in the sort term. +{\catcode`\`=\active + \gdef\indexlquoteignore{\let`=\empty}} + \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? @@ -4694,7 +4892,6 @@ end % But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. -% % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% @@ -4731,10 +4928,17 @@ end % columns. \vskip 0pt plus1pt % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% + % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } +\def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent @@ -4967,7 +5171,22 @@ end \message{sectioning,} % Chapters, sections, etc. -% \unnumberedno is an oxymoron, of course. But we count the unnumbered +% Let's start with @part. +\outer\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rmisbold #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 @@ -5046,8 +5265,8 @@ end \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. -% To achive this, remember the "biggest" unnum. sec. we are currently in: -\chardef\unmlevel = \maxseclevel +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. @@ -5072,8 +5291,8 @@ end % The heading type: \def\headtype{#1}% \if \headtype U% - \ifnum \absseclevel < \unmlevel - \chardef\unmlevel = \absseclevel + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: @@ -5085,10 +5304,10 @@ end \fi\fi \fi % Check for numbered within unnumbered: - \ifnum \absseclevel > \unmlevel + \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else - \chardef\unmlevel = 3 + \chardef\unnlevel = 3 \fi \fi % Now print the heading: @@ -5174,7 +5393,8 @@ end \global\let\subsubsection = \appendixsubsubsec } -\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 @@ -5218,40 +5438,47 @@ end \let\top\unnumbered % Sections. +% \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } -\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz +% normally calls appendixsectionzzz: +\outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection -\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. -\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz +% +% normally calls numberedsubseczzz: +\outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } -\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz +% normally calls appendixsubseczzz: +\outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } -\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% @@ -5259,21 +5486,25 @@ end } % Subsubsections. -\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz +% +% normally numberedsubsubseczzz: +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } -\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz +% normally appendixsubsubseczzz: +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } -\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% @@ -5323,14 +5554,13 @@ end % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. -%%% Args are the skip and penalty (usually negative) +% Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} -%%% Define plain chapter starts, and page on/off switching for it % Parameter controlling skip before chapter headings (if needed) - \newskip\chapheadingskip +% Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % Because \domark is called before \chapoddpage, the filler page will @@ -5340,9 +5570,8 @@ end \chappager \ifodd\pageno \else \begingroup - \evenheadline={\hfil}\evenfootline={\hfil}% - \oddheadline={\hfil}\oddfootline={\hfil}% - \hbox to 0pt{}% + \headingsoff + \null \chappager \endgroup \fi @@ -5534,6 +5763,8 @@ end % \def\sectionheading#1#2#3#4{% {% + \checkenv{}% should not be in an environment. + % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % @@ -5651,7 +5882,6 @@ end % This is purely so the last item on the list is a known \penalty > % 10000. This is so \startdefun can avoid allowing breakpoints after % section headings. Otherwise, it would insert a valid breakpoint between: - % % @section sec-whatever % @deffn def-whatever \penalty 10001 @@ -5785,6 +6015,7 @@ end \def\summarycontents{% \startcontents{\putwordShortTOC}% % + \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry @@ -5840,6 +6071,19 @@ end % The last argument is the page number. % The arguments in between are the chapter number, section number, ... +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % @@ -5929,9 +6173,9 @@ end \message{environments,} % @foo ... @end foo. -% @tex ... @end tex escapes into raw Tex temporarily. +% @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. -% But \@ or @@ will get a plain tex @ character. +% But \@ or @@ will get a plain @ character. \envdef\tex{% \setupmarkupstyle{tex}% @@ -5948,6 +6192,10 @@ end \catcode`\'=\other \escapechar=`\\ % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc @@ -6051,6 +6299,12 @@ end \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% + % + % If this cartouche directly follows a sectioning command, we need the + % \parskip glue (backspaced over by default) or the cartouche can + % collide with the section heading. + \ifnum\lastpenalty>10000 \vskip\parskip \fi + % \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop @@ -6064,7 +6318,7 @@ end \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip - \comment % For explanation, see the end of \def\group. + \comment % For explanation, see the end of def\group. } \def\Ecartouche{% \ifhmode\par\fi @@ -6150,41 +6404,42 @@ end } % We often define two environments, @foo and @smallfoo. -% Let's do it by one command: -\def\makedispenv #1#2{ - \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2} - \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2} +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } -% Define two synonyms: -\def\maketwodispenvs #1#2#3{ - \makedispenv{#1}{#3} - \makedispenv{#2}{#3} +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% } - -% @lisp: indented, narrowed, typewriter font; @example: same as @lisp. +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % -\maketwodispenvs {lisp}{example}{% +\maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return + \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % -\makedispenv {display}{% +\makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % -\makedispenv{format}{% +\makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble @@ -6203,7 +6458,7 @@ end \envdef\flushright{% \let\nonarrowing = t% \nonfillstart - \advance\leftskip by 0pt plus 1fill + \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak @@ -6238,6 +6493,8 @@ end % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % +\makedispenvdef{quotation}{\quotationstart} +% \def\quotationstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt @@ -6253,28 +6510,18 @@ end \parsearg\quotationlabel } -\envdef\quotation{% - \setnormaldispenv - \quotationstart -} - -\envdef\smallquotation{% - \setsmalldispenv - \quotationstart -} -\let\Esmallquotation = \Equotation - % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par - \ifx\quotationauthor\undefined\else + \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } +\def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% @@ -6331,21 +6578,28 @@ end % Setup for the @verbatim environment % -% Real tab expansion +% Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % -\def\starttabbox{\setbox0=\hbox\bgroup} +% We typeset each line of the verbatim in an \hbox, so we can handle +% tabs. The \global is in case the verbatim line starts with an accent, +% or some other command that starts with a begin-group. Otherwise, the +% entire \verbbox would disappear at the corresponding end-group, before +% it is typeset. Meanwhile, we can't have nested verbatim commands +% (can we?), so the \global won't be overwriting itself. +\newbox\verbbox +\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup - \dimen0=\wd0 % the width so far, or since the previous tab - \divide\dimen0 by\tabw - \multiply\dimen0 by\tabw % compute previous multiple of \tabw - \advance\dimen0 by\tabw % advance to next multiple of \tabw - \wd0=\dimen0 \box0 \starttabbox + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox }% } \endgroup @@ -6354,15 +6608,16 @@ end \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart - % Easiest (and conventionally used) font for verbatim - \tt - \def\par{\leavevmode\egroup\box0\endgraf}% + \tt % easiest (and conventionally used) font for verbatim + % The \leavevmode here is for blank lines. Otherwise, we would + % never \starttabox and the \egroup would end verbatim mode. + \def\par{\leavevmode\egroup\box\verbbox\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and - % make each space count - % must do in this order: + % make each space count. + % Must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } @@ -6419,6 +6674,7 @@ end \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% @@ -6468,7 +6724,7 @@ end % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % - % As a minor refinement, we avoid "club" headers by signalling + % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. @@ -6505,7 +6761,7 @@ end #1#2 \endheader % common ending: \interlinepenalty = 10000 - \advance\rightskip by 0pt plus 1fil + \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx @@ -6535,13 +6791,36 @@ end \def\domakedefun#1#2#3{% \envdef#1{% \startdefun + \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } -%%% Untyped functions: +\newif\ifdoingtypefn % doing typed function? +\newif\ifrettypeownline % typeset return type on its own line? + +% @deftypefnnewline on|off says whether the return type of typed functions +% are printed on their own line. This affects @deftypefn, @deftypefun, +% @deftypeop, and @deftypemethod. +% +\parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi +} + +% Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} @@ -6560,7 +6839,7 @@ end \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } -%%% Typed functions: +% Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} @@ -6575,10 +6854,11 @@ end % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% + \doingtypefntrue \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } -%%% Typed variables: +% Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} @@ -6596,7 +6876,7 @@ end \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } -%%% Untyped variables: +% Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } @@ -6607,7 +6887,8 @@ end % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } -%%% Type: +% Types: + % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% @@ -6635,25 +6916,49 @@ end % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% + \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % - % How we'll format the type name. Putting it in brackets helps + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else + \rettypeownlinetrue + \fi + \fi + % + % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % - % Figure out line sizes for the paragraph shape. + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent - % (plain.tex says that \dimen1 should be used only as global.) - \parshape 2 0in \dimen0 \defargsindent \dimen2 % - % Put the type name to the right margin. + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize @@ -6675,8 +6980,16 @@ end % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt - \def\temp{#2}% return value type - \ifx\temp\empty\else \tclose{\temp} \fi + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm @@ -6794,7 +7107,7 @@ end % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. -\ifx\eTeXversion\undefined +\ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% @@ -6805,25 +7118,30 @@ end } \fi -\def\scanmacro#1{% - \begingroup - \newlinechar`\^^M - \let\xeatspaces\eatspaces - % Undo catcode changes of \startcontents and \doprintindex - % When called from @insertcopying or (short)caption, we need active - % backslash to get it printed correctly. Previously, we had - % \catcode`\\=\other instead. We'll see whether a problem appears - % with macro expansion. --kasal, 19aug04 - \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ - % ... and \example - \spaceisspace - % - % Append \endinput to make sure that TeX does not see the ending newline. - % I've verified that it is necessary both for e-TeX and for ordinary TeX - % --kasal, 29nov03 - \scantokens{#1\endinput}% - \endgroup -} +\def\scanmacro#1{\begingroup + \newlinechar`\^^M + \let\xeatspaces\eatspaces + % + % Undo catcode changes of \startcontents and \doprintindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % + % ... and for \example: + \spaceisspace + % + % The \empty here causes a following catcode 5 newline to be eaten as + % part of reading whitespace after a control sequence. It does not + % eat a catcode 13 newline. There's no good way to handle the two + % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX + % would then have different behavior). See the Macro Details node in + % the manual for the workaround we recommend for macros and + % line-oriented commands. + % + \scantokens{#1\empty}% +\endgroup} \def\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% @@ -6877,17 +7195,18 @@ end % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active -% (as in normal texinfo). It is necessary to change the definition of \. - +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. - +% % It's necessary to have hard CRs when the macro is executed. This is -% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. - -\def\scanctxt{% +% +\def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other @@ -6900,13 +7219,13 @@ end \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } -\def\scanargctxt{% +\def\scanargctxt{% used for copying and captions, not macros. \scanctxt \catcode`\\=\other \catcode`\^^M=\other } -\def\macrobodyctxt{% +\def\macrobodyctxt{% used for @macro definitions \scanctxt \catcode`\{=\other \catcode`\}=\other @@ -6914,32 +7233,56 @@ end \usembodybackslash } -\def\macroargctxt{% +\def\macroargctxt{% used when scanning invocations \scanctxt - \catcode`\\=\other + \catcode`\\=0 } +% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" +% for the single characters \ { }. Thus, we end up with the "commands" +% that would be written @\ @{ @} in a Texinfo document. +% +% We already have @{ and @}. For @\, we define it here, and only for +% this purpose, to produce a typewriter backslash (so, the @\ that we +% define for @math can't be used with @macro calls): +% +\def\\{\normalbackslash}% +% +% We would like to do this for \, too, since that is what makeinfo does. +% But it is not possible, because Texinfo already has a command @, for a +% cedilla accent. Documents must use @comma{} instead. +% +% \anythingelse will almost certainly be an error of some kind. + % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. - +% {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} +\def\margbackslash#1{\char`\#1 } + \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% - \getargs{#1}% now \macname is the macname and \argl the arglist + \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments - \paramno=0% + \paramno=0\relax \else \expandafter\parsemargdef \argl;% + \if\paramno>256\relax + \ifx\eTeXversion\thisisundefined + \errhelp = \EMsimple + \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} + \fi + \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% @@ -6986,46 +7329,269 @@ end % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} -\def\getmacname #1 #2\relax{\macname={#1}} +\def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} +% For macro processing make @ a letter so that we can make Texinfo private macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + % Parse the optional {params} list. Set up \paramno and \paramlist -% so \defmacro knows what to do. Define \macarg.blah for each blah -% in the params list, to be ##N where N is the position in that list. +% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH +% in the params list to some hook where the argument si to be expanded. If +% there are less than 10 arguments that hook is to be replaced by ##N where N +% is the position in that list, that is to say the macro arguments are to be +% defined `a la TeX in the macro body. +% % That gets used by \mbodybackslash (above). - +% % We need to get `macro parameter char #' into several definitions. -% The technique used is stolen from LaTeX: let \hash be something +% The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. - -\def\parsemargdef#1;{\paramno=0\def\paramlist{}% - \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} +% +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime underwhich the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, you need that no macro has more than 256 arguments, otherwise an +% error is produced. +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + \let\xeatspaces\relax + \parsemargdefxxx#1,;,% + % In case that there are 10 or more arguments we parse again the arguments + % list to set new definitions for the \macarg.BLAH macros corresponding to + % each BLAH argument. It was anyhow needed to parse already once this list + % in order to count the arguments, and as macros with at most 9 arguments + % are by far more frequent than macro with 10 or more arguments, defining + % twice the \macarg.BLAH macros does not cost too much processing power. + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx - \advance\paramno by 1% + \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} +\def\parsemmanyargdef@@#1,{% + \if#1;\let\next=\relax + \else + \let\next=\parsemmanyargdef@@ + \edef\tempb{\eatspaces{#1}}% + \expandafter\def\expandafter\tempa + \expandafter{\csname macarg.\tempb\endcsname}% + % Note that we need some extra \noexpand\noexpand, this is because we + % don't want \the to be expanded in the \parsermacbody as it uses an + % \xdef . + \expandafter\edef\tempa + {\noexpand\noexpand\noexpand\the\toks\the\paramno}% + \advance\paramno by 1\relax + \fi\next} + % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) +% +\catcode `\@\texiatcatcode \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% +\catcode `\@=11\relax + +\let\endargs@\relax +\let\nil@\relax +\def\nilm@{\nil@}% +\long\def\nillm@{\nil@}% + +% This macro is expanded during the Texinfo macro expansion, not during its +% definition. It gets all the arguments values and assigns them to macros +% macarg.ARGNAME +% +% #1 is the macro name +% #2 is the list of argument names +% #3 is the list of argument values +\def\getargvals@#1#2#3{% + \def\macargdeflist@{}% + \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. + \def\paramlist{#2,\nil@}% + \def\macroname{#1}% + \begingroup + \macroargctxt + \def\argvaluelist{#3,\nil@}% + \def\@tempa{#3}% + \ifx\@tempa\empty + \setemptyargvalues@ + \else + \getargvals@@ + \fi +} + +% +\def\getargvals@@{% + \ifx\paramlist\nilm@ + % Some sanity check needed here that \argvaluelist is also empty. + \ifx\argvaluelist\nillm@ + \else + \errhelp = \EMsimple + \errmessage{Too many arguments in macro `\macroname'!}% + \fi + \let\next\macargexpandinbody@ + \else + \ifx\argvaluelist\nillm@ + % No more arguments values passed to macro. Set remaining named-arg + % macros to empty. + \let\next\setemptyargvalues@ + \else + % pop current arg name into \@tempb + \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% + \expandafter\@tempa\expandafter{\paramlist}% + % pop current argument value into \@tempc + \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% + \expandafter\@tempa\expandafter{\argvaluelist}% + % Here \@tempb is the current arg name and \@tempc is the current arg value. + % First place the new argument macro definition into \@tempd + \expandafter\macname\expandafter{\@tempc}% + \expandafter\let\csname macarg.\@tempb\endcsname\relax + \expandafter\def\expandafter\@tempe\expandafter{% + \csname macarg.\@tempb\endcsname}% + \edef\@tempd{\long\def\@tempe{\the\macname}}% + \push@\@tempd\macargdeflist@ + \let\next\getargvals@@ + \fi + \fi + \next +} + +\def\push@#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}% +} + +% Replace arguments by their values in the macro body, and place the result +% in macro \@tempa +\def\macvalstoargs@{% + % To do this we use the property that token registers that are \the'ed + % within an \edef expand only once. So we are going to place all argument + % values into respective token registers. + % + % First we save the token context, and initialize argument numbering. + \begingroup + \paramno0\relax + % Then, for each argument number #N, we place the corresponding argument + % value into a new token list register \toks#N + \expandafter\putargsintokens@\saveparamlist@,;,% + % Then, we expand the body so that argument are replaced by their + % values. The trick for values not to be expanded themselves is that they + % are within tokens and that tokens expand only once in an \edef . + \edef\@tempc{\csname mac.\macroname .body\endcsname}% + % Now we restore the token stack pointer to free the token list registers + % which we have used, but we make sure that expanded body is saved after + % group. + \expandafter + \endgroup + \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% + } + +\def\macargexpandinbody@{% + %% Define the named-macro outside of this group and then close this group. + \expandafter + \endgroup + \macargdeflist@ + % First the replace in body the macro arguments by their values, the result + % is in \@tempa . + \macvalstoargs@ + % Then we point at the \norecurse or \gobble (for recursive) macro value + % with \@tempb . + \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname + % Depending on whether it is recursive or not, we need some tailing + % \egroup . + \ifx\@tempb\gobble + \let\@tempc\relax + \else + \let\@tempc\egroup + \fi + % And now we do the real job: + \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% + \@tempd +} + +\def\putargsintokens@#1,{% + \if#1;\let\next\relax + \else + \let\next\putargsintokens@ + % First we allocate the new token list register, and give it a temporary + % alias \@tempb . + \toksdef\@tempb\the\paramno + % Then we place the argument value into that token list register. + \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname + \expandafter\@tempb\expandafter{\@tempa}% + \advance\paramno by 1\relax + \fi + \next +} + +% Save the token stack pointer into macro #1 +\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} +% Restore the token stack pointer from number in macro #1 +\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} +% newtoks that can be used non \outer . +\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} + +% Tailing missing arguments are set to empty +\def\setemptyargvalues@{% + \ifx\paramlist\nilm@ + \let\next\macargexpandinbody@ + \else + \expandafter\setemptyargvaluesparser@\paramlist\endargs@ + \let\next\setemptyargvalues@ + \fi + \next +} + +\def\setemptyargvaluesparser@#1,#2\endargs@{% + \expandafter\def\expandafter\@tempa\expandafter{% + \expandafter\def\csname macarg.#1\endcsname{}}% + \push@\@tempa\macargdeflist@ + \def\paramlist{#2}% +} + +% #1 is the element target macro +% #2 is the list macro +% #3,#4\endargs@ is the list value +\def\pop@#1#2#3,#4\endargs@{% + \def#1{#3}% + \def#2{#4}% +} +\long\def\longpop@#1#2#3,#4\endargs@{% + \long\def#1{#3}% + \long\def#2{#4}% +} -% This defines the macro itself. There are six cases: recursive and -% nonrecursive macros of zero, one, and many arguments. +% This defines a Texinfo @macro. There are eight cases: recursive and +% nonrecursive macros of zero, one, up to nine, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. +% \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive @@ -7040,17 +7606,25 @@ end \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \else + \ifnum\paramno<10\relax % at most 9 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \else % 10 or more + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi \fi \else \ifcase\paramno @@ -7067,29 +7641,40 @@ end \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \expandafter\noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% + \else % at most 9 + \ifnum\paramno<10\relax + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \expandafter\noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse + \fi \fi \fi} +\catcode `\@\texiatcatcode\relax + \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence -% as an argument (by \parsebrace or \parsearg) +% as an argument (by \parsebrace or \parsearg). +% \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else @@ -7099,7 +7684,8 @@ end % @alias. % We need some trickery to remove the optional spaces around the equal -% sign. Just make them active and then expand them all to nothing. +% sign. Make them active and then expand them all to nothing. +% \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% @@ -7120,7 +7706,8 @@ end % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, +\def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in @@ -7181,11 +7768,32 @@ end \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. - \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } +% @xrefautosectiontitle on|off says whether @section(ing) names are used +% automatically in xrefs, if the third arg is not explicitly specified. +% This was provided as a "secret" @set xref-automatic-section-title +% variable, now it's official. +% +\parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi +} + + % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed @@ -7202,7 +7810,7 @@ end \setbox0=\hbox{\printedrefname\unskip}% \ifdim \wd0 = 0pt % No printed node name was explicitly given. - \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax % Use the node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else @@ -7231,9 +7839,8 @@ end % etc. don't get their TeX definitions. \getfilename{#4}% % - % See comments at \activebackslashdouble. - {\activebackslashdouble \xdef\pdfxrefdest{#1}% - \backslashparens\pdfxrefdest}% + \edef\pdfxrefdest{#1}% + \txiescapepdf\pdfxrefdest % \leavevmode \startlink attr{/Border [0 0 0]}% @@ -7357,7 +7964,8 @@ end \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue @@ -7521,7 +8129,7 @@ end % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } -% @footnotestyle is meaningful for info output only. +% @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 @@ -7584,6 +8192,8 @@ end % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut + % + % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 @@ -7671,7 +8281,7 @@ end it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% - \ifx\epsfbox\undefined + \ifx\epsfbox\thisiundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% @@ -7687,7 +8297,7 @@ end % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. -% #6 is just the usual extra ignored arg for parsing this stuff. +% #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example @@ -8136,7 +8746,7 @@ directory should work if nowhere else does.} % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% - \gdef^^a0{~} + \gdef^^a0{\tie} \gdef^^a1{\exclamdown} \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} @@ -8166,7 +8776,7 @@ directory should work if nowhere else does.} \gdef^^b9{$^1$} \gdef^^ba{\ordm} % - \gdef^^bb{\guilletright} + \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} @@ -8258,7 +8868,7 @@ directory should work if nowhere else does.} % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% - \gdef^^a0{~} + \gdef^^a0{\tie} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} @@ -8339,8 +8949,8 @@ directory should work if nowhere else does.} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} - \gdef^^ed{\'\i} - \gdef^^ee{\^\i} + \gdef^^ed{\'{\dotless{i}}} + \gdef^^ee{\^{\dotless{i}}} \gdef^^ef{\v d} % \gdef^^f0{\dh} @@ -8431,7 +9041,7 @@ directory should work if nowhere else does.} \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax - \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% + %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% @@ -8899,8 +9509,8 @@ directory should work if nowhere else does.} % Prevent underfull vbox error messages. \vbadness = 10000 -% Don't be so finicky about underfull hboxes, either. -\hbadness = 2000 +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 @@ -9107,28 +9717,21 @@ directory should work if nowhere else does.} \message{and turning on texinfo input format.} +\def^^L{\par} % remove \outer, so ^L can appear in an @comment + % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. -\catcode`\"=\other -\catcode`\~=\other -\catcode`\^=\other -\catcode`\_=\other -\catcode`\|=\other -\catcode`\<=\other -\catcode`\>=\other -\catcode`\+=\other -\catcode`\$=\other -\def\normaldoublequote{"} -\def\normaltilde{~} -\def\normalcaret{^} -\def\normalunderscore{_} -\def\normalverticalbar{|} -\def\normalless{<} -\def\normalgreater{>} -\def\normalplus{+} -\def\normaldollar{$}%$ font-lock fix +\catcode`\"=\other \def\normaldoublequote{"} +\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix +\catcode`\+=\other \def\normalplus{+} +\catcode`\<=\other \def\normalless{<} +\catcode`\>=\other \def\normalgreater{>} +\catcode`\^=\other \def\normalcaret{^} +\catcode`\_=\other \def\normalunderscore{_} +\catcode`\|=\other \def\normalverticalbar{|} +\catcode`\~=\other \def\normaltilde{~} % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, @@ -9206,14 +9809,24 @@ directory should work if nowhere else does.} % In texinfo, backslash is an active character; it prints the backslash % in fixed width font. -\catcode`\\=\active -@def@normalbackslash{{@tt@backslashcurfont}} +\catcode`\\=\active % @ for escape char from now on. + +% The story here is that in math mode, the \char of \backslashcurfont +% ends up printing the roman \ from the math symbol font (because \char +% in math mode uses the \mathcode, and plain.tex sets +% \mathcode`\\="026E). It seems better for @backslashchar{} to always +% print a typewriter backslash, hence we use an explicit \mathchar, +% which is the decimal equivalent of "715c (class 7, e.g., use \fam; +% ignored family value; char position "5C). We can't use " for the +% usual hex value because it has already been made active. +@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. + % On startup, @fixbackslash assigns: % @let \ = @normalbackslash - % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with -% catcode other. +% catcode other. We switch back and forth between these. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} @@ -9221,16 +9834,16 @@ directory should work if nowhere else does.} % the literal character `\'. % @def@normalturnoffactive{% - @let\=@normalbackslash @let"=@normaldoublequote - @let~=@normaltilde + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar - @let<=@normalless - @let>=@normalgreater - @let+=@normalplus - @let$=@normaldollar %$ font-lock fix + @let~=@normaltilde @markupsetuplqdefault @markupsetuprqdefault @unsepspaces @@ -9262,10 +9875,19 @@ directory should work if nowhere else does.} % Say @foo, not \foo, in error messages. @escapechar = `@@ +% These (along with & and #) are made active for url-breaking, so need +% active definitions as the normal characters. +@def@normaldot{.} +@def@normalquest{?} +@def@normalslash{/} + % These look ok in all fonts, so just make them not special. -@catcode`@& = @other -@catcode`@# = @other -@catcode`@% = @other +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we diff --git a/libjava/classpath/examples/gnu/classpath/examples/swing/Demo.java b/libjava/classpath/examples/gnu/classpath/examples/swing/Demo.java index 772df6a3bba..bed08d481d9 100644 --- a/libjava/classpath/examples/gnu/classpath/examples/swing/Demo.java +++ b/libjava/classpath/examples/gnu/classpath/examples/swing/Demo.java @@ -1,5 +1,5 @@ /* SwingDemo.java -- An example of using the javax.swing UI. - Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath examples. @@ -225,7 +225,7 @@ public class Demo Method m = null; try { - m = MetalLookAndFeel.class.getMethod("getCurrentTheme", null); + m = MetalLookAndFeel.class.getMethod("getCurrentTheme"); } catch (NoSuchMethodException nsme) { diff --git a/libjava/classpath/gnu/java/security/Properties.java b/libjava/classpath/gnu/java/security/Properties.java index 2213bde0607..1a4bf2276dc 100644 --- a/libjava/classpath/gnu/java/security/Properties.java +++ b/libjava/classpath/gnu/java/security/Properties.java @@ -1,5 +1,5 @@ /* Properties.java -- run-time configuration properties. - Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -54,7 +54,8 @@ import java.util.logging.Logger; */ public final class Properties { - private static final Logger log = Logger.getLogger(Properties.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(Properties.class.getName()) : null; public static final String VERSION = "gnu.crypto.version"; diff --git a/libjava/classpath/gnu/java/security/der/DERWriter.java b/libjava/classpath/gnu/java/security/der/DERWriter.java index 0c26336053c..cea3fa31dfc 100644 --- a/libjava/classpath/gnu/java/security/der/DERWriter.java +++ b/libjava/classpath/gnu/java/security/der/DERWriter.java @@ -1,5 +1,5 @@ /* DERWriter.java -- write Java types in DER format. - Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -281,9 +281,9 @@ public class DERWriter implements DER private static byte[] toUtf8(String string) { - ByteArrayOutputStream buf = - new ByteArrayOutputStream((int)(string.length() * 1.5)); - for (int i = 0; i < string.length(); i++) + int len = string.length(); + ByteArrayOutputStream buf = new ByteArrayOutputStream(len + (len >> 1)); + for (int i = 0; i < len; i++) { char c = string.charAt(i); if (c < 0x0080) diff --git a/libjava/classpath/gnu/java/security/hash/Whirlpool.java b/libjava/classpath/gnu/java/security/hash/Whirlpool.java index 574104074bb..29eed59ba60 100644 --- a/libjava/classpath/gnu/java/security/hash/Whirlpool.java +++ b/libjava/classpath/gnu/java/security/hash/Whirlpool.java @@ -1,5 +1,5 @@ /* Whirlpool.java -- - Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -67,7 +67,9 @@ import java.util.logging.Logger; public final class Whirlpool extends BaseHash { - private static final Logger log = Logger.getLogger(Whirlpool.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(Whirlpool.class.getName()) : null; + private static final int BLOCK_SIZE = 64; // inner block size in bytes /** The digest of the 0-bit long message. */ diff --git a/libjava/classpath/gnu/java/security/jce/sig/EncodedKeyFactory.java b/libjava/classpath/gnu/java/security/jce/sig/EncodedKeyFactory.java index 19ec088c555..ec742013863 100644 --- a/libjava/classpath/gnu/java/security/jce/sig/EncodedKeyFactory.java +++ b/libjava/classpath/gnu/java/security/jce/sig/EncodedKeyFactory.java @@ -1,5 +1,5 @@ /* EncodedKeyFactory.java -- JCE Encoded key factory Adapter - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -78,7 +78,8 @@ import javax.crypto.spec.DHPublicKeySpec; public class EncodedKeyFactory extends KeyFactorySpi { - private static final Logger log = Logger.getLogger(EncodedKeyFactory.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(EncodedKeyFactory.class.getName()) : null; private static Object invokeConstructor(String className, Object[] params) throws InvalidKeySpecException diff --git a/libjava/classpath/gnu/java/security/jce/sig/SignatureAdapter.java b/libjava/classpath/gnu/java/security/jce/sig/SignatureAdapter.java index 0ed1e2f41fd..efe3681ca1a 100644 --- a/libjava/classpath/gnu/java/security/jce/sig/SignatureAdapter.java +++ b/libjava/classpath/gnu/java/security/jce/sig/SignatureAdapter.java @@ -1,5 +1,5 @@ /* SignatureAdapter.java -- - Copyright 2001, 2002, 2006 Free Software Foundation, Inc. + Copyright 2001, 2002, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -75,7 +75,8 @@ class SignatureAdapter extends SignatureSpi implements Cloneable { - private static final Logger log = Logger.getLogger(SignatureAdapter.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(SignatureAdapter.class.getName()) : null; /** Our underlying signature instance. */ private ISignature adaptee; diff --git a/libjava/classpath/gnu/java/security/key/dss/DSSKeyPairGenerator.java b/libjava/classpath/gnu/java/security/key/dss/DSSKeyPairGenerator.java index 6bda4e88e34..70df734a919 100644 --- a/libjava/classpath/gnu/java/security/key/dss/DSSKeyPairGenerator.java +++ b/libjava/classpath/gnu/java/security/key/dss/DSSKeyPairGenerator.java @@ -1,5 +1,5 @@ /* DSSKeyPairGenerator.java -- - Copyright 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -66,7 +66,8 @@ import java.util.logging.Logger; public class DSSKeyPairGenerator implements IKeyPairGenerator { - private static final Logger log = Logger.getLogger(DSSKeyPairGenerator.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(DSSKeyPairGenerator.class.getName()) : null; /** The BigInteger constant 2. */ private static final BigInteger TWO = BigInteger.valueOf(2L); diff --git a/libjava/classpath/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.java b/libjava/classpath/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.java index a59ca3cee7a..1806ecf587f 100644 --- a/libjava/classpath/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.java +++ b/libjava/classpath/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.java @@ -1,5 +1,5 @@ /* DSSKeyPairPKCS8Codec.java -- PKCS#8 Encoding/Decoding handler - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -67,7 +67,9 @@ import java.util.logging.Logger; public class DSSKeyPairPKCS8Codec implements IKeyPairCodec { - private static final Logger log = Logger.getLogger(DSSKeyPairPKCS8Codec.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(DSSKeyPairPKCS8Codec.class.getName()) : null; + private static final OID DSA_ALG_OID = new OID(Registry.DSA_OID_STRING); // implicit 0-arguments constructor diff --git a/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairGenerator.java b/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairGenerator.java index bec60d350ca..99c3139449f 100644 --- a/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairGenerator.java +++ b/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairGenerator.java @@ -1,5 +1,5 @@ /* RSAKeyPairGenerator.java -- - Copyright 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -70,7 +70,8 @@ import java.util.logging.Logger; public class RSAKeyPairGenerator implements IKeyPairGenerator { - private static final Logger log = Logger.getLogger(RSAKeyPairGenerator.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(RSAKeyPairGenerator.class.getName()) : null; /** The BigInteger constant 1. */ private static final BigInteger ONE = BigInteger.ONE; diff --git a/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.java b/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.java index 2785f02c8ae..b07ed667cd0 100644 --- a/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.java +++ b/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.java @@ -1,5 +1,5 @@ /* RSAKeyPairPKCS8Codec.java -- PKCS#8 Encoding/Decoding handler - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -64,7 +64,9 @@ import java.util.logging.Logger; public class RSAKeyPairPKCS8Codec implements IKeyPairCodec { - private static final Logger log = Logger.getLogger(RSAKeyPairPKCS8Codec.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(RSAKeyPairPKCS8Codec.class.getName()) : null; + private static final OID RSA_ALG_OID = new OID(Registry.RSA_OID_STRING); // implicit 0-arguments constructor diff --git a/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairX509Codec.java b/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairX509Codec.java index 9ad6ae02978..36fd75c9806 100644 --- a/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairX509Codec.java +++ b/libjava/classpath/gnu/java/security/key/rsa/RSAKeyPairX509Codec.java @@ -1,5 +1,5 @@ /* RSAKeyPairX509Codec.java -- X.509 Encoding/Decoding handler - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -65,7 +65,9 @@ import java.util.logging.Logger; public class RSAKeyPairX509Codec implements IKeyPairCodec { - private static final Logger log = Logger.getLogger(RSAKeyPairX509Codec.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(RSAKeyPairX509Codec.class.getName()) : null; + private static final OID RSA_ALG_OID = new OID(Registry.RSA_OID_STRING); // implicit 0-arguments constructor diff --git a/libjava/classpath/gnu/java/security/pkcs/PKCS7SignedData.java b/libjava/classpath/gnu/java/security/pkcs/PKCS7SignedData.java index adb00a3bea0..e479d2e8caf 100644 --- a/libjava/classpath/gnu/java/security/pkcs/PKCS7SignedData.java +++ b/libjava/classpath/gnu/java/security/pkcs/PKCS7SignedData.java @@ -1,5 +1,5 @@ /* PKCS7SignedData.java -- reader/writer for PKCS#7 signedData objects - Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -78,7 +78,8 @@ import java.util.logging.Logger; */ public class PKCS7SignedData { - private static final Logger log = Logger.getLogger(PKCS7SignedData.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(PKCS7SignedData.class.getName()) : null; public static final OID PKCS7_SIGNED_DATA = new OID("1.2.840.113549.1.7.2"); diff --git a/libjava/classpath/gnu/java/security/pkcs/SignerInfo.java b/libjava/classpath/gnu/java/security/pkcs/SignerInfo.java index 645ed67bb14..07ce4d71b14 100644 --- a/libjava/classpath/gnu/java/security/pkcs/SignerInfo.java +++ b/libjava/classpath/gnu/java/security/pkcs/SignerInfo.java @@ -1,5 +1,5 @@ /* SignerInfo.java -- a SignerInfo object, from PKCS #7 - Copyright (C) 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -59,7 +59,8 @@ import javax.security.auth.x500.X500Principal; public class SignerInfo { - private static final Logger log = Logger.getLogger(SignerInfo.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(SignerInfo.class.getName()) : null; private final BigInteger version; private final BigInteger serialNumber; @@ -111,7 +112,8 @@ public class SignerInfo throw new BEREncodingException("malformed Version"); version = (BigInteger) val.getValue(); - log.fine(" Version: " + version); + if (Configuration.DEBUG) + log.fine(" Version: " + version); val = ber.read(); if (!val.isConstructed()) diff --git a/libjava/classpath/gnu/java/security/provider/PKIXCertPathValidatorImpl.java b/libjava/classpath/gnu/java/security/provider/PKIXCertPathValidatorImpl.java index d4ce4aeb4fa..e0d31877746 100644 --- a/libjava/classpath/gnu/java/security/provider/PKIXCertPathValidatorImpl.java +++ b/libjava/classpath/gnu/java/security/provider/PKIXCertPathValidatorImpl.java @@ -1,5 +1,5 @@ /* PKIXCertPathValidatorImpl.java -- PKIX certificate path validator. - Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -97,7 +97,8 @@ import java.util.logging.Logger; public class PKIXCertPathValidatorImpl extends CertPathValidatorSpi { - private static final Logger log = Logger.getLogger(PKIXCertPathValidatorImpl.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(PKIXCertPathValidatorImpl.class.getName()) : null; public static final String ANY_POLICY = "2.5.29.32.0"; diff --git a/libjava/classpath/gnu/java/security/sig/rsa/EMSA_PSS.java b/libjava/classpath/gnu/java/security/sig/rsa/EMSA_PSS.java index 917d9632334..7a8e591a376 100644 --- a/libjava/classpath/gnu/java/security/sig/rsa/EMSA_PSS.java +++ b/libjava/classpath/gnu/java/security/sig/rsa/EMSA_PSS.java @@ -1,5 +1,5 @@ /* EMSA_PSS.java -- - Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -73,7 +73,8 @@ import java.util.logging.Logger; public class EMSA_PSS implements Cloneable { - private static final Logger log = Logger.getLogger(EMSA_PSS.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(EMSA_PSS.class.getName()) : null; /** The underlying hash function to use with this instance. */ private IMessageDigest hash; diff --git a/libjava/classpath/gnu/java/security/sig/rsa/RSAPSSSignature.java b/libjava/classpath/gnu/java/security/sig/rsa/RSAPSSSignature.java index d8f8327f1cf..7b042f77f27 100644 --- a/libjava/classpath/gnu/java/security/sig/rsa/RSAPSSSignature.java +++ b/libjava/classpath/gnu/java/security/sig/rsa/RSAPSSSignature.java @@ -1,5 +1,5 @@ /* RSAPSSSignature.java -- - Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -75,7 +75,8 @@ import java.util.logging.Logger; public class RSAPSSSignature extends BaseSignature { - private static final Logger log = Logger.getLogger(RSAPSSSignature.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(RSAPSSSignature.class.getName()) : null; /** The underlying EMSA-PSS instance for this object. */ private EMSA_PSS pss; diff --git a/libjava/classpath/gnu/java/security/x509/X509CRL.java b/libjava/classpath/gnu/java/security/x509/X509CRL.java index 7c471c97284..518edaa2444 100644 --- a/libjava/classpath/gnu/java/security/x509/X509CRL.java +++ b/libjava/classpath/gnu/java/security/x509/X509CRL.java @@ -1,5 +1,5 @@ /* X509CRL.java -- X.509 certificate revocation list. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -77,7 +77,9 @@ import javax.security.auth.x500.X500Principal; public class X509CRL extends java.security.cert.X509CRL implements GnuPKIExtension { - private static final Logger log = Logger.getLogger(X509CRL.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(X509CRL.class.getName()) : null; + private static final OID ID_DSA = new OID("1.2.840.10040.4.1"); private static final OID ID_DSA_WITH_SHA1 = new OID("1.2.840.10040.4.3"); private static final OID ID_RSA = new OID("1.2.840.113549.1.1.1"); diff --git a/libjava/classpath/gnu/java/security/x509/X509CRLEntry.java b/libjava/classpath/gnu/java/security/x509/X509CRLEntry.java index 26b40363c35..64adf7f690a 100644 --- a/libjava/classpath/gnu/java/security/x509/X509CRLEntry.java +++ b/libjava/classpath/gnu/java/security/x509/X509CRLEntry.java @@ -1,5 +1,5 @@ /* X509CRLEntry.java -- an entry in a X.509 CRL. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -65,7 +65,9 @@ import java.util.logging.Logger; class X509CRLEntry extends java.security.cert.X509CRLEntry implements GnuPKIExtension { - private static final Logger log = Logger.getLogger(X509CRLEntry.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(X509CRLEntry.class.getName()) : null; + /** The DER encoded form of this CRL entry. */ private byte[] encoded; diff --git a/libjava/classpath/gnu/java/security/x509/ext/Extension.java b/libjava/classpath/gnu/java/security/x509/ext/Extension.java index 2b7e96d5abc..b740c8ac41e 100644 --- a/libjava/classpath/gnu/java/security/x509/ext/Extension.java +++ b/libjava/classpath/gnu/java/security/x509/ext/Extension.java @@ -1,5 +1,5 @@ /* Extension.java -- an X.509 certificate or CRL extension. - Copyright (C) 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -53,7 +53,8 @@ import java.util.logging.Logger; public class Extension { - private static final Logger log = Logger.getLogger(Extension.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(Extension.class.getName()) : null; /** * This extension's object identifier. */ diff --git a/libjava/classpath/gnu/javax/crypto/cipher/Anubis.java b/libjava/classpath/gnu/javax/crypto/cipher/Anubis.java index 3526ad612c2..c2a7cce93b0 100644 --- a/libjava/classpath/gnu/javax/crypto/cipher/Anubis.java +++ b/libjava/classpath/gnu/javax/crypto/cipher/Anubis.java @@ -1,5 +1,5 @@ /* Anubis.java -- - Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -67,7 +67,8 @@ import java.util.logging.Logger; public final class Anubis extends BaseCipher { - private static final Logger log = Logger.getLogger(Anubis.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(Anubis.class.getName()) : null; private static final int DEFAULT_BLOCK_SIZE = 16; // in bytes private static final int DEFAULT_KEY_SIZE = 16; // in bytes private static final String Sd = // p. 25 [ANUBIS] diff --git a/libjava/classpath/gnu/javax/crypto/cipher/BaseCipher.java b/libjava/classpath/gnu/javax/crypto/cipher/BaseCipher.java index 45aa2d6fd25..8dfd47e1e34 100644 --- a/libjava/classpath/gnu/javax/crypto/cipher/BaseCipher.java +++ b/libjava/classpath/gnu/javax/crypto/cipher/BaseCipher.java @@ -1,5 +1,5 @@ /* BaseCipher.java -- - Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -56,7 +56,8 @@ import java.util.logging.Logger; public abstract class BaseCipher implements IBlockCipher, IBlockCipherSpi { - private static final Logger log = Logger.getLogger(BaseCipher.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(BaseCipher.class.getName()) : null; /** The canonical name prefix of the cipher. */ protected String name; /** The default block size, in bytes. */ diff --git a/libjava/classpath/gnu/javax/crypto/cipher/Khazad.java b/libjava/classpath/gnu/javax/crypto/cipher/Khazad.java index 55e42628bac..1c3b778a27d 100644 --- a/libjava/classpath/gnu/javax/crypto/cipher/Khazad.java +++ b/libjava/classpath/gnu/javax/crypto/cipher/Khazad.java @@ -1,5 +1,5 @@ /* Khazad.java -- - Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -67,7 +67,8 @@ import java.util.logging.Logger; public final class Khazad extends BaseCipher { - private static final Logger log = Logger.getLogger(Khazad.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(Khazad.class.getName()) : null; private static final int DEFAULT_BLOCK_SIZE = 8; // in bytes private static final int DEFAULT_KEY_SIZE = 16; // in bytes private static final int R = 8; // standard number of rounds; para. 3.7 diff --git a/libjava/classpath/gnu/javax/crypto/cipher/Rijndael.java b/libjava/classpath/gnu/javax/crypto/cipher/Rijndael.java index 0463fe51de9..6ce3943601b 100644 --- a/libjava/classpath/gnu/javax/crypto/cipher/Rijndael.java +++ b/libjava/classpath/gnu/javax/crypto/cipher/Rijndael.java @@ -1,5 +1,5 @@ /* Rijndael.java -- - Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -64,7 +64,8 @@ import java.util.logging.Logger; public final class Rijndael extends BaseCipher { - private static final Logger log = Logger.getLogger(Rijndael.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(Rijndael.class.getName()) : null; private static final int DEFAULT_BLOCK_SIZE = 16; // in bytes private static final int DEFAULT_KEY_SIZE = 16; // in bytes private static final String SS = diff --git a/libjava/classpath/gnu/javax/crypto/cipher/Twofish.java b/libjava/classpath/gnu/javax/crypto/cipher/Twofish.java index c9789a69935..7f3a341328b 100644 --- a/libjava/classpath/gnu/javax/crypto/cipher/Twofish.java +++ b/libjava/classpath/gnu/javax/crypto/cipher/Twofish.java @@ -1,5 +1,5 @@ /* Twofish.java -- - Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -69,7 +69,8 @@ import java.util.logging.Logger; public final class Twofish extends BaseCipher { - private static final Logger log = Logger.getLogger(Twofish.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(Twofish.class.getName()) : null; private static final int DEFAULT_BLOCK_SIZE = 16; // in bytes private static final int DEFAULT_KEY_SIZE = 16; // in bytes private static final int MAX_ROUNDS = 16; // max # rounds (for allocating subkeys) diff --git a/libjava/classpath/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.java b/libjava/classpath/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.java index 97fdd5331eb..b9ce3789432 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.java +++ b/libjava/classpath/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.java @@ -1,5 +1,5 @@ /* KeyWrappingAlgorithmAdapter.java -- Base Adapter for Key Wrapping algorithms - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -76,7 +76,8 @@ import javax.crypto.spec.SecretKeySpec; abstract class KeyWrappingAlgorithmAdapter extends CipherSpi { - private static final Logger log = Logger.getLogger(KeyWrappingAlgorithmAdapter.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(KeyWrappingAlgorithmAdapter.class.getName()) : null; /** JCE canonical name of a null-padder. */ private static final String NO_PADDING = "nopadding"; /** Concrete Key Wrapping Algorithm SPI. */ diff --git a/libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java b/libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java index c30da69a2bf..39d402a0072 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java +++ b/libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java @@ -1,5 +1,5 @@ /* GnuKeyring.java -- KeyStore adapter for a pair of private and public Keyrings - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -77,7 +77,8 @@ import javax.crypto.SecretKey; public class GnuKeyring extends KeyStoreSpi { - private static final Logger log = Logger.getLogger(GnuKeyring.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(GnuKeyring.class.getName()) : null; private static final String NOT_LOADED = "not loaded"; /** TRUE if the keystore is loaded; FALSE otherwise. */ diff --git a/libjava/classpath/gnu/javax/crypto/jce/params/BlockCipherParameters.java b/libjava/classpath/gnu/javax/crypto/jce/params/BlockCipherParameters.java index fde83b1f305..a6dd247518e 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/params/BlockCipherParameters.java +++ b/libjava/classpath/gnu/javax/crypto/jce/params/BlockCipherParameters.java @@ -1,5 +1,5 @@ /* BlockCipherParameters.java -- - Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -59,7 +59,8 @@ import javax.crypto.spec.IvParameterSpec; public class BlockCipherParameters extends AlgorithmParametersSpi { - private static final Logger log = Logger.getLogger(BlockCipherParameters.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(BlockCipherParameters.class.getName()) : null; /** The underlying block cipher specification. */ protected BlockCipherParameterSpec cipherSpec; private static final String DEFAULT_FORMAT = "ASN.1"; diff --git a/libjava/classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java b/libjava/classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java index bbd5d476864..b4fcdf81f4c 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java +++ b/libjava/classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java @@ -1,5 +1,5 @@ /* ICMRandomSpi.java -- - Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -58,7 +58,8 @@ import java.util.logging.Logger; public class ICMRandomSpi extends SecureRandomSpi { - private static final Logger log = Logger.getLogger(ICMRandomSpi.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(ICMRandomSpi.class.getName()) : null; /** Class-wide prng to generate random material for the underlying prng. */ private static final ICMGenerator prng; // blank final static diff --git a/libjava/classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java b/libjava/classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java index 910e65c7033..20a467ee3ec 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java +++ b/libjava/classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java @@ -1,5 +1,5 @@ /* UMacRandomSpi.java -- - Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -57,7 +57,8 @@ import java.util.logging.Logger; public class UMacRandomSpi extends SecureRandomSpi { - private static final Logger log = Logger.getLogger(UMacRandomSpi.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(UMacRandomSpi.class.getName()) : null; /** Class-wide prng to generate random material for the underlying prng. */ private static final UMacGenerator prng; // blank final diff --git a/libjava/classpath/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.java b/libjava/classpath/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.java index 89e9c4c80ec..a1a19c3b3ff 100644 --- a/libjava/classpath/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.java +++ b/libjava/classpath/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.java @@ -1,5 +1,5 @@ /* GnuDHKeyPairGenerator.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -40,7 +40,6 @@ package gnu.javax.crypto.key.dh; import gnu.java.security.Configuration; import gnu.java.security.Registry; -import gnu.java.security.hash.Sha160; import gnu.java.security.key.IKeyPairGenerator; import gnu.java.security.util.PRNG; @@ -68,7 +67,9 @@ import javax.crypto.spec.DHParameterSpec; public class GnuDHKeyPairGenerator implements IKeyPairGenerator { - private static final Logger log = Logger.getLogger(GnuDHKeyPairGenerator.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(GnuDHKeyPairGenerator.class.getName()) : null; + /** * Property name of an optional {@link SecureRandom} instance to use. The * default is to use a classloader singleton from {@link PRNG}. @@ -95,10 +96,8 @@ public class GnuDHKeyPairGenerator public static final int DEFAULT_EXPONENT_SIZE = 160; /** Default encoding format to use when none was specified. */ private static final int DEFAULT_ENCODING_FORMAT = Registry.RAW_ENCODING_ID; - /** The SHA instance to use. */ - private Sha160 sha = new Sha160(); /** The optional {@link SecureRandom} instance to use. */ - private SecureRandom rnd = null; + private SecureRandom rnd; /** The desired size in bits of the public prime (p). */ private int l; /** The desired size in bits of the private exponent (x). */ diff --git a/libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.java b/libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.java index 59e5bc94364..25f3d842557 100644 --- a/libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.java +++ b/libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.java @@ -1,5 +1,5 @@ /* SRPKeyPairGenerator.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -59,7 +59,9 @@ import java.util.logging.Logger; public class SRPKeyPairGenerator implements IKeyPairGenerator { - private static final Logger log = Logger.getLogger(SRPKeyPairGenerator.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(SRPKeyPairGenerator.class.getName()) : null; + private static final BigInteger ZERO = BigInteger.ZERO; private static final BigInteger ONE = BigInteger.ONE; private static final BigInteger TWO = BigInteger.valueOf(2L); diff --git a/libjava/classpath/gnu/javax/crypto/keyring/Entry.java b/libjava/classpath/gnu/javax/crypto/keyring/Entry.java index d4592494040..b29c0442c17 100644 --- a/libjava/classpath/gnu/javax/crypto/keyring/Entry.java +++ b/libjava/classpath/gnu/javax/crypto/keyring/Entry.java @@ -1,5 +1,5 @@ /* Entry.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -50,7 +50,8 @@ import java.util.logging.Logger; */ public abstract class Entry { - private static final Logger log = Logger.getLogger(Entry.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(Entry.class.getName()) : null; private static final String[] TYPES = new String[] { "Encrypted", "PasswordEncrypted", diff --git a/libjava/classpath/gnu/javax/crypto/keyring/EnvelopeEntry.java b/libjava/classpath/gnu/javax/crypto/keyring/EnvelopeEntry.java index 76aba7d7b10..faaa7a808ea 100644 --- a/libjava/classpath/gnu/javax/crypto/keyring/EnvelopeEntry.java +++ b/libjava/classpath/gnu/javax/crypto/keyring/EnvelopeEntry.java @@ -1,5 +1,5 @@ /* EnvelopeEntry.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -58,7 +58,8 @@ import java.util.logging.Logger; public abstract class EnvelopeEntry extends Entry { - private static final Logger log = Logger.getLogger(EnvelopeEntry.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(EnvelopeEntry.class.getName()) : null; /** The envelope that contains this one (if any). */ protected EnvelopeEntry containingEnvelope; /** The contained entries. */ diff --git a/libjava/classpath/gnu/javax/crypto/keyring/GnuPublicKeyring.java b/libjava/classpath/gnu/javax/crypto/keyring/GnuPublicKeyring.java index d7387f892b0..474014f3914 100644 --- a/libjava/classpath/gnu/javax/crypto/keyring/GnuPublicKeyring.java +++ b/libjava/classpath/gnu/javax/crypto/keyring/GnuPublicKeyring.java @@ -1,5 +1,5 @@ /* GnuPublicKeyring.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -55,7 +55,8 @@ public class GnuPublicKeyring extends BaseKeyring implements IPublicKeyring { - private static final Logger log = Logger.getLogger(GnuPublicKeyring.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(GnuPublicKeyring.class.getName()) : null; public static final int USAGE = Registry.GKR_CERTIFICATES; public GnuPublicKeyring(String mac, int macLen) diff --git a/libjava/classpath/gnu/javax/crypto/mac/OMAC.java b/libjava/classpath/gnu/javax/crypto/mac/OMAC.java index 6758b314fa7..c9ea36ef917 100644 --- a/libjava/classpath/gnu/javax/crypto/mac/OMAC.java +++ b/libjava/classpath/gnu/javax/crypto/mac/OMAC.java @@ -1,5 +1,5 @@ /* OMAC.java -- - Copyright (C) 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -65,7 +65,8 @@ import java.util.logging.Logger; public class OMAC implements IMac { - private static final Logger log = Logger.getLogger(OMAC.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(OMAC.class.getName()) : null; private static final byte C1 = (byte) 0x87; private static final byte C2 = 0x1b; // Test key for OMAC-AES-128 diff --git a/libjava/classpath/gnu/javax/crypto/pad/BasePad.java b/libjava/classpath/gnu/javax/crypto/pad/BasePad.java index feeaca2f07d..50b3bf094dd 100644 --- a/libjava/classpath/gnu/javax/crypto/pad/BasePad.java +++ b/libjava/classpath/gnu/javax/crypto/pad/BasePad.java @@ -1,5 +1,5 @@ /* BasePad.java -- - Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -52,7 +52,8 @@ import java.util.logging.Logger; public abstract class BasePad implements IPad { - private static final Logger log = Logger.getLogger(BasePad.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(BasePad.class.getName()) : null; /** The canonical name prefix of the padding algorithm. */ protected String name; /** The block size, in bytes, for this instance. */ diff --git a/libjava/classpath/gnu/javax/crypto/pad/PKCS1_V1_5.java b/libjava/classpath/gnu/javax/crypto/pad/PKCS1_V1_5.java index e303264aed6..021107e6994 100644 --- a/libjava/classpath/gnu/javax/crypto/pad/PKCS1_V1_5.java +++ b/libjava/classpath/gnu/javax/crypto/pad/PKCS1_V1_5.java @@ -1,5 +1,5 @@ /* PKCS1_V1_5.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -66,7 +66,8 @@ import java.util.logging.Logger; public class PKCS1_V1_5 extends BasePad { - private static final Logger log = Logger.getLogger(PKCS1_V1_5.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(PKCS1_V1_5.class.getName()) : null; private EME_PKCS1_V1_5 codec; /** diff --git a/libjava/classpath/gnu/javax/crypto/pad/PKCS7.java b/libjava/classpath/gnu/javax/crypto/pad/PKCS7.java index 9dd67fc81a0..1ee839e5ad2 100644 --- a/libjava/classpath/gnu/javax/crypto/pad/PKCS7.java +++ b/libjava/classpath/gnu/javax/crypto/pad/PKCS7.java @@ -1,5 +1,5 @@ /* PKCS7.java -- - Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -65,7 +65,8 @@ import java.util.logging.Logger; public final class PKCS7 extends BasePad { - private static final Logger log = Logger.getLogger(PKCS7.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(PKCS7.class.getName()) : null; /** * Trivial package-private constructor for use by the Factory class. diff --git a/libjava/classpath/gnu/javax/crypto/pad/TBC.java b/libjava/classpath/gnu/javax/crypto/pad/TBC.java index 5cd177058f3..9fcc415507c 100644 --- a/libjava/classpath/gnu/javax/crypto/pad/TBC.java +++ b/libjava/classpath/gnu/javax/crypto/pad/TBC.java @@ -1,5 +1,5 @@ /* TBC.java -- - Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -64,7 +64,8 @@ import java.util.logging.Logger; public final class TBC extends BasePad { - private static final Logger log = Logger.getLogger(TBC.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(TBC.class.getName()) : null; /** * Trivial package-private constructor for use by the Factory class. diff --git a/libjava/classpath/gnu/javax/crypto/prng/CSPRNG.java b/libjava/classpath/gnu/javax/crypto/prng/CSPRNG.java index ecea2f46919..04d381a7a25 100644 --- a/libjava/classpath/gnu/javax/crypto/prng/CSPRNG.java +++ b/libjava/classpath/gnu/javax/crypto/prng/CSPRNG.java @@ -1,5 +1,5 @@ /* CSPRNG.java -- continuously-seeded pseudo-random number generator. - Copyright (C) 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -87,7 +87,9 @@ import java.util.logging.Logger; public class CSPRNG extends BasePRNG { - private static final Logger log = Logger.getLogger(CSPRNG.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(CSPRNG.class.getName()) : null; + /** * Property name for the list of files to read for random values. The mapped * value is a list with the following values: @@ -325,20 +327,24 @@ public class CSPRNG attrib.put(PROGRAM_SOURCES, l); l = new LinkedList(); for (int i = 0; (s = getProperty(OTHER + i)) != null; i++) - try - { - Class c = Class.forName(s.trim()); - l.add(c.newInstance()); - } - catch (ClassNotFoundException cnfe) - { - } - catch (InstantiationException ie) - { - } - catch (IllegalAccessException iae) - { - } + { + try + { + l.add((EntropySource)Class.forName(s.trim()).newInstance()); + } + catch (ClassNotFoundException cnfe) + { + // ignore + } + catch (InstantiationException ie) + { + // ignore + } + catch (IllegalAccessException iae) + { + // ignore + } + } attrib.put(OTHER_SOURCES, l); instance.init(attrib); return instance; diff --git a/libjava/classpath/gnu/javax/crypto/sasl/SaslInputStream.java b/libjava/classpath/gnu/javax/crypto/sasl/SaslInputStream.java index 6a6c8575115..e505d4525bb 100644 --- a/libjava/classpath/gnu/javax/crypto/sasl/SaslInputStream.java +++ b/libjava/classpath/gnu/javax/crypto/sasl/SaslInputStream.java @@ -1,5 +1,5 @@ /* SaslInputStream.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -57,7 +57,8 @@ import javax.security.sasl.SaslServer; public class SaslInputStream extends InputStream { - private static final Logger log = Logger.getLogger(SaslInputStream.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(SaslInputStream.class.getName()) : null; private SaslClient client; private SaslServer server; private int maxRawSendSize; diff --git a/libjava/classpath/gnu/javax/crypto/sasl/SaslOutputStream.java b/libjava/classpath/gnu/javax/crypto/sasl/SaslOutputStream.java index 0de1ce85068..eee0ba0f9d9 100644 --- a/libjava/classpath/gnu/javax/crypto/sasl/SaslOutputStream.java +++ b/libjava/classpath/gnu/javax/crypto/sasl/SaslOutputStream.java @@ -1,5 +1,5 @@ /* SaslOutputStream.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -56,7 +56,8 @@ import javax.security.sasl.SaslServer; public class SaslOutputStream extends OutputStream { - private static final Logger log = Logger.getLogger(SaslOutputStream.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(SaslOutputStream.class.getName()) : null; private SaslClient client; private SaslServer server; private int maxRawSendSize; diff --git a/libjava/classpath/gnu/javax/crypto/sasl/srp/SRPClient.java b/libjava/classpath/gnu/javax/crypto/sasl/srp/SRPClient.java index 8e44e4ead6e..c20d477c787 100644 --- a/libjava/classpath/gnu/javax/crypto/sasl/srp/SRPClient.java +++ b/libjava/classpath/gnu/javax/crypto/sasl/srp/SRPClient.java @@ -1,5 +1,5 @@ /* SRPClient.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -87,7 +87,8 @@ public class SRPClient extends ClientMechanism implements SaslClient { - private static final Logger log = Logger.getLogger(SRPClient.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(SRPClient.class.getName()) : null; private String uid; // the unique key for this type of client private String U; // the authentication identity BigInteger N, g, A, B; diff --git a/libjava/classpath/gnu/javax/crypto/sasl/srp/SRPServer.java b/libjava/classpath/gnu/javax/crypto/sasl/srp/SRPServer.java index fca5c3bf338..c92ada4b353 100644 --- a/libjava/classpath/gnu/javax/crypto/sasl/srp/SRPServer.java +++ b/libjava/classpath/gnu/javax/crypto/sasl/srp/SRPServer.java @@ -1,5 +1,5 @@ /* SRPServer.java -- - Copyright (C) 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -79,7 +79,8 @@ public class SRPServer extends ServerMechanism implements SaslServer { - private static final Logger log = Logger.getLogger(SRPServer.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(SRPServer.class.getName()) : null; private String U = null; // client's username private BigInteger N, g, A, B; private byte[] s; // salt diff --git a/libjava/classpath/gnu/javax/net/ssl/provider/CipherSuite.java b/libjava/classpath/gnu/javax/net/ssl/provider/CipherSuite.java index 1c59231290b..e3a0bc4b157 100644 --- a/libjava/classpath/gnu/javax/net/ssl/provider/CipherSuite.java +++ b/libjava/classpath/gnu/javax/net/ssl/provider/CipherSuite.java @@ -73,127 +73,127 @@ public final class CipherSuite implements Constructed KeyExchangeAlgorithm.NONE, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.NULL, 0, 0x00, 0x00, - "TLS_NULL_WITH_NULL_NULL"); + "TLS_NULL_WITH_NULL_NULL", false); public static final CipherSuite TLS_RSA_WITH_NULL_MD5 = new CipherSuite (CipherAlgorithm.NULL, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.MD5, 0, 0x00, 0x01, - "TLS_RSA_WITH_NULL_MD5"); + "TLS_RSA_WITH_NULL_MD5", false); public static final CipherSuite TLS_RSA_WITH_NULL_SHA = new CipherSuite (CipherAlgorithm.NULL, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 0, 0x00, 0x02, - "TLS_RSA_WITH_NULL_SHA"); + "TLS_RSA_WITH_NULL_SHA", false); public static final CipherSuite TLS_RSA_EXPORT_WITH_RC4_40_MD5 = new CipherSuite (CipherAlgorithm.RC4, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.MD5, 5, 0x00, 0x03, - "TLS_RSA_EXPORT_WITH_RC4_40_MD5"); + "TLS_RSA_EXPORT_WITH_RC4_40_MD5", false); public static final CipherSuite TLS_RSA_WITH_RC4_128_MD5 = new CipherSuite (CipherAlgorithm.RC4, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.MD5, 16, 0x00, 0x04, - "TLS_RSA_WITH_RC4_128_MD5"); + "TLS_RSA_WITH_RC4_128_MD5", false); public static final CipherSuite TLS_RSA_WITH_RC4_128_SHA = new CipherSuite (CipherAlgorithm.RC4, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 16, 0x00, 0x05, - "TLS_RSA_WITH_RC4_128_SHA"); + "TLS_RSA_WITH_RC4_128_SHA", false); public static final CipherSuite TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 5, 0x00, 0x08, - "TLS_RSA_EXPORT_WITH_DES40_CBC_SHA"); + "TLS_RSA_EXPORT_WITH_DES40_CBC_SHA", true); public static final CipherSuite TLS_RSA_WITH_DES_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 8, 0x00, 0x09, - "TLS_RSA_WITH_DES_CBC_SHA"); + "TLS_RSA_WITH_DES_CBC_SHA", true); public static final CipherSuite TLS_RSA_WITH_3DES_EDE_CBC_SHA = new CipherSuite (CipherAlgorithm.DESede, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 24, 0x00, 0x0A, - "TLS_RSA_WITH_3DES_EDE_CBC_SHA"); + "TLS_RSA_WITH_3DES_EDE_CBC_SHA", true); public static final CipherSuite TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.DH_DSS, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 5, 0x00, 0x0B, - "TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"); + "TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA", true); public static final CipherSuite TLS_DH_DSS_WITH_DES_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.DH_DSS, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 8, 0x00, 0x0C, - "TLS_DH_DSS_WITH_DES_CBC_SHA"); + "TLS_DH_DSS_WITH_DES_CBC_SHA", true); public static final CipherSuite TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = new CipherSuite (CipherAlgorithm.DESede, KeyExchangeAlgorithm.DH_DSS, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 24, 0x00, 0x0D, - "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA"); + "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA", true); public static final CipherSuite TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.DH_RSA, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 5, 0x00, 0x0E, - "TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"); + "TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA", true); public static final CipherSuite TLS_DH_RSA_WITH_DES_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.DH_RSA, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 8, 0x00, 0x0F, - "TLS_DH_RSA_WITH_DES_CBC_SHA"); + "TLS_DH_RSA_WITH_DES_CBC_SHA", true); public static final CipherSuite TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = new CipherSuite (CipherAlgorithm.DESede, KeyExchangeAlgorithm.DH_RSA, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 24, 0x00, 0x10, - "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA"); + "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA", true); public static final CipherSuite TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.DHE_DSS, true, SignatureAlgorithm.DSA, MacAlgorithm.SHA, 5, 0x00, 0x11, - "TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"); + "TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", true); public static final CipherSuite TLS_DHE_DSS_WITH_DES_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.DHE_DSS, true, SignatureAlgorithm.DSA, MacAlgorithm.SHA, 8, 0x00, 0x12, - "TLS_DHE_DSS_WITH_DES_CBC_SHA"); + "TLS_DHE_DSS_WITH_DES_CBC_SHA", true); public static final CipherSuite TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = new CipherSuite (CipherAlgorithm.DESede, KeyExchangeAlgorithm.DHE_DSS, true, SignatureAlgorithm.DSA, MacAlgorithm.SHA, 24, 0x00, 0x13, - "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"); + "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA", true); public static final CipherSuite TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.DHE_RSA, true, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 5, 0x00, 0x14, - "TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"); + "TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", true); public static final CipherSuite TLS_DHE_RSA_WITH_DES_CBC_SHA = new CipherSuite (CipherAlgorithm.DES, KeyExchangeAlgorithm.DHE_RSA, true, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 8, 0x00, 0x15, - "TLS_DHE_RSA_WITH_DES_CBC_SHA"); + "TLS_DHE_RSA_WITH_DES_CBC_SHA", true); public static final CipherSuite TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = new CipherSuite (CipherAlgorithm.DESede, KeyExchangeAlgorithm.DHE_RSA, true, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 24, 0x00, 0x16, - "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"); + "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA", true); // AES CipherSuites. public static final CipherSuite TLS_RSA_WITH_AES_128_CBC_SHA = @@ -201,61 +201,61 @@ public final class CipherSuite implements Constructed KeyExchangeAlgorithm.RSA, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 16, 0x00, 0x2F, - "TLS_RSA_WITH_AES_128_CBC_SHA"); + "TLS_RSA_WITH_AES_128_CBC_SHA", true); public static final CipherSuite TLS_DH_DSS_WITH_AES_128_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.DH_DSS, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 16, 0x00, 0x30, - "TLS_DH_DSS_WITH_AES_128_CBC_SHA"); + "TLS_DH_DSS_WITH_AES_128_CBC_SHA", true); public static final CipherSuite TLS_DH_RSA_WITH_AES_128_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.DH_RSA, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 16, 0x00, 0x31, - "TLS_DH_RSA_WITH_AES_128_CBC_SHA"); + "TLS_DH_RSA_WITH_AES_128_CBC_SHA", true); public static final CipherSuite TLS_DHE_DSS_WITH_AES_128_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.DHE_DSS, true, SignatureAlgorithm.DSA, MacAlgorithm.SHA, 16, 0x00, 0x32, - "TLS_DHE_DSS_WITH_AES_128_CBC_SHA"); + "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", true); public static final CipherSuite TLS_DHE_RSA_WITH_AES_128_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.DHE_RSA, true, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 16, 0x00, 0x33, - "TLS_DHE_RSA_WITH_AES_128_CBC_SHA"); + "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", true); public static final CipherSuite TLS_RSA_WITH_AES_256_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.RSA, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 32, 0x00, 0x35, - "TLS_RSA_WITH_AES_256_CBC_SHA"); + "TLS_RSA_WITH_AES_256_CBC_SHA", true); public static final CipherSuite TLS_DH_DSS_WITH_AES_256_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.DH_DSS, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 32, 0x00, 0x36, - "TLS_DH_DSS_WITH_AES_256_CBC_SHA"); + "TLS_DH_DSS_WITH_AES_256_CBC_SHA", true); public static final CipherSuite TLS_DH_RSA_WITH_AES_256_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.DH_RSA, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 32, 0x00, 0x37, - "TLS_DH_RSA_WITH_AES_256_CBC_SHA"); + "TLS_DH_RSA_WITH_AES_256_CBC_SHA", true); public static final CipherSuite TLS_DHE_DSS_WITH_AES_256_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.DHE_DSS, true, SignatureAlgorithm.DSA, MacAlgorithm.SHA, 32, 0x00, 0x38, - "TLS_DHE_DSS_WITH_AES_256_CBC_SHA"); + "TLS_DHE_DSS_WITH_AES_256_CBC_SHA", true); public static final CipherSuite TLS_DHE_RSA_WITH_AES_256_CBC_SHA = new CipherSuite (CipherAlgorithm.AES, KeyExchangeAlgorithm.DHE_RSA, true, SignatureAlgorithm.RSA, MacAlgorithm.SHA, 32, 0x00, 0x39, - "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"); + "TLS_DHE_RSA_WITH_AES_256_CBC_SHA", true); // Secure remote password (SRP) ciphersuites // Actual ID values are TBD, so these are omitted until they are specified. @@ -320,75 +320,75 @@ public final class CipherSuite implements Constructed KeyExchangeAlgorithm.PSK, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 16, 0x00, 0x8A, - "TLS_PSK_WITH_RC4_128_SHA"); + "TLS_PSK_WITH_RC4_128_SHA", true); public static final CipherSuite TLS_PSK_WITH_3DES_EDE_CBC_SHA = new CipherSuite(CipherAlgorithm.DESede, KeyExchangeAlgorithm.PSK, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 24, 0x00, 0x8B, - "TLS_PSK_WITH_3DES_EDE_CBC_SHA"); + "TLS_PSK_WITH_3DES_EDE_CBC_SHA", true); public static final CipherSuite TLS_PSK_WITH_AES_128_CBC_SHA = new CipherSuite(CipherAlgorithm.AES, KeyExchangeAlgorithm.PSK, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 16, 0x00, 0x8C, - "TLS_PSK_WITH_AES_128_CBC_SHA"); + "TLS_PSK_WITH_AES_128_CBC_SHA", true); public static final CipherSuite TLS_PSK_WITH_AES_256_CBC_SHA = new CipherSuite(CipherAlgorithm.AES, KeyExchangeAlgorithm.PSK, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 32, 0x00, 0x8D, - "TLS_PSK_WITH_AES_256_CBC_SHA"); + "TLS_PSK_WITH_AES_256_CBC_SHA", true); public static final CipherSuite TLS_DHE_PSK_WITH_RC4_128_SHA = new CipherSuite(CipherAlgorithm.RC4, KeyExchangeAlgorithm.DHE_PSK, true, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 16, 0x00, 0x8E, - "TLS_DHE_PSK_WITH_RC4_128_SHA"); + "TLS_DHE_PSK_WITH_RC4_128_SHA", false); public static final CipherSuite TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA = new CipherSuite(CipherAlgorithm.DESede, KeyExchangeAlgorithm.DHE_PSK, true, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 24, 0x00, 0x8F, - "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA"); + "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA", true); public static final CipherSuite TLS_DHE_PSK_WITH_AES_128_CBC_SHA = new CipherSuite(CipherAlgorithm.AES, KeyExchangeAlgorithm.DHE_PSK, true, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 16, 0x00, 0x90, - "TLS_DHE_PSK_WITH_AES_128_CBC_SHA"); + "TLS_DHE_PSK_WITH_AES_128_CBC_SHA", true); public static final CipherSuite TLS_DHE_PSK_WITH_AES_256_CBC_SHA = new CipherSuite(CipherAlgorithm.AES, KeyExchangeAlgorithm.DHE_PSK, true, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 32, 0x00, 0x91, - "TLS_DHE_PSK_WITH_AES_256_CBC_SHA"); + "TLS_DHE_PSK_WITH_AES_256_CBC_SHA", true); public static final CipherSuite TLS_RSA_PSK_WITH_RC4_128_SHA = new CipherSuite(CipherAlgorithm.RC4, KeyExchangeAlgorithm.RSA_PSK, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 16, 0x00, 0x92, - "TLS_RSA_PSK_WITH_RC4_128_SHA"); + "TLS_RSA_PSK_WITH_RC4_128_SHA", false); public static final CipherSuite TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA = new CipherSuite(CipherAlgorithm.DESede, KeyExchangeAlgorithm.RSA_PSK, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 24, 0x00, 0x93, - "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA"); + "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA", true); public static final CipherSuite TLS_RSA_PSK_WITH_AES_128_CBC_SHA = new CipherSuite(CipherAlgorithm.AES, KeyExchangeAlgorithm.RSA_PSK, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 16, 0x00, 0x94, - "TLS_RSA_PSK_WITH_AES_128_CBC_SHA"); + "TLS_RSA_PSK_WITH_AES_128_CBC_SHA", true); public static final CipherSuite TLS_RSA_PSK_WITH_AES_256_CBC_SHA = new CipherSuite(CipherAlgorithm.AES, KeyExchangeAlgorithm.RSA_PSK, SignatureAlgorithm.ANONYMOUS, MacAlgorithm.SHA, 32, 0x00, 0x95, - "TLS_RSA_PSK_WITH_AES_256_CBC_SHA"); + "TLS_RSA_PSK_WITH_AES_256_CBC_SHA", true); // Ciphersuites from the OpenPGP extension draft. // These disappeared from a more recent draft. @@ -490,6 +490,7 @@ public final class CipherSuite implements Constructed private final boolean ephemeralDH; private final boolean exportable; private final boolean isStream; + private final boolean isCBCMode; private final int keyLength; private final byte[] id; private final String name; @@ -505,10 +506,11 @@ public final class CipherSuite implements Constructed final int keyLength, final int id1, final int id2, - final String name) + final String name, + final boolean isCBCMode) { this (cipherAlgorithm, keyExchangeAlgorithm, false, signatureAlgorithm, - macAlgorithm, keyLength, id1, id2, name); + macAlgorithm, keyLength, id1, id2, name, isCBCMode); } private CipherSuite (final CipherAlgorithm cipherAlgorithm, @@ -519,7 +521,8 @@ public final class CipherSuite implements Constructed final int keyLength, final int id1, final int id2, - final String name) + final String name, + final boolean isCBCMode) { this.cipherAlgorithm = cipherAlgorithm; this.keyExchangeAlgorithm = keyExchangeAlgorithm; @@ -529,6 +532,7 @@ public final class CipherSuite implements Constructed this.exportable = keyLength <= 5; this.isStream = (cipherAlgorithm == CipherAlgorithm.NULL || cipherAlgorithm == CipherAlgorithm.RC4); + this.isCBCMode = isCBCMode; this.keyLength = keyLength; this.id = new byte[] { (byte) id1, (byte) id2 }; this.name = name.intern(); @@ -549,6 +553,7 @@ public final class CipherSuite implements Constructed ephemeralDH = false; exportable = false; isStream = false; + isCBCMode = false; keyLength = 0; this.id = id; name = null; @@ -598,10 +603,10 @@ public final class CipherSuite implements Constructed return new NullCipher (); String alg = null; - if (cipherAlgorithm == CipherAlgorithm.RC4) - alg = "RC4"; - else + if (isCBCMode) alg = cipherAlgorithm + "/CBC/NoPadding"; + else + alg = cipherAlgorithm.toString(); GetSecurityPropertyAction gspa = new GetSecurityPropertyAction ("jessie.jce.provider"); final String provider = (String) AccessController.doPrivileged (gspa); @@ -834,4 +839,10 @@ public final class CipherSuite implements Constructed } return name; } + + public boolean isCBCMode() + { + return isCBCMode; + } + } diff --git a/libjava/classpath/gnu/javax/net/ssl/provider/OutputSecurityParameters.java b/libjava/classpath/gnu/javax/net/ssl/provider/OutputSecurityParameters.java index c6ed7d5876a..61742439782 100644 --- a/libjava/classpath/gnu/javax/net/ssl/provider/OutputSecurityParameters.java +++ b/libjava/classpath/gnu/javax/net/ssl/provider/OutputSecurityParameters.java @@ -62,6 +62,17 @@ public class OutputSecurityParameters private final CipherSuite suite; private long sequence; + static final boolean enableCBCProtection; + + static + { + String enabled = Util.getProperty("jsse.enableCBCProtection"); + if (enabled == null) + enableCBCProtection = true; + else + enableCBCProtection = Boolean.valueOf(enabled); + } + public OutputSecurityParameters (final Cipher cipher, final Mac mac, final Deflater deflater, SessionImpl session, CipherSuite suite) @@ -291,4 +302,11 @@ public class OutputSecurityParameters { return suite; } + + boolean needToSplitPayload() + { + return (session.version.compareTo(ProtocolVersion.TLS_1_1) < 0 && + suite.isCBCMode() && enableCBCProtection); + } + } diff --git a/libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java b/libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java index b63fb2f20f2..a62801f9932 100644 --- a/libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java +++ b/libjava/classpath/gnu/javax/net/ssl/provider/SSLEngineImpl.java @@ -768,10 +768,27 @@ public final class SSLEngineImpl extends SSLEngine } else { - inout = outsec.encrypt(sources, offset, length, - ContentType.APPLICATION_DATA, sink); - consumed = inout[0]; - produced = inout[1]; + if (outsec.needToSplitPayload()) + { + inout = outsec.encrypt(sources, offset, 1, + ContentType.APPLICATION_DATA, sink); + consumed = inout[0]; + produced = inout[1]; + if (length > 1) + { + inout = outsec.encrypt(sources, offset+1, length-1, + ContentType.APPLICATION_DATA, sink); + consumed += inout[0]; + produced += inout[1]; + } + } + else + { + inout = outsec.encrypt(sources, offset, length, + ContentType.APPLICATION_DATA, sink); + consumed = inout[0]; + produced = inout[1]; + } } if (Debug.DEBUG) diff --git a/libjava/classpath/gnu/javax/print/PrinterDialog.java b/libjava/classpath/gnu/javax/print/PrinterDialog.java index 6557baf4f81..16ca7edc0c5 100644 --- a/libjava/classpath/gnu/javax/print/PrinterDialog.java +++ b/libjava/classpath/gnu/javax/print/PrinterDialog.java @@ -1,5 +1,5 @@ /* PrinterDialog.java -- - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -1452,12 +1452,8 @@ public final class PrinterDialog extends JDialog implements ActionListener private boolean onlyPageDialog; private PrintRequestAttributeSet atts; - private final static ResourceBundle messages; - - static - { - messages = ResourceBundle.getBundle("gnu/javax/print/PrinterDialog"); - } + private final static ResourceBundle messages + = ResourceBundle.getBundle("gnu.javax.print.MessagesBundle"); // TODO LowPriority: Include checks so that if a specific value formerly // selected is no more supported by the new service changes to the default. diff --git a/libjava/classpath/gnu/javax/security/auth/login/ConfigFileParser.java b/libjava/classpath/gnu/javax/security/auth/login/ConfigFileParser.java index 5c4c4261f5f..bebd036f986 100644 --- a/libjava/classpath/gnu/javax/security/auth/login/ConfigFileParser.java +++ b/libjava/classpath/gnu/javax/security/auth/login/ConfigFileParser.java @@ -1,5 +1,5 @@ /* ConfigFileParser.java -- JAAS Login Configuration default syntax parser - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -91,9 +91,11 @@ import javax.security.auth.login.AppConfigurationEntry; */ public final class ConfigFileParser { - private static final Logger log = Logger.getLogger(ConfigFileParser.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(ConfigFileParser.class.getName()) : null; + private ConfigFileTokenizer cft; - private Map map = new HashMap(); + private final Map map = new HashMap(); // default 0-arguments constructor diff --git a/libjava/classpath/gnu/javax/security/auth/login/ConfigFileTokenizer.java b/libjava/classpath/gnu/javax/security/auth/login/ConfigFileTokenizer.java index fc35bf77213..f120f4e60ac 100644 --- a/libjava/classpath/gnu/javax/security/auth/login/ConfigFileTokenizer.java +++ b/libjava/classpath/gnu/javax/security/auth/login/ConfigFileTokenizer.java @@ -1,5 +1,5 @@ /* ConfigFileTokenizer.java -- JAAS Login Configuration default syntax tokenizer - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -81,7 +81,9 @@ import java.util.logging.Logger; */ public class ConfigFileTokenizer { - private static final Logger log = Logger.getLogger(ConfigFileParser.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(ConfigFileParser.class.getName()) : null; + /** A constant indicating that the end of the stream has been read. */ public static final int TT_EOF = -1; /** A constant indicating that a word token has been read. */ @@ -92,7 +94,7 @@ public class ConfigFileTokenizer public String sval; public int ttype; - private BufferedReader br; + private final BufferedReader br; boolean initialised; private CPStringBuilder sb; private int sbNdx; @@ -103,10 +105,7 @@ public class ConfigFileTokenizer /** Trivial constructor. */ ConfigFileTokenizer(Reader r) { - super(); - br = r instanceof BufferedReader ? (BufferedReader) r : new BufferedReader(r); - initialised = false; } // Class methods diff --git a/libjava/classpath/gnu/javax/security/auth/login/GnuConfiguration.java b/libjava/classpath/gnu/javax/security/auth/login/GnuConfiguration.java index 20d8f3afd0d..6afe1cd195d 100644 --- a/libjava/classpath/gnu/javax/security/auth/login/GnuConfiguration.java +++ b/libjava/classpath/gnu/javax/security/auth/login/GnuConfiguration.java @@ -1,5 +1,5 @@ /* GnuConfiguration.java -- GNU Classpath implementation of JAAS Configuration - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -128,7 +128,9 @@ import javax.security.auth.login.Configuration; */ public final class GnuConfiguration extends Configuration { - private static final Logger log = Logger.getLogger(GnuConfiguration.class.getName()); + private static final Logger log = gnu.java.security.Configuration.DEBUG ? + Logger.getLogger(GnuConfiguration.class.getName()) : null; + /** * The internal map of login modules keyed by application name. Each entry in * this map is a {@link List} of {@link AppConfigurationEntry}s for that diff --git a/libjava/classpath/include/Makefile.am b/libjava/classpath/include/Makefile.am index ab59f0f42b0..223975f8ab0 100644 --- a/libjava/classpath/include/Makefile.am +++ b/libjava/classpath/include/Makefile.am @@ -145,6 +145,7 @@ gnu_java_nio_VMSelector.h \ gnu_java_nio_charset_iconv_IconvEncoder.h \ gnu_java_nio_charset_iconv_IconvDecoder.h \ gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h \ +java_io_VMConsole.h \ java_io_VMFile.h \ java_io_VMObjectInputStream.h \ java_io_VMObjectStreamClass.h \ @@ -385,6 +386,8 @@ gnu_java_nio_VMSelector.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMSelector.ja $(JAVAH) -o $@ gnu.java.nio.VMSelector gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h: $(top_srcdir)/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java $(JAVAH) -o $@ gnu.java.lang.management.VMOperatingSystemMXBeanImpl +java_io_VMConsole.h: $(top_srcdir)/vm/reference/java/io/VMConsole.java + $(JAVAH) -o $@ java.io.VMConsole java_io_VMFile.h: $(top_srcdir)/vm/reference/java/io/VMFile.java $(JAVAH) -o $@ java.io.VMFile java_io_VMObjectInputStream.h: $(top_srcdir)/vm/reference/java/io/VMObjectInputStream.java diff --git a/libjava/classpath/include/Makefile.in b/libjava/classpath/include/Makefile.in index 63b020e3dd0..1039aee441d 100644 --- a/libjava/classpath/include/Makefile.in +++ b/libjava/classpath/include/Makefile.in @@ -420,6 +420,7 @@ gnu_java_nio_VMSelector.h \ gnu_java_nio_charset_iconv_IconvEncoder.h \ gnu_java_nio_charset_iconv_IconvDecoder.h \ gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h \ +java_io_VMConsole.h \ java_io_VMFile.h \ java_io_VMObjectInputStream.h \ java_io_VMObjectStreamClass.h \ @@ -863,6 +864,8 @@ uninstall-am: @CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.VMSelector @CREATE_JNI_HEADERS_TRUE@gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h: $(top_srcdir)/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java @CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.lang.management.VMOperatingSystemMXBeanImpl +@CREATE_JNI_HEADERS_TRUE@java_io_VMConsole.h: $(top_srcdir)/vm/reference/java/io/VMConsole.java +@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.io.VMConsole @CREATE_JNI_HEADERS_TRUE@java_io_VMFile.h: $(top_srcdir)/vm/reference/java/io/VMFile.java @CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.io.VMFile @CREATE_JNI_HEADERS_TRUE@java_io_VMObjectInputStream.h: $(top_srcdir)/vm/reference/java/io/VMObjectInputStream.java diff --git a/libjava/classpath/include/config.h.in b/libjava/classpath/include/config.h.in index cdf45d9310b..c80ba1d4408 100644 --- a/libjava/classpath/include/config.h.in +++ b/libjava/classpath/include/config.h.in @@ -24,6 +24,9 @@ /* Define to 1 if you have BSD u_int32_t */ #undef HAVE_BSD_INT32_DEFINED +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + /* Define to 1 if you have the `close' function. */ #undef HAVE_CLOSE diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h index 160cb394f8f..05aeb5cfa08 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h @@ -19,6 +19,19 @@ JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_nativeGra JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_copyAreaNative (JNIEnv *env, jobject, jobject, jint, jint, jint, jint, jint, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_drawVolatile (JNIEnv *env, jobject, jobject, jlong, jint, jint, jint, jint, jint, jint, jint, jint); +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_NEAREST +#define gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_NEAREST 0L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BILINEAR +#define gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BILINEAR 1L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BICUBIC +#define gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BICUBIC 5L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_SPEED +#define gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_SPEED 2L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_QUALITY +#define gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_QUALITY 3L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_DEFAULT +#define gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_DEFAULT 4L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h index 8b1c26c290a..e31c80ee301 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h @@ -13,6 +13,19 @@ extern "C" JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_getPixbuf (JNIEnv *env, jobject, jobject, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_copyPixbuf (JNIEnv *env, jobject, jobject, jobject, jint, jint, jint, jint); +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_NEAREST +#define gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_NEAREST 0L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BILINEAR +#define gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BILINEAR 1L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BICUBIC +#define gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BICUBIC 5L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_SPEED +#define gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_SPEED 2L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_QUALITY +#define gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_QUALITY 3L +#undef gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_DEFAULT +#define gnu_java_awt_peer_gtk_CairoGraphics2D_ALPHA_INTERPOLATION_DEFAULT 4L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h index cb424f42673..b8c8a4f15a9 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h @@ -17,6 +17,17 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning JNIEXPORT jdoubleArray JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getMetricsNative (JNIEnv *env, jobject, jint, jlong); JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphOutlineNative (JNIEnv *env, jobject, jint, jlong); +#undef java_awt_font_GlyphVector_FLAG_COMPLEX_GLYPHS +#define java_awt_font_GlyphVector_FLAG_COMPLEX_GLYPHS 8L +#undef java_awt_font_GlyphVector_FLAG_HAS_POSITION_ADJUSTMENTS +#define java_awt_font_GlyphVector_FLAG_HAS_POSITION_ADJUSTMENTS 2L +#undef java_awt_font_GlyphVector_FLAG_HAS_TRANSFORMS +#define java_awt_font_GlyphVector_FLAG_HAS_TRANSFORMS 1L +#undef java_awt_font_GlyphVector_FLAG_MASK +#define java_awt_font_GlyphVector_FLAG_MASK 15L +#undef java_awt_font_GlyphVector_FLAG_RUN_RTL +#define java_awt_font_GlyphVector_FLAG_RUN_RTL 4L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h index 61999337b0b..2e76dfd0339 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h @@ -19,6 +19,13 @@ JNIEXPORT jobjectArray JNICALL Java_gnu_java_awt_peer_gtk_GdkScreenGraphicsDevic JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice_nativeSetDisplayMode (JNIEnv *env, jobject, jobject, jint, jshort); JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice_nativeGetBounds (JNIEnv *env, jobject); +#undef java_awt_GraphicsDevice_TYPE_RASTER_SCREEN +#define java_awt_GraphicsDevice_TYPE_RASTER_SCREEN 0L +#undef java_awt_GraphicsDevice_TYPE_PRINTER +#define java_awt_GraphicsDevice_TYPE_PRINTER 1L +#undef java_awt_GraphicsDevice_TYPE_IMAGE_BUFFER +#define java_awt_GraphicsDevice_TYPE_IMAGE_BUFFER 2L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h index 55891c86fd3..464656f4470 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h @@ -13,6 +13,23 @@ extern "C" JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer_create (JNIEnv *env, jobject, jlong); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer_construct (JNIEnv *env, jobject, jlong); +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_NORMAL +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_NORMAL 0L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DIALOG +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DIALOG 1L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_MENU +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_MENU 2L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_TOOLBAR +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_TOOLBAR 3L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_SPLASHSCREEN +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_SPLASHSCREEN 4L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_UTILITY +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_UTILITY 5L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DOCK +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DOCK 6L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DESKTOP +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DESKTOP 7L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h index f9e134168a6..ec7b4cb07e2 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h @@ -17,6 +17,23 @@ JNIEXPORT jstring JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeGet JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetDirectory (JNIEnv *env, jobject, jstring); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFilenameFilter (JNIEnv *env, jobject, jobject); +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_NORMAL +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_NORMAL 0L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DIALOG +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DIALOG 1L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_MENU +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_MENU 2L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_TOOLBAR +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_TOOLBAR 3L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_SPLASHSCREEN +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_SPLASHSCREEN 4L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_UTILITY +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_UTILITY 5L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DOCK +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DOCK 6L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DESKTOP +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DESKTOP 7L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkFramePeer.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkFramePeer.h index f100d3d5581..067601984d8 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkFramePeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkFramePeer.h @@ -22,6 +22,23 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_iconify (JNIEnv * JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_deiconify (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_nativeSetIconImage (JNIEnv *env, jobject, jobject); +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_NORMAL +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_NORMAL 0L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DIALOG +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DIALOG 1L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_MENU +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_MENU 2L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_TOOLBAR +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_TOOLBAR 3L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_SPLASHSCREEN +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_SPLASHSCREEN 4L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_UTILITY +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_UTILITY 5L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DOCK +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DOCK 6L +#undef gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DESKTOP +#define gnu_java_awt_peer_gtk_GtkWindowPeer_GDK_WINDOW_TYPE_HINT_DESKTOP 7L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkImage.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkImage.h index 3e65ea9b2fb..29d7e4c69ea 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkImage.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkImage.h @@ -20,6 +20,17 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkImage_freePixbuf (JNIEnv *e JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkImage_createScaledPixbuf (JNIEnv *env, jobject, jobject, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkImage_createFromPixbuf (JNIEnv *env, jobject); +#undef java_awt_Image_SCALE_DEFAULT +#define java_awt_Image_SCALE_DEFAULT 1L +#undef java_awt_Image_SCALE_FAST +#define java_awt_Image_SCALE_FAST 2L +#undef java_awt_Image_SCALE_SMOOTH +#define java_awt_Image_SCALE_SMOOTH 4L +#undef java_awt_Image_SCALE_REPLICATE +#define java_awt_Image_SCALE_REPLICATE 8L +#undef java_awt_Image_SCALE_AREA_AVERAGING +#define java_awt_Image_SCALE_AREA_AVERAGING 16L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h index 57bac0d9f48..e56374374c3 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h @@ -16,6 +16,23 @@ JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGe JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeCopyArea (JNIEnv *env, jobject, jlong, jint, jint, jint, jint, jint, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeDrawVolatile (JNIEnv *env, jobject, jlong, jlong, jint, jint, jint, jint); +#undef java_awt_image_VolatileImage_IMAGE_OK +#define java_awt_image_VolatileImage_IMAGE_OK 0L +#undef java_awt_image_VolatileImage_IMAGE_RESTORED +#define java_awt_image_VolatileImage_IMAGE_RESTORED 1L +#undef java_awt_image_VolatileImage_IMAGE_INCOMPATIBLE +#define java_awt_image_VolatileImage_IMAGE_INCOMPATIBLE 2L +#undef java_awt_Image_SCALE_DEFAULT +#define java_awt_Image_SCALE_DEFAULT 1L +#undef java_awt_Image_SCALE_FAST +#define java_awt_Image_SCALE_FAST 2L +#undef java_awt_Image_SCALE_SMOOTH +#define java_awt_Image_SCALE_SMOOTH 4L +#undef java_awt_Image_SCALE_REPLICATE +#define java_awt_Image_SCALE_REPLICATE 8L +#undef java_awt_Image_SCALE_AREA_AVERAGING +#define java_awt_Image_SCALE_AREA_AVERAGING 16L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_MainQtThread.h b/libjava/classpath/include/gnu_java_awt_peer_qt_MainQtThread.h index 73959ac626f..5336d386807 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_MainQtThread.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_MainQtThread.h @@ -13,6 +13,13 @@ extern "C" JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_qt_MainQtThread_init (JNIEnv *env, jobject, jstring, jboolean); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_MainQtThread_exec (JNIEnv *env, jobject, jlong); +#undef java_lang_Thread_MIN_PRIORITY +#define java_lang_Thread_MIN_PRIORITY 1L +#undef java_lang_Thread_NORM_PRIORITY +#define java_lang_Thread_NORM_PRIORITY 5L +#undef java_lang_Thread_MAX_PRIORITY +#define java_lang_Thread_MAX_PRIORITY 10L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtButtonPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtButtonPeer.h index b5a3c7437ae..f0293f0609c 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtButtonPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtButtonPeer.h @@ -13,6 +13,9 @@ extern "C" JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtButtonPeer_init (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtButtonPeer_setLabel (JNIEnv *env, jobject, jstring); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtCanvasPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtCanvasPeer.h index 74c86a89458..c1c80ecf5c1 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtCanvasPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtCanvasPeer.h @@ -12,6 +12,9 @@ extern "C" JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtCanvasPeer_init (JNIEnv *env, jobject); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h index aaee33d4284..da460359955 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h @@ -14,6 +14,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtCheckboxPeer_init (JNIEnv *en JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtCheckboxPeer_setLabel (JNIEnv *env, jobject, jstring); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtCheckboxPeer_setState (JNIEnv *env, jobject, jboolean); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtChoicePeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtChoicePeer.h index ef639faee2c..96e667f51db 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtChoicePeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtChoicePeer.h @@ -15,6 +15,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtChoicePeer_add (JNIEnv *env, JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtChoicePeer_remove (JNIEnv *env, jobject, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtChoicePeer_select (JNIEnv *env, jobject, jint); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtDialogPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtDialogPeer.h index 0fd19f2aedd..56d6eaff193 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtDialogPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtDialogPeer.h @@ -15,6 +15,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtDialogPeer_setModal (JNIEnv * JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtDialogPeer_setBoundsNative (JNIEnv *env, jobject, jint, jint, jint, jint, jboolean); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtDialogPeer_setResizable (JNIEnv *env, jobject, jboolean); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h index 8913a3b38be..748f02dc044 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h @@ -13,6 +13,9 @@ extern "C" JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtEmbeddedWindowPeer_init (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtEmbeddedWindowPeer_embed (JNIEnv *env, jobject, jlong); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h index f1e47368b1f..d8a67af9264 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h @@ -13,6 +13,9 @@ extern "C" JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtFileDialogPeer_init (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtFileDialogPeer_setMode (JNIEnv *env, jobject, jint); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtFontMetrics.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtFontMetrics.h index b07bc9cae70..542e7229841 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtFontMetrics.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtFontMetrics.h @@ -23,6 +23,9 @@ JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_getMaxAdvance (JN JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_charWidth (JNIEnv *env, jobject, jchar); JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_stringWidth (JNIEnv *env, jobject, jstring); +#undef java_awt_FontMetrics_serialVersionUID +#define java_awt_FontMetrics_serialVersionUID 1681126225205050147LL + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtFramePeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtFramePeer.h index 06f1824a85e..f03c5cefca7 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtFramePeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtFramePeer.h @@ -16,6 +16,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtFramePeer_setMaximizedBounds JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtFramePeer_setMenu (JNIEnv *env, jobject, jobject); JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtFramePeer_menuBarHeight (JNIEnv *env, jobject); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtImage.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtImage.h index cc399b7abad..9f994dfa375 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtImage.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtImage.h @@ -24,6 +24,17 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtImage_drawPixelsTransformed ( JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtImage_drawPixelsScaledFlipped (JNIEnv *env, jobject, jobject, jint, jint, jint, jboolean, jboolean, jint, jint, jint, jint, jint, jint, jint, jint, jboolean); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtImage_copyArea (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint); +#undef java_awt_Image_SCALE_DEFAULT +#define java_awt_Image_SCALE_DEFAULT 1L +#undef java_awt_Image_SCALE_FAST +#define java_awt_Image_SCALE_FAST 2L +#undef java_awt_Image_SCALE_SMOOTH +#define java_awt_Image_SCALE_SMOOTH 4L +#undef java_awt_Image_SCALE_REPLICATE +#define java_awt_Image_SCALE_REPLICATE 8L +#undef java_awt_Image_SCALE_AREA_AVERAGING +#define java_awt_Image_SCALE_AREA_AVERAGING 16L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtLabelPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtLabelPeer.h index 67071424077..55e8e7b25d1 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtLabelPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtLabelPeer.h @@ -14,6 +14,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtLabelPeer_init (JNIEnv *env, JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtLabelPeer_setAlignment (JNIEnv *env, jobject, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtLabelPeer_setText (JNIEnv *env, jobject, jstring); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtListPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtListPeer.h index b08ebf9f18f..2392482c0d6 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtListPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtListPeer.h @@ -18,6 +18,9 @@ JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_qt_QtListPeer_getSelectedInde JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtListPeer_makeVisible (JNIEnv *env, jobject, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtListPeer_setMultipleMode (JNIEnv *env, jobject, jboolean); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtPanelPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtPanelPeer.h index 0b95a62b5fd..843373188f2 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtPanelPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtPanelPeer.h @@ -12,6 +12,9 @@ extern "C" JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtPanelPeer_init (JNIEnv *env, jobject); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtScreenDevice.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtScreenDevice.h index a35627a6874..a91d1da9cb0 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtScreenDevice.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtScreenDevice.h @@ -17,6 +17,13 @@ JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtScreenDevice_getDpiX (JNIEnv JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtScreenDevice_getDpiY (JNIEnv *env, jobject); JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtScreenDevice_depth (JNIEnv *env, jobject); +#undef java_awt_GraphicsDevice_TYPE_RASTER_SCREEN +#define java_awt_GraphicsDevice_TYPE_RASTER_SCREEN 0L +#undef java_awt_GraphicsDevice_TYPE_PRINTER +#define java_awt_GraphicsDevice_TYPE_PRINTER 1L +#undef java_awt_GraphicsDevice_TYPE_IMAGE_BUFFER +#define java_awt_GraphicsDevice_TYPE_IMAGE_BUFFER 2L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h index af9412eaf55..33bad2588bd 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h @@ -17,6 +17,9 @@ JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtScrollPanePeer_getHScrollbarH JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtScrollPanePeer_getVScrollbarWidth (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtScrollPanePeer_setScrollPosition (JNIEnv *env, jobject, jint, jint); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h index 8f3d08e8a97..947f2864e1b 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h @@ -16,6 +16,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtScrollbarPeer_setLineIncremen JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtScrollbarPeer_setPageIncrement (JNIEnv *env, jobject, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtScrollbarPeer_setValues (JNIEnv *env, jobject, jint, jint, jint, jint); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h index 3c8334922c2..dbd0f1c3639 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h @@ -20,6 +20,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtTextAreaPeer_select (JNIEnv * JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtTextAreaPeer_setEditable (JNIEnv *env, jobject, jboolean); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtTextAreaPeer_setCaretPosition (JNIEnv *env, jobject, jint); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h index 621c7980777..3d14b2dae95 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h @@ -22,6 +22,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtTextFieldPeer_setEchoChar (JN JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtTextFieldPeer_setEditable (JNIEnv *env, jobject, jboolean); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtTextFieldPeer_setText (JNIEnv *env, jobject, jstring); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtVolatileImage.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtVolatileImage.h index 94a3b5dab1d..93ce9d587e9 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtVolatileImage.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtVolatileImage.h @@ -23,6 +23,23 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtVolatileImage_drawPixelsTrans JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtVolatileImage_drawPixelsScaledFlipped (JNIEnv *env, jobject, jobject, jint, jint, jint, jboolean, jboolean, jint, jint, jint, jint, jint, jint, jint, jint, jboolean); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtVolatileImage_copyArea (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint); +#undef java_awt_image_VolatileImage_IMAGE_OK +#define java_awt_image_VolatileImage_IMAGE_OK 0L +#undef java_awt_image_VolatileImage_IMAGE_RESTORED +#define java_awt_image_VolatileImage_IMAGE_RESTORED 1L +#undef java_awt_image_VolatileImage_IMAGE_INCOMPATIBLE +#define java_awt_image_VolatileImage_IMAGE_INCOMPATIBLE 2L +#undef java_awt_Image_SCALE_DEFAULT +#define java_awt_Image_SCALE_DEFAULT 1L +#undef java_awt_Image_SCALE_FAST +#define java_awt_Image_SCALE_FAST 2L +#undef java_awt_Image_SCALE_SMOOTH +#define java_awt_Image_SCALE_SMOOTH 4L +#undef java_awt_Image_SCALE_REPLICATE +#define java_awt_Image_SCALE_REPLICATE 8L +#undef java_awt_Image_SCALE_AREA_AVERAGING +#define java_awt_Image_SCALE_AREA_AVERAGING 16L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtWindowPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtWindowPeer.h index 64eb5a51eff..e7fd625687a 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtWindowPeer.h +++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtWindowPeer.h @@ -15,6 +15,9 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtWindowPeer_toBack (JNIEnv *en JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtWindowPeer_toFront (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtWindowPeer_setTitle (JNIEnv *env, jobject, jstring); +#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER +#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_nio_charset_iconv_IconvDecoder.h b/libjava/classpath/include/gnu_java_nio_charset_iconv_IconvDecoder.h index c708d75b731..3e8c97ca525 100644 --- a/libjava/classpath/include/gnu_java_nio_charset_iconv_IconvDecoder.h +++ b/libjava/classpath/include/gnu_java_nio_charset_iconv_IconvDecoder.h @@ -14,6 +14,15 @@ JNIEXPORT void JNICALL Java_gnu_java_nio_charset_iconv_IconvDecoder_openIconv (J JNIEXPORT jint JNICALL Java_gnu_java_nio_charset_iconv_IconvDecoder_decode (JNIEnv *env, jobject, jbyteArray, jcharArray, jint, jint, jint, jint); JNIEXPORT void JNICALL Java_gnu_java_nio_charset_iconv_IconvDecoder_closeIconv (JNIEnv *env, jobject); +#undef java_nio_charset_CharsetDecoder_STATE_RESET +#define java_nio_charset_CharsetDecoder_STATE_RESET 0L +#undef java_nio_charset_CharsetDecoder_STATE_CODING +#define java_nio_charset_CharsetDecoder_STATE_CODING 1L +#undef java_nio_charset_CharsetDecoder_STATE_END +#define java_nio_charset_CharsetDecoder_STATE_END 2L +#undef java_nio_charset_CharsetDecoder_STATE_FLUSHED +#define java_nio_charset_CharsetDecoder_STATE_FLUSHED 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/gnu_java_nio_charset_iconv_IconvEncoder.h b/libjava/classpath/include/gnu_java_nio_charset_iconv_IconvEncoder.h index f460d0109a9..6d2e7895b33 100644 --- a/libjava/classpath/include/gnu_java_nio_charset_iconv_IconvEncoder.h +++ b/libjava/classpath/include/gnu_java_nio_charset_iconv_IconvEncoder.h @@ -14,6 +14,15 @@ JNIEXPORT void JNICALL Java_gnu_java_nio_charset_iconv_IconvEncoder_openIconv (J JNIEXPORT jint JNICALL Java_gnu_java_nio_charset_iconv_IconvEncoder_encode (JNIEnv *env, jobject, jcharArray, jbyteArray, jint, jint, jint, jint); JNIEXPORT void JNICALL Java_gnu_java_nio_charset_iconv_IconvEncoder_closeIconv (JNIEnv *env, jobject); +#undef java_nio_charset_CharsetEncoder_STATE_RESET +#define java_nio_charset_CharsetEncoder_STATE_RESET 0L +#undef java_nio_charset_CharsetEncoder_STATE_CODING +#define java_nio_charset_CharsetEncoder_STATE_CODING 1L +#undef java_nio_charset_CharsetEncoder_STATE_END +#define java_nio_charset_CharsetEncoder_STATE_END 2L +#undef java_nio_charset_CharsetEncoder_STATE_FLUSHED +#define java_nio_charset_CharsetEncoder_STATE_FLUSHED 3L + #ifdef __cplusplus } #endif diff --git a/libjava/classpath/include/java_io_VMConsole.h b/libjava/classpath/include/java_io_VMConsole.h new file mode 100644 index 00000000000..857711b2b9f --- /dev/null +++ b/libjava/classpath/include/java_io_VMConsole.h @@ -0,0 +1,19 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ + +#include + +#ifndef __java_io_VMConsole__ +#define __java_io_VMConsole__ + +#ifdef __cplusplus +extern "C" +{ +#endif + +JNIEXPORT jstring JNICALL Java_java_io_VMConsole_readPassword (JNIEnv *env, jclass, jobject); + +#ifdef __cplusplus +} +#endif + +#endif /* __java_io_VMConsole__ */ diff --git a/libjava/classpath/include/java_lang_VMSystem.h b/libjava/classpath/include/java_lang_VMSystem.h index 020cc30d452..adf5bf7be72 100644 --- a/libjava/classpath/include/java_lang_VMSystem.h +++ b/libjava/classpath/include/java_lang_VMSystem.h @@ -15,6 +15,7 @@ JNIEXPORT jint JNICALL Java_java_lang_VMSystem_identityHashCode (JNIEnv *env, jc JNIEXPORT void JNICALL Java_java_lang_VMSystem_setIn (JNIEnv *env, jclass, jobject); JNIEXPORT void JNICALL Java_java_lang_VMSystem_setOut (JNIEnv *env, jclass, jobject); JNIEXPORT void JNICALL Java_java_lang_VMSystem_setErr (JNIEnv *env, jclass, jobject); +JNIEXPORT jlong JNICALL Java_java_lang_VMSystem_currentTimeMillis (JNIEnv *env, jclass); JNIEXPORT jlong JNICALL Java_java_lang_VMSystem_nanoTime (JNIEnv *env, jclass); JNIEXPORT jobject JNICALL Java_java_lang_VMSystem_environ (JNIEnv *env, jclass); JNIEXPORT jstring JNICALL Java_java_lang_VMSystem_getenv (JNIEnv *env, jclass, jstring); diff --git a/libjava/classpath/install-sh b/libjava/classpath/install-sh index 3f83ce9b555..a9244eb0786 100755 --- a/libjava/classpath/install-sh +++ b/libjava/classpath/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2010-02-06.18; # UTC +scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -156,6 +156,10 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac shift;; -T) no_target_directory=true;; @@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac done fi @@ -232,9 +240,9 @@ fi for src do - # Protect names starting with `-'. + # Protect names problematic for `test' and other utilities. case $src in - -*) src=./$src;; + -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then @@ -256,12 +264,7 @@ do echo "$0: no destination specified." >&2 exit 1 fi - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. @@ -389,7 +392,7 @@ do case $dstdir in /*) prefix='/';; - -*) prefix='./';; + [-=\(\)!]*) prefix='./';; *) prefix='';; esac @@ -407,7 +410,7 @@ do for d do - test -z "$d" && continue + test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then diff --git a/libjava/classpath/java/io/Console.java b/libjava/classpath/java/io/Console.java new file mode 100644 index 00000000000..5434b0267a9 --- /dev/null +++ b/libjava/classpath/java/io/Console.java @@ -0,0 +1,122 @@ +/* Console.java -- A character-based console device + Copyright (C) 2012 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.io; + +/** + * @since 1.6 + */ +public final class Console implements Flushable +{ + private static Console console = new Console(); + + public static Console console() + { + return console; + } + + private Console() + { + } + + public PrintWriter writer() + { + return new PrintWriter(new OutputStreamWriter(System.out)); + } + + public Reader reader() + { + return new InputStreamReader(System.in); + } + + public Console format(String fmt, Object... args) + { + System.out.printf(fmt, args); + + return this; + } + + public Console printf(String fmt, Object... args) + { + return format(fmt, args); + } + + public String readLine(String fmt, Object... args) + { + format(fmt, args); + return readLine(); + } + + public String readLine() + { + String result = null; + try + { + result = new BufferedReader(reader()).readLine(); + } + catch (IOException e) + { + throw new IOError(e); + } + return result; + } + + public char[] readPassword(String fmt, Object... args) + { + format(fmt, args); + return readPassword(); + } + + public char[] readPassword() + { + String s = VMConsole.readPassword(this); + + System.out.println(); + + if (s == null) + { + return null; + } + return s.toCharArray(); + } + + public void flush() throws IOException + { + System.out.flush(); + } +} diff --git a/libjava/classpath/java/io/File.java b/libjava/classpath/java/io/File.java index 4f670e147fe..080b52feb91 100644 --- a/libjava/classpath/java/io/File.java +++ b/libjava/classpath/java/io/File.java @@ -700,11 +700,13 @@ public class File implements Serializable, Comparable * * @return true if the file is hidden, false * otherwise. - * + * @throws SecurityException if a security manager exists and denies + * read access to this file. * @since 1.2 */ public boolean isHidden() { + checkRead(); return VMFile.isHidden(path); } diff --git a/libjava/classpath/java/io/IOError.java b/libjava/classpath/java/io/IOError.java new file mode 100644 index 00000000000..52acb38eb7b --- /dev/null +++ b/libjava/classpath/java/io/IOError.java @@ -0,0 +1,58 @@ +/* IOError.java -- Throw when unrecoverable I/O error happens. + Copyright (C) 2012 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.io; + +/** + * Throw when unrecoverable I/O error happens. + * + * @since 1.6 + */ +public class IOError extends Error +{ + private static final long serialVersionUID = 67100927991680413L; + + /** + * Create a new instance with a cause. + * @param cause the cause + */ + public IOError(Throwable cause) + { + super(cause); + } +} diff --git a/libjava/classpath/java/io/ObjectOutputStream.java b/libjava/classpath/java/io/ObjectOutputStream.java index 71d2e0b3439..8abf7f5d5d5 100644 --- a/libjava/classpath/java/io/ObjectOutputStream.java +++ b/libjava/classpath/java/io/ObjectOutputStream.java @@ -48,6 +48,8 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.security.AccessController; +import java.security.PrivilegedAction; /** * An ObjectOutputStream can be used to write objects @@ -136,6 +138,10 @@ public class ObjectOutputStream extends OutputStream */ public ObjectOutputStream (OutputStream out) throws IOException { + SecurityManager secMan = System.getSecurityManager(); + if (secMan != null && overridesMethods(getClass())) + secMan.checkPermission(SUBCLASS_IMPLEMENTATION_PERMISSION); + realOutput = new DataOutputStream(out); blockData = new byte[ BUFFER_SIZE ]; blockDataCount = 0; @@ -1487,4 +1493,44 @@ public class ObjectOutputStream extends OutputStream private boolean dump = false; private static final boolean DEBUG = false; + + /** + * Returns true if the given class overrides either of the + * methods putFields or writeUnshared. + * + * @param clazz the class to check. + * @return true if the class overrides one of the methods. + */ + private static boolean overridesMethods(final Class clazz) + { + if (clazz == ObjectOutputStream.class) + return false; + + return AccessController.doPrivileged(new PrivilegedAction() { + public Boolean run() + { + Method[] methods = clazz.getDeclaredMethods(); + for (int a = 0; a < methods.length; ++a) + { + String name = methods[a].getName(); + if (name.equals("writeUnshared")) + { + Class[] paramTypes = methods[a].getParameterTypes(); + if (paramTypes.length == 1 && + paramTypes[0] == Object.class && + methods[a].getReturnType() == Void.class) + return true; + } + else if (name.equals("putFields")) + { + if (methods[a].getParameterTypes().length == 0 && + methods[a].getReturnType() == PutField.class) + return true; + } + } + return false; + } + }); + } + } diff --git a/libjava/classpath/java/io/PrintStream.java b/libjava/classpath/java/io/PrintStream.java index eaab7c3d4b5..caa6035cfcd 100644 --- a/libjava/classpath/java/io/PrintStream.java +++ b/libjava/classpath/java/io/PrintStream.java @@ -181,10 +181,15 @@ public class PrintStream extends FilterOutputStream implements Appendable * @param out The OutputStream to write to. * @param auto_flush true to flush the stream after every * line, false otherwise + * @exception NullPointerException If out is null. */ public PrintStream (OutputStream out, boolean auto_flush) { super (out); + + if (out == null) + throw new NullPointerException("out is null"); + String encoding; try { encoding = SystemProperties.getProperty("file.encoding"); @@ -213,12 +218,19 @@ public class PrintStream extends FilterOutputStream implements Appendable * line, false otherwise * @param encoding The name of the character encoding to use for this * object. + * @exception NullPointerException If out or encoding is null. */ public PrintStream (OutputStream out, boolean auto_flush, String encoding) throws UnsupportedEncodingException { super (out); + if (out == null) + throw new NullPointerException("out is null"); + + if (encoding == null) + throw new NullPointerException("encoding is null"); + new String(new byte[]{0}, encoding); // check if encoding is supported this.encoding = encoding; this.auto_flush = auto_flush; diff --git a/libjava/classpath/java/lang/Class.java b/libjava/classpath/java/lang/Class.java index 1caee014736..af0a0a2a060 100644 --- a/libjava/classpath/java/lang/Class.java +++ b/libjava/classpath/java/lang/Class.java @@ -440,11 +440,14 @@ public final class Class * @return the field * @throws NoSuchFieldException if the field does not exist * @throws SecurityException if the security check fails + * @throws NullPointerException if fieldName is null * @see #getDeclaredFields() * @since 1.1 */ public Field getDeclaredField(String name) throws NoSuchFieldException { + if (name == null) + throw new NullPointerException(); memberAccessCheck(Member.DECLARED); Field[] fields = getDeclaredFields(false); for (int i = 0; i < fields.length; i++) @@ -496,12 +499,15 @@ public final class Class * @return the method * @throws NoSuchMethodException if the method does not exist * @throws SecurityException if the security check fails + * @throws NullPointerException if methodName is null * @see #getDeclaredMethods() * @since 1.1 */ public Method getDeclaredMethod(String methodName, Class... types) throws NoSuchMethodException { + if (methodName == null) + throw new NullPointerException(); memberAccessCheck(Member.DECLARED); Method match = matchMethod(getDeclaredMethods(false), methodName, types); if (match == null) @@ -560,12 +566,15 @@ public final class Class * @return the field * @throws NoSuchFieldException if the field does not exist * @throws SecurityException if the security check fails + * @throws NullPointerException if fieldName is null * @see #getFields() * @since 1.1 */ public Field getField(String fieldName) throws NoSuchFieldException { + if (fieldName == null) + throw new NullPointerException(); memberAccessCheck(Member.PUBLIC); Field field = internalGetField(fieldName); if (field == null) @@ -700,12 +709,15 @@ public final class Class * @return the method * @throws NoSuchMethodException if the method does not exist * @throws SecurityException if the security check fails + * @throws NullPointerException if methodName is null * @see #getMethods() * @since 1.1 */ public Method getMethod(String methodName, Class... types) throws NoSuchMethodException { + if (methodName == null) + throw new NullPointerException(); memberAccessCheck(Member.PUBLIC); Method method = internalGetMethod(methodName, types); if (method == null) diff --git a/libjava/classpath/java/lang/System.java b/libjava/classpath/java/lang/System.java index 39d6da22907..51b3259fa8b 100644 --- a/libjava/classpath/java/lang/System.java +++ b/libjava/classpath/java/lang/System.java @@ -1,5 +1,5 @@ /* System.java -- useful methods to interface with the system - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2012 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -45,6 +45,7 @@ import gnu.classpath.VMStackWalker; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; +import java.io.Console; import java.nio.channels.Channel; import java.nio.channels.spi.SelectorProvider; import java.util.AbstractCollection; @@ -703,6 +704,14 @@ public final class System return SelectorProvider.provider().inheritedChannel(); } + /* + * @since 1.6 + */ + public static Console console() + { + return Console.console(); + } + /** * This is a specialised Collection, providing * the necessary provisions for the collections used by the diff --git a/libjava/classpath/java/math/BigInteger.java b/libjava/classpath/java/math/BigInteger.java index 953e557a811..00f5c70adef 100644 --- a/libjava/classpath/java/math/BigInteger.java +++ b/libjava/classpath/java/math/BigInteger.java @@ -1,5 +1,6 @@ /* java.math.BigInteger -- Arbitary precision integers - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2010 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -64,7 +65,8 @@ import java.util.logging.Logger; */ public class BigInteger extends Number implements Comparable { - private static final Logger log = Logger.getLogger(BigInteger.class.getName()); + private static final Logger log = Configuration.DEBUG ? + Logger.getLogger(BigInteger.class.getName()) : null; /** All integers are stored in 2's-complement form. * If words == null, the ival is the value of this BigInteger. diff --git a/libjava/classpath/java/net/DatagramSocket.java b/libjava/classpath/java/net/DatagramSocket.java index 6ca9c42fea6..baa572ce39f 100644 --- a/libjava/classpath/java/net/DatagramSocket.java +++ b/libjava/classpath/java/net/DatagramSocket.java @@ -525,7 +525,27 @@ public class DatagramSocket SecurityManager sm = System.getSecurityManager(); if (sm != null) - sm.checkConnect(address.getHostAddress(), port); + { + if (address.isMulticastAddress()) + sm.checkMulticast(address); + else + { + sm.checkConnect(address.getHostAddress(), port); + sm.checkAccept(address.getHostAddress(), port); + } + } + + if (!isBound()) + { + try + { + bind(new InetSocketAddress(0)); + } + catch (SocketException e) + { + throw new Error("Binding socket failed.", e); + } + } try { diff --git a/libjava/classpath/java/net/Socket.java b/libjava/classpath/java/net/Socket.java index d61e81f5e42..32b12e8b1bf 100644 --- a/libjava/classpath/java/net/Socket.java +++ b/libjava/classpath/java/net/Socket.java @@ -428,7 +428,9 @@ public class Socket * @exception IllegalBlockingModeException If this socket has an associated * channel, and the channel is in non-blocking mode * @exception SocketTimeoutException If the timeout is reached - * + * @throws SecurityException if the SocketAddress is an {@link InetSocketAddress} + * and a security manager is present which does not + * allow connections on the given host and port. * @since 1.4 */ public void connect(SocketAddress endpoint, int timeout) @@ -440,6 +442,13 @@ public class Socket if (! (endpoint instanceof InetSocketAddress)) throw new IllegalArgumentException("unsupported address type"); + SecurityManager sm = System.getSecurityManager(); + if (sm != null) + { + InetSocketAddress inetAddr = (InetSocketAddress) endpoint; + sm.checkConnect(inetAddr.getHostName(), inetAddr.getPort()); + } + // The Sun spec says that if we have an associated channel and // it is in non-blocking mode, we throw an IllegalBlockingModeException. // However, in our implementation if the channel itself initiated this diff --git a/libjava/classpath/java/nio/channels/spi/SelectorProvider.java b/libjava/classpath/java/nio/channels/spi/SelectorProvider.java index 821bc436152..18b9e83b650 100644 --- a/libjava/classpath/java/nio/channels/spi/SelectorProvider.java +++ b/libjava/classpath/java/nio/channels/spi/SelectorProvider.java @@ -46,6 +46,8 @@ import java.nio.channels.Pipe; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; +import java.security.AccessController; +import java.security.PrivilegedAction; /** * @author Michael Koch @@ -145,14 +147,18 @@ public abstract class SelectorProvider * Returns the system-wide default selector provider for this invocation * of the Java virtual machine. * - * @return the default seletor provider + * @return the default selector provider */ public static synchronized SelectorProvider provider() { if (systemDefaultProvider == null) { - String propertyValue = - System.getProperty("java.nio.channels.spi.SelectorProvider"); + String propertyValue = AccessController.doPrivileged(new PrivilegedAction () { + public String run() + { + return System.getProperty("java.nio.channels.spi.SelectorProvider"); + } + }); if (propertyValue == null || propertyValue.equals("")) systemDefaultProvider = new SelectorProviderImpl(); diff --git a/libjava/classpath/java/security/KeyStore.java b/libjava/classpath/java/security/KeyStore.java index b7a0e2ab1f1..25173e54370 100644 --- a/libjava/classpath/java/security/KeyStore.java +++ b/libjava/classpath/java/security/KeyStore.java @@ -214,7 +214,12 @@ public class KeyStore { // Security reads every property in java.security so it // will return this property if it exists. - String tmp = Security.getProperty("keystore.type"); + String tmp = AccessController.doPrivileged(new PrivilegedAction () { + public String run() + { + return Security.getProperty("keystore.type"); + } + }); if (tmp == null) tmp = "gkr"; diff --git a/libjava/classpath/java/security/ProtectionDomain.java b/libjava/classpath/java/security/ProtectionDomain.java index d5d657d615f..7be5875dc72 100644 --- a/libjava/classpath/java/security/ProtectionDomain.java +++ b/libjava/classpath/java/security/ProtectionDomain.java @@ -41,6 +41,8 @@ import gnu.classpath.SystemProperties; import gnu.java.lang.CPStringBuilder; +import java.util.Enumeration; + /** * This class represents a group of classes, along with their granted * permissions. The classes are identified by a {@link CodeSource}. Thus, any @@ -71,6 +73,9 @@ public class ProtectionDomain /** Post 1.4 the policy may be refreshed! use false for pre 1.4. */ private boolean staticBinding; + /** True if this protection domain has all permissions */ + private boolean hasAllPermissions; + /** * Initializes a new instance of ProtectionDomain representing * the specified {@link CodeSource} and set of permissions. No permissions @@ -128,6 +133,13 @@ public class ProtectionDomain { perms = permissions; perms.setReadOnly(); + /* Check if this protection domain has all permissions */ + Enumeration e = permissions.elements(); + while (e.hasMoreElements()) + { + if (e.nextElement() instanceof AllPermission) + hasAllPermissions = true; + } } this.classloader = classloader; @@ -190,6 +202,8 @@ public class ProtectionDomain */ public boolean implies(Permission permission) { + if (hasAllPermissions) + return true; if (staticBinding) return (perms == null ? false : perms.implies(permission)); // Else dynamically bound. Do we have it? @@ -241,7 +255,15 @@ public class ProtectionDomain sb.append(linesep); if (!staticBinding) // include all but dont force loading Policy.currentPolicy if (Policy.isLoaded()) - sb.append(Policy.getCurrentPolicy().getPermissions(this)); + try + { + sb.append(Policy.getPolicy().getPermissions(this)); + } + catch (SecurityException e) + { + // We are not allowed access to the policy. + sb.append(perms); + } else // fallback on this one's permissions sb.append(perms); else diff --git a/libjava/classpath/java/text/DateFormatSymbols.java b/libjava/classpath/java/text/DateFormatSymbols.java index c22dd38f765..53e7ba07c8c 100644 --- a/libjava/classpath/java/text/DateFormatSymbols.java +++ b/libjava/classpath/java/text/DateFormatSymbols.java @@ -45,6 +45,7 @@ import java.io.IOException; import java.text.spi.DateFormatSymbolsProvider; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -125,9 +126,58 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable transient String[] dateFormats; transient String[] timeFormats; - private static String[] getStringArray(ResourceBundle res, String name) + /** + * Compiles a string array for a property using data from each of the locales in the + * hierarchy as necessary. + * + * @param bundles the locale hierarchy, starting with the most specific. + * @param name the name of the property. + * @param size the size the array should be when complete. + * @return a completed string array. + */ + private static String[] getStringArray(List bundles, String name, int size) + { + return getStringArray(bundles, name, size, null); + } + + /** + * Compiles a string array for a property using data from each of the locales in the + * hierarchy as necessary. If non-null, the fallback array is also used for "sideways" + * inheritance (e.g. if there is no short name for a month, the long name is used rather + * than the empty string). + * + * @param bundles the locale hierarchy, starting with the most specific. + * @param name the name of the property. + * @param size the size the array should be when complete. + * @param fallback an array of long name fallback strings for data with both long and short names. + * @return a completed string array. + */ + private static String[] getStringArray(List bundles, String name, int size, + String[] fallback) { - return res.getString(name).split("\u00ae"); + String[] data = new String[size]; + Arrays.fill(data, ""); + // Populate array with data from each locale back to the root, starting with the most specific + for (int a = 0; a < bundles.size(); ++a) + { + String localeData = bundles.get(a).getString(name); + String[] array = localeData.split("\u00ae", size); + for (int b = 0; b < data.length; ++b) + { + if (array.length > b && array[b] != null && data[b].isEmpty() && !array[b].isEmpty()) + data[b] = array[b]; + } + } + // Replace any remaining empty strings with data from the fallback array, if non-null + if (fallback != null && fallback.length == size) + { + for (int a = 0; a < data.length; ++a) + { + if (data[a].isEmpty() && fallback[a] != null && !fallback[a].isEmpty()) + data[a] = fallback[a]; + } + } + return data; } private String[][] getZoneStrings(ResourceBundle res, Locale locale) @@ -264,17 +314,26 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable public DateFormatSymbols (Locale locale) throws MissingResourceException { + ClassLoader ldr = ClassLoader.getSystemClassLoader(); + List bundles = new ArrayList(); ResourceBundle res - = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation", locale, - ClassLoader.getSystemClassLoader()); - - ampms = getStringArray(res, "ampms"); - eras = getStringArray(res, "eras"); + = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation", locale, ldr); + bundles.add(res); + Locale resLocale = res.getLocale(); + while (resLocale != Locale.ROOT) + { + res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation", + LocaleHelper.getFallbackLocale(resLocale), ldr); + bundles.add(res); + resLocale = res.getLocale(); + } + ampms = getStringArray(bundles, "ampms", 2); + eras = getStringArray(bundles, "eras", 2); localPatternChars = res.getString("localPatternChars"); - months = getStringArray(res, "months"); - shortMonths = getStringArray(res, "shortMonths"); - shortWeekdays = getStringArray(res, "shortWeekdays"); - weekdays = getStringArray(res, "weekdays"); + months = getStringArray(bundles, "months", 13); + shortMonths = getStringArray(bundles, "shortMonths", 13, months); + weekdays = getStringArray(bundles, "weekdays", 8); + shortWeekdays = getStringArray(bundles, "shortWeekdays", 8, weekdays); dateFormats = formatsForKey(res, "DateFormat"); timeFormats = formatsForKey(res, "TimeFormat"); runtimeZoneStrings = getZoneStrings(res, locale); diff --git a/libjava/classpath/java/util/Formatter.java b/libjava/classpath/java/util/Formatter.java index 04ae8058dcf..62f68456239 100644 --- a/libjava/classpath/java/util/Formatter.java +++ b/libjava/classpath/java/util/Formatter.java @@ -1188,7 +1188,7 @@ public final class Formatter advance(); if (start == index) return -1; - return Integer.decode(format.substring(start, index)); + return Integer.parseInt(format.substring(start, index)); } /** diff --git a/libjava/classpath/java/util/HashMap.java b/libjava/classpath/java/util/HashMap.java index 55d81c620b1..f5194a24061 100644 --- a/libjava/classpath/java/util/HashMap.java +++ b/libjava/classpath/java/util/HashMap.java @@ -100,11 +100,10 @@ public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { /** - * Default number of buckets. This is the value the JDK 1.3 uses. Some - * early documentation specified this value as 101. That is incorrect. + * Default number of buckets; this is currently set to 16. * Package visible for use by HashSet. */ - static final int DEFAULT_CAPACITY = 11; + static final int DEFAULT_CAPACITY = 16; /** * The default load factor; this is explicitly specified by the spec. @@ -344,9 +343,12 @@ public class HashMap extends AbstractMap int idx = hash(key); HashEntry e = buckets[idx]; + int hash1 = key == null ? 0 : key.hashCode(); while (e != null) { - if (equals(key, e.key)) + int hash2 = e.key == null ? 0 : e.key.hashCode(); + + if ((hash1 == hash2) && equals(key, e.key)) { e.access(); // Must call this for bookkeeping in LinkedHashMap. V r = e.value; diff --git a/libjava/classpath/java/util/logging/LogManager.java b/libjava/classpath/java/util/logging/LogManager.java index dffa44d9cf0..f8c6c3393fc 100644 --- a/libjava/classpath/java/util/logging/LogManager.java +++ b/libjava/classpath/java/util/logging/LogManager.java @@ -211,11 +211,21 @@ public class LogManager /** * Registers a listener which will be notified when the * logging properties are re-read. + * + * @param listener the event listener to register. + * @throws NullPointerException if the listener is {@code null}. + * @throws SecurityException if a security manager exists and the + * calling code does not have the permission + * {@code LoggingPermission("control")}. */ public synchronized void addPropertyChangeListener(PropertyChangeListener listener) { - /* do not register null. */ - listener.getClass(); + if (listener == null) + throw new NullPointerException("Attempt to add null property change listener"); + + SecurityManager sm = System.getSecurityManager(); + if (sm != null) + sm.checkPermission(new LoggingPermission("control", null)); pcs.addPropertyChangeListener(listener); } @@ -226,11 +236,22 @@ public class LogManager * If listener has not been registered previously, * nothing happens. Also, no exception is thrown if * listener is null. + * + * @param listener the listener to remove. + * @throws SecurityException if a security manager exists and the + * calling code does not have the permission + * {@code LoggingPermission("control")}. */ public synchronized void removePropertyChangeListener(PropertyChangeListener listener) { if (listener != null) - pcs.removePropertyChangeListener(listener); + { + SecurityManager sm = System.getSecurityManager(); + if (sm != null) + sm.checkPermission(new LoggingPermission("control", null)); + + pcs.removePropertyChangeListener(listener); + } } /** diff --git a/libjava/classpath/java/util/regex/Matcher.java b/libjava/classpath/java/util/regex/Matcher.java index be57471de61..8d033d5e316 100644 --- a/libjava/classpath/java/util/regex/Matcher.java +++ b/libjava/classpath/java/util/regex/Matcher.java @@ -169,6 +169,12 @@ public final class Matcher implements MatchResult if (match != null) { int endIndex = match.getEndIndex(); + // Is the match within input limits? + if (endIndex > input.length()) + { + match = null; + return false; + } // Are we stuck at the same position? if (!first && endIndex == position) { @@ -608,4 +614,27 @@ public final class Matcher implements MatchResult return snapshot; } + /** + * Returns a literalized string of s where characters {@code $} and {@code + * \\} are escaped. + * + * @param s the string to literalize. + * @return the literalized string. + * @since 1.5 + */ + public static String quoteReplacement(String s) + { + if (s == null) + throw new NullPointerException(); + CPStringBuilder sb = new CPStringBuilder(); + for (int i = 0; i < s.length(); i++) + { + char ch = s.charAt(i); + if (ch == '$' || ch == '\\') + sb.append('\\'); + sb.append(ch); + } + return sb.toString(); + } + } diff --git a/libjava/classpath/java/util/regex/Pattern.java b/libjava/classpath/java/util/regex/Pattern.java index 7d1fc84b4e6..b1c937f7815 100644 --- a/libjava/classpath/java/util/regex/Pattern.java +++ b/libjava/classpath/java/util/regex/Pattern.java @@ -1,5 +1,6 @@ /* Pattern.java -- Compiled regular expression ready to be applied. - Copyright (C) 2002, 2004, 2005, 2007 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005, 2007, 2010 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -37,6 +38,8 @@ exception statement from your version. */ package java.util.regex; +import gnu.java.lang.CPStringBuilder; + import gnu.java.util.regex.RE; import gnu.java.util.regex.REException; import gnu.java.util.regex.RESyntax; @@ -259,6 +262,41 @@ public final class Pattern implements Serializable return regex; } + /** + * Returns a literal pattern for the specified String. + * + * @param String to return a literal pattern for. + * @return a literal pattern for the specified String. + * @exception NullPointerException if str is null. + * @since 1.5 + */ + public static String quote(String str) + { + int eInd = str.indexOf("\\E"); + if (eInd < 0) + { + // No need to handle backslashes. + return "\\Q" + str + "\\E"; + } + + CPStringBuilder sb = new CPStringBuilder(str.length() + 16); + sb.append("\\Q"); // start quote + + int pos = 0; + do + { + // A backslash is quoted by another backslash; + // 'E' is not needed to be quoted. + sb.append(str.substring(pos, eInd)) + .append("\\E" + "\\\\" + "E" + "\\Q"); + pos = eInd + 2; + } while ((eInd = str.indexOf("\\E", pos)) >= 0); + + sb.append(str.substring(pos, str.length())) + .append("\\E"); // end quote + return sb.toString(); + } + /** * Return the regular expression used to construct this object. * @specnote Prior to JDK 1.5 this method had a different behavior diff --git a/libjava/classpath/java/util/zip/InflaterHuffmanTree.java b/libjava/classpath/java/util/zip/InflaterHuffmanTree.java index c12c732e0c7..1a152d2b29b 100644 --- a/libjava/classpath/java/util/zip/InflaterHuffmanTree.java +++ b/libjava/classpath/java/util/zip/InflaterHuffmanTree.java @@ -95,11 +95,14 @@ class InflaterHuffmanTree blCount[bits]++; } + int max = 0; int code = 0; int treeSize = 512; for (int bits = 1; bits <= MAX_BITLEN; bits++) { nextCode[bits] = code; + if (blCount[bits] > 0) + max = bits; code += blCount[bits] << (16 - bits); if (bits >= 10) { @@ -109,8 +112,8 @@ class InflaterHuffmanTree treeSize += (end - start) >> (16 - bits); } } - if (code != 65536) - throw new DataFormatException("Code lengths don't add up properly."); + if (code != 65536 && max > 1) + throw new DataFormatException("incomplete dynamic bit lengths tree"); /* Now create and fill the extra tables from longest to shortest * bit len. This way the sub trees will be aligned. diff --git a/libjava/classpath/java/util/zip/ZipFile.java b/libjava/classpath/java/util/zip/ZipFile.java index 3963bcb1eb5..b582c84939c 100644 --- a/libjava/classpath/java/util/zip/ZipFile.java +++ b/libjava/classpath/java/util/zip/ZipFile.java @@ -261,7 +261,10 @@ public class ZipFile implements ZipConstants if (inp.readLeInt() != CENSIG) throw new ZipException("Wrong Central Directory signature: " + name); - inp.skip(6); + inp.skip(4); + int flags = inp.readLeShort(); + if ((flags & 1) != 0) + throw new ZipException("invalid CEN header (encrypted entry)"); int method = inp.readLeShort(); int dostime = inp.readLeInt(); int crc = inp.readLeInt(); diff --git a/libjava/classpath/javax/swing/text/html/StyleSheet.java b/libjava/classpath/javax/swing/text/html/StyleSheet.java index 5cf015bc520..31879b2b2dc 100644 --- a/libjava/classpath/javax/swing/text/html/StyleSheet.java +++ b/libjava/classpath/javax/swing/text/html/StyleSheet.java @@ -414,11 +414,12 @@ public class StyleSheet extends StyleContext tags[i] = t.toString(); else tags[i] = null; - attributes.set(i, attributeSetToMap(atts)); + attributes.add(attributeSetToMap(atts)); } else { tags[i] = null; + attributes.add(null); } } tags[0] = tag.toString(); diff --git a/libjava/classpath/lib/Makefile.am b/libjava/classpath/lib/Makefile.am index 5491a99de00..2d47009f459 100644 --- a/libjava/classpath/lib/Makefile.am +++ b/libjava/classpath/lib/Makefile.am @@ -74,7 +74,7 @@ glibj.zip: else if WITH_JAR -CREATE_GLIBJ_ZIP=$(JAR) cf glibj.zip gnu java javax org sun META-INF +CREATE_GLIBJ_ZIP=$(JAR) cf glibj.zip gnu java javax org sun META-INF && $(JAR) i glibj.zip else CREATE_GLIBJ_ZIP=$(ZIP) -r -D glibj.zip gnu java javax org sun META-INF > /dev/null endif diff --git a/libjava/classpath/lib/Makefile.in b/libjava/classpath/lib/Makefile.in index ccfd8a1e505..384e77294ec 100644 --- a/libjava/classpath/lib/Makefile.in +++ b/libjava/classpath/lib/Makefile.in @@ -296,7 +296,7 @@ compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$ @CREATE_COLLECTIONS_TRUE@@WITH_JAR_TRUE@CREATE_COLLECTIONS_JAR = $(JAR) cf $@ $(COLLECTIONS_PREFIX) @BUILD_CLASS_FILES_TRUE@noinst_DATA = genclasses compile-classes resources @USE_PREBUILT_GLIBJ_ZIP_FALSE@@WITH_JAR_FALSE@CREATE_GLIBJ_ZIP = $(ZIP) -r -D glibj.zip gnu java javax org sun META-INF > /dev/null -@USE_PREBUILT_GLIBJ_ZIP_FALSE@@WITH_JAR_TRUE@CREATE_GLIBJ_ZIP = $(JAR) cf glibj.zip gnu java javax org sun META-INF +@USE_PREBUILT_GLIBJ_ZIP_FALSE@@WITH_JAR_TRUE@CREATE_GLIBJ_ZIP = $(JAR) cf glibj.zip gnu java javax org sun META-INF && $(JAR) i glibj.zip # endif EXTRA_DIST = standard.omit.in mkcollections.pl.in Makefile.gcj split-for-gcj.sh glibj.zip CLEANFILES = compile-classes resources classes \ diff --git a/libjava/classpath/lib/gnu/classpath/Configuration.class b/libjava/classpath/lib/gnu/classpath/Configuration.class index 27c31f26e17..1f5a2502150 100644 Binary files a/libjava/classpath/lib/gnu/classpath/Configuration.class and b/libjava/classpath/lib/gnu/classpath/Configuration.class differ diff --git a/libjava/classpath/lib/gnu/classpath/SystemProperties.class b/libjava/classpath/lib/gnu/classpath/SystemProperties.class index b0359303db5..0bb632e5ee2 100644 Binary files a/libjava/classpath/lib/gnu/classpath/SystemProperties.class and b/libjava/classpath/lib/gnu/classpath/SystemProperties.class differ diff --git a/libjava/classpath/lib/gnu/gcj/convert/Convert.class b/libjava/classpath/lib/gnu/gcj/convert/Convert.class index 2144fc8d847..7d7bd9c80f7 100644 Binary files a/libjava/classpath/lib/gnu/gcj/convert/Convert.class and b/libjava/classpath/lib/gnu/gcj/convert/Convert.class differ diff --git a/libjava/classpath/lib/gnu/gcj/tools/gcj_dbtool/Main.class b/libjava/classpath/lib/gnu/gcj/tools/gcj_dbtool/Main.class index 728256d0008..d3b6b2a046a 100644 Binary files a/libjava/classpath/lib/gnu/gcj/tools/gcj_dbtool/Main.class and b/libjava/classpath/lib/gnu/gcj/tools/gcj_dbtool/Main.class differ diff --git a/libjava/classpath/lib/gnu/java/beans/editors/ColorEditor.class b/libjava/classpath/lib/gnu/java/beans/editors/ColorEditor.class index 5d010e752bb..ace90631790 100644 Binary files a/libjava/classpath/lib/gnu/java/beans/editors/ColorEditor.class and b/libjava/classpath/lib/gnu/java/beans/editors/ColorEditor.class differ diff --git a/libjava/classpath/lib/gnu/java/rmi/registry/RegistryImpl.class b/libjava/classpath/lib/gnu/java/rmi/registry/RegistryImpl.class index 285ef414a2f..243f9ca2ac6 100644 Binary files a/libjava/classpath/lib/gnu/java/rmi/registry/RegistryImpl.class and b/libjava/classpath/lib/gnu/java/rmi/registry/RegistryImpl.class differ diff --git a/libjava/classpath/lib/gnu/java/security/Properties$1.class b/libjava/classpath/lib/gnu/java/security/Properties$1.class index 1af67e70284..1a83385911f 100644 Binary files a/libjava/classpath/lib/gnu/java/security/Properties$1.class and b/libjava/classpath/lib/gnu/java/security/Properties$1.class differ diff --git a/libjava/classpath/lib/gnu/java/security/Properties.class b/libjava/classpath/lib/gnu/java/security/Properties.class index 768244295d4..77f089b6a21 100644 Binary files a/libjava/classpath/lib/gnu/java/security/Properties.class and b/libjava/classpath/lib/gnu/java/security/Properties.class differ diff --git a/libjava/classpath/lib/gnu/java/security/der/DERWriter.class b/libjava/classpath/lib/gnu/java/security/der/DERWriter.class index 4a09d076b90..1bcef86588c 100644 Binary files a/libjava/classpath/lib/gnu/java/security/der/DERWriter.class and b/libjava/classpath/lib/gnu/java/security/der/DERWriter.class differ diff --git a/libjava/classpath/lib/gnu/java/security/hash/Whirlpool.class b/libjava/classpath/lib/gnu/java/security/hash/Whirlpool.class index becb2e590fe..3174ab70080 100644 Binary files a/libjava/classpath/lib/gnu/java/security/hash/Whirlpool.class and b/libjava/classpath/lib/gnu/java/security/hash/Whirlpool.class differ diff --git a/libjava/classpath/lib/gnu/java/security/jce/sig/EncodedKeyFactory.class b/libjava/classpath/lib/gnu/java/security/jce/sig/EncodedKeyFactory.class index 9bf4ba4bccd..7835ae5412d 100644 Binary files a/libjava/classpath/lib/gnu/java/security/jce/sig/EncodedKeyFactory.class and b/libjava/classpath/lib/gnu/java/security/jce/sig/EncodedKeyFactory.class differ diff --git a/libjava/classpath/lib/gnu/java/security/jce/sig/SignatureAdapter.class b/libjava/classpath/lib/gnu/java/security/jce/sig/SignatureAdapter.class index 299c7bfd0e9..13ffe6f9858 100644 Binary files a/libjava/classpath/lib/gnu/java/security/jce/sig/SignatureAdapter.class and b/libjava/classpath/lib/gnu/java/security/jce/sig/SignatureAdapter.class differ diff --git a/libjava/classpath/lib/gnu/java/security/key/dss/DSSKeyPairGenerator.class b/libjava/classpath/lib/gnu/java/security/key/dss/DSSKeyPairGenerator.class index 97938b62587..3fdcfef3988 100644 Binary files a/libjava/classpath/lib/gnu/java/security/key/dss/DSSKeyPairGenerator.class and b/libjava/classpath/lib/gnu/java/security/key/dss/DSSKeyPairGenerator.class differ diff --git a/libjava/classpath/lib/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.class b/libjava/classpath/lib/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.class index 6532a20ee74..21fae7d0bd0 100644 Binary files a/libjava/classpath/lib/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.class and b/libjava/classpath/lib/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.class differ diff --git a/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairGenerator.class b/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairGenerator.class index e09c4234183..a083d5717cb 100644 Binary files a/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairGenerator.class and b/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairGenerator.class differ diff --git a/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.class b/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.class index b8a5f4cf431..c568935264b 100644 Binary files a/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.class and b/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.class differ diff --git a/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairX509Codec.class b/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairX509Codec.class index f6b6573af65..ba6d1cef4be 100644 Binary files a/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairX509Codec.class and b/libjava/classpath/lib/gnu/java/security/key/rsa/RSAKeyPairX509Codec.class differ diff --git a/libjava/classpath/lib/gnu/java/security/pkcs/PKCS7SignedData.class b/libjava/classpath/lib/gnu/java/security/pkcs/PKCS7SignedData.class index 5ec095a4325..8fff8d58c87 100644 Binary files a/libjava/classpath/lib/gnu/java/security/pkcs/PKCS7SignedData.class and b/libjava/classpath/lib/gnu/java/security/pkcs/PKCS7SignedData.class differ diff --git a/libjava/classpath/lib/gnu/java/security/pkcs/SignerInfo.class b/libjava/classpath/lib/gnu/java/security/pkcs/SignerInfo.class index 604a7355239..95988e09547 100644 Binary files a/libjava/classpath/lib/gnu/java/security/pkcs/SignerInfo.class and b/libjava/classpath/lib/gnu/java/security/pkcs/SignerInfo.class differ diff --git a/libjava/classpath/lib/gnu/java/security/provider/PKIXCertPathValidatorImpl.class b/libjava/classpath/lib/gnu/java/security/provider/PKIXCertPathValidatorImpl.class index f38f294b622..29be70b174b 100644 Binary files a/libjava/classpath/lib/gnu/java/security/provider/PKIXCertPathValidatorImpl.class and b/libjava/classpath/lib/gnu/java/security/provider/PKIXCertPathValidatorImpl.class differ diff --git a/libjava/classpath/lib/gnu/java/security/sig/rsa/EMSA_PSS.class b/libjava/classpath/lib/gnu/java/security/sig/rsa/EMSA_PSS.class index 5484fd578c5..af00a1bbc30 100644 Binary files a/libjava/classpath/lib/gnu/java/security/sig/rsa/EMSA_PSS.class and b/libjava/classpath/lib/gnu/java/security/sig/rsa/EMSA_PSS.class differ diff --git a/libjava/classpath/lib/gnu/java/security/sig/rsa/RSAPSSSignature.class b/libjava/classpath/lib/gnu/java/security/sig/rsa/RSAPSSSignature.class index 961bd7d3b67..bb1a1a5317a 100644 Binary files a/libjava/classpath/lib/gnu/java/security/sig/rsa/RSAPSSSignature.class and b/libjava/classpath/lib/gnu/java/security/sig/rsa/RSAPSSSignature.class differ diff --git a/libjava/classpath/lib/gnu/java/security/x509/X509CRL.class b/libjava/classpath/lib/gnu/java/security/x509/X509CRL.class index 2648fa409cd..ef156cd25d2 100644 Binary files a/libjava/classpath/lib/gnu/java/security/x509/X509CRL.class and b/libjava/classpath/lib/gnu/java/security/x509/X509CRL.class differ diff --git a/libjava/classpath/lib/gnu/java/security/x509/X509CRLEntry.class b/libjava/classpath/lib/gnu/java/security/x509/X509CRLEntry.class index dd67393c677..674391f77bc 100644 Binary files a/libjava/classpath/lib/gnu/java/security/x509/X509CRLEntry.class and b/libjava/classpath/lib/gnu/java/security/x509/X509CRLEntry.class differ diff --git a/libjava/classpath/lib/gnu/java/security/x509/ext/Extension$Value.class b/libjava/classpath/lib/gnu/java/security/x509/ext/Extension$Value.class index ceb04731376..6664ff3114f 100644 Binary files a/libjava/classpath/lib/gnu/java/security/x509/ext/Extension$Value.class and b/libjava/classpath/lib/gnu/java/security/x509/ext/Extension$Value.class differ diff --git a/libjava/classpath/lib/gnu/java/security/x509/ext/Extension.class b/libjava/classpath/lib/gnu/java/security/x509/ext/Extension.class index 5dc652b212e..da80327712a 100644 Binary files a/libjava/classpath/lib/gnu/java/security/x509/ext/Extension.class and b/libjava/classpath/lib/gnu/java/security/x509/ext/Extension.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/cipher/Anubis.class b/libjava/classpath/lib/gnu/javax/crypto/cipher/Anubis.class index 81dca322c34..d46d8ac349b 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/cipher/Anubis.class and b/libjava/classpath/lib/gnu/javax/crypto/cipher/Anubis.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/cipher/BaseCipher.class b/libjava/classpath/lib/gnu/javax/crypto/cipher/BaseCipher.class index 27ac57882f5..da3daadbd1f 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/cipher/BaseCipher.class and b/libjava/classpath/lib/gnu/javax/crypto/cipher/BaseCipher.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/cipher/Khazad.class b/libjava/classpath/lib/gnu/javax/crypto/cipher/Khazad.class index 40dd935901a..c26f6a35d8d 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/cipher/Khazad.class and b/libjava/classpath/lib/gnu/javax/crypto/cipher/Khazad.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/cipher/Rijndael.class b/libjava/classpath/lib/gnu/javax/crypto/cipher/Rijndael.class index 2e074e51f04..ff870010d7a 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/cipher/Rijndael.class and b/libjava/classpath/lib/gnu/javax/crypto/cipher/Rijndael.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/cipher/Twofish.class b/libjava/classpath/lib/gnu/javax/crypto/cipher/Twofish.class index 74f36a673f2..928b408f6d5 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/cipher/Twofish.class and b/libjava/classpath/lib/gnu/javax/crypto/cipher/Twofish.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.class b/libjava/classpath/lib/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.class index 172c5bb2934..8fcff39f9cc 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.class and b/libjava/classpath/lib/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/keyring/GnuKeyring.class b/libjava/classpath/lib/gnu/javax/crypto/jce/keyring/GnuKeyring.class index 4aa0694df0f..186182208d8 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/jce/keyring/GnuKeyring.class and b/libjava/classpath/lib/gnu/javax/crypto/jce/keyring/GnuKeyring.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/params/BlockCipherParameters.class b/libjava/classpath/lib/gnu/javax/crypto/jce/params/BlockCipherParameters.class index 733b746319f..4e537795784 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/jce/params/BlockCipherParameters.class and b/libjava/classpath/lib/gnu/javax/crypto/jce/params/BlockCipherParameters.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ICMRandomSpi.class b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ICMRandomSpi.class index 5fca78ef177..f79c5f142e6 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ICMRandomSpi.class and b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/ICMRandomSpi.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/UMacRandomSpi.class b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/UMacRandomSpi.class index 9c760ea3324..5248afd3058 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/jce/prng/UMacRandomSpi.class and b/libjava/classpath/lib/gnu/javax/crypto/jce/prng/UMacRandomSpi.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.class b/libjava/classpath/lib/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.class index 21708e4f450..728e0b89b45 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.class and b/libjava/classpath/lib/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.class b/libjava/classpath/lib/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.class index 74565271313..895c7c35b57 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.class and b/libjava/classpath/lib/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/keyring/Entry.class b/libjava/classpath/lib/gnu/javax/crypto/keyring/Entry.class index 15feb5cdb2e..56e6eef9f44 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/keyring/Entry.class and b/libjava/classpath/lib/gnu/javax/crypto/keyring/Entry.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/keyring/EnvelopeEntry.class b/libjava/classpath/lib/gnu/javax/crypto/keyring/EnvelopeEntry.class index d2ba95df2aa..a159f721bb0 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/keyring/EnvelopeEntry.class and b/libjava/classpath/lib/gnu/javax/crypto/keyring/EnvelopeEntry.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/keyring/GnuPublicKeyring.class b/libjava/classpath/lib/gnu/javax/crypto/keyring/GnuPublicKeyring.class index af49c02363b..0cbdeef6ca1 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/keyring/GnuPublicKeyring.class and b/libjava/classpath/lib/gnu/javax/crypto/keyring/GnuPublicKeyring.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/mac/OMAC.class b/libjava/classpath/lib/gnu/javax/crypto/mac/OMAC.class index 449ad35b322..2e8732296a2 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/mac/OMAC.class and b/libjava/classpath/lib/gnu/javax/crypto/mac/OMAC.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/pad/BasePad.class b/libjava/classpath/lib/gnu/javax/crypto/pad/BasePad.class index f26e749961d..b3e3d1762b4 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/pad/BasePad.class and b/libjava/classpath/lib/gnu/javax/crypto/pad/BasePad.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/pad/PKCS1_V1_5.class b/libjava/classpath/lib/gnu/javax/crypto/pad/PKCS1_V1_5.class index b7c141094f7..0d99f3acf26 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/pad/PKCS1_V1_5.class and b/libjava/classpath/lib/gnu/javax/crypto/pad/PKCS1_V1_5.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/pad/PKCS7.class b/libjava/classpath/lib/gnu/javax/crypto/pad/PKCS7.class index c47e354005e..f886d182d83 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/pad/PKCS7.class and b/libjava/classpath/lib/gnu/javax/crypto/pad/PKCS7.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/pad/TBC.class b/libjava/classpath/lib/gnu/javax/crypto/pad/TBC.class index 87fb7f43d67..9a768d4be41 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/pad/TBC.class and b/libjava/classpath/lib/gnu/javax/crypto/pad/TBC.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$1.class b/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$1.class index 2f7b2d8f478..41f77c62581 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$1.class and b/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$1.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$Poller.class b/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$Poller.class index f143726fe37..184019fbfe0 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$Poller.class and b/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$Poller.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$Spinner.class b/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$Spinner.class index 937382eab7c..e8b94542511 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$Spinner.class and b/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG$Spinner.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG.class b/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG.class index 717cf01987b..ebd02dab4e0 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG.class and b/libjava/classpath/lib/gnu/javax/crypto/prng/CSPRNG.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/sasl/SaslInputStream.class b/libjava/classpath/lib/gnu/javax/crypto/sasl/SaslInputStream.class index 8672abc861a..267aa7d35bf 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/sasl/SaslInputStream.class and b/libjava/classpath/lib/gnu/javax/crypto/sasl/SaslInputStream.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/sasl/SaslOutputStream.class b/libjava/classpath/lib/gnu/javax/crypto/sasl/SaslOutputStream.class index 06036018541..9f150b72270 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/sasl/SaslOutputStream.class and b/libjava/classpath/lib/gnu/javax/crypto/sasl/SaslOutputStream.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/sasl/srp/SRPClient.class b/libjava/classpath/lib/gnu/javax/crypto/sasl/srp/SRPClient.class index 293b0fc86fc..00eb2b46364 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/sasl/srp/SRPClient.class and b/libjava/classpath/lib/gnu/javax/crypto/sasl/srp/SRPClient.class differ diff --git a/libjava/classpath/lib/gnu/javax/crypto/sasl/srp/SRPServer.class b/libjava/classpath/lib/gnu/javax/crypto/sasl/srp/SRPServer.class index 7793ac3cd94..9a786e96c41 100644 Binary files a/libjava/classpath/lib/gnu/javax/crypto/sasl/srp/SRPServer.class and b/libjava/classpath/lib/gnu/javax/crypto/sasl/srp/SRPServer.class differ diff --git a/libjava/classpath/lib/gnu/javax/net/ssl/provider/CipherSuite.class b/libjava/classpath/lib/gnu/javax/net/ssl/provider/CipherSuite.class index 4f6e02f755f..c399610c43b 100644 Binary files a/libjava/classpath/lib/gnu/javax/net/ssl/provider/CipherSuite.class and b/libjava/classpath/lib/gnu/javax/net/ssl/provider/CipherSuite.class differ diff --git a/libjava/classpath/lib/gnu/javax/net/ssl/provider/OutputSecurityParameters.class b/libjava/classpath/lib/gnu/javax/net/ssl/provider/OutputSecurityParameters.class index a310c8fc232..d9210ca9be6 100644 Binary files a/libjava/classpath/lib/gnu/javax/net/ssl/provider/OutputSecurityParameters.class and b/libjava/classpath/lib/gnu/javax/net/ssl/provider/OutputSecurityParameters.class differ diff --git a/libjava/classpath/lib/gnu/javax/net/ssl/provider/SSLEngineImpl.class b/libjava/classpath/lib/gnu/javax/net/ssl/provider/SSLEngineImpl.class index 07546f9c8bb..71a1a767aaf 100644 Binary files a/libjava/classpath/lib/gnu/javax/net/ssl/provider/SSLEngineImpl.class and b/libjava/classpath/lib/gnu/javax/net/ssl/provider/SSLEngineImpl.class differ diff --git a/libjava/classpath/lib/gnu/javax/print/PrinterDialog.class b/libjava/classpath/lib/gnu/javax/print/PrinterDialog.class index 8496d9b1857..ba496c18e1b 100644 Binary files a/libjava/classpath/lib/gnu/javax/print/PrinterDialog.class and b/libjava/classpath/lib/gnu/javax/print/PrinterDialog.class differ diff --git a/libjava/classpath/lib/gnu/javax/security/auth/login/ConfigFileParser.class b/libjava/classpath/lib/gnu/javax/security/auth/login/ConfigFileParser.class index a985a494ee6..462f0c832e4 100644 Binary files a/libjava/classpath/lib/gnu/javax/security/auth/login/ConfigFileParser.class and b/libjava/classpath/lib/gnu/javax/security/auth/login/ConfigFileParser.class differ diff --git a/libjava/classpath/lib/gnu/javax/security/auth/login/ConfigFileTokenizer.class b/libjava/classpath/lib/gnu/javax/security/auth/login/ConfigFileTokenizer.class index f4f76c8e89b..114938ea149 100644 Binary files a/libjava/classpath/lib/gnu/javax/security/auth/login/ConfigFileTokenizer.class and b/libjava/classpath/lib/gnu/javax/security/auth/login/ConfigFileTokenizer.class differ diff --git a/libjava/classpath/lib/gnu/javax/security/auth/login/GnuConfiguration.class b/libjava/classpath/lib/gnu/javax/security/auth/login/GnuConfiguration.class index 07154e3489f..4a02d4d205a 100644 Binary files a/libjava/classpath/lib/gnu/javax/security/auth/login/GnuConfiguration.class and b/libjava/classpath/lib/gnu/javax/security/auth/login/GnuConfiguration.class differ diff --git a/libjava/classpath/lib/java/io/Console.class b/libjava/classpath/lib/java/io/Console.class new file mode 100644 index 00000000000..71bfe79db4d Binary files /dev/null and b/libjava/classpath/lib/java/io/Console.class differ diff --git a/libjava/classpath/lib/java/io/File.class b/libjava/classpath/lib/java/io/File.class index 3481ccff47f..9b7d110914d 100644 Binary files a/libjava/classpath/lib/java/io/File.class and b/libjava/classpath/lib/java/io/File.class differ diff --git a/libjava/classpath/lib/java/io/IOError.class b/libjava/classpath/lib/java/io/IOError.class new file mode 100644 index 00000000000..439f9251ae1 Binary files /dev/null and b/libjava/classpath/lib/java/io/IOError.class differ diff --git a/libjava/classpath/lib/java/io/ObjectOutputStream$1.class b/libjava/classpath/lib/java/io/ObjectOutputStream$1.class index 3ec0acfadfe..d221433b6b9 100644 Binary files a/libjava/classpath/lib/java/io/ObjectOutputStream$1.class and b/libjava/classpath/lib/java/io/ObjectOutputStream$1.class differ diff --git a/libjava/classpath/lib/java/io/ObjectOutputStream$2.class b/libjava/classpath/lib/java/io/ObjectOutputStream$2.class new file mode 100644 index 00000000000..bb87388be5d Binary files /dev/null and b/libjava/classpath/lib/java/io/ObjectOutputStream$2.class differ diff --git a/libjava/classpath/lib/java/io/ObjectOutputStream$PutField.class b/libjava/classpath/lib/java/io/ObjectOutputStream$PutField.class index ebb56959a50..7e1e62fb05b 100644 Binary files a/libjava/classpath/lib/java/io/ObjectOutputStream$PutField.class and b/libjava/classpath/lib/java/io/ObjectOutputStream$PutField.class differ diff --git a/libjava/classpath/lib/java/io/ObjectOutputStream.class b/libjava/classpath/lib/java/io/ObjectOutputStream.class index 5417d3d8541..2298131140f 100644 Binary files a/libjava/classpath/lib/java/io/ObjectOutputStream.class and b/libjava/classpath/lib/java/io/ObjectOutputStream.class differ diff --git a/libjava/classpath/lib/java/io/VMConsole.class b/libjava/classpath/lib/java/io/VMConsole.class new file mode 100644 index 00000000000..c6d68b736a4 Binary files /dev/null and b/libjava/classpath/lib/java/io/VMConsole.class differ diff --git a/libjava/classpath/lib/java/math/BigInteger.class b/libjava/classpath/lib/java/math/BigInteger.class index c27e41f7593..9da7a5bf9bf 100644 Binary files a/libjava/classpath/lib/java/math/BigInteger.class and b/libjava/classpath/lib/java/math/BigInteger.class differ diff --git a/libjava/classpath/lib/java/net/DatagramSocket.class b/libjava/classpath/lib/java/net/DatagramSocket.class index cf367bce130..dc5e0918638 100644 Binary files a/libjava/classpath/lib/java/net/DatagramSocket.class and b/libjava/classpath/lib/java/net/DatagramSocket.class differ diff --git a/libjava/classpath/lib/java/net/Socket.class b/libjava/classpath/lib/java/net/Socket.class index d0084213b21..bc1f7e18de0 100644 Binary files a/libjava/classpath/lib/java/net/Socket.class and b/libjava/classpath/lib/java/net/Socket.class differ diff --git a/libjava/classpath/lib/java/nio/channels/spi/SelectorProvider$1.class b/libjava/classpath/lib/java/nio/channels/spi/SelectorProvider$1.class new file mode 100644 index 00000000000..530998b6eb3 Binary files /dev/null and b/libjava/classpath/lib/java/nio/channels/spi/SelectorProvider$1.class differ diff --git a/libjava/classpath/lib/java/nio/channels/spi/SelectorProvider.class b/libjava/classpath/lib/java/nio/channels/spi/SelectorProvider.class index 9e9f9e7365c..8ffe3268cf2 100644 Binary files a/libjava/classpath/lib/java/nio/channels/spi/SelectorProvider.class and b/libjava/classpath/lib/java/nio/channels/spi/SelectorProvider.class differ diff --git a/libjava/classpath/lib/java/security/KeyStore$1.class b/libjava/classpath/lib/java/security/KeyStore$1.class new file mode 100644 index 00000000000..48bdcabff58 Binary files /dev/null and b/libjava/classpath/lib/java/security/KeyStore$1.class differ diff --git a/libjava/classpath/lib/java/security/KeyStore.class b/libjava/classpath/lib/java/security/KeyStore.class index 73563ee6d7a..7aed4c09ad8 100644 Binary files a/libjava/classpath/lib/java/security/KeyStore.class and b/libjava/classpath/lib/java/security/KeyStore.class differ diff --git a/libjava/classpath/lib/java/security/ProtectionDomain.class b/libjava/classpath/lib/java/security/ProtectionDomain.class index 46bd0afdd37..33e819a6ccf 100644 Binary files a/libjava/classpath/lib/java/security/ProtectionDomain.class and b/libjava/classpath/lib/java/security/ProtectionDomain.class differ diff --git a/libjava/classpath/lib/java/text/DateFormatSymbols.class b/libjava/classpath/lib/java/text/DateFormatSymbols.class index 8851a64243a..7a367e68d9f 100644 Binary files a/libjava/classpath/lib/java/text/DateFormatSymbols.class and b/libjava/classpath/lib/java/text/DateFormatSymbols.class differ diff --git a/libjava/classpath/lib/java/util/Formatter.class b/libjava/classpath/lib/java/util/Formatter.class index e2579ecf1f2..888c29ce773 100644 Binary files a/libjava/classpath/lib/java/util/Formatter.class and b/libjava/classpath/lib/java/util/Formatter.class differ diff --git a/libjava/classpath/lib/java/util/HashMap$1.class b/libjava/classpath/lib/java/util/HashMap$1.class index 60757daca3f..0be706669b8 100644 Binary files a/libjava/classpath/lib/java/util/HashMap$1.class and b/libjava/classpath/lib/java/util/HashMap$1.class differ diff --git a/libjava/classpath/lib/java/util/HashMap$2.class b/libjava/classpath/lib/java/util/HashMap$2.class index c62e4a0396c..89571fdd0b8 100644 Binary files a/libjava/classpath/lib/java/util/HashMap$2.class and b/libjava/classpath/lib/java/util/HashMap$2.class differ diff --git a/libjava/classpath/lib/java/util/HashMap$3.class b/libjava/classpath/lib/java/util/HashMap$3.class index 631d77583b4..94cd2bdd37f 100644 Binary files a/libjava/classpath/lib/java/util/HashMap$3.class and b/libjava/classpath/lib/java/util/HashMap$3.class differ diff --git a/libjava/classpath/lib/java/util/HashMap$HashEntry.class b/libjava/classpath/lib/java/util/HashMap$HashEntry.class index 28a0f2db2f4..b05ed91295a 100644 Binary files a/libjava/classpath/lib/java/util/HashMap$HashEntry.class and b/libjava/classpath/lib/java/util/HashMap$HashEntry.class differ diff --git a/libjava/classpath/lib/java/util/HashMap$HashIterator.class b/libjava/classpath/lib/java/util/HashMap$HashIterator.class index 1121d033ec3..b0bebf2eb9c 100644 Binary files a/libjava/classpath/lib/java/util/HashMap$HashIterator.class and b/libjava/classpath/lib/java/util/HashMap$HashIterator.class differ diff --git a/libjava/classpath/lib/java/util/HashMap.class b/libjava/classpath/lib/java/util/HashMap.class index 25389c5c43e..0afea525270 100644 Binary files a/libjava/classpath/lib/java/util/HashMap.class and b/libjava/classpath/lib/java/util/HashMap.class differ diff --git a/libjava/classpath/lib/java/util/HashSet.class b/libjava/classpath/lib/java/util/HashSet.class index dc57e6058c3..3e89bc110d3 100644 Binary files a/libjava/classpath/lib/java/util/HashSet.class and b/libjava/classpath/lib/java/util/HashSet.class differ diff --git a/libjava/classpath/lib/java/util/regex/Matcher.class b/libjava/classpath/lib/java/util/regex/Matcher.class index d45d3475212..0d623321cbf 100644 Binary files a/libjava/classpath/lib/java/util/regex/Matcher.class and b/libjava/classpath/lib/java/util/regex/Matcher.class differ diff --git a/libjava/classpath/lib/java/util/regex/Pattern.class b/libjava/classpath/lib/java/util/regex/Pattern.class index 06e4684e3bc..5ceb7792e00 100644 Binary files a/libjava/classpath/lib/java/util/regex/Pattern.class and b/libjava/classpath/lib/java/util/regex/Pattern.class differ diff --git a/libjava/classpath/lib/java/util/zip/ZipFile$1.class b/libjava/classpath/lib/java/util/zip/ZipFile$1.class index 205797c5672..9a02888cced 100644 Binary files a/libjava/classpath/lib/java/util/zip/ZipFile$1.class and b/libjava/classpath/lib/java/util/zip/ZipFile$1.class differ diff --git a/libjava/classpath/lib/java/util/zip/ZipFile$PartialInputStream.class b/libjava/classpath/lib/java/util/zip/ZipFile$PartialInputStream.class index cc7dcd68600..7d7d2192ccd 100644 Binary files a/libjava/classpath/lib/java/util/zip/ZipFile$PartialInputStream.class and b/libjava/classpath/lib/java/util/zip/ZipFile$PartialInputStream.class differ diff --git a/libjava/classpath/lib/java/util/zip/ZipFile$ZipEntryEnumeration.class b/libjava/classpath/lib/java/util/zip/ZipFile$ZipEntryEnumeration.class index eb721003946..d60a924f877 100644 Binary files a/libjava/classpath/lib/java/util/zip/ZipFile$ZipEntryEnumeration.class and b/libjava/classpath/lib/java/util/zip/ZipFile$ZipEntryEnumeration.class differ diff --git a/libjava/classpath/lib/java/util/zip/ZipFile.class b/libjava/classpath/lib/java/util/zip/ZipFile.class index e9ec7f76fee..6ae8f686c5a 100644 Binary files a/libjava/classpath/lib/java/util/zip/ZipFile.class and b/libjava/classpath/lib/java/util/zip/ZipFile.class differ diff --git a/libjava/classpath/lib/javax/swing/text/html/StyleSheet$BoxPainter.class b/libjava/classpath/lib/javax/swing/text/html/StyleSheet$BoxPainter.class index 2109f1f4734..9ceb67c7a63 100644 Binary files a/libjava/classpath/lib/javax/swing/text/html/StyleSheet$BoxPainter.class and b/libjava/classpath/lib/javax/swing/text/html/StyleSheet$BoxPainter.class differ diff --git a/libjava/classpath/lib/javax/swing/text/html/StyleSheet$ListPainter.class b/libjava/classpath/lib/javax/swing/text/html/StyleSheet$ListPainter.class index 5c70650aa9a..76409493a57 100644 Binary files a/libjava/classpath/lib/javax/swing/text/html/StyleSheet$ListPainter.class and b/libjava/classpath/lib/javax/swing/text/html/StyleSheet$ListPainter.class differ diff --git a/libjava/classpath/lib/javax/swing/text/html/StyleSheet.class b/libjava/classpath/lib/javax/swing/text/html/StyleSheet.class index fcdb02f9200..f6bf13edc48 100644 Binary files a/libjava/classpath/lib/javax/swing/text/html/StyleSheet.class and b/libjava/classpath/lib/javax/swing/text/html/StyleSheet.class differ diff --git a/libjava/classpath/lib/javax/xml/stream/util/ReaderDelegate.class b/libjava/classpath/lib/javax/xml/stream/util/ReaderDelegate.class deleted file mode 100644 index d8b79febcc4..00000000000 Binary files a/libjava/classpath/lib/javax/xml/stream/util/ReaderDelegate.class and /dev/null differ diff --git a/libjava/classpath/ltmain.sh b/libjava/classpath/ltmain.sh index 2d341c92aec..a03433f1789 100644 --- a/libjava/classpath/ltmain.sh +++ b/libjava/classpath/ltmain.sh @@ -1,9 +1,10 @@ # Generated from ltmain.m4sh. -# ltmain.sh (GNU libtool) 2.2.6 +# libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -32,50 +33,55 @@ # # Provide generalized library-building support services. # -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print informational messages (default) -# --version print version information -# -h, --help print short or long help message +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --no-finish let install mode avoid finish commands +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory # -# MODE-ARGS vary depending on the MODE. +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.6 -# automake: $automake_version -# autoconf: $autoconf_version +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool 1.3134 2009-11-29) 2.2.7a +# automake: $automake_version +# autoconf: $autoconf_version # # Report bugs to . -PROGRAM=ltmain.sh +PROGRAM=libtool PACKAGE=libtool -VERSION=2.2.6 -TIMESTAMP="" -package_revision=1.3012 +VERSION=2.2.7a +TIMESTAMP=" 1.3134 2009-11-29" +package_revision=1.3134 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then @@ -91,6 +97,14 @@ fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand @@ -114,17 +128,28 @@ $lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + : ${CP="cp -f"} -: ${ECHO="echo"} -: ${EGREP="/usr/bin/grep -E"} -: ${FGREP="/usr/bin/grep -F"} -: ${GREP="/usr/bin/grep"} +: ${ECHO=$as_echo} +: ${EGREP="/bin/grep -E"} +: ${FGREP="/bin/grep -F"} +: ${GREP="/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} -: ${SED="/opt/local/bin/gsed"} +: ${SED="/mount/endor/wildenhu/local-x86_64/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} @@ -159,23 +184,26 @@ basename="s,^.*/,," func_dirname_and_basename () { # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # Generated shell functions inserted here. # These SED scripts presuppose an absolute path with a trailing slash. -pathcar="s,^/\([^/]*\).*$,\1," -pathcdr="s,^/[^/]*,," -removedotparts="s@/\(\./\)\{1,\}@/@g;s,/\.$,/," -collapseslashes="s@/\{1,\}@/@g" -finalslash="s,/*$,/," +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, @@ -315,21 +343,9 @@ func_relative_path () fi } -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - # The name of this program: -# In the unlikely event $progname began with a '-', it would play havoc with -# func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result -case $progname in - -*) progname=./$progname ;; -esac # Make sure we have an absolute path for reexecution: case $progpath in @@ -403,6 +419,13 @@ func_verbose () : } +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + # func_error arg... # Echo program name prefixed message to standard error. func_error () @@ -471,9 +494,9 @@ func_mkdir_p () case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done - my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do @@ -523,7 +546,7 @@ func_mktempdir () func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi - $ECHO "X$my_tmpdir" | $Xsed + $ECHO "$my_tmpdir" } @@ -537,7 +560,7 @@ func_quote_for_eval () { case $1 in *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac @@ -564,7 +587,7 @@ func_quote_for_expand () { case $1 in *[\\\`\"]*) - my_arg=`$ECHO "X$1" | $Xsed \ + my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; @@ -641,7 +664,15 @@ func_show_eval_locale () # Echo version message to standard output and exit. func_version () { - $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# // + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ @@ -654,19 +685,20 @@ func_version () # Echo short help message to standard output and exit. func_usage () { - $SED -n '/^# Usage:/,/# -h/ { + $SED -n '/^# Usage:/,/^# *-h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" - $ECHO + echo $ECHO "run \`$progname --help | more' for full usage" exit $? } -# func_help -# Echo long help message to standard output and exit. +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { @@ -683,7 +715,10 @@ func_help () s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" - exit $? + ret=$? + if test -z "$1"; then + exit $ret + fi } # func_missing_arg argname @@ -701,29 +736,6 @@ exit_cmd=: -# Check that we have a working $ECHO. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell, and then maybe $ECHO will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null; then + case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " @@ -2014,6 +2078,11 @@ func_mode_install () # Aesthetically quote it. func_quote_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac # We need to accept at least all the BSD install flags. dest= @@ -2023,8 +2092,10 @@ func_mode_install () install_type= isdir=no stripme= + no_mode=: for arg do + arg2= if test -n "$dest"; then files="$files $dest" dest=$arg @@ -2034,10 +2105,9 @@ func_mode_install () case $arg in -d) isdir=yes ;; -f) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac + if $install_cp; then :; else + prev=$arg + fi ;; -g | -m | -o) prev=$arg @@ -2051,6 +2121,10 @@ func_mode_install () *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi prev= else dest=$arg @@ -2062,6 +2136,10 @@ func_mode_install () # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + install_shared_prog="$install_shared_prog $func_quote_for_eval_result" done test -z "$install_prog" && \ @@ -2070,6 +2148,13 @@ func_mode_install () test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result" + fi + fi + if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" @@ -2157,7 +2242,7 @@ func_mode_install () if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that @@ -2170,9 +2255,9 @@ func_mode_install () if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else - relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" @@ -2190,7 +2275,7 @@ func_mode_install () test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. - func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in @@ -2330,7 +2415,7 @@ func_mode_install () if test -f "$lib"; then func_source "$lib" fi - libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no @@ -2349,7 +2434,7 @@ func_mode_install () file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. - relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" @@ -2368,7 +2453,7 @@ func_mode_install () } else # Install the binary that we compiled earlier. - file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi @@ -2418,7 +2503,7 @@ func_mode_install () test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" - if test -n "$current_libdirs"; then + if test -n "$current_libdirs" && $opt_finish; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' @@ -2470,6 +2555,10 @@ func_generate_dlsyms () extern \"C\" { #endif +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + /* External symbol declarations for the compiler. */\ " @@ -2479,7 +2568,7 @@ extern \"C\" { $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. - progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" @@ -2487,15 +2576,15 @@ extern \"C\" { if test -n "$exclude_expsyms"; then $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' + $EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" } fi @@ -2504,23 +2593,23 @@ extern \"C\" { export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + ${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' < "$nlist" > "$export_symbols" case $host in *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + echo EXPORTS > "$output_objdir/$outputname.def" + cat "$export_symbols" >> "$output_objdir/$outputname.def" ;; esac } else $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' + ${SED} -e 's/\([].[*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/' < "$export_symbols" > "$output_objdir/$outputname.exp" + $GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" case $host in - *cygwin | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + *cygwin* | *mingw* | *cegcc* ) + echo EXPORTS > "$output_objdir/$outputname.def" + cat "$nlist" >> "$output_objdir/$outputname.def" ;; esac } @@ -2532,7 +2621,7 @@ extern \"C\" { func_basename "$dlprefile" name="$func_basename_result" $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' + $ECHO ": $name " >> "$nlist" eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } done @@ -2562,10 +2651,10 @@ extern \"C\" { if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else - $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { @@ -2575,7 +2664,7 @@ typedef struct { " case $host in *cygwin* | *mingw* | *cegcc* ) - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" @@ -2588,7 +2677,7 @@ typedef struct { lt_dlsym_const=const ;; esac - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist @@ -2604,7 +2693,7 @@ lt_${my_prefix}_LTX_preloaded_symbols[] = eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac - $ECHO >> "$output_objdir/$my_dlsyms" "\ + echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; @@ -2662,16 +2751,16 @@ static const void *lt_preloaded_setup() { case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; @@ -2685,8 +2774,8 @@ static const void *lt_preloaded_setup() { # really was required. # Nullify the symbol file. - compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } @@ -2696,6 +2785,7 @@ static const void *lt_preloaded_setup() { # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug @@ -2706,9 +2796,9 @@ func_win32_libid () win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | + if $OBJDUMP -f "$1" | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pe-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + win32_nmres=`$NM -f posix -A "$1" | $SED -n -e ' 1,100{ / I /{ @@ -2745,7 +2835,18 @@ func_extract_an_archive () $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else @@ -2838,18 +2939,23 @@ func_extract_archives () } - -# func_emit_wrapper_part1 [arg=no] +# func_emit_wrapper [arg=no] # -# Emit the first part of a libtool wrapper script on stdout. -# For more information, see the description associated with -# func_emit_wrapper(), below. -func_emit_wrapper_part1 () +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () { - func_emit_wrapper_part1_arg1=no - if test -n "$1" ; then - func_emit_wrapper_part1_arg1=$1 - fi + func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL @@ -2865,7 +2971,6 @@ func_emit_wrapper_part1 () # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible @@ -2896,31 +3001,29 @@ if test \"\$libtool_install_magic\" = \"$magic\"; then else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then - ECHO=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$ECHO works! - : - else - # Restart under the correct shell, and then maybe \$ECHO will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" fi\ -" - $ECHO "\ # Find the directory that this script lives in. - thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do - destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then @@ -2930,30 +3033,13 @@ else esac fi - file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done -" -} -# end: func_emit_wrapper_part1 - -# func_emit_wrapper_part2 [arg=no] -# -# Emit the second part of a libtool wrapper script on stdout. -# For more information, see the description associated with -# func_emit_wrapper(), below. -func_emit_wrapper_part2 () -{ - func_emit_wrapper_part2_arg1=no - if test -n "$1" ; then - func_emit_wrapper_part2_arg1=$1 - fi - - $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then @@ -2961,7 +3047,7 @@ func_emit_wrapper_part2 () fi # remove .libs from thisdir case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi @@ -2992,7 +3078,7 @@ func_emit_wrapper_part2 () # relink executable if necessary if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : + if relink_command_output=\`eval \"\$relink_command\" 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" @@ -3024,7 +3110,7 @@ func_emit_wrapper_part2 () # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " @@ -3064,41 +3150,12 @@ func_emit_wrapper_part2 () # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } -# end: func_emit_wrapper_part2 - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=no - if test -n "$1" ; then - func_emit_wrapper_arg1=$1 - fi - - # split this up so that func_emit_cwrapperexe_src - # can call each part independently. - func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" - func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" -} # func_to_host_path arg @@ -3125,23 +3182,19 @@ func_emit_wrapper () func_to_host_path () { func_to_host_path_result="$1" - if test -n "$1" ; then + if test -n "$1"; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result - lt_sed_strip_trailing_spaces="s/[ ]*\$//" - func_to_host_path_tmp1=`( cmd //c echo "$1" |\ - $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ - $SED -e "$lt_sed_naive_backslashify"` + func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) - func_to_host_path_tmp1=`cygpath -w "$1"` - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ - $SED -e "$lt_sed_naive_backslashify"` + func_to_host_path_result=`cygpath -w "$1" | + $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero @@ -3153,17 +3206,17 @@ func_to_host_path () # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then - func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" | $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. - func_to_host_path_result="" + func_to_host_path_result= fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" - func_error " '$1'" + func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" @@ -3196,30 +3249,24 @@ func_to_host_path () func_to_host_pathlist () { func_to_host_pathlist_result="$1" - if test -n "$1" ; then + if test -n "$1"; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. - func_to_host_pathlist_tmp2="$1" - # Once set for this call, this variable should not be - # reassigned. It is used in tha fallback case. - func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ - $SED -e 's|^:*||' -e 's|:*$||'` + func_stripname : : "$1" + func_to_host_pathlist_tmp1=$func_stripname_result case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. - lt_sed_strip_trailing_spaces="s/[ ]*\$//" - func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ - $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ - $SED -e "$lt_sed_naive_backslashify"` + func_to_host_pathlist_result=` + ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) - func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` - func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | $SED -e "$lt_sed_naive_backslashify"` ;; * ) @@ -3235,18 +3282,17 @@ func_to_host_pathlist () if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else - func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + func_append func_to_host_pathlist_result ";$func_to_host_path_result" fi fi fi - IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac - if test -z "$func_to_host_pathlist_result" ; then + if test -z "$func_to_host_pathlist_result"; then func_error "Could not determine the host path(s) corresponding to" - func_error " '$1'" + func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression @@ -3263,7 +3309,7 @@ func_to_host_pathlist () ;; esac case "$1" in - *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + *: ) func_append func_to_host_pathlist_result ";" ;; esac ;; @@ -3295,24 +3341,20 @@ func_emit_cwrapperexe_src () */ EOF cat <<"EOF" +#ifdef _MSC_VER +# define _CRT_SECURE_NO_DEPRECATE 1 +#endif #include #include #ifdef _MSC_VER # include # include # include -# define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include -# define HAVE_SETENV -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif # endif #endif #include @@ -3324,6 +3366,44 @@ int setenv (const char *, const char *, int); #include #include +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) @@ -3339,14 +3419,7 @@ int setenv (const char *, const char *, int); # define S_IXGRP 0 #endif -#ifdef _MSC_VER -# define S_IXUSR _S_IEXEC -# define stat _stat -# ifndef _INTPTR_T_DEFINED -# define intptr_t int -# endif -#endif - +/* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' @@ -3377,10 +3450,6 @@ int setenv (const char *, const char *, int); # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ -#ifdef __CYGWIN__ -# define FOPEN_WB "wb" -#endif - #ifndef FOPEN_WB # define FOPEN_WB "w" #endif @@ -3394,7 +3463,7 @@ int setenv (const char *, const char *, int); } while (0) #undef LTWRAPPER_DEBUGPRINTF -#if defined DEBUGWRAPPER +#if defined LT_DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) @@ -3421,28 +3490,11 @@ char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_opt_process_env_set (const char *arg); -void lt_opt_process_env_prepend (const char *arg); -void lt_opt_process_env_append (const char *arg); -int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); - -static const char *script_text_part1 = -EOF - - func_emit_wrapper_part1 yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ "/' -e 's/$/\\n"/' - echo ";" - cat <') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' + cat <<"EOF" +} EOF } # end: func_emit_cwrapperexe_src +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval "$file_magic_cmd \"\$1\" 2>/dev/null" | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + # func_mode_link arg... func_mode_link () { @@ -4661,7 +4714,7 @@ func_mode_link () esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; @@ -4680,7 +4733,7 @@ func_mode_link () -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; @@ -4705,6 +4758,9 @@ func_mode_link () # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; + *-*-linux*) + test "X$arg" = "X-lc" && continue + ;; esac elif test "X$arg" = "X-lc_r"; then case $host in @@ -4866,7 +4922,7 @@ func_mode_link () for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" - arg="$arg $wl$func_quote_for_eval_result" + arg="$arg $func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_result" done IFS="$save_ifs" @@ -4922,8 +4978,9 @@ func_mode_link () # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files + # -tp=* Portland pgcc target processor selection -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" @@ -5070,7 +5127,7 @@ func_mode_link () func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" + eval "arg=\"$export_dynamic_flag_spec\"" func_append compile_command " $arg" func_append finalize_command " $arg" fi @@ -5083,12 +5140,12 @@ func_mode_link () if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + eval "sys_lib_search_path=\"$sys_lib_search_path_spec\"" + eval "sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" @@ -5206,7 +5263,8 @@ func_mode_link () # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do - deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + func_basename "$deplib" + deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; @@ -5385,7 +5443,7 @@ func_mode_link () match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi @@ -5395,15 +5453,15 @@ func_mode_link () ;; esac if test "$valid_a_lib" != yes; then - $ECHO + echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because the file extensions .$libext of this argument makes me believe" - $ECHO "*** that it is just a static archive that I should not use here." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." else - $ECHO + echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" @@ -5476,7 +5534,7 @@ func_mode_link () # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; @@ -5484,7 +5542,7 @@ func_mode_link () esac done fi - dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then @@ -5738,7 +5796,7 @@ func_mode_link () fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - $ECHO + echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else @@ -5777,7 +5835,7 @@ func_mode_link () shift realname="$1" shift - libname=`eval "\\$ECHO \"$libname_spec\""` + eval "libname=\"$libname_spec\"" # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" @@ -5790,7 +5848,7 @@ func_mode_link () versuffix="-$major" ;; esac - eval soname=\"$soname_spec\" + eval "soname=\"$soname_spec\"" else soname="$realname" fi @@ -5841,9 +5899,9 @@ func_mode_link () if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then - $ECHO - $ECHO "*** And there doesn't seem to be a static archive available" - $ECHO "*** The link will probably fail, sorry" + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi @@ -5870,7 +5928,7 @@ func_mode_link () test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" + add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -5983,21 +6041,21 @@ func_mode_link () # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. - $ECHO + echo $ECHO "*** Warning: This system can not link to static lib archive $lib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then - $ECHO "*** But as you try to build a module library, libtool will still create " - $ECHO "*** a static module, that should work as long as the dlopening application" - $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module @@ -6051,6 +6109,7 @@ func_mode_link () if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do + path= case $deplib in -L*) path="$deplib" ;; *.la) @@ -6071,7 +6130,7 @@ func_mode_link () case $host in *-*-darwin*) depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp @@ -6093,7 +6152,7 @@ func_mode_link () ;; esac else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ @@ -6116,7 +6175,7 @@ func_mode_link () compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else - compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" @@ -6146,7 +6205,7 @@ func_mode_link () fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" + eval tmp_libs=\$$var new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so @@ -6197,7 +6256,7 @@ func_mode_link () *) tmp_libs="$tmp_libs $deplib" ;; esac done - eval $var=\"$tmp_libs\" + eval $var=\$tmp_libs done # for var fi # Last step: remove runtime libs from dependency_libs @@ -6260,8 +6319,8 @@ func_mode_link () lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" + eval "shared_ext=\"$shrext_cmds\"" + eval "libname=\"$libname_spec\"" ;; *) test "$module" = no && \ @@ -6271,8 +6330,8 @@ func_mode_link () # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" + eval "shared_ext=\"$shrext_cmds\"" + eval "libname=\"$libname_spec\"" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result @@ -6284,7 +6343,7 @@ func_mode_link () if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else - $ECHO + echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" libobjs="$libobjs $objs" @@ -6352,7 +6411,7 @@ func_mode_link () age="$number_minor" revision="$number_revision" ;; - freebsd-aout|freebsd-elf|sunos) + freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" @@ -6586,14 +6645,14 @@ func_mode_link () oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do - # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` - # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` - # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then @@ -6634,7 +6693,7 @@ func_mode_link () if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) @@ -6711,21 +6770,21 @@ EOF esac fi if test -n "$i" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + eval "libname=\"$libname_spec\"" + eval "deplib_matches=\"$library_names_spec\"" set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then newdeplibs="$newdeplibs $i" else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which I believe you do not have" - $ECHO "*** because a test_compile did reveal that the linker did not use it for" - $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which I believe you do not have" + echo "*** because a test_compile did reveal that the linker did not use it for" + echo "*** its dynamic dependency list that programs get resolved with at runtime." fi fi ;; @@ -6754,30 +6813,30 @@ EOF esac fi if test -n "$i" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + eval "libname=\"$libname_spec\"" + eval "deplib_matches=\"$library_names_spec\"" set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then newdeplibs="$newdeplibs $i" else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because a test_compile did reveal that the linker did not use this one" - $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because a test_compile did reveal that the linker did not use this one" + echo "*** as a dynamic dependency that programs can get resolved with at runtime." fi fi else droppeddeps=yes - $ECHO + echo $ECHO "*** Warning! Library $i is needed by this library but I was not able to" - $ECHO "*** make it link in! You will probably need to install it or some" - $ECHO "*** library that it depends on before this library will be fully" - $ECHO "*** functional. Installing it before continuing would be even better." + echo "*** make it link in! You will probably need to install it or some" + echo "*** library that it depends on before this library will be fully" + echo "*** functional. Installing it before continuing would be even better." fi ;; *) @@ -6804,7 +6863,7 @@ EOF esac fi if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` + eval "libname=\"$libname_spec\"" for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do @@ -6823,10 +6882,10 @@ EOF potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + if eval "$file_magic_cmd \"\$potlib\"" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" @@ -6838,12 +6897,12 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else @@ -6876,12 +6935,12 @@ EOF esac fi if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` + eval "libname=\"$libname_spec\"" for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" @@ -6892,12 +6951,12 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $ECHO + echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - $ECHO "*** I have the capability to make that library automatically link in when" - $ECHO "*** you link to this library. But I can only do this if you have a" - $ECHO "*** shared version of the library, which you do not appear to have" - $ECHO "*** because I did check the linker path looking for a file starting" + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else @@ -6915,25 +6974,25 @@ EOF ;; none | unknown | *) newdeplibs="" - tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ - -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi - if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | - $GREP . >/dev/null; then - $ECHO + case $tmp_deplibs in + *[!\ \ ]*) + echo if test "X$deplibs_check_method" = "Xnone"; then - $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + echo "*** Warning: inter-library dependencies are not supported in this platform." else - $ECHO "*** Warning: inter-library dependencies are not known to be supported." + echo "*** Warning: inter-library dependencies are not known to be supported." fi - $ECHO "*** All declared inter-library dependencies are being dropped." + echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes - fi + ;; + esac ;; esac versuffix=$versuffix_save @@ -6945,23 +7004,23 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then - $ECHO - $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - $ECHO "*** a static module, that should work as long as the dlopening" - $ECHO "*** application is linked with the -dlopen flag." + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then - $ECHO - $ECHO "*** However, this would only work if libtool was able to extract symbol" - $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" - $ECHO "*** not find such a program. So, this module is probably useless." - $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" @@ -6971,16 +7030,16 @@ EOF build_libtool_libs=no fi else - $ECHO "*** The inter-library dependencies that have been dropped here will be" - $ECHO "*** automatically added whenever a program is linked with this library" - $ECHO "*** or is declared to -dlopen it." + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then - $ECHO - $ECHO "*** Since this library must not contain undefined symbols," - $ECHO "*** because either the platform does not support them or" - $ECHO "*** it was explicitly requested with -no-undefined," - $ECHO "*** libtool will only create a static version of it." + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module @@ -6997,9 +7056,9 @@ EOF # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) - newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac @@ -7059,7 +7118,7 @@ EOF esac fi else - eval flag=\"$hardcode_libdir_flag_spec\" + eval "flag=\"$hardcode_libdir_flag_spec\"" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then @@ -7074,9 +7133,9 @@ EOF test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + eval "dep_rpath=\"$hardcode_libdir_flag_spec_ld\"" else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then @@ -7085,7 +7144,8 @@ EOF for dir in $perm_rpath; do rpath="$rpath$dir:" done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + eval $runpath_var=\$rpath\$$runpath_var + export $runpath_var fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi @@ -7093,19 +7153,20 @@ EOF shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + eval $shlibpath_var=\$shlibpath\$$shlibpath_var + export $shlibpath_var fi # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" + eval "shared_ext=\"$shrext_cmds\"" + eval "library_names=\"$library_names_spec\"" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" + eval "soname=\"$soname_spec\"" else soname="$realname" fi @@ -7121,7 +7182,7 @@ EOF done # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= @@ -7161,7 +7222,7 @@ EOF save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" - eval cmd=\"$cmd\" + eval "cmd=\"$cmd\"" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then @@ -7187,7 +7248,7 @@ EOF if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + $opt_dry_run || $ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols" fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then @@ -7225,7 +7286,7 @@ EOF fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + eval "libobjs=\"\$libobjs $whole_archive_flag_spec\"" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" @@ -7238,30 +7299,30 @@ EOF fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" + eval "flag=\"$thread_safe_flag_spec\"" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + $opt_dry_run || (cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U) || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" + eval "test_cmds=\"$module_expsym_cmds\"" cmds=$module_expsym_cmds else - eval test_cmds=\"$module_cmds\" + eval "test_cmds=\"$module_cmds\"" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" + eval "test_cmds=\"$archive_expsym_cmds\"" cmds=$archive_expsym_cmds else - eval test_cmds=\"$archive_cmds\" + eval "test_cmds=\"$archive_cmds\"" cmds=$archive_cmds fi fi @@ -7288,7 +7349,8 @@ EOF save_libobjs=$libobjs fi save_output=$output - output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + func_basename "$output" + output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. @@ -7301,12 +7363,12 @@ EOF if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" - $ECHO 'INPUT (' > $output + echo 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done - $ECHO ')' >> $output + echo ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk @@ -7329,7 +7391,7 @@ EOF if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" + eval "test_cmds=\"$reload_cmds\"" func_len " $test_cmds" len0=$func_len_result len=$len0 @@ -7348,17 +7410,19 @@ EOF # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + reload_objs=$objlist + eval "concat_cmds=\"$reload_cmds\"" else # All subsequent reloadable object files will link in # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + reload_objs="$objlist $last_robj" + eval "concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext - objlist=$obj + objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result @@ -7368,9 +7432,10 @@ EOF # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + reload_objs="$objlist $last_robj" + eval "concat_cmds=\"\${concat_cmds}$reload_cmds\"" if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + eval "concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"" fi delfiles="$delfiles $output" @@ -7385,9 +7450,9 @@ EOF libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + eval "concat_cmds=\"\$concat_cmds$export_symbols_cmds\"" if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + eval "concat_cmds=\"\$concat_cmds~\$RM $last_robj\"" fi fi @@ -7427,7 +7492,7 @@ EOF if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + $opt_dry_run || $ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols" fi if test -n "$orig_export_symbols"; then @@ -7450,7 +7515,7 @@ EOF output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + eval "libobjs=\"\$libobjs $whole_archive_flag_spec\"" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the @@ -7474,7 +7539,7 @@ EOF if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" + eval "cmds=\"\$cmds~\$RM $delfiles\"" fi # Add any objects from preloaded convenience libraries @@ -7490,7 +7555,7 @@ EOF save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" - eval cmd=\"$cmd\" + eval "cmd=\"$cmd\"" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" @@ -7512,7 +7577,7 @@ EOF # Restore the uninstalled library and exit if test "$mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + $opt_dry_run || (cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname) || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then @@ -7591,8 +7656,8 @@ EOF if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + eval "tmp_whole_archive_flags=\"$whole_archive_flag_spec\"" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" @@ -7603,7 +7668,7 @@ EOF fi # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' @@ -7625,7 +7690,7 @@ EOF # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + # $opt_dry_run || echo timestamp > $libobj || exit $? exit $EXIT_SUCCESS fi @@ -7663,8 +7728,8 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac @@ -7681,8 +7746,8 @@ EOF esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac @@ -7748,7 +7813,7 @@ EOF esac fi else - eval flag=\"$hardcode_libdir_flag_spec\" + eval "flag=\"$hardcode_libdir_flag_spec\"" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then @@ -7777,7 +7842,7 @@ EOF if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" + eval "rpath=\" $hardcode_libdir_flag_spec\"" fi compile_rpath="$rpath" @@ -7799,7 +7864,7 @@ EOF esac fi else - eval flag=\"$hardcode_libdir_flag_spec\" + eval "flag=\"$hardcode_libdir_flag_spec\"" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then @@ -7813,14 +7878,14 @@ EOF if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" + eval "rpath=\" $hardcode_libdir_flag_spec\"" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. - compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" @@ -7832,15 +7897,15 @@ EOF wrappers_required=yes case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; - *cegcc) - # Disable wrappers for cegcc, we are cross compiling anyway. - wrappers_required=no - ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no @@ -7849,7 +7914,7 @@ EOF esac if test "$wrappers_required" = no; then # Replace the output file specification. - compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. @@ -7896,7 +7961,7 @@ EOF # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit @@ -7915,7 +7980,7 @@ EOF if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then - relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= @@ -7927,7 +7992,7 @@ EOF fi # Replace the output file specification. - link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname @@ -7951,18 +8016,7 @@ EOF fi done relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $ECHO for shipping. - if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. @@ -8083,7 +8137,7 @@ EOF done | sort | sort -uc >/dev/null 2>&1); then : else - $ECHO "copying selected object files to avoid basename conflicts..." + echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_mkdir_p "$gentop" @@ -8115,7 +8169,7 @@ EOF esac done fi - eval cmds=\"$old_archive_cmds\" + eval "cmds=\"$old_archive_cmds\"" func_len " $cmds" len=$func_len_result @@ -8135,7 +8189,7 @@ EOF do last_oldobj=$obj done - eval test_cmds=\"$old_archive_cmds\" + eval "test_cmds=\"$old_archive_cmds\"" func_len " $test_cmds" len0=$func_len_result len=$len0 @@ -8154,7 +8208,7 @@ EOF RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + eval "concat_cmds=\"\${concat_cmds}$old_archive_cmds\"" objlist= len=$len0 fi @@ -8162,9 +8216,9 @@ EOF RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" + eval "cmds=\"\$concat_cmds\"" else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + eval "cmds=\"\$concat_cmds~\$old_archive_cmds\"" fi fi fi @@ -8194,7 +8248,7 @@ EOF done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi @@ -8214,7 +8268,7 @@ EOF *.la) func_basename "$deplib" name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" @@ -8230,7 +8284,7 @@ EOF *.la) func_basename "$lib" name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlfiles="$newdlfiles $libdir/$name" @@ -8249,7 +8303,7 @@ EOF # the library: func_basename "$lib" name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlprefiles="$newdlprefiles $libdir/$name" @@ -8579,3 +8633,4 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # sh-indentation:2 # End: # vi:sw=2 + diff --git a/libjava/classpath/ltoptions.m4 b/libjava/classpath/ltoptions.m4 index 34151a3ba62..5ef12ced2a8 100644 --- a/libjava/classpath/ltoptions.m4 +++ b/libjava/classpath/ltoptions.m4 @@ -1,6 +1,7 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives @@ -125,7 +126,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) @@ -133,13 +134,13 @@ case $host in esac test -z "$AS" && AS=as -_LT_DECL([], [AS], [0], [Assembler program])dnl +_LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], diff --git a/libjava/classpath/ltversion.m4 b/libjava/classpath/ltversion.m4 index b8e154fe6e1..bf87f77132d 100644 --- a/libjava/classpath/ltversion.m4 +++ b/libjava/classpath/ltversion.m4 @@ -9,15 +9,15 @@ # Generated from ltversion.in. -# serial 3012 ltversion.m4 +# serial 3134 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.2.6]) -m4_define([LT_PACKAGE_REVISION], [1.3012]) +m4_define([LT_PACKAGE_VERSION], [2.2.7a]) +m4_define([LT_PACKAGE_REVISION], [1.3134]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.6' -macro_revision='1.3012' +[macro_version='2.2.7a' +macro_revision='1.3134' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff --git a/libjava/classpath/lt~obsolete.m4 b/libjava/classpath/lt~obsolete.m4 index 637bb2066c4..bf92b5e0790 100644 --- a/libjava/classpath/lt~obsolete.m4 +++ b/libjava/classpath/lt~obsolete.m4 @@ -1,6 +1,6 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives @@ -77,7 +77,6 @@ m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) @@ -90,3 +89,10 @@ m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/libjava/classpath/m4/ax_func_which_gethostbyname_r.m4 b/libjava/classpath/m4/ax_func_which_gethostbyname_r.m4 index d1811efe3d4..6fbe8eedeaa 100644 --- a/libjava/classpath/m4/ax_func_which_gethostbyname_r.m4 +++ b/libjava/classpath/m4/ax_func_which_gethostbyname_r.m4 @@ -54,13 +54,13 @@ ac_cv_func_which_gethostbyname_r=unknown # netdb.h is not declaring the function, and the compiler is thereby # assuming an implicit prototype. In which case, we're out of luck. # -AC_COMPILE_IFELSE( +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ AC_LANG_PROGRAM( [[#include ]], [[ char *name = "www.gnu.org"; (void)gethostbyname_r(name) /* ; */ - ]]), + ]])])], ac_cv_func_which_gethostbyname_r=no) # @@ -70,7 +70,7 @@ AC_COMPILE_IFELSE( if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then -AC_COMPILE_IFELSE( +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ AC_LANG_PROGRAM( [[#include ]], [[ @@ -80,7 +80,7 @@ AC_COMPILE_IFELSE( int buflen = 1024; int my_h_errno; (void)gethostbyname_r(name, &ret, buf, buflen, &retp, &my_h_errno) /* ; */ - ]]), + ]])])], ac_cv_func_which_gethostbyname_r=six) fi @@ -92,7 +92,7 @@ fi if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then -AC_COMPILE_IFELSE( +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ AC_LANG_PROGRAM( [[#include ]], [[ @@ -102,7 +102,7 @@ AC_COMPILE_IFELSE( int buflen = 1024; int my_h_errno; (void)gethostbyname_r(name, &ret, buf, buflen, &my_h_errno) /* ; */ - ]]), + ]])])], ac_cv_func_which_gethostbyname_r=five) fi @@ -114,7 +114,7 @@ fi if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then -AC_COMPILE_IFELSE( +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ AC_LANG_PROGRAM( [[#include ]], [[ @@ -122,7 +122,7 @@ AC_COMPILE_IFELSE( struct hostent ret; struct hostent_data data; (void)gethostbyname_r(name, &ret, &data) /* ; */ - ]]), + ]])])], ac_cv_func_which_gethostbyname_r=three) fi diff --git a/libjava/classpath/missing b/libjava/classpath/missing index 28055d2ae6f..86a8fc31e3c 100755 --- a/libjava/classpath/missing +++ b/libjava/classpath/missing @@ -1,10 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -scriptversion=2009-04-28.21; # UTC +scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. +# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -84,7 +84,6 @@ Supported PROGRAM values: help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and @@ -122,15 +121,6 @@ case $1 in # Not GNU programs, they don't have --version. ;; - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. @@ -226,7 +216,7 @@ WARNING: \`$1' $msg. You should only need it if \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then - eval LASTARG="\${$#}" + eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` @@ -256,7 +246,7 @@ WARNING: \`$1' is $msg. You should only need it if \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then - eval LASTARG="\${$#}" + eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` @@ -318,41 +308,6 @@ WARNING: \`$1' is $msg. You should only need it if touch $file ;; - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. diff --git a/libjava/classpath/native/jni/classpath/jcl.c b/libjava/classpath/native/jni/classpath/jcl.c index 0180ab9f0f5..09709654bfc 100644 --- a/libjava/classpath/native/jni/classpath/jcl.c +++ b/libjava/classpath/native/jni/classpath/jcl.c @@ -1,5 +1,5 @@ /* jcl.c - Copyright (C) 1998, 2005, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 1998, 2005, 2006, 2008, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + GNU Classpath 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 @@ -42,12 +42,24 @@ exception statement from your version. */ #include #include -#ifndef __GNUC__ - #ifndef __attribute__ - #define __attribute__(x) /* nothing */ - #endif +#if !defined(__GNUC__) && !defined(__attribute__) +# define __attribute__(x) /* nothing */ #endif +#if SIZEOF_VOID_P == 8 +# define JCL_POINTER_CLASSNAME "gnu/classpath/Pointer64" +# define JCL_POINTER_DATASIGN "J" +# define JCL_POINTER_INTTYPE jlong +# define JCL_POINTER_GETFIELD GetLongField +#elif SIZEOF_VOID_P == 4 +# define JCL_POINTER_CLASSNAME "gnu/classpath/Pointer32" +# define JCL_POINTER_DATASIGN "I" +# define JCL_POINTER_INTTYPE jint +# define JCL_POINTER_GETFIELD GetIntField +#else +# error "Pointer size is not supported." +#endif /* SIZEOF_VOID_P */ + /* * Cached Pointer class info. */ @@ -55,6 +67,12 @@ static jclass rawDataClass = NULL; static jfieldID rawData_fid = NULL; static jmethodID rawData_mid = NULL; +/* Define JCL_NO_JNIONLOAD to build JCL without JNI_OnLoad exported. + * (rawDataClass and friends are initialized lazily in that case.) + */ + +#ifndef JCL_NO_JNIONLOAD + /* * JNI OnLoad constructor. */ @@ -69,35 +87,23 @@ JNI_OnLoad (JavaVM *vm, void *reserved __attribute__((unused))) return JNI_VERSION_1_4; } env = (JNIEnv *) envp; -#if SIZEOF_VOID_P == 8 - rawDataClass = (*env)->FindClass (env, "gnu/classpath/Pointer64"); - if (rawDataClass != NULL) - rawDataClass = (*env)->NewGlobalRef (env, rawDataClass); - if (rawDataClass != NULL) - { - rawData_fid = (*env)->GetFieldID (env, rawDataClass, "data", "J"); - rawData_mid = (*env)->GetMethodID (env, rawDataClass, "", "(J)V"); - } -#else -#if SIZEOF_VOID_P == 4 - rawDataClass = (*env)->FindClass (env, "gnu/classpath/Pointer32"); + rawDataClass = (*env)->FindClass (env, JCL_POINTER_CLASSNAME); if (rawDataClass != NULL) rawDataClass = (*env)->NewGlobalRef (env, rawDataClass); if (rawDataClass != NULL) { - rawData_fid = (*env)->GetFieldID (env, rawDataClass, "data", "I"); - rawData_mid = (*env)->GetMethodID (env, rawDataClass, "", "(I)V"); + rawData_fid = (*env)->GetFieldID (env, rawDataClass, "data", + JCL_POINTER_DATASIGN); + rawData_mid = (*env)->GetMethodID (env, rawDataClass, "", + "(" JCL_POINTER_DATASIGN ")V"); } -#else -#error "Pointer size is not supported." -#endif /* SIZEOF_VOID_P == 4 */ -#endif /* SIZEOF_VOID_P == 8 */ return JNI_VERSION_1_4; } +#endif /* !JCL_NO_JNIONLOAD */ JNIEXPORT void JNICALL JCL_ThrowException (JNIEnv * env, const char *className, const char *errMsg) @@ -127,9 +133,10 @@ JCL_ThrowException (JNIEnv * env, const char *className, const char *errMsg) } /* Removed this (more comprehensive) error string to avoid the need for * a static variable or allocation of a buffer for this message in this - * (unlikely) error case. --Fridi. + * (unlikely) error case. --Fridi. * - * sprintf(errstr,"JCL: Failed to throw exception %s with message %s: could not find exception class.", className, errMsg); + * sprintf(errstr,"JCL: Failed to throw exception %s with message %s:" + * " could not find exception class.", className, errMsg); */ (*env)->ThrowNew (env, errExcClass, className); } @@ -154,12 +161,12 @@ JCL_realloc (JNIEnv * env, void *ptr, size_t size) { void *orig_ptr = ptr; ptr = realloc (ptr, size); - if (ptr == 0) + if (ptr == NULL) { - free (orig_ptr); + if (orig_ptr != NULL) + free (orig_ptr); JCL_ThrowException (env, "java/lang/OutOfMemoryError", "malloc() failed."); - return NULL; } return (ptr); } @@ -238,37 +245,76 @@ JCL_FindClass (JNIEnv * env, const char *className) /* * Build a Pointer object. */ - JNIEXPORT jobject JNICALL JCL_NewRawDataObject (JNIEnv * env, void *data) { +#ifdef JCL_NO_JNIONLOAD + jclass aclass = rawDataClass; + jmethodID mid; + if (aclass == NULL) + { + aclass = (*env)->FindClass (env, JCL_POINTER_CLASSNAME); + if (aclass == NULL || + (aclass = (*env)->NewGlobalRef (env, aclass)) == NULL) + { + JCL_ThrowException (env, "java/lang/InternalError", + "Pointer class not found"); + return NULL; + } + rawDataClass = aclass; + } + if ((mid = rawData_mid) == NULL) + { + if ((mid = (*env)->GetMethodID (env, aclass, "", + "(" JCL_POINTER_DATASIGN ")V")) == NULL) + { + JCL_ThrowException (env, "java/lang/InternalError", + "Pointer class constructor not found"); + return NULL; + } + rawData_mid = mid; + } + return (*env)->NewObject (env, aclass, mid, (JCL_POINTER_INTTYPE) data); +#else if (rawDataClass == NULL || rawData_mid == NULL) { JCL_ThrowException (env, "java/lang/InternalError", "Pointer class was not properly initialized"); return NULL; } - -#if SIZEOF_VOID_P == 8 - return (*env)->NewObject (env, rawDataClass, rawData_mid, (jlong) data); -#else - return (*env)->NewObject (env, rawDataClass, rawData_mid, (jint) data); + return (*env)->NewObject (env, rawDataClass, rawData_mid, + (JCL_POINTER_INTTYPE) data); #endif } JNIEXPORT void * JNICALL JCL_GetRawData (JNIEnv * env, jobject rawdata) { +#ifdef JCL_NO_JNIONLOAD + jclass aclass; + jfieldID fid = rawData_fid; + if (fid == NULL) + { + aclass = rawDataClass; + if ((aclass == NULL && (aclass = (*env)->FindClass (env, + JCL_POINTER_CLASSNAME)) == NULL) || + (fid = (*env)->GetFieldID (env, aclass, "data", + JCL_POINTER_DATASIGN)) == NULL) + { + JCL_ThrowException (env, "java/lang/InternalError", + "Pointer class was not properly initialized"); + return NULL; + } + rawData_fid = fid; + } + return (void *) (*env)->JCL_POINTER_GETFIELD (env, rawdata, fid); +#else if (rawData_fid == NULL) { JCL_ThrowException (env, "java/lang/InternalError", "Pointer class was not properly initialized"); return NULL; } - -#if SIZEOF_VOID_P == 8 - return (void *) (*env)->GetLongField (env, rawdata, rawData_fid); -#else - return (void *) (*env)->GetIntField (env, rawdata, rawData_fid); -#endif + return (void *) (*env)->JCL_POINTER_GETFIELD (env, rawdata, rawData_fid); +#endif } diff --git a/libjava/classpath/native/jni/gstreamer-peer/gst_classpath_src.c b/libjava/classpath/native/jni/gstreamer-peer/gst_classpath_src.c index 80c6795928c..224622a1c70 100644 --- a/libjava/classpath/native/jni/gstreamer-peer/gst_classpath_src.c +++ b/libjava/classpath/native/jni/gstreamer-peer/gst_classpath_src.c @@ -163,14 +163,12 @@ static void gst_classpath_src_class_init (GstClasspathSrcClass *klass) { GObjectClass *gobject_class; - GstElementClass *gstelement_class; GstBaseSrcClass *gstbasesrc_class; GstPushSrcClass *gstpushsrc_class; GParamSpec *pspec; gobject_class = G_OBJECT_CLASS (klass); - gstelement_class = GST_ELEMENT_CLASS (klass); gstbasesrc_class = GST_BASE_SRC_CLASS (klass); gstpushsrc_class = GST_PUSH_SRC_CLASS (klass); diff --git a/libjava/classpath/native/jni/gtk-peer/GtkDragSourceContextPeer.c b/libjava/classpath/native/jni/gtk-peer/GtkDragSourceContextPeer.c index aee61bd08f6..b8f1ba5b2f0 100644 --- a/libjava/classpath/native/jni/gtk-peer/GtkDragSourceContextPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/GtkDragSourceContextPeer.c @@ -99,9 +99,8 @@ Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_create JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeSetCursor - (JNIEnv *env, jobject obj, jint type) + (JNIEnv *env __attribute__((unused)), jobject obj, jint type) { - void *ptr; GdkWindow *win; GdkCursorType gdk_cursor_type; GdkCursor *gdk_cursor; @@ -109,7 +108,6 @@ Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeSetCursor gdk_threads_enter (); javaObj = obj; - ptr = gtkpeer_get_global_ref (env, obj); switch (type) { @@ -230,10 +228,9 @@ Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_connectSignals } static void -connect_signals_for_widget (GtkWidget *w) +connect_signals_for_widget (GtkWidget *w __attribute__((unused))) { /* FIXME: Not implemented. */ - w = NULL; } JNIEXPORT void JNICALL @@ -257,7 +254,6 @@ Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeStartDrag (JNIEnv *env, jobject obj, jobject img, jint x, jint y, jint act, jstring target) { - void *ptr; const gchar *data; GtkTargetEntry tar[1]; GdkEvent *event; @@ -268,7 +264,6 @@ Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeStartDrag gdk_threads_enter (); javaObj = obj; - ptr = gtkpeer_get_global_ref (env, obj); data = (*env)->GetStringUTFChars (env, target, NULL); tar[0].target = (gchar *) data; diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c index 3364640a00c..31bab77d46b 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c @@ -121,7 +121,6 @@ Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState { GdkDrawable *drawable; GtkWidget *widget; - int width, height; cairo_t *cr; void *ptr; @@ -136,9 +135,6 @@ Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState drawable = widget->window; g_assert (drawable != NULL); - width = widget->allocation.width; - height = widget->allocation.height; - cr = gdk_cairo_create(drawable); g_assert(cr != NULL); diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c index 4240f112e30..ea9c1d6e8b0 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c @@ -120,6 +120,8 @@ Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mouseMove result = XTestFakeMotionEvent (xdisplay, -1, x, y, CurrentTime); + if (result) + g_warning("XTestFakeMotionEvent returned %d\n", result); XFlush (xdisplay); @@ -153,6 +155,8 @@ Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mousePress result = XTestFakeButtonEvent (xdisplay, awt_button_mask_to_num (buttons), True, CurrentTime); + if (result) + g_warning("XTestFakeButtonEvent returned %d\n", result); XFlush (xdisplay); @@ -185,6 +189,8 @@ Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mouseRelease result = XTestFakeButtonEvent (xdisplay, awt_button_mask_to_num (buttons), False, CurrentTime); + if (result) + g_warning("XTestFakeButtonEvent returned %d\n", result); XFlush (xdisplay); @@ -275,7 +281,7 @@ Java_gnu_java_awt_peer_gtk_GdkRobotPeer_keyPress &n_keys)) { /* No matching keymap entry was found. */ - g_printerr ("No matching keymap entries were found\n"); + g_message ("No matching keymap entries were found\n"); gdk_threads_leave (); return; } @@ -287,6 +293,8 @@ Java_gnu_java_awt_peer_gtk_GdkRobotPeer_keyPress result = XTestFakeKeyEvent (xdisplay, keymap_keys[0].keycode, True, CurrentTime); + if (result) + g_warning("XTestFakeKeyEvent returned %d\n", result); g_free (keymap_keys); @@ -330,7 +338,7 @@ Java_gnu_java_awt_peer_gtk_GdkRobotPeer_keyRelease &n_keys)) { /* No matching keymap entry was found. */ - g_printerr ("No matching keymap entries were found\n"); + g_message ("No matching keymap entries were found\n"); gdk_threads_leave (); return; } @@ -342,6 +350,8 @@ Java_gnu_java_awt_peer_gtk_GdkRobotPeer_keyRelease result = XTestFakeKeyEvent (xdisplay, keymap_keys[0].keycode, False, CurrentTime); + if (result) + g_warning("XTestFakeKeyEvent returned %d\n", result); g_free (keymap_keys); diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c index b7b1c3322d1..0511c051a99 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c @@ -83,20 +83,25 @@ Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_show JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_setupAccelGroup - (JNIEnv *env, jobject obj, jobject parent) + (JNIEnv *env, jobject obj, jobject parent __attribute__((unused))) { - void *ptr1, *ptr2; + void *ptr1; GtkMenu *menu; +#if 0 + void *ptr2; +#endif gdk_threads_enter (); ptr1 = gtkpeer_get_widget (env, obj); - ptr2 = gtkpeer_get_widget (env, parent); menu = GTK_MENU (GTK_MENU_ITEM (ptr1)->submenu); gtk_menu_set_accel_group (menu, gtk_accel_group_new ()); /* FIXME: update this to use GTK-2.4 GtkActions. */ + // FIXME: _gtk_accel_group_attach is a GTK-private function, so + // we'll need a different approach here #if 0 + ptr2 = gtkpeer_get_widget (env, parent); _gtk_accel_group_attach (gtk_menu_get_accel_group (menu), G_OBJECT (gtk_widget_get_toplevel (ptr2))); #endif diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c index b2097970cb6..ad996641ff0 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c @@ -1,6 +1,6 @@ /* gtktoolkit.c -- Native portion of GtkToolkit - Copyright (C) 1998, 1999, 2005, 2007 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2005, 2007, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -216,6 +216,7 @@ Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit (JNIEnv *env, init_dpi_conversion_factor (); gtktoolkit = (*env)->FindClass(env, "gnu/java/awt/peer/gtk/GtkMainThread"); + gtktoolkit = (*env)->NewGlobalRef(env, gtktoolkit); /* bug fix #40889 */ setRunningID = (*env)->GetStaticMethodID (env, gtktoolkit, "setRunning", "(Z)V"); } diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c index 50197cab07e..af0868cc206 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c @@ -110,7 +110,7 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels GdkPixmap *pixmap; GdkPixbuf *pixbuf; jintArray jpixels; - int width, height, depth, size; + int width, height, size; jclass cls; jfieldID field; guchar *pixels; @@ -129,8 +129,6 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels gdk_threads_enter(); - /* get depth in bytes */ - depth = gdk_drawable_get_depth( pixmap ) >> 3; size = width * height; jpixels = (*env)->NewIntArray ( env, size ); jpixdata = (*env)->GetIntArrayElements (env, jpixels, NULL); diff --git a/libjava/classpath/native/jni/java-io/Makefile.am b/libjava/classpath/native/jni/java-io/Makefile.am index 58bd973e2fb..80edb32fa38 100644 --- a/libjava/classpath/native/jni/java-io/Makefile.am +++ b/libjava/classpath/native/jni/java-io/Makefile.am @@ -1,6 +1,7 @@ nativeexeclib_LTLIBRARIES = libjavaio.la -libjavaio_la_SOURCES = java_io_VMFile.c \ +libjavaio_la_SOURCES = java_io_VMConsole.c \ + java_io_VMFile.c \ java_io_VMObjectInputStream.c \ java_io_VMObjectStreamClass.c diff --git a/libjava/classpath/native/jni/java-io/Makefile.in b/libjava/classpath/native/jni/java-io/Makefile.in index 0052aeeb825..b9c68adc149 100644 --- a/libjava/classpath/native/jni/java-io/Makefile.in +++ b/libjava/classpath/native/jni/java-io/Makefile.in @@ -94,7 +94,7 @@ LTLIBRARIES = $(nativeexeclib_LTLIBRARIES) libjavaio_la_DEPENDENCIES = \ $(top_builddir)/native/jni/classpath/jcl.lo \ $(top_builddir)/native/jni/native-lib/libclasspathnative.la -am_libjavaio_la_OBJECTS = java_io_VMFile.lo \ +am_libjavaio_la_OBJECTS = java_io_VMConsole.lo java_io_VMFile.lo \ java_io_VMObjectInputStream.lo java_io_VMObjectStreamClass.lo libjavaio_la_OBJECTS = $(am_libjavaio_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include @@ -326,7 +326,8 @@ top_srcdir = @top_srcdir@ uudecode = @uudecode@ vm_classes = @vm_classes@ nativeexeclib_LTLIBRARIES = libjavaio.la -libjavaio_la_SOURCES = java_io_VMFile.c \ +libjavaio_la_SOURCES = java_io_VMConsole.c \ + java_io_VMFile.c \ java_io_VMObjectInputStream.c \ java_io_VMObjectStreamClass.c @@ -412,6 +413,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_io_VMConsole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_io_VMFile.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_io_VMObjectInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java_io_VMObjectStreamClass.Plo@am__quote@ diff --git a/libjava/classpath/native/jni/java-io/java_io_VMConsole.c b/libjava/classpath/native/jni/java-io/java_io_VMConsole.c new file mode 100644 index 00000000000..2883f5f73eb --- /dev/null +++ b/libjava/classpath/native/jni/java-io/java_io_VMConsole.c @@ -0,0 +1,90 @@ +/* java_io_VMConsole.c - Native methods for java.io.Console class + Copyright (C) 2012 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +/* do not move; needed here because of some macro definitions */ +#include + +#include +#include + +#include + +#include "java_io_VMConsole.h" + +/*************************************************************************/ + +#define TERMIOS_ECHO_IFLAGS (IUCLC|IXON|IXOFF|IXANY) +#define TERMIOS_ECHO_LFLAGS (ECHO|ECHOE|ECHOK|ECHONL|TOSTOP) + +/* + * Class: java_io_VMConsole + * Method: echo + * Signature: (Z)Z + */ +JNIEXPORT jstring JNICALL +Java_java_io_VMConsole_readPassword (JNIEnv * env, + jclass clazz + __attribute__ ((__unused__)), + jobject con) +{ + struct termios old, new; + jmethodID readLineID; + jstring result; + + readLineID = + (*env)->GetMethodID (env, (*env)->GetObjectClass (env, con), "readLine", + "()Ljava/lang/String;"); + if (!readLineID) + { + return NULL; + } + + tcgetattr (STDIN_FILENO, &old); + + tcgetattr (STDIN_FILENO, &new); + + new.c_iflag &= ~TERMIOS_ECHO_IFLAGS; + new.c_lflag &= ~TERMIOS_ECHO_LFLAGS; + + tcsetattr (STDIN_FILENO, TCSANOW, &new); + + result = (*env)->CallObjectMethod (env, con, readLineID); + + tcsetattr (STDIN_FILENO, TCSANOW, &old); + + return result; +} diff --git a/libjava/classpath/native/jni/java-lang/java_lang_VMSystem.c b/libjava/classpath/native/jni/java-lang/java_lang_VMSystem.c index d2032279145..f623857d34a 100644 --- a/libjava/classpath/native/jni/java-lang/java_lang_VMSystem.c +++ b/libjava/classpath/native/jni/java-lang/java_lang_VMSystem.c @@ -39,8 +39,12 @@ exception statement from your version. */ #include +#include #include #include +#include +#include +#include /* * Class: java_lang_VMSystem @@ -111,6 +115,22 @@ Java_java_lang_VMSystem_setErr (JNIEnv * env, (*env)->SetStaticObjectField (env, cls, field, obj); } +static jlong currentTimeMicros(JNIEnv * env) +{ + /* Note: this implementation copied directly from Japhar's, by Chris Toshok. */ + jlong result; + struct timeval tp; + + if (gettimeofday (&tp, NULL) == -1) + (*env)->FatalError (env, "gettimeofday call failed."); + + result = (jlong) tp.tv_sec; + result *= (jlong)1000000L; + result += (jlong)tp.tv_usec; + + return result; +} + /* * Class: java_lang_VMSystem * Method: nanoTime @@ -118,22 +138,38 @@ Java_java_lang_VMSystem_setErr (JNIEnv * env, */ JNIEXPORT jlong JNICALL Java_java_lang_VMSystem_nanoTime - (JNIEnv * env __attribute__ ((__unused__)), + (JNIEnv * env, jclass thisClass __attribute__ ((__unused__))) { - /* Note: this implementation copied directly from Japhar's, by Chris Toshok. */ +#if defined(HAVE_CLOCK_GETTIME) && defined(_POSIX_MONOTONIC_CLOCK) jlong result; - struct timeval tp; + struct timespec tp; - if (gettimeofday (&tp, NULL) == -1) - (*env)->FatalError (env, "gettimeofday call failed."); + if (clock_gettime (CLOCK_MONOTONIC, &tp) == -1) { + return currentTimeMicros(env) * (jlong)1000; + } result = (jlong) tp.tv_sec; - result *= (jlong)1000000L; - result += (jlong)tp.tv_usec; - result *= (jlong)1000; + result *= (jlong)1000000000L; + result += (jlong)tp.tv_nsec; return result; +#else + return currentTimeMicros(env) * (jlong)1000; +#endif +} + +/* + * Class: java_lang_VMSystem + * Method: currentTimeMillis + * Signature: ()J + */ +JNIEXPORT jlong JNICALL +Java_java_lang_VMSystem_currentTimeMillis + (JNIEnv * env, + jclass thisClass __attribute__ ((__unused__))) +{ + return currentTimeMicros(env) / (jlong)1000L; } JNIEXPORT jstring JNICALL diff --git a/libjava/classpath/native/jni/java-net/java_net_VMInetAddress.c b/libjava/classpath/native/jni/java-net/java_net_VMInetAddress.c index 6ee7773b839..4de63cfdc40 100644 --- a/libjava/classpath/native/jni/java-net/java_net_VMInetAddress.c +++ b/libjava/classpath/native/jni/java-net/java_net_VMInetAddress.c @@ -180,6 +180,7 @@ Java_java_net_VMInetAddress_getHostByAddr (JNIEnv * env, /* Resolve the address and return the name */ result = cpnet_getHostByAddr (env, addr, hostname, sizeof (hostname)); + cpnet_freeAddress (env, addr); if (result != CPNATIVE_OK) { JCL_ThrowException (env, UNKNOWN_HOST_EXCEPTION, @@ -330,6 +331,7 @@ Java_java_net_VMInetAddress_aton (JNIEnv *env, } result = cpnet_aton (env, hostname, &address); + (*env)->ReleaseStringUTFChars (env, host, hostname); if (result != CPNATIVE_OK) { JCL_ThrowException (env, UNKNOWN_HOST_EXCEPTION, "Internal Error"); diff --git a/libjava/classpath/native/jni/java-nio/java_nio_VMDirectByteBuffer.c b/libjava/classpath/native/jni/java-nio/java_nio_VMDirectByteBuffer.c index bfee7e9dc08..7325c5b8b19 100644 --- a/libjava/classpath/native/jni/java-nio/java_nio_VMDirectByteBuffer.c +++ b/libjava/classpath/native/jni/java-nio/java_nio_VMDirectByteBuffer.c @@ -51,6 +51,13 @@ Java_java_nio_VMDirectByteBuffer_allocate { void *buffer; + if (capacity < 0) + { + JCL_ThrowException (env, "java/lang/IllegalArgumentException", + "negative capacity"); + return 0; + } + buffer = malloc (capacity); if (buffer == NULL) diff --git a/libjava/classpath/native/jni/midi-alsa/gnu_javax_sound_midi_alsa_AlsaPortDevice.c b/libjava/classpath/native/jni/midi-alsa/gnu_javax_sound_midi_alsa_AlsaPortDevice.c index d3e4f2b45a0..5916eb29bdd 100644 --- a/libjava/classpath/native/jni/midi-alsa/gnu_javax_sound_midi_alsa_AlsaPortDevice.c +++ b/libjava/classpath/native/jni/midi-alsa/gnu_javax_sound_midi_alsa_AlsaPortDevice.c @@ -1,5 +1,5 @@ /* gnu_javax_sound_midi_alsa_AlsaPortDevice.c - Native support - Copyright (C) 2005, 2010 + Copyright (C) 2005, 2010, 2011 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -41,6 +41,7 @@ exception statement from your version. */ #include #include +#include #include JNIEXPORT void JNICALL @@ -48,6 +49,7 @@ Java_gnu_javax_sound_midi_alsa_AlsaPortDevice_run_1receiver_1thread_1 (JNIEnv *env, jobject this __attribute__((unused)), jlong client, jlong port, jobject receiver) { + int rc; snd_seq_port_info_t *pinfo, *sinfo; snd_seq_port_subscribe_t *subs; snd_seq_addr_t sender, dest; @@ -57,12 +59,16 @@ Java_gnu_javax_sound_midi_alsa_AlsaPortDevice_run_1receiver_1thread_1 snd_seq_port_info_alloca (&sinfo); snd_seq_port_subscribe_alloca (&subs); - snd_seq_open (&seq, "default", SND_SEQ_OPEN_DUPLEX, SND_SEQ_NONBLOCK); + rc = snd_seq_open (&seq, "default", SND_SEQ_OPEN_DUPLEX, SND_SEQ_NONBLOCK); + if (rc < 0) + JCL_ThrowException (env, "java/lang/InternalError", snd_strerror (rc)); snd_seq_port_info_set_capability (pinfo, SND_SEQ_PORT_CAP_WRITE); snd_seq_port_info_set_type (pinfo, SND_SEQ_PORT_TYPE_MIDI_GENERIC); - snd_seq_create_port (seq, pinfo); + rc = snd_seq_create_port (seq, pinfo); + if (rc < 0) + JCL_ThrowException (env, "java/lang/InternalError", snd_strerror (rc)); sender.client = (int) client; sender.port = (int) port; @@ -71,7 +77,9 @@ Java_gnu_javax_sound_midi_alsa_AlsaPortDevice_run_1receiver_1thread_1 snd_seq_port_subscribe_set_sender (subs, &sender); snd_seq_port_subscribe_set_dest (subs, &dest); - snd_seq_subscribe_port(seq, subs); + rc = snd_seq_subscribe_port(seq, subs); + if (rc < 0) + JCL_ThrowException (env, "java/lang/InternalError", snd_strerror (rc)); { int npfd; diff --git a/libjava/classpath/resource/gnu/java/locale/LocaleInformation.properties b/libjava/classpath/resource/gnu/java/locale/LocaleInformation.properties index 5df9ef9d575..7ff626f7810 100644 --- a/libjava/classpath/resource/gnu/java/locale/LocaleInformation.properties +++ b/libjava/classpath/resource/gnu/java/locale/LocaleInformation.properties @@ -18,24 +18,24 @@ digit=# percentFormat=#,##0% currencyFormat=\u00a4\u00a0#,##0.00;-\u00a4\u00a0#,##0.00 localPatternChars=GyMdkHmsSEDFwWahKzYeugAZvcL -currenciesDisplayName.INR=INR -currenciesDisplayName.JPY=JPY -currenciesDisplayName.ITL=ITL +currenciesDisplayName.BRL=BRL currenciesDisplayName.EUR=EUR currenciesDisplayName.GBP=GBP -currenciesDisplayName.BRL=BRL +currenciesDisplayName.INR=INR +currenciesDisplayName.ITL=ITL +currenciesDisplayName.JPY=JPY currenciesDisplayName.USD=USD -currenciesSymbol.INR=0\u2264Rs.|1\u2264Re.|1welsh<}100{>galesera <0} -languages.pa=punjabera -languages.cs=txekiera -languages.it=italiera -languages.is=islandiera -languages.uz=uzbekera -languages.or=oriya -languages.ur=urdu -languages.ca=katalana -languages.ie=interlingue -languages.id=indonesiera -languages.uk=ukrainera -languages.ia=interlingua -languages.oc=okzitaniera -languages.ug=uigurrera -languages.hy=armeniera -languages.bs=bosniera -languages.br=bretoiera -languages.hu=hungariera -languages.pt_PT=portugesa (portugal) -languages.bn=bengalera -languages.hr=kroaziera -languages.tw=twia -languages.bh=biharrera -languages.bg=bulgariera -languages.no=norvegiera -languages.be=bielorrusiera -languages.nn=norvegiera (nynorsk) -languages.hi=hindia -languages.tr=turkiera -languages.nl=nederlandera -languages.zu=zuluera -languages.he=hebreera -languages.tl=tagalog -languages.tk=turkmeniera -languages.ne=nepalera +territories.TN=Tunisia +territories.TO=Tonga +territories.TR=Turkia +territories.TT=Trinidad eta Tobago +territories.TV=Tuvalu +territories.TW=Taiwan +territories.TZ=Tanzania +territories.UA=Ukraina +territories.UG=Uganda +territories.UM=Estatu Batuetatik urruti dauden uharte txikiak +territories.US=Ameriketako Estatu Batuak +territories.UY=Uruguai +territories.UZ=Uzbekistan +territories.VA=Vatikano +territories.VC=Saint Vincent eta Grenadinak +territories.VE=Venezuela +territories.VG=Virginia uharteak (Erresuma Batua) +territories.VI=Virginia uharteak (Ameriketako Estatu Batuak) +territories.VN=Vietnam +territories.VU=Vanuatu +territories.WF=Wallis eta Futuna +territories.WS=Samoa +territories.YE=Yemen +territories.ZA=Hegoafrika +territories.ZM=Zambia +territories.ZW=Zimbabwe +languages.af=afrikaans +languages.am=amharikera +languages.ar=arabiera +languages.as=assamera languages.az=azerbaijanera -languages.ti=tigrinya -languages.th=thailandiera +languages.be=bielorrusiera +languages.bg=bulgariera +languages.bh=biharrera +languages.bn=bengalera +languages.br=bretoiera +languages.bs=bosniera +languages.ca=katalana +languages.cs=txekiera +languages.cy={0>welsh<}100{>galesera <0} +languages.da=daniera +languages.de=alemanera +languages.el=greziera +languages.en=ingelera +languages.en_AU=ingelesa (australia) +languages.en_GB=ingelesa (erresuma batua) languages.en_US=ingelesa (aeb) -languages.te=telugua -languages.zh=txinera -languages.as=assamera -languages.ar=arabiera -languages.ta=tamilera -languages.gu=gujaratera -languages.am=amharikera -languages.mt=maltera -languages.ms=malaysiera -languages.gn=guaraniera -languages.sw=swahili -languages.mr=marathera -languages.sv=suediera +languages.eo=esperantoa +languages.es=espainiera +languages.et=estoniera +languages.eu=euskara +languages.fa=pertsiera +languages.fi=finlandiera +languages.fil=tagalo +languages.fo=faroera +languages.fr=frantsesera +languages.fy=frisiarra +languages.ga=gaelikoa +languages.gd=eskoziar gaelikoa languages.gl=galegoa -languages.su=sundanera -languages.af=afrikaans -languages.st=sesothoera -languages.mn=mongoliera -languages.sr=serbiera -languages.sq=albaniera -languages.ml=malayalamera +languages.gn=guaraniera +languages.gu=gujaratera +languages.he=hebreera +languages.hi=hindia +languages.hr=kroaziera +languages.hu=hungariera +languages.hy=armeniera +languages.ia=interlingua +languages.id=indonesiera +languages.ie=interlingue +languages.is=islandiera +languages.it=italiera +languages.ja=japoniera +languages.jv=javera +languages.ka=georgiera +languages.km=khemerera +languages.kn=kannada +languages.ko=koreera +languages.ku=kurduera +languages.ky=kirgizera +languages.la=latina +languages.ln=lingala +languages.lo=laosera +languages.lt=lituaniera +languages.lv=letoniera languages.mk=mazedoniera -languages.so=somaliera -languages.gd=eskoziar gaelikoa -languages.sl=esloveniera -languages.sk=eslovakiera -languages.ga=gaelikoa -languages.si=sinhala -languages.sh=serbokroaziera +languages.ml=malayalamera +languages.mn=mongoliera +languages.mr=marathera +languages.ms=malaysiera +languages.mt=maltera +languages.ne=nepalera +languages.nl=nederlandera +languages.nn=norvegiera (nynorsk) +languages.no=norvegiera +languages.oc=okzitaniera +languages.or=oriya +languages.pa=punjabera +languages.pl=poloniera +languages.ps=paxtuera +languages.pt=portugalera languages.pt_BR=portugesa (brasil) -languages.yi=yiddishera -languages.sd=sindhia -languages.fy=frisiarra -languages.sa=sanskritoa -languages.fr=frantsesera -languages.lv=letoniera -languages.en_AU=ingelesa (australia) -languages.lt=lituaniera -languages.fo=faroera -languages.ru=errusiera -languages.lo=laosera -languages.ln=lingala -languages.fi=finlandiera +languages.pt_PT=portugesa (portugal) languages.ro=errumaniera -languages.fa=pertsiera -languages.la=latina +languages.ru=errusiera +languages.sa=sanskritoa +languages.sd=sindhia +languages.sh=serbokroaziera +languages.si=sinhala +languages.sk=eslovakiera +languages.sl=esloveniera +languages.so=somaliera +languages.sq=albaniera +languages.sr=serbiera +languages.st=sesothoera +languages.su=sundanera +languages.sv=suediera +languages.sw=swahili +languages.ta=tamilera +languages.te=telugua +languages.th=thailandiera +languages.ti=tigrinya +languages.tk=turkmeniera +languages.tl=tagalog +languages.tlh=klingonera +languages.tr=turkiera +languages.tw=twia +languages.ug=uigurrera +languages.uk=ukrainera +languages.ur=urdu +languages.uz=uzbekera +languages.vi=vietnamera languages.xh=xhosa -languages.en_GB=ingelesa (erresuma batua) -languages.eu=euskara -languages.ky=kirgizera -languages.et=estoniera +languages.yi=yiddishera +languages.zh=txinera +languages.zh_Hans=txinera (soildua) +languages.zh_Hant=txinera (tradizionala) +languages.zu=zuluera diff --git a/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fa.properties b/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fa.properties index 6c35d152ea7..21193c8edd4 100644 --- a/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fa.properties +++ b/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fa.properties @@ -17,131 +17,131 @@ groupingSeparator=\u066c digit=# percentFormat='\u202a'%#,##0'\u202c' currencyFormat=#,##0.00\u00a0\u00a4;'\u202a'-#,##0.00'\u202c'\u00a0\u00a4 -currenciesDisplayName.XCD=\u062f\u0644\u0627\u0631 \u0634\u0631\u0642 \u06a9\u0627\u0631\u0627\u0626\u06cc\u0628 -currenciesDisplayName.LKR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u0633\u0631\u06cc\u200c\u0644\u0627\u0646\u06a9\u0627 -currenciesDisplayName.KES=\u0634\u06cc\u0644\u06cc\u0646\u06af \u06a9\u0646\u06cc\u0627 +currenciesDisplayName.AED=\u062f\u0631\u0647\u0645 \u0627\u0645\u0627\u0631\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0639\u0631\u0628\u06cc +currenciesDisplayName.AFA=\u0627\u0641\u063a\u0627\u0646\u06cc \u0642\u062f\u06cc\u0645 +currenciesDisplayName.AFN=\u0627\u0641\u063a\u0627\u0646\u06cc +currenciesDisplayName.ALL=\u0644\u06a9 \u0622\u0644\u0628\u0627\u0646\u06cc +currenciesDisplayName.AMD=\u062f\u0631\u0645 \u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646 +currenciesDisplayName.ARP=\u067e\u0632\u0648\u06cc \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646 (\u06f1\u06f9\u06f8\u06f3 \u062a\u0627 \u06f1\u06f9\u06f8\u06f5)\u200f +currenciesDisplayName.ARS=\u067e\u0632\u0648\u06cc \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646 +currenciesDisplayName.ATS=\u0634\u06cc\u0644\u06cc\u0646\u06af \u0627\u062a\u0631\u06cc\u0634 +currenciesDisplayName.AUD=\u062f\u0644\u0627\u0631 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 +currenciesDisplayName.AZM=\u0645\u0646\u0627\u062a \u0642\u062f\u06cc\u0645 \u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 +currenciesDisplayName.AZN=\u0645\u0646\u0627\u062a \u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 currenciesDisplayName.BAD=\u062f\u06cc\u0646\u0627\u0631 \u0628\u0648\u0633\u0646\u06cc \u0648 \u0647\u0631\u0632\u06af\u0648\u06cc\u0646 -currenciesDisplayName.BYR=\u0631\u0648\u0628\u0644 \u0628\u06cc\u0644\u0648\u0631\u0648\u0633\u06cc -currenciesDisplayName.CSD=\u062f\u06cc\u0646\u0627\u0631 \u0642\u062f\u06cc\u0645 \u0635\u0631\u0628\u0633\u062a\u0627\u0646 -currenciesDisplayName.HRD=\u062f\u06cc\u0646\u0627\u0631 \u06a9\u0631\u0648\u0627\u0633\u06cc +currenciesDisplayName.BBD=\u062f\u0644\u0627\u0631 \u0628\u0627\u0631\u0628\u0627\u062f\u0648\u0633 +currenciesDisplayName.BEF=\u0641\u0631\u0627\u0646\u06a9 \u0628\u0644\u0698\u06cc\u06a9 +currenciesDisplayName.BHD=\u062f\u06cc\u0646\u0627\u0631 \u0628\u062d\u0631\u06cc\u0646 +currenciesDisplayName.BIF=\u0641\u0631\u0627\u0646\u06a9 \u0628\u0648\u0631\u0648\u0646\u062f\u06cc currenciesDisplayName.BMD=\u062f\u0644\u0627\u0631 \u0628\u0631\u0645\u0648\u062f\u0627 -currenciesDisplayName.IEP=\u067e\u0648\u0646\u062f \u0627\u06cc\u0631\u0644\u0646\u062f +currenciesDisplayName.BND=\u062f\u0644\u0627\u0631 \u0628\u0631\u0648\u0646\u0626\u06cc +currenciesDisplayName.BOP=\u067e\u0632\u0648\u06cc \u0628\u0648\u0644\u06cc\u0648\u06cc +currenciesDisplayName.BRL=\u0631\u0626\u0627\u0644 \u0628\u0631\u0632\u06cc\u0644 currenciesDisplayName.BSD=\u062f\u0644\u0627\u0631 \u0628\u0627\u0647\u0627\u0645\u0627 -currenciesDisplayName.GRD=\u062f\u0631\u0627\u062e\u0645\u0627\u06cc \u06cc\u0648\u0646\u0627\u0646 -currenciesDisplayName.AMD=\u062f\u0631\u0645 \u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646 -currenciesDisplayName.FRF=\u0641\u0631\u0627\u0646\u06a9 \u0641\u0631\u0627\u0646\u0633\u0647 -currenciesDisplayName.NPR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u0646\u067e\u0627\u0644 +currenciesDisplayName.BYR=\u0631\u0648\u0628\u0644 \u0628\u06cc\u0644\u0648\u0631\u0648\u0633\u06cc +currenciesDisplayName.BZD=\u062f\u0644\u0627\u0631 \u0628\u0644\u06cc\u0632 +currenciesDisplayName.CAD=\u062f\u0644\u0627\u0631 \u06a9\u0627\u0646\u0627\u062f\u0627 +currenciesDisplayName.CHF=\u0641\u0631\u0627\u0646\u06a9 \u0633\u0648\u0626\u06cc\u0633 currenciesDisplayName.CLP=\u067e\u0632\u0648\u06cc \u0634\u06cc\u0644\u06cc -currenciesDisplayName.KWD=\u062f\u06cc\u0646\u0627\u0631 \u06a9\u0648\u06cc\u062a -currenciesDisplayName.SUR=\u0631\u0648\u0628\u0644 \u0634\u0648\u0631\u0648\u06cc -currenciesDisplayName.AFN=\u0627\u0641\u063a\u0627\u0646\u06cc -currenciesDisplayName.ZAR=\u0631\u0627\u0646\u062f \u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc -currenciesDisplayName.RUR=\u0631\u0648\u0628\u0644 \u0642\u062f\u06cc\u0645 \u0631\u0648\u0633\u06cc\u0647 -currenciesDisplayName.IQD=\u062f\u06cc\u0646\u0627\u0631 \u0639\u0631\u0627\u0642 -currenciesDisplayName.HKD=\u062f\u0644\u0627\u0631 \u0647\u0646\u06af\u200c\u06a9\u0646\u06af -currenciesDisplayName.ARS=\u067e\u0632\u0648\u06cc \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646 -currenciesDisplayName.BRL=\u0631\u0626\u0627\u0644 \u0628\u0631\u0632\u06cc\u0644 -currenciesDisplayName.LVR=\u0631\u0648\u0628\u0644 \u0644\u062a\u0648\u0646\u06cc -currenciesDisplayName.JPY=\u06cc\u0646 \u0698\u0627\u067e\u0646 -currenciesDisplayName.ALL=\u0644\u06a9 \u0622\u0644\u0628\u0627\u0646\u06cc -currenciesDisplayName.GWP=\u067e\u0632\u0648\u06cc \u06af\u06cc\u0646\u0647\u0654 \u0628\u06cc\u0633\u0627\u0626\u0648 -currenciesDisplayName.ARP=\u067e\u0632\u0648\u06cc \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646 (\u06f1\u06f9\u06f8\u06f3 \u062a\u0627 \u06f1\u06f9\u06f8\u06f5)\u200f -currenciesDisplayName.IDR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u0627\u0646\u062f\u0648\u0646\u0632\u06cc -currenciesDisplayName.XAU=\u0637\u0644\u0627 -currenciesDisplayName.AFA=\u0627\u0641\u063a\u0627\u0646\u06cc \u0642\u062f\u06cc\u0645 +currenciesDisplayName.CNY=\u06cc\u0648\u0622\u0646 \u0686\u06cc\u0646 +currenciesDisplayName.COP=\u067e\u0632\u0648\u06cc \u06a9\u0644\u0645\u0628\u06cc\u0627 +currenciesDisplayName.CSD=\u062f\u06cc\u0646\u0627\u0631 \u0642\u062f\u06cc\u0645 \u0635\u0631\u0628\u0633\u062a\u0627\u0646 +currenciesDisplayName.CUP=\u067e\u0632\u0648\u06cc \u06a9\u0648\u0628\u0627 currenciesDisplayName.DEM=\u0645\u0627\u0631\u06a9 \u0622\u0644\u0645\u0627\u0646 -currenciesDisplayName.RUB=\u0631\u0648\u0628\u0644 \u0631\u0648\u0633\u06cc\u0647 -currenciesDisplayName.UZS=\u0633\u0648\u0645 \u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646 +currenciesDisplayName.DJF=\u0641\u0631\u0627\u0646\u06a9 \u062c\u06cc\u0628\u0648\u062a\u06cc currenciesDisplayName.DKK=\u06a9\u0631\u0648\u0646 \u062f\u0627\u0646\u0645\u0627\u0631\u06a9 -currenciesDisplayName.XAG=\u0646\u0642\u0631\u0647 -currenciesDisplayName.TZS=\u0634\u06cc\u0644\u06cc\u0646\u06af \u062a\u0627\u0646\u0632\u0627\u0646\u06cc\u0627 -currenciesDisplayName.SBD=\u062f\u0644\u0627\u0631 \u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u06cc\u0645\u0627\u0646 -currenciesDisplayName.THB=\u0628\u0627\u062a \u062a\u0627\u06cc\u0644\u0646\u062f -currenciesDisplayName.NOK=\u06a9\u0631\u0648\u0646 \u0646\u0631\u0648\u0698 -currenciesDisplayName.UGX=\u0634\u06cc\u0644\u06cc\u0646\u06af \u0627\u0648\u06af\u0627\u0646\u062f\u0627 -currenciesDisplayName.TND=\u062f\u06cc\u0646\u0627\u0631 \u062a\u0648\u0646\u0633 -currenciesDisplayName.BEF=\u0641\u0631\u0627\u0646\u06a9 \u0628\u0644\u0698\u06cc\u06a9 -currenciesDisplayName.UGS=\u0634\u06cc\u0644\u06cc\u0646\u06af \u0642\u062f\u06cc\u0645 \u0627\u0648\u06af\u0627\u0646\u062f\u0627 -currenciesDisplayName.TTD=\u062f\u0644\u0627\u0631 \u062a\u0631\u06cc\u0646\u06cc\u062f\u0627\u062f \u0648 \u062a\u0648\u0628\u0627\u06af\u0648 -currenciesDisplayName.RHD=\u062f\u0644\u0627\u0631 \u0631\u0648\u062f\u0632\u06cc\u0627 -currenciesDisplayName.PHP=\u067e\u0632\u0648\u06cc \u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646 -currenciesDisplayName.AED=\u062f\u0631\u0647\u0645 \u0627\u0645\u0627\u0631\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0639\u0631\u0628\u06cc -currenciesDisplayName.SAR=\u0631\u06cc\u0627\u0644 \u0633\u0639\u0648\u062f\u06cc +currenciesDisplayName.DOP=\u067e\u0632\u0648\u06cc \u062f\u0648\u0645\u06cc\u0646\u06cc\u06a9\u0627 +currenciesDisplayName.DZD=\u062f\u06cc\u0646\u0627\u0631 \u0627\u0644\u062c\u0632\u0627\u06cc\u0631 +currenciesDisplayName.EUR=\u06cc\u0648\u0631\u0648 currenciesDisplayName.FJD=\u062f\u0644\u0627\u0631 \u0641\u06cc\u062c\u06cc -currenciesDisplayName.LUF=\u0641\u0631\u0627\u0646\u06a9 \u0644\u0648\u06a9\u0632\u0627\u0645\u0628\u0648\u0631\u06af -currenciesDisplayName.XFO=\u0641\u0631\u0627\u0646\u06a9 \u0637\u0644\u0627\u06cc \u0641\u0631\u0627\u0646\u0633\u0647 -currenciesDisplayName.TMM=\u0645\u0646\u0627\u062a \u062a\u0631\u06a9\u0645\u0646\u0633\u062a\u0627\u0646 -currenciesDisplayName.QAR=\u0631\u06cc\u0627\u0644 \u0642\u0637\u0631 -currenciesDisplayName.DJF=\u0641\u0631\u0627\u0646\u06a9 \u062c\u06cc\u0628\u0648\u062a\u06cc -currenciesDisplayName.XXX=\u0627\u0631\u0632 \u0646\u0627\u0645\u0634\u062e\u0635 \u06cc\u0627 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 -currenciesDisplayName.JOD=\u062f\u06cc\u0646\u0627\u0631 \u0627\u0631\u062f\u0646 -currenciesDisplayName.USD=\u062f\u0644\u0627\u0631 \u0627\u0645\u0631\u06cc\u06a9\u0627 -currenciesDisplayName.SGD=\u062f\u0644\u0627\u0631 \u0633\u0646\u06af\u0627\u067e\u0648\u0631 -currenciesDisplayName.SYP=\u0644\u06cc\u0631\u0647\u0654 \u0633\u0648\u0631\u06cc\u0647 -currenciesDisplayName.MTP=\u067e\u0648\u0646\u062f \u0645\u0627\u0644\u062a -currenciesDisplayName.MTL=\u0644\u06cc\u0631\u0647\u0654 \u0645\u0627\u0644\u062a +currenciesDisplayName.FRF=\u0641\u0631\u0627\u0646\u06a9 \u0641\u0631\u0627\u0646\u0633\u0647 +currenciesDisplayName.GBP=\u067e\u0648\u0646\u062f \u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 +currenciesDisplayName.GNF=\u0641\u0631\u0627\u0646\u06a9 \u06af\u06cc\u0646\u0647 +currenciesDisplayName.GRD=\u062f\u0631\u0627\u062e\u0645\u0627\u06cc \u06cc\u0648\u0646\u0627\u0646 +currenciesDisplayName.GWP=\u067e\u0632\u0648\u06cc \u06af\u06cc\u0646\u0647\u0654 \u0628\u06cc\u0633\u0627\u0626\u0648 +currenciesDisplayName.GYD=\u062f\u0644\u0627\u0631 \u06af\u0648\u06cc\u0627\u0646 +currenciesDisplayName.HKD=\u062f\u0644\u0627\u0631 \u0647\u0646\u06af\u200c\u06a9\u0646\u06af +currenciesDisplayName.HRD=\u062f\u06cc\u0646\u0627\u0631 \u06a9\u0631\u0648\u0627\u0633\u06cc currenciesDisplayName.HUF=\u0641\u0648\u0631\u06cc\u0646\u062a \u0645\u062c\u0627\u0631\u0633\u062a\u0627\u0646 -currenciesDisplayName.YER=\u0631\u06cc\u0627\u0644 \u06cc\u0645\u0646 -currenciesDisplayName.TRY=\u0644\u06cc\u0631\u0647\u0654 \u062a\u0631\u06a9\u06cc\u0647 -currenciesDisplayName.NZD=\u062f\u0644\u0627\u0631 \u0632\u0644\u0627\u0646\u062f \u0646\u0648 -currenciesDisplayName.OMR=\u0631\u06cc\u0627\u0644 \u0639\u0645\u0627\u0646 -currenciesDisplayName.RSD=\u062f\u06cc\u0646\u0627\u0631 \u0635\u0631\u0628\u0633\u062a\u0627\u0646 -currenciesDisplayName.EUR=\u06cc\u0648\u0631\u0648 +currenciesDisplayName.IDR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u0627\u0646\u062f\u0648\u0646\u0632\u06cc +currenciesDisplayName.IEP=\u067e\u0648\u0646\u062f \u0627\u06cc\u0631\u0644\u0646\u062f currenciesDisplayName.INR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u0647\u0646\u062f -currenciesDisplayName.DOP=\u067e\u0632\u0648\u06cc \u062f\u0648\u0645\u06cc\u0646\u06cc\u06a9\u0627 -currenciesDisplayName.GBP=\u067e\u0648\u0646\u062f \u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 -currenciesDisplayName.NAD=\u062f\u0644\u0627\u0631 \u0646\u0627\u0645\u06cc\u0628\u06cc\u0627 -currenciesDisplayName.COP=\u067e\u0632\u0648\u06cc \u06a9\u0644\u0645\u0628\u06cc\u0627 -currenciesDisplayName.TRL=\u0644\u06cc\u0631\u0647\u0654 \u0642\u062f\u06cc\u0645 \u062a\u0631\u06a9\u06cc\u0647 -currenciesDisplayName.MAF=\u0641\u0631\u0627\u0646\u06a9 \u0645\u0631\u0627\u06a9\u0634 +currenciesDisplayName.IQD=\u062f\u06cc\u0646\u0627\u0631 \u0639\u0631\u0627\u0642 +currenciesDisplayName.IRR=\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 currenciesDisplayName.ITL=\u0644\u06cc\u0631\u0647\u0654 \u0627\u06cc\u062a\u0627\u0644\u06cc\u0627 -currenciesDisplayName.MAD=\u062f\u0631\u0647\u0645 \u0645\u0631\u0627\u06a9\u0634 -currenciesDisplayName.CUP=\u067e\u0632\u0648\u06cc \u06a9\u0648\u0628\u0627 -currenciesDisplayName.BOP=\u067e\u0632\u0648\u06cc \u0628\u0648\u0644\u06cc\u0648\u06cc -currenciesDisplayName.MGF=\u0641\u0631\u0627\u0646\u06a9 \u0645\u0627\u062f\u0627\u06af\u0627\u0633\u06a9\u0627\u0631 -currenciesDisplayName.ZWD=\u062f\u0644\u0627\u0631 \u0632\u06cc\u0645\u0628\u0627\u0628\u0648\u0647 -currenciesDisplayName.BIF=\u0641\u0631\u0627\u0646\u06a9 \u0628\u0648\u0631\u0648\u0646\u062f\u06cc -currenciesDisplayName.SRG=\u06af\u06cc\u0644\u062f\u0631 \u0633\u0648\u0631\u06cc\u0646\u0627\u0645 -currenciesDisplayName.SRD=\u062f\u0644\u0627\u0631 \u0633\u0648\u0631\u06cc\u0646\u0627\u0645 -currenciesDisplayName.GNF=\u0641\u0631\u0627\u0646\u06a9 \u06af\u06cc\u0646\u0647 -currenciesDisplayName.PLN=\u0632\u0648\u0627\u062a\u06cc \u0644\u0647\u0633\u062a\u0627\u0646 -currenciesDisplayName.CNY=\u06cc\u0648\u0622\u0646 \u0686\u06cc\u0646 -currenciesDisplayName.KMF=\u0641\u0631\u0627\u0646\u06a9 \u06a9\u0648\u0645\u0648\u0631\u0648 -currenciesDisplayName.SEK=\u06a9\u0631\u0648\u0646 \u0633\u0648\u0626\u062f -currenciesDisplayName.AUD=\u062f\u0644\u0627\u0631 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 -currenciesDisplayName.LYD=\u062f\u06cc\u0646\u0627\u0631 \u0644\u06cc\u0628\u06cc -currenciesDisplayName.XPT=\u067e\u0644\u0627\u062a\u06cc\u0646 -currenciesDisplayName.YDD=\u062f\u06cc\u0646\u0627\u0631 \u06cc\u0645\u0646 currenciesDisplayName.JMD=\u062f\u0644\u0627\u0631 \u062c\u0627\u0645\u0627\u0626\u06cc\u06a9\u0627 +currenciesDisplayName.JOD=\u062f\u06cc\u0646\u0627\u0631 \u0627\u0631\u062f\u0646 +currenciesDisplayName.JPY=\u06cc\u0646 \u0698\u0627\u067e\u0646 +currenciesDisplayName.KES=\u0634\u06cc\u0644\u06cc\u0646\u06af \u06a9\u0646\u06cc\u0627 +currenciesDisplayName.KMF=\u0641\u0631\u0627\u0646\u06a9 \u06a9\u0648\u0645\u0648\u0631\u0648 +currenciesDisplayName.KWD=\u062f\u06cc\u0646\u0627\u0631 \u06a9\u0648\u06cc\u062a currenciesDisplayName.KYD=\u062f\u0644\u0627\u0631 \u062c\u0632\u0627\u06cc\u0631 \u06a9\u0650\u06cc\u0645\u0646 -currenciesDisplayName.CHF=\u0641\u0631\u0627\u0646\u06a9 \u0633\u0648\u0626\u06cc\u0633 -currenciesDisplayName.NLG=\u06af\u06cc\u0644\u062f\u0631 \u0647\u0644\u0646\u062f -currenciesDisplayName.BBD=\u062f\u0644\u0627\u0631 \u0628\u0627\u0631\u0628\u0627\u062f\u0648\u0633 +currenciesDisplayName.LKR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u0633\u0631\u06cc\u200c\u0644\u0627\u0646\u06a9\u0627 +currenciesDisplayName.LRD=\u062f\u0644\u0627\u0631 \u0644\u06cc\u0628\u0631\u06cc\u0627 +currenciesDisplayName.LUF=\u0641\u0631\u0627\u0646\u06a9 \u0644\u0648\u06a9\u0632\u0627\u0645\u0628\u0648\u0631\u06af +currenciesDisplayName.LVR=\u0631\u0648\u0628\u0644 \u0644\u062a\u0648\u0646\u06cc +currenciesDisplayName.LYD=\u062f\u06cc\u0646\u0627\u0631 \u0644\u06cc\u0628\u06cc +currenciesDisplayName.MAD=\u062f\u0631\u0647\u0645 \u0645\u0631\u0627\u06a9\u0634 +currenciesDisplayName.MAF=\u0641\u0631\u0627\u0646\u06a9 \u0645\u0631\u0627\u06a9\u0634 +currenciesDisplayName.MGF=\u0641\u0631\u0627\u0646\u06a9 \u0645\u0627\u062f\u0627\u06af\u0627\u0633\u06a9\u0627\u0631 currenciesDisplayName.MLF=\u0641\u0631\u0627\u0646\u06a9 \u0645\u0627\u0644\u06cc -currenciesDisplayName.BHD=\u062f\u06cc\u0646\u0627\u0631 \u0628\u062d\u0631\u06cc\u0646 -currenciesDisplayName.PKR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u067e\u0627\u06a9\u0633\u062a\u0627\u0646 -currenciesDisplayName.TWD=\u062f\u0644\u0627\u0631 \u062c\u062f\u06cc\u062f \u062a\u0627\u06cc\u0648\u0627\u0646 +currenciesDisplayName.MTL=\u0644\u06cc\u0631\u0647\u0654 \u0645\u0627\u0644\u062a +currenciesDisplayName.MTP=\u067e\u0648\u0646\u062f \u0645\u0627\u0644\u062a currenciesDisplayName.MXN=\u067e\u0632\u0648\u06cc \u0645\u06a9\u0632\u06cc\u06a9 -currenciesDisplayName.ATS=\u0634\u06cc\u0644\u06cc\u0646\u06af \u0627\u062a\u0631\u06cc\u0634 -currenciesDisplayName.XPD=\u067e\u0627\u0644\u0627\u062f\u06cc\u0645 -currenciesDisplayName.DZD=\u062f\u06cc\u0646\u0627\u0631 \u0627\u0644\u062c\u0632\u0627\u06cc\u0631 -currenciesDisplayName.BND=\u062f\u0644\u0627\u0631 \u0628\u0631\u0648\u0646\u0626\u06cc -currenciesDisplayName.TJS=\u0633\u0627\u0645\u0627\u0646\u06cc \u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646 -currenciesDisplayName.TJR=\u0631\u0648\u0628\u0644 \u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646 +currenciesDisplayName.NAD=\u062f\u0644\u0627\u0631 \u0646\u0627\u0645\u06cc\u0628\u06cc\u0627 +currenciesDisplayName.NLG=\u06af\u06cc\u0644\u062f\u0631 \u0647\u0644\u0646\u062f +currenciesDisplayName.NOK=\u06a9\u0631\u0648\u0646 \u0646\u0631\u0648\u0698 +currenciesDisplayName.NPR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u0646\u067e\u0627\u0644 +currenciesDisplayName.NZD=\u062f\u0644\u0627\u0631 \u0632\u0644\u0627\u0646\u062f \u0646\u0648 +currenciesDisplayName.OMR=\u0631\u06cc\u0627\u0644 \u0639\u0645\u0627\u0646 +currenciesDisplayName.PHP=\u067e\u0632\u0648\u06cc \u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646 +currenciesDisplayName.PKR=\u0631\u0648\u067e\u06cc\u0647\u0654 \u067e\u0627\u06a9\u0633\u062a\u0627\u0646 +currenciesDisplayName.PLN=\u0632\u0648\u0627\u062a\u06cc \u0644\u0647\u0633\u062a\u0627\u0646 +currenciesDisplayName.QAR=\u0631\u06cc\u0627\u0644 \u0642\u0637\u0631 +currenciesDisplayName.RHD=\u062f\u0644\u0627\u0631 \u0631\u0648\u062f\u0632\u06cc\u0627 +currenciesDisplayName.RSD=\u062f\u06cc\u0646\u0627\u0631 \u0635\u0631\u0628\u0633\u062a\u0627\u0646 +currenciesDisplayName.RUB=\u0631\u0648\u0628\u0644 \u0631\u0648\u0633\u06cc\u0647 +currenciesDisplayName.RUR=\u0631\u0648\u0628\u0644 \u0642\u062f\u06cc\u0645 \u0631\u0648\u0633\u06cc\u0647 currenciesDisplayName.RWF=\u0641\u0631\u0627\u0646\u06a9 \u0631\u0648\u0627\u0646\u062f\u0627 -currenciesDisplayName.AZN=\u0645\u0646\u0627\u062a \u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 -currenciesDisplayName.LRD=\u062f\u0644\u0627\u0631 \u0644\u06cc\u0628\u0631\u06cc\u0627 -currenciesDisplayName.AZM=\u0645\u0646\u0627\u062a \u0642\u062f\u06cc\u0645 \u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 -currenciesDisplayName.BZD=\u062f\u0644\u0627\u0631 \u0628\u0644\u06cc\u0632 -currenciesDisplayName.IRR=\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 -currenciesDisplayName.GYD=\u062f\u0644\u0627\u0631 \u06af\u0648\u06cc\u0627\u0646 -currenciesDisplayName.CAD=\u062f\u0644\u0627\u0631 \u06a9\u0627\u0646\u0627\u062f\u0627 +currenciesDisplayName.SAR=\u0631\u06cc\u0627\u0644 \u0633\u0639\u0648\u062f\u06cc +currenciesDisplayName.SBD=\u062f\u0644\u0627\u0631 \u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u06cc\u0645\u0627\u0646 currenciesDisplayName.SDD=\u062f\u06cc\u0646\u0627\u0631 \u0642\u062f\u06cc\u0645 \u0633\u0648\u062f\u0627\u0646 +currenciesDisplayName.SEK=\u06a9\u0631\u0648\u0646 \u0633\u0648\u0626\u062f +currenciesDisplayName.SGD=\u062f\u0644\u0627\u0631 \u0633\u0646\u06af\u0627\u067e\u0648\u0631 +currenciesDisplayName.SRD=\u062f\u0644\u0627\u0631 \u0633\u0648\u0631\u06cc\u0646\u0627\u0645 +currenciesDisplayName.SRG=\u06af\u06cc\u0644\u062f\u0631 \u0633\u0648\u0631\u06cc\u0646\u0627\u0645 +currenciesDisplayName.SUR=\u0631\u0648\u0628\u0644 \u0634\u0648\u0631\u0648\u06cc +currenciesDisplayName.SYP=\u0644\u06cc\u0631\u0647\u0654 \u0633\u0648\u0631\u06cc\u0647 +currenciesDisplayName.THB=\u0628\u0627\u062a \u062a\u0627\u06cc\u0644\u0646\u062f +currenciesDisplayName.TJR=\u0631\u0648\u0628\u0644 \u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646 +currenciesDisplayName.TJS=\u0633\u0627\u0645\u0627\u0646\u06cc \u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646 +currenciesDisplayName.TMM=\u0645\u0646\u0627\u062a \u062a\u0631\u06a9\u0645\u0646\u0633\u062a\u0627\u0646 +currenciesDisplayName.TND=\u062f\u06cc\u0646\u0627\u0631 \u062a\u0648\u0646\u0633 +currenciesDisplayName.TRL=\u0644\u06cc\u0631\u0647\u0654 \u0642\u062f\u06cc\u0645 \u062a\u0631\u06a9\u06cc\u0647 +currenciesDisplayName.TRY=\u0644\u06cc\u0631\u0647\u0654 \u062a\u0631\u06a9\u06cc\u0647 +currenciesDisplayName.TTD=\u062f\u0644\u0627\u0631 \u062a\u0631\u06cc\u0646\u06cc\u062f\u0627\u062f \u0648 \u062a\u0648\u0628\u0627\u06af\u0648 +currenciesDisplayName.TWD=\u062f\u0644\u0627\u0631 \u062c\u062f\u06cc\u062f \u062a\u0627\u06cc\u0648\u0627\u0646 +currenciesDisplayName.TZS=\u0634\u06cc\u0644\u06cc\u0646\u06af \u062a\u0627\u0646\u0632\u0627\u0646\u06cc\u0627 +currenciesDisplayName.UGS=\u0634\u06cc\u0644\u06cc\u0646\u06af \u0642\u062f\u06cc\u0645 \u0627\u0648\u06af\u0627\u0646\u062f\u0627 +currenciesDisplayName.UGX=\u0634\u06cc\u0644\u06cc\u0646\u06af \u0627\u0648\u06af\u0627\u0646\u062f\u0627 +currenciesDisplayName.USD=\u062f\u0644\u0627\u0631 \u0627\u0645\u0631\u06cc\u06a9\u0627 +currenciesDisplayName.UZS=\u0633\u0648\u0645 \u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646 +currenciesDisplayName.XAG=\u0646\u0642\u0631\u0647 +currenciesDisplayName.XAU=\u0637\u0644\u0627 +currenciesDisplayName.XCD=\u062f\u0644\u0627\u0631 \u0634\u0631\u0642 \u06a9\u0627\u0631\u0627\u0626\u06cc\u0628 +currenciesDisplayName.XFO=\u0641\u0631\u0627\u0646\u06a9 \u0637\u0644\u0627\u06cc \u0641\u0631\u0627\u0646\u0633\u0647 +currenciesDisplayName.XPD=\u067e\u0627\u0644\u0627\u062f\u06cc\u0645 +currenciesDisplayName.XPT=\u067e\u0644\u0627\u062a\u06cc\u0646 +currenciesDisplayName.XXX=\u0627\u0631\u0632 \u0646\u0627\u0645\u0634\u062e\u0635 \u06cc\u0627 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 +currenciesDisplayName.YDD=\u062f\u06cc\u0646\u0627\u0631 \u06cc\u0645\u0646 +currenciesDisplayName.YER=\u0631\u06cc\u0627\u0644 \u06cc\u0645\u0646 +currenciesDisplayName.ZAR=\u0631\u0627\u0646\u062f \u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc +currenciesDisplayName.ZWD=\u062f\u0644\u0627\u0631 \u0632\u06cc\u0645\u0628\u0627\u0628\u0648\u0647 currenciesSymbol.IRR=\ufdfc -shortMonths=\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae -months=\u0698\u0627\u0646\u0648\u06cc\u0647\u00ae\u0641\u0648\u0631\u06cc\u0647\u00ae\u0645\u0627\u0631\u0633\u00ae\u0622\u0648\u0631\u06cc\u0644\u00ae\u0645\u0647\u00ae\u0698\u0648\u0626\u0646\u00ae\u0698\u0648\u0626\u06cc\u0647\u00ae\u0627\u0648\u062a\u00ae\u0633\u067e\u062a\u0627\u0645\u0628\u0631\u00ae\u0627\u06a9\u062a\u0628\u0631\u00ae\u0646\u0648\u0627\u0645\u0628\u0631\u00ae\u062f\u0633\u0627\u0645\u0628\u0631\u00ae\u00ae -shortWeekdays=\u00ae\u06cc\u06a9\u0634\u0646\u0628\u0647\u00ae\u062f\u0648\u0634\u0646\u0628\u0647\u00ae\u0633\u0647\u200c\u0634\u0646\u0628\u0647\u00ae\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647\u00ae\u067e\u0646\u062c\u0634\u0646\u0628\u0647\u00ae\u062c\u0645\u0639\u0647\u00ae\u0634\u0646\u0628\u0647\u00ae -weekdays=\u00ae\u06cc\u06a9\u0634\u0646\u0628\u0647\u00ae\u062f\u0648\u0634\u0646\u0628\u0647\u00ae\u0633\u0647\u200c\u0634\u0646\u0628\u0647\u00ae\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647\u00ae\u067e\u0646\u062c\u0634\u0646\u0628\u0647\u00ae\u062c\u0645\u0639\u0647\u00ae\u0634\u0646\u0628\u0647\u00ae +shortMonths=\u0698\u0627\u0646\u0648\u06cc\u0647\u0654\u00ae\u0641\u0648\u0631\u06cc\u0647\u0654\u00ae\u0645\u0627\u0631\u0633\u00ae\u0622\u0648\u0631\u06cc\u0644\u00ae\u0645\u0647\u0654\u00ae\u0698\u0648\u0626\u0646\u00ae\u0698\u0648\u0626\u06cc\u0647\u0654\u00ae\u0627\u0648\u062a\u00ae\u0633\u067e\u062a\u0627\u0645\u0628\u0631\u00ae\u0627\u06a9\u062a\u0628\u0631\u00ae\u0646\u0648\u0627\u0645\u0628\u0631\u00ae\u062f\u0633\u0627\u0645\u0628\u0631\u00ae +months=\u0698\u0627\u0646\u0648\u06cc\u0647\u0654\u00ae\u0641\u0648\u0631\u06cc\u0647\u0654\u00ae\u0645\u0627\u0631\u0633\u00ae\u0622\u0648\u0631\u06cc\u0644\u00ae\u0645\u0647\u0654\u00ae\u0698\u0648\u0626\u0646\u00ae\u0698\u0648\u0626\u06cc\u0647\u0654\u00ae\u0627\u0648\u062a\u00ae\u0633\u067e\u062a\u0627\u0645\u0628\u0631\u00ae\u0627\u06a9\u062a\u0628\u0631\u00ae\u0646\u0648\u0627\u0645\u0628\u0631\u00ae\u062f\u0633\u0627\u0645\u0628\u0631\u00ae +shortWeekdays=\u00ae\u06cc\u06a9\u0634\u0646\u0628\u0647\u00ae\u062f\u0648\u0634\u0646\u0628\u0647\u00ae\u0633\u0647\u200c\u0634\u0646\u0628\u0647\u00ae\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647\u00ae\u067e\u0646\u062c\u0634\u0646\u0628\u0647\u00ae\u062c\u0645\u0639\u0647\u00ae\u0634\u0646\u0628\u0647 +weekdays=\u00ae\u06cc\u06a9\u0634\u0646\u0628\u0647\u00ae\u062f\u0648\u0634\u0646\u0628\u0647\u00ae\u0633\u0647\u200c\u0634\u0646\u0628\u0647\u00ae\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647\u00ae\u067e\u0646\u062c\u0634\u0646\u0628\u0647\u00ae\u062c\u0645\u0639\u0647\u00ae\u0634\u0646\u0628\u0647 eras=\u0642.\u0645.\u00ae\u0645.\u00ae ampms=\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631\u00ae\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631\u00ae shortDateFormat=yy/M/d @@ -152,797 +152,797 @@ shortTimeFormat=H:mm mediumTimeFormat=H:mm:ss longTimeFormat=H:mm:ss (zzzz) fullTimeFormat=H:mm:ss (zzzz) -zoneStrings=Europe_Central\u00ae\u0648\u0642\u062a \u0645\u0631\u06a9\u0632 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u00a9Africa_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u00a9Urumqi\u00ae\u0648\u0642\u062a \u0627\u0631\u0648\u0645\u0686\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Irkutsk\u00ae\u0648\u0642\u062a \u0627\u06cc\u0631\u06a9\u0648\u062a\u0633\u06a9\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u06cc\u0631\u06a9\u0648\u062a\u0633\u06a9\u00ae\u00ae\u00a9Papua_New_Guinea\u00ae\u0648\u0642\u062a \u067e\u0627\u067e\u0648\u0627 \u06af\u06cc\u0646\u0647\u0654 \u0646\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Australia_Eastern\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0634\u0631\u0642 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u0631\u0642 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u00a9Kazakhstan_Western\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u063a\u0631\u0628 \u0642\u0632\u0627\u0642\u0633\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Bangladesh\u00ae\u0648\u0642\u062a \u0628\u0646\u06af\u0644\u0627\u062f\u0634\u00ae\u00ae\u00ae\u00ae\u00a9Maldives\u00ae\u0648\u0642\u062a \u0645\u0627\u0644\u062f\u06cc\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Samarkand\u00ae\u0648\u0642\u062a \u0633\u0645\u0631\u0642\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0633\u0645\u0631\u0642\u0646\u062f\u00ae\u00ae\u00a9Indian_Ocean\u00ae\u0648\u0642\u062a \u0627\u0642\u06cc\u0627\u0646\u0648\u0633 \u0647\u0646\u062f\u00ae\u00ae\u00ae\u00ae\u00a9Fiji\u00ae\u0648\u0642\u062a \u0641\u06cc\u062c\u06cc\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0641\u06cc\u062c\u06cc\u00ae\u00ae\u00a9Singapore\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0633\u0646\u06af\u0627\u067e\u0648\u0631\u00ae\u00ae\u00ae\u00ae\u00a9Azerbaijan\u00ae\u0648\u0642\u062a \u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646\u00ae\u00ae\u00a9Amazon\u00ae\u0648\u0642\u062a \u0622\u0645\u0627\u0632\u0648\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u0645\u0627\u0632\u0648\u0646\u00ae\u00ae\u00a9Arabian\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0639\u0631\u0628\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0639\u0631\u0628\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Alaska\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0622\u0644\u0627\u0633\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u0644\u0627\u0633\u06a9\u0627\u00ae\u00ae\u00a9Dutch_Guiana\u00ae\u0648\u0642\u062a \u06af\u0648\u06cc\u0627\u0646 \u0647\u0644\u0646\u062f\u00ae\u00ae\u00ae\u00ae\u00a9Easter\u00ae\u0648\u0642\u062a \u062c\u0632\u06cc\u0631\u0647\u0654 \u0627\u06cc\u0633\u062a\u0631\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062c\u0632\u06cc\u0631\u0647\u0654 \u0627\u06cc\u0633\u062a\u0631\u00ae\u00ae\u00a9Hong_Kong\u00ae\u0648\u0642\u062a \u0647\u0646\u06af\u200c\u06a9\u0646\u06af\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0647\u0646\u06af\u200c\u06a9\u0646\u06af\u00ae\u00ae\u00a9Indonesia_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Indonesia_Eastern\u00ae\u0648\u0642\u062a \u0634\u0631\u0642 \u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Armenia\u00ae\u0648\u0642\u062a \u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9America_Pacific\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u063a\u0631\u0628 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u00a9Tajikistan\u00ae\u0648\u0642\u062a \u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9French_Guiana\u00ae\u0648\u0642\u062a \u06af\u0648\u06cc\u0627\u0646 \u0641\u0631\u0627\u0646\u0633\u0647\u00ae\u00ae\u00ae\u00ae\u00a9Nepal\u00ae\u0648\u0642\u062a \u0646\u067e\u0627\u0644\u00ae\u00ae\u00ae\u00ae\u00a9Dushanbe\u00ae\u0648\u0642\u062a \u062f\u0648\u0634\u0646\u0628\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062f\u0648\u0634\u0646\u0628\u0647\u00ae\u00ae\u00a9Yerevan\u00ae\u0648\u0642\u062a \u0627\u06cc\u0631\u0648\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u06cc\u0631\u0648\u0627\u0646\u00ae\u00ae\u00a9Paraguay\u00ae\u0648\u0642\u062a \u067e\u0627\u0631\u0627\u06af\u0648\u0626\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u067e\u0627\u0631\u0627\u06af\u0648\u0626\u0647\u00ae\u00ae\u00a9Seychelles\u00ae\u0648\u0642\u062a \u0633\u06cc\u0634\u0644\u00ae\u00ae\u00ae\u00ae\u00a9Israel\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0627\u0633\u0631\u0627\u0626\u06cc\u0644\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0633\u0631\u0627\u0626\u06cc\u0644\u00ae\u00ae\u00a9Cocos\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9\u0648\u0633\u00ae\u00ae\u00ae\u00ae\u00a9Greenland_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u00a9Europe_Eastern\u00ae\u0648\u0642\u062a \u0634\u0631\u0642 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u0631\u0642 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u00a9North_Mariana\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u0645\u0627\u0631\u06cc\u0627\u0646\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Australia_Western\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u063a\u0631\u0628 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u00a9Moscow\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0645\u0633\u06a9\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0633\u06a9\u0648\u00ae\u00ae\u00a9Kyrgystan\u00ae\u0648\u0642\u062a \u0642\u0631\u0642\u06cc\u0632\u0633\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Venezuela\u00ae\u0648\u0642\u062a \u0648\u0646\u0632\u0648\u0626\u0644\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Peru\u00ae\u0648\u0642\u062a \u067e\u0631\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u067e\u0631\u0648\u00ae\u00ae\u00a9Christmas\u00ae\u0648\u0642\u062a \u062c\u0632\u06cc\u0631\u0647\u0654 \u06a9\u0631\u06cc\u0633\u0645\u0633\u00ae\u00ae\u00ae\u00ae\u00a9South_Georgia\u00ae\u0648\u0642\u062a \u062c\u0648\u0631\u062c\u06cc\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Korea\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u06a9\u0631\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u0631\u0647\u00ae\u00ae\u00a9Argentina_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Africa_Eastern\u00ae\u0648\u0642\u062a \u0634\u0631\u0642 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Turkmenistan\u00ae\u0648\u0642\u062a \u062a\u0631\u06a9\u0645\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0631\u06a9\u0645\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Atlantic\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0622\u062a\u0644\u0627\u0646\u062a\u06cc\u06a9\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u062a\u0644\u0627\u0646\u062a\u06cc\u06a9\u00ae\u00ae\u00a9Alaska_Hawaii\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0622\u0644\u0627\u0633\u06a9\u0627\u2010\u0647\u0627\u0648\u0627\u0626\u06cc\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u0644\u0627\u0633\u06a9\u0627\u2010\u0647\u0627\u0648\u0627\u0626\u06cc\u00ae\u00ae\u00a9Uzbekistan\u00ae\u0648\u0642\u062a \u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Cape_Verde\u00ae\u0648\u0642\u062a \u06a9\u06cc\u067e \u0648\u0631\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u06cc\u067e \u0648\u0631\u062f\u00ae\u00ae\u00a9Tbilisi\u00ae\u0648\u0642\u062a \u062a\u0641\u0644\u06cc\u0633\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0641\u0644\u06cc\u0633\u00ae\u00ae\u00a9Malaysia\u00ae\u0648\u0642\u062a \u0645\u0627\u0644\u0632\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9America_Eastern\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0634\u0631\u0642 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u0631\u0642 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u00a9Baku\u00ae\u0648\u0642\u062a \u0628\u0627\u06a9\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0628\u0627\u06a9\u0648\u00ae\u00ae\u00a9Davis\u00ae\u0648\u0642\u062a \u062f\u06cc\u0648\u06cc\u0633\u00ae\u00ae\u00ae\u00ae\u00a9Afghanistan\u00ae\u0648\u0642\u062a \u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Samoa\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0633\u0627\u0645\u0648\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Palau\u00ae\u0648\u0642\u062a \u067e\u0627\u0644\u0627\u0626\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Solomon\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u06cc\u0645\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Ecuador\u00ae\u0648\u0642\u062a \u0627\u06a9\u0648\u0627\u062f\u0648\u0631\u00ae\u00ae\u00ae\u00ae\u00a9Europe_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u00a9Africa_Central\u00ae\u0648\u0642\u062a \u0645\u0631\u06a9\u0632 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Turkey\u00ae\u0648\u0642\u062a \u062a\u0631\u06a9\u06cc\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0631\u06a9\u06cc\u0647\u00ae\u00ae\u00a9Africa_Southern\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u062c\u0646\u0648\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Ashkhabad\u00ae\u0648\u0642\u062a \u0639\u0634\u0642\u200c\u0622\u0628\u0627\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0639\u0634\u0642\u200c\u0622\u0628\u0627\u062f\u00ae\u00ae\u00a9Bering\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0628\u0631\u06cc\u0646\u06af\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0628\u0631\u06cc\u0646\u06af\u00ae\u00ae\u00a9Guam\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u06af\u0648\u0627\u0645\u00ae\u00ae\u00ae\u00ae\u00a9Marshall_Islands\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u0645\u0627\u0631\u0634\u0627\u0644\u00ae\u00ae\u00ae\u00ae\u00a9Bhutan\u00ae\u0648\u0642\u062a \u0628\u0648\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Karachi\u00ae\u0648\u0642\u062a \u06a9\u0631\u0627\u0686\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Tashkent\u00ae\u0648\u0642\u062a \u062a\u0627\u0634\u06a9\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0627\u0634\u06a9\u0646\u062f\u00ae\u00ae\u00a9Nauru\u00ae\u0648\u0642\u062a \u0646\u0627\u0626\u0648\u0631\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Tuvalu\u00ae\u0648\u0642\u062a \u062a\u0648\u0648\u0627\u0644\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Philippines\u00ae\u0648\u0642\u062a \u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646\u00ae\u00ae\u00a9East_Timor\u00ae\u0648\u0642\u062a \u062a\u06cc\u0645\u0648\u0631 \u0634\u0631\u0642\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Yakutsk\u00ae\u0648\u0642\u062a \u06cc\u0627\u06a9\u0648\u062a\u0633\u06a9\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06cc\u0627\u06a9\u0648\u062a\u0633\u06a9\u00ae\u00ae\u00a9Iran\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0627\u06cc\u0631\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u06cc\u0631\u0627\u0646\u00ae\u00ae\u00a9Argentina\u00ae\u0648\u0642\u062a \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646\u00ae\u00ae\u00a9Tonga\u00ae\u0648\u0642\u062a \u062a\u0648\u0646\u06af\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0648\u0646\u06af\u0627\u00ae\u00ae\u00a9New_Zealand\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0632\u0644\u0627\u0646\u062f \u0646\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0632\u0644\u0627\u0646\u062f \u0646\u0648\u00ae\u00ae\u00a9China\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0686\u06cc\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0686\u06cc\u0646\u00ae\u00ae\u00a9Indonesia_Central\u00ae\u0648\u0642\u062a \u0645\u0631\u06a9\u0632 \u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9America_Mountain\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u06a9\u0648\u0647\u0633\u062a\u0627\u0646\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u0648\u0647\u0633\u062a\u0627\u0646\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u00a9India\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0647\u0646\u062f\u00ae\u00ae\u00ae\u00ae\u00a9Suriname\u00ae\u0648\u0642\u062a \u0633\u0648\u0631\u06cc\u0646\u0627\u0645\u00ae\u00ae\u00ae\u00ae\u00a9GMT\u00ae\u0648\u0642\u062a \u06af\u0631\u06cc\u0646\u0648\u06cc\u0686\u00ae\u00ae\u00ae\u00ae\u00a9Falkland\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0644\u06a9\u0644\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0644\u06a9\u0644\u0646\u062f\u00ae\u00ae\u00a9Indochina\u00ae\u0648\u0642\u062a \u0647\u0646\u062f\u0648\u0686\u06cc\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Wake\u00ae\u0648\u0642\u062a \u062c\u0632\u06cc\u0631\u0647\u0654 \u0648\u06cc\u06a9\u00ae\u00ae\u00ae\u00ae\u00a9Uruguay\u00ae\u0648\u0642\u062a \u0627\u0631\u0648\u06af\u0648\u0626\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0631\u0648\u06af\u0648\u0626\u0647\u00ae\u00ae\u00a9Chile\u00ae\u0648\u0642\u062a \u0634\u06cc\u0644\u06cc\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u06cc\u0644\u06cc\u00ae\u00ae\u00a9Vanuatu\u00ae\u0648\u0642\u062a \u0648\u0627\u0646\u0627\u062a\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0648\u0627\u0646\u0627\u062a\u0648\u00ae\u00ae\u00a9Brasilia\u00ae\u0648\u0642\u062a \u0628\u0631\u0627\u0632\u06cc\u0644\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0628\u0631\u0627\u0632\u06cc\u0644\u06cc\u0627\u00ae\u00ae\u00a9Tahiti\u00ae\u0648\u0642\u062a \u062a\u0627\u0647\u06cc\u062a\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Kazakhstan_Eastern\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0634\u0631\u0642 \u0642\u0632\u0627\u0642\u0633\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9America_Central\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u00a9Lanka\u00ae\u0648\u0642\u062a \u0644\u0627\u0646\u06a9\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Greenland_Eastern\u00ae\u0648\u0642\u062a \u0634\u0631\u0642 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u0631\u0642 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u00a9Japan\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0698\u0627\u067e\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0698\u0627\u067e\u0646\u00ae\u00ae\u00a9Greenland_Central\u00ae\u0648\u0642\u062a \u0645\u0631\u06a9\u0632 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0631\u06a9\u0632 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u00a9Pakistan\u00ae\u0648\u0642\u062a \u067e\u0627\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u067e\u0627\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Bolivia\u00ae\u0648\u0642\u062a \u0628\u0648\u0644\u06cc\u0648\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Cook\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9\u00ae\u00ae\u00ae\u00ae\u00a9Kashgar\u00ae\u0648\u0642\u062a \u06a9\u0627\u0634\u063a\u0631\u00ae\u00ae\u00ae\u00ae\u00a9Australia_Central\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u00a9Guyana\u00ae\u0648\u0642\u062a \u06af\u0648\u06cc\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Georgia\u00ae\u0648\u0642\u062a \u06af\u0631\u062c\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06af\u0631\u062c\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Colombia\u00ae\u0648\u0642\u062a \u06a9\u0644\u0645\u0628\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u0644\u0645\u0628\u06cc\u0627\u00ae\u00ae\u00a9Galapagos\u00ae\u0648\u0642\u062a \u06af\u0627\u0644\u0627\u067e\u0627\u06af\u0648\u0633\u00ae\u00ae\u00ae\u00ae\u00a9Cuba\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u06a9\u0648\u0628\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u0648\u0628\u0627\u00ae\u00ae\u00a9Myanmar\u00ae\u0648\u0642\u062a \u0645\u06cc\u0627\u0646\u0645\u0627\u0631\u00ae\u00ae\u00ae\u00ae\u00a9Macau\u00ae\u0648\u0642\u062a \u0645\u0627\u06a9\u0627\u0626\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0627\u06a9\u0627\u0626\u0648\u00ae\u00ae\u00a9 -territories.TL=\u062a\u06cc\u0645\u0648\u0631 \u0634\u0631\u0642\u06cc -territories.TK=\u062a\u0648\u06a9\u0644\u0627\u0626\u0648 -territories.TJ=\u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646 -territories.TH=\u062a\u0627\u06cc\u0644\u0646\u062f -territories.TG=\u062a\u0648\u06af\u0648 -territories.TF=\u0645\u0633\u062a\u0639\u0645\u0631\u0647\u200c\u0647\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc \u0641\u0631\u0627\u0646\u0633\u0647 -territories.GY=\u06af\u0648\u06cc\u0627\u0646 -territories.TD=\u0686\u0627\u062f -territories.TC=\u062c\u0632\u0627\u06cc\u0631 \u062a\u0631\u06a9 \u0648 \u06a9\u0627\u06cc\u06a9\u0648\u0633 -territories.GW=\u06af\u06cc\u0646\u0647\u0654 \u0628\u06cc\u0633\u0627\u0626\u0648 -territories.GU=\u06af\u0648\u0627\u0645 -territories.GT=\u06af\u0648\u0627\u062a\u0645\u0627\u0644\u0627 -territories.GS=\u062c\u0648\u0631\u062c\u06cc\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc \u0648 \u062c\u0632\u0627\u06cc\u0631 \u0633\u0627\u0646\u062f\u0648\u06cc\u0686 \u062c\u0646\u0648\u0628\u06cc -territories.GR=\u06cc\u0648\u0646\u0627\u0646 -territories.GQ=\u06af\u06cc\u0646\u0647\u0654 \u0627\u0633\u062a\u0648\u0627\u06cc\u06cc -territories.GP=\u06af\u0648\u0627\u062f\u0644\u0648\u067e -territories.SZ=\u0633\u0648\u0627\u0632\u06cc\u0644\u0646\u062f -territories.SY=\u0633\u0648\u0631\u06cc\u0647 -territories.GN=\u06af\u06cc\u0646\u0647 -territories.GM=\u06af\u0627\u0645\u0628\u06cc\u0627 -territories.GL=\u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f -territories.SV=\u0627\u0644\u0633\u0627\u0644\u0648\u0627\u062f\u0648\u0631 -territories.062=\u062c\u0646\u0648\u0628 \u0622\u0633\u06cc\u0627 \u0648 \u0622\u0633\u06cc\u0627\u06cc \u0645\u06cc\u0627\u0646\u0647 -territories.ST=\u0633\u0627\u0626\u0648 \u062a\u0648\u0645\u0647 \u0648 \u067e\u0631\u06cc\u0646\u0633\u06cc\u067e\u0647 -territories.GI=\u06af\u06cc\u0628\u0631\u0627\u0644\u062a\u0627\u0631 +zoneStrings=Afghanistan\u00ae\u0648\u0642\u062a \u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Africa_Central\u00ae\u0648\u0642\u062a \u0645\u0631\u06a9\u0632 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Africa_Eastern\u00ae\u0648\u0642\u062a \u0634\u0631\u0642 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Africa_Southern\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u062c\u0646\u0648\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Africa_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627\u00ae\u00ae\u00a9Alaska\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0622\u0644\u0627\u0633\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u0644\u0627\u0633\u06a9\u0627\u00ae\u00ae\u00a9Alaska_Hawaii\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0622\u0644\u0627\u0633\u06a9\u0627\u2010\u0647\u0627\u0648\u0627\u0626\u06cc\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u0644\u0627\u0633\u06a9\u0627\u2010\u0647\u0627\u0648\u0627\u0626\u06cc\u00ae\u00ae\u00a9Amazon\u00ae\u0648\u0642\u062a \u0622\u0645\u0627\u0632\u0648\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u0645\u0627\u0632\u0648\u0646\u00ae\u00ae\u00a9America_Central\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u00a9America_Eastern\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0634\u0631\u0642 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u0631\u0642 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u00a9America_Mountain\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u06a9\u0648\u0647\u0633\u062a\u0627\u0646\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u0648\u0647\u0633\u062a\u0627\u0646\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u00a9America_Pacific\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u063a\u0631\u0628 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u0627\u0645\u0631\u06cc\u06a9\u0627\u00ae\u00ae\u00a9Arabian\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0639\u0631\u0628\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0639\u0631\u0628\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Argentina\u00ae\u0648\u0642\u062a \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646\u00ae\u00ae\u00a9Argentina_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Armenia\u00ae\u0648\u0642\u062a \u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Ashkhabad\u00ae\u0648\u0642\u062a \u0639\u0634\u0642\u200c\u0622\u0628\u0627\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0639\u0634\u0642\u200c\u0622\u0628\u0627\u062f\u00ae\u00ae\u00a9Atlantic\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0622\u062a\u0644\u0627\u0646\u062a\u06cc\u06a9\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0622\u062a\u0644\u0627\u0646\u062a\u06cc\u06a9\u00ae\u00ae\u00a9Australia_Central\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u00a9Australia_Eastern\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0634\u0631\u0642 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u0631\u0642 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u00a9Australia_Western\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u063a\u0631\u0628 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u00ae\u00ae\u00a9Azerbaijan\u00ae\u0648\u0642\u062a \u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646\u00ae\u00ae\u00a9Baku\u00ae\u0648\u0642\u062a \u0628\u0627\u06a9\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0628\u0627\u06a9\u0648\u00ae\u00ae\u00a9Bangladesh\u00ae\u0648\u0642\u062a \u0628\u0646\u06af\u0644\u0627\u062f\u0634\u00ae\u00ae\u00ae\u00ae\u00a9Bering\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0628\u0631\u06cc\u0646\u06af\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0628\u0631\u06cc\u0646\u06af\u00ae\u00ae\u00a9Bhutan\u00ae\u0648\u0642\u062a \u0628\u0648\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Bolivia\u00ae\u0648\u0642\u062a \u0628\u0648\u0644\u06cc\u0648\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Brasilia\u00ae\u0648\u0642\u062a \u0628\u0631\u0627\u0632\u06cc\u0644\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0628\u0631\u0627\u0632\u06cc\u0644\u06cc\u0627\u00ae\u00ae\u00a9Cape_Verde\u00ae\u0648\u0642\u062a \u06a9\u06cc\u067e \u0648\u0631\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u06cc\u067e \u0648\u0631\u062f\u00ae\u00ae\u00a9Chile\u00ae\u0648\u0642\u062a \u0634\u06cc\u0644\u06cc\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u06cc\u0644\u06cc\u00ae\u00ae\u00a9China\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0686\u06cc\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0686\u06cc\u0646\u00ae\u00ae\u00a9Christmas\u00ae\u0648\u0642\u062a \u062c\u0632\u06cc\u0631\u0647\u0654 \u06a9\u0631\u06cc\u0633\u0645\u0633\u00ae\u00ae\u00ae\u00ae\u00a9Cocos\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9\u0648\u0633\u00ae\u00ae\u00ae\u00ae\u00a9Colombia\u00ae\u0648\u0642\u062a \u06a9\u0644\u0645\u0628\u06cc\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u0644\u0645\u0628\u06cc\u0627\u00ae\u00ae\u00a9Cook\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9\u00ae\u00ae\u00ae\u00ae\u00a9Cuba\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u06a9\u0648\u0628\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u0648\u0628\u0627\u00ae\u00ae\u00a9Davis\u00ae\u0648\u0642\u062a \u062f\u06cc\u0648\u06cc\u0633\u00ae\u00ae\u00ae\u00ae\u00a9Dushanbe\u00ae\u0648\u0642\u062a \u062f\u0648\u0634\u0646\u0628\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062f\u0648\u0634\u0646\u0628\u0647\u00ae\u00ae\u00a9Dutch_Guiana\u00ae\u0648\u0642\u062a \u06af\u0648\u06cc\u0627\u0646 \u0647\u0644\u0646\u062f\u00ae\u00ae\u00ae\u00ae\u00a9East_Timor\u00ae\u0648\u0642\u062a \u062a\u06cc\u0645\u0648\u0631 \u0634\u0631\u0642\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Easter\u00ae\u0648\u0642\u062a \u062c\u0632\u06cc\u0631\u0647\u0654 \u0627\u06cc\u0633\u062a\u0631\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062c\u0632\u06cc\u0631\u0647\u0654 \u0627\u06cc\u0633\u062a\u0631\u00ae\u00ae\u00a9Ecuador\u00ae\u0648\u0642\u062a \u0627\u06a9\u0648\u0627\u062f\u0648\u0631\u00ae\u00ae\u00ae\u00ae\u00a9Europe_Central\u00ae\u0648\u0642\u062a \u0645\u0631\u06a9\u0632 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0631\u06a9\u0632 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u00a9Europe_Eastern\u00ae\u0648\u0642\u062a \u0634\u0631\u0642 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u0631\u0642 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u00a9Europe_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u0627\u0631\u0648\u067e\u0627\u00ae\u00ae\u00a9Falkland\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0644\u06a9\u0644\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0644\u06a9\u0644\u0646\u062f\u00ae\u00ae\u00a9Fiji\u00ae\u0648\u0642\u062a \u0641\u06cc\u062c\u06cc\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0641\u06cc\u062c\u06cc\u00ae\u00ae\u00a9French_Guiana\u00ae\u0648\u0642\u062a \u06af\u0648\u06cc\u0627\u0646 \u0641\u0631\u0627\u0646\u0633\u0647\u00ae\u00ae\u00ae\u00ae\u00a9GMT\u00ae\u0648\u0642\u062a \u06af\u0631\u06cc\u0646\u0648\u06cc\u0686\u00ae\u00ae\u00ae\u00ae\u00a9Galapagos\u00ae\u0648\u0642\u062a \u06af\u0627\u0644\u0627\u067e\u0627\u06af\u0648\u0633\u00ae\u00ae\u00ae\u00ae\u00a9Georgia\u00ae\u0648\u0642\u062a \u06af\u0631\u062c\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06af\u0631\u062c\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Greenland_Central\u00ae\u0648\u0642\u062a \u0645\u0631\u06a9\u0632 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0631\u06a9\u0632 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u00a9Greenland_Eastern\u00ae\u0648\u0642\u062a \u0634\u0631\u0642 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0634\u0631\u0642 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u00a9Greenland_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u063a\u0631\u0628 \u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f\u00ae\u00ae\u00a9Guam\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u06af\u0648\u0627\u0645\u00ae\u00ae\u00ae\u00ae\u00a9Guyana\u00ae\u0648\u0642\u062a \u06af\u0648\u06cc\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Hong_Kong\u00ae\u0648\u0642\u062a \u0647\u0646\u06af\u200c\u06a9\u0646\u06af\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0647\u0646\u06af\u200c\u06a9\u0646\u06af\u00ae\u00ae\u00a9India\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0647\u0646\u062f\u00ae\u00ae\u00ae\u00ae\u00a9Indian_Ocean\u00ae\u0648\u0642\u062a \u0627\u0642\u06cc\u0627\u0646\u0648\u0633 \u0647\u0646\u062f\u00ae\u00ae\u00ae\u00ae\u00a9Indochina\u00ae\u0648\u0642\u062a \u0647\u0646\u062f\u0648\u0686\u06cc\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Indonesia_Central\u00ae\u0648\u0642\u062a \u0645\u0631\u06a9\u0632 \u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Indonesia_Eastern\u00ae\u0648\u0642\u062a \u0634\u0631\u0642 \u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Indonesia_Western\u00ae\u0648\u0642\u062a \u063a\u0631\u0628 \u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Iran\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0627\u06cc\u0631\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u06cc\u0631\u0627\u0646\u00ae\u00ae\u00a9Irkutsk\u00ae\u0648\u0642\u062a \u0627\u06cc\u0631\u06a9\u0648\u062a\u0633\u06a9\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u06cc\u0631\u06a9\u0648\u062a\u0633\u06a9\u00ae\u00ae\u00a9Israel\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0627\u0633\u0631\u0627\u0626\u06cc\u0644\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0633\u0631\u0627\u0626\u06cc\u0644\u00ae\u00ae\u00a9Japan\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0698\u0627\u067e\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0698\u0627\u067e\u0646\u00ae\u00ae\u00a9Karachi\u00ae\u0648\u0642\u062a \u06a9\u0631\u0627\u0686\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Kashgar\u00ae\u0648\u0642\u062a \u06a9\u0627\u0634\u063a\u0631\u00ae\u00ae\u00ae\u00ae\u00a9Kazakhstan_Eastern\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0634\u0631\u0642 \u0642\u0632\u0627\u0642\u0633\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Kazakhstan_Western\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u063a\u0631\u0628 \u0642\u0632\u0627\u0642\u0633\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Korea\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u06a9\u0631\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06a9\u0631\u0647\u00ae\u00ae\u00a9Kyrgystan\u00ae\u0648\u0642\u062a \u0642\u0631\u0642\u06cc\u0632\u0633\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Lanka\u00ae\u0648\u0642\u062a \u0644\u0627\u0646\u06a9\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Macau\u00ae\u0648\u0642\u062a \u0645\u0627\u06a9\u0627\u0626\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0627\u06a9\u0627\u0626\u0648\u00ae\u00ae\u00a9Malaysia\u00ae\u0648\u0642\u062a \u0645\u0627\u0644\u0632\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Maldives\u00ae\u0648\u0642\u062a \u0645\u0627\u0644\u062f\u06cc\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Marshall_Islands\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u0645\u0627\u0631\u0634\u0627\u0644\u00ae\u00ae\u00ae\u00ae\u00a9Moscow\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0645\u0633\u06a9\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0645\u0633\u06a9\u0648\u00ae\u00ae\u00a9Myanmar\u00ae\u0648\u0642\u062a \u0645\u06cc\u0627\u0646\u0645\u0627\u0631\u00ae\u00ae\u00ae\u00ae\u00a9Nauru\u00ae\u0648\u0642\u062a \u0646\u0627\u0626\u0648\u0631\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Nepal\u00ae\u0648\u0642\u062a \u0646\u067e\u0627\u0644\u00ae\u00ae\u00ae\u00ae\u00a9New_Zealand\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0632\u0644\u0627\u0646\u062f \u0646\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0632\u0644\u0627\u0646\u062f \u0646\u0648\u00ae\u00ae\u00a9North_Mariana\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u0645\u0627\u0631\u06cc\u0627\u0646\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Pakistan\u00ae\u0648\u0642\u062a \u067e\u0627\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u067e\u0627\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Palau\u00ae\u0648\u0642\u062a \u067e\u0627\u0644\u0627\u0626\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Papua_New_Guinea\u00ae\u0648\u0642\u062a \u067e\u0627\u067e\u0648\u0627 \u06af\u06cc\u0646\u0647\u0654 \u0646\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Paraguay\u00ae\u0648\u0642\u062a \u067e\u0627\u0631\u0627\u06af\u0648\u0626\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u067e\u0627\u0631\u0627\u06af\u0648\u0626\u0647\u00ae\u00ae\u00a9Peru\u00ae\u0648\u0642\u062a \u067e\u0631\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u067e\u0631\u0648\u00ae\u00ae\u00a9Philippines\u00ae\u0648\u0642\u062a \u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646\u00ae\u00ae\u00a9Samarkand\u00ae\u0648\u0642\u062a \u0633\u0645\u0631\u0642\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0633\u0645\u0631\u0642\u0646\u062f\u00ae\u00ae\u00a9Samoa\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0633\u0627\u0645\u0648\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Seychelles\u00ae\u0648\u0642\u062a \u0633\u06cc\u0634\u0644\u00ae\u00ae\u00ae\u00ae\u00a9Singapore\u00ae\u0648\u0642\u062a \u0639\u0627\u062f\u06cc \u0633\u0646\u06af\u0627\u067e\u0648\u0631\u00ae\u00ae\u00ae\u00ae\u00a9Solomon\u00ae\u0648\u0642\u062a \u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u06cc\u0645\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9South_Georgia\u00ae\u0648\u0642\u062a \u062c\u0648\u0631\u062c\u06cc\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Suriname\u00ae\u0648\u0642\u062a \u0633\u0648\u0631\u06cc\u0646\u0627\u0645\u00ae\u00ae\u00ae\u00ae\u00a9Tahiti\u00ae\u0648\u0642\u062a \u062a\u0627\u0647\u06cc\u062a\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Tajikistan\u00ae\u0648\u0642\u062a \u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u00ae\u00ae\u00a9Tashkent\u00ae\u0648\u0642\u062a \u062a\u0627\u0634\u06a9\u0646\u062f\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0627\u0634\u06a9\u0646\u062f\u00ae\u00ae\u00a9Tbilisi\u00ae\u0648\u0642\u062a \u062a\u0641\u0644\u06cc\u0633\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0641\u0644\u06cc\u0633\u00ae\u00ae\u00a9Tonga\u00ae\u0648\u0642\u062a \u062a\u0648\u0646\u06af\u0627\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0648\u0646\u06af\u0627\u00ae\u00ae\u00a9Turkey\u00ae\u0648\u0642\u062a \u062a\u0631\u06a9\u06cc\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0631\u06a9\u06cc\u0647\u00ae\u00ae\u00a9Turkmenistan\u00ae\u0648\u0642\u062a \u062a\u0631\u06a9\u0645\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u062a\u0631\u06a9\u0645\u0646\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Tuvalu\u00ae\u0648\u0642\u062a \u062a\u0648\u0648\u0627\u0644\u0648\u00ae\u00ae\u00ae\u00ae\u00a9Uruguay\u00ae\u0648\u0642\u062a \u0627\u0631\u0648\u06af\u0648\u0626\u0647\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0631\u0648\u06af\u0648\u0626\u0647\u00ae\u00ae\u00a9Urumqi\u00ae\u0648\u0642\u062a \u0627\u0631\u0648\u0645\u0686\u06cc\u00ae\u00ae\u00ae\u00ae\u00a9Uzbekistan\u00ae\u0648\u0642\u062a \u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646\u00ae\u00ae\u00a9Vanuatu\u00ae\u0648\u0642\u062a \u0648\u0627\u0646\u0627\u062a\u0648\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0648\u0627\u0646\u0627\u062a\u0648\u00ae\u00ae\u00a9Venezuela\u00ae\u0648\u0642\u062a \u0648\u0646\u0632\u0648\u0626\u0644\u0627\u00ae\u00ae\u00ae\u00ae\u00a9Wake\u00ae\u0648\u0642\u062a \u062c\u0632\u06cc\u0631\u0647\u0654 \u0648\u06cc\u06a9\u00ae\u00ae\u00ae\u00ae\u00a9Yakutsk\u00ae\u0648\u0642\u062a \u06cc\u0627\u06a9\u0648\u062a\u0633\u06a9\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u06cc\u0627\u06a9\u0648\u062a\u0633\u06a9\u00ae\u00ae\u00a9Yerevan\u00ae\u0648\u0642\u062a \u0627\u06cc\u0631\u0648\u0627\u0646\u00ae\u00ae\u0648\u0642\u062a \u062a\u0627\u0628\u0633\u062a\u0627\u0646\u06cc \u0627\u06cc\u0631\u0648\u0627\u0646\u00ae\u00ae\u00a9 +territories.001=\u062c\u0647\u0627\u0646 +territories.002=\u0627\u0641\u0631\u06cc\u0642\u0627 +territories.003=\u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc +territories.005=\u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc +territories.009=\u0627\u0642\u06cc\u0627\u0646\u0648\u0633\u06cc\u0647 +territories.011=\u063a\u0631\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627 +territories.013=\u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc +territories.014=\u0634\u0631\u0642 \u0627\u0641\u0631\u06cc\u0642\u0627 +territories.015=\u0634\u0645\u0627\u0644 \u0627\u0641\u0631\u06cc\u0642\u0627 +territories.017=\u0645\u0631\u06a9\u0632 \u0627\u0641\u0631\u06cc\u0642\u0627 +territories.018=\u062c\u0646\u0648\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627 +territories.019=\u0627\u0645\u0631\u06cc\u06a9\u0627 +territories.021=\u0634\u0645\u0627\u0644 \u0627\u0645\u0631\u06cc\u06a9\u0627 +territories.029=\u06a9\u0627\u0631\u0627\u0626\u06cc\u0628 +territories.030=\u0634\u0631\u0642 \u0622\u0633\u06cc\u0627 +territories.034=\u062c\u0646\u0648\u0628 \u0622\u0633\u06cc\u0627 +territories.035=\u062c\u0646\u0648\u0628 \u0634\u0631\u0642\u06cc \u0622\u0633\u06cc\u0627 +territories.039=\u062c\u0646\u0648\u0628 \u0627\u0631\u0648\u067e\u0627 +territories.053=\u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 \u0648 \u0632\u0644\u0627\u0646\u062f \u0646\u0648 +territories.054=\u0645\u0644\u0627\u0646\u0632\u06cc +territories.057=\u0646\u0627\u062d\u06cc\u0647\u0654 \u0645\u06cc\u06a9\u0631\u0648\u0646\u0632\u06cc territories.061=\u067e\u0644\u06cc\u200c\u0646\u0632\u06cc -territories.GH=\u063a\u0646\u0627 -territories.SR=\u0633\u0648\u0631\u06cc\u0646\u0627\u0645 -territories.GG=\u06af\u0648\u0631\u0646\u0633\u06cc -territories.GF=\u06af\u0648\u06cc\u0627\u0646 \u0641\u0631\u0627\u0646\u0633\u0647 -territories.GE=\u06af\u0631\u062c\u0633\u062a\u0627\u0646 -territories.SO=\u0633\u0648\u0645\u0627\u0644\u06cc -territories.GD=\u06af\u0631\u0627\u0646\u0627\u062f\u0627 -territories.SN=\u0633\u0646\u06af\u0627\u0644 -territories.SM=\u0633\u0627\u0646 \u0645\u0627\u0631\u06cc\u0646\u0648 -territories.GB=\u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 -territories.SL=\u0633\u06cc\u0631\u0627\u0644\u0626\u0648\u0646 -territories.GA=\u06af\u0627\u0628\u0648\u0646 -territories.SK=\u0627\u0633\u0644\u0648\u0627\u06a9\u06cc -territories.SJ=\u0627\u0633\u0648\u0627\u0644\u0628\u0627\u0631\u062f \u0648 \u062c\u0627\u0646 \u0645\u0627\u06cc\u0646 -territories.SI=\u0627\u0633\u0644\u0648\u0648\u0646\u06cc -territories.SH=\u0633\u0646\u062a \u0647\u0644\u0646 -territories.SG=\u0633\u0646\u06af\u0627\u067e\u0648\u0631 -territories.SE=\u0633\u0648\u0626\u062f -territories.SD=\u0633\u0648\u062f\u0627\u0646 -territories.SC=\u0633\u06cc\u0634\u0644 -territories.SB=\u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u06cc\u0645\u0627\u0646 -territories.SA=\u0639\u0631\u0628\u0633\u062a\u0627\u0646 \u0633\u0639\u0648\u062f\u06cc -territories.FR=\u0641\u0631\u0627\u0646\u0633\u0647 -territories.FO=\u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0631\u0648 -territories.057=\u0646\u0627\u062d\u06cc\u0647\u0654 \u0645\u06cc\u06a9\u0631\u0648\u0646\u0632\u06cc -territories.FM=\u0645\u06cc\u06a9\u0631\u0648\u0646\u0632\u06cc -territories.RW=\u0631\u0648\u0627\u0646\u062f\u0627 -territories.054=\u0645\u0644\u0627\u0646\u0632\u06cc -territories.FK=\u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0644\u06a9\u0644\u0646\u062f -territories.053=\u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 \u0648 \u0632\u0644\u0627\u0646\u062f \u0646\u0648 -territories.RU=\u0631\u0648\u0633\u06cc\u0647 -territories.FJ=\u0641\u06cc\u062c\u06cc -territories.FI=\u0641\u0646\u0644\u0627\u0646\u062f -territories.RS=\u0635\u0631\u0628\u0633\u062a\u0627\u0646 -territories.RO=\u0631\u0648\u0645\u0627\u0646\u06cc -territories.RE=\u0631\u06cc\u0648\u0646\u06cc\u0648\u0646 -territories.ET=\u0627\u062a\u06cc\u0648\u067e\u06cc -territories.ES=\u0627\u0633\u067e\u0627\u0646\u06cc\u0627 -territories.ER=\u0627\u0631\u06cc\u062a\u0631\u0647 -territories.QU=\u0627\u062a\u062d\u0627\u062f\u06cc\u0647\u0654 \u0627\u0631\u0648\u067e\u0627 -territories.EH=\u0635\u062d\u0631\u0627\u06cc \u063a\u0631\u0628\u06cc -territories.EG=\u0645\u0635\u0631 -territories.EE=\u0627\u0633\u062a\u0648\u0646\u06cc -territories.QO=\u0627\u0642\u06cc\u0627\u0646\u0648\u0633\u06cc\u0647\u0654 \u062f\u0648\u0631\u062f\u0633\u062a -territories.EC=\u0627\u06a9\u0648\u0627\u062f\u0631 -territories.DZ=\u0627\u0644\u062c\u0632\u0627\u06cc\u0631 -territories.QA=\u0642\u0637\u0631 -territories.039=\u062c\u0646\u0648\u0628 \u0627\u0631\u0648\u067e\u0627 -territories.DO=\u062c\u0645\u0647\u0648\u0631\u06cc \u062f\u0648\u0645\u06cc\u0646\u06cc\u06a9\u0646 -territories.PY=\u067e\u0627\u0631\u0627\u06af\u0648\u0626\u0647 -territories.DM=\u062f\u0648\u0645\u06cc\u0646\u06cc\u06a9 -territories.035=\u062c\u0646\u0648\u0628 \u0634\u0631\u0642\u06cc \u0622\u0633\u06cc\u0627 -territories.PW=\u067e\u0627\u0644\u0627\u0626\u0648 -territories.034=\u062c\u0646\u0648\u0628 \u0622\u0633\u06cc\u0627 -territories.DK=\u062f\u0627\u0646\u0645\u0627\u0631\u06a9 -territories.DJ=\u062c\u06cc\u0628\u0648\u062a\u06cc -territories.PT=\u067e\u0631\u062a\u063a\u0627\u0644 -territories.PS=\u0641\u0644\u0633\u0637\u06cc\u0646 -territories.030=\u0634\u0631\u0642 \u0622\u0633\u06cc\u0627 -territories.PR=\u067e\u0648\u0631\u062a\u0648 \u0631\u06cc\u06a9\u0648 -territories.DE=\u0622\u0644\u0645\u0627\u0646 -territories.PN=\u067e\u06cc\u062a\u06a9\u0627\u06cc\u0631\u0646 -territories.PM=\u0633\u0646\u062a \u067e\u06cc\u0631 \u0648 \u0645\u06cc\u06a9\u0644\u0648\u0646 -territories.PL=\u0644\u0647\u0633\u062a\u0627\u0646 -territories.PK=\u067e\u0627\u06a9\u0633\u062a\u0627\u0646 -territories.PH=\u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646 -territories.PG=\u067e\u0627\u067e\u0648\u0627 \u06af\u06cc\u0646\u0647\u0654 \u0646\u0648 -territories.PF=\u067e\u0644\u06cc\u200c\u0646\u0632\u06cc \u0641\u0631\u0627\u0646\u0633\u0647 -territories.CZ=\u062c\u0645\u0647\u0648\u0631\u06cc \u0686\u06a9 -territories.PE=\u067e\u0631\u0648 -territories.CY=\u0642\u0628\u0631\u0633 -territories.CX=\u062c\u0632\u06cc\u0631\u0647\u0654 \u06a9\u0631\u06cc\u0633\u0645\u0633 -territories.CV=\u06a9\u06cc\u067e \u0648\u0631\u062f -territories.PA=\u067e\u0627\u0646\u0627\u0645\u0627 -territories.CU=\u06a9\u0648\u0628\u0627 -territories.CS=\u0635\u0631\u0628\u0633\u062a\u0627\u0646 \u0648 \u0645\u0648\u0646\u062a\u0647\u200c\u0646\u06af\u0631\u0648 -territories.CR=\u06a9\u0627\u0633\u062a\u0627\u0631\u06cc\u06a9\u0627 -territories.029=\u06a9\u0627\u0631\u0627\u0626\u06cc\u0628 -territories.CO=\u06a9\u0644\u0645\u0628\u06cc\u0627 -territories.CN=\u0686\u06cc\u0646 -territories.CM=\u06a9\u0627\u0645\u0631\u0648\u0646 -territories.CL=\u0634\u06cc\u0644\u06cc -territories.CK=\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9 -territories.021=\u0634\u0645\u0627\u0644 \u0627\u0645\u0631\u06cc\u06a9\u0627 -territories.CI=\u0633\u0627\u062d\u0644 \u0639\u0627\u062c -territories.CH=\u0633\u0648\u0626\u06cc\u0633 -territories.CG=\u06a9\u0646\u06af\u0648 \u0628\u0631\u0627\u0632\u0648\u06cc\u0644 -territories.CF=\u062c\u0645\u0647\u0648\u0631\u06cc \u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc -territories.CD=\u06a9\u0646\u06af\u0648 \u06a9\u06cc\u0646\u0634\u0627\u0633\u0627 -territories.CC=\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9\u0648\u0633 -territories.OM=\u0639\u0645\u0627\u0646 -territories.CA=\u06a9\u0627\u0646\u0627\u062f\u0627 -territories.419=\u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0644\u0627\u062a\u06cc\u0646 \u0648 \u06a9\u0627\u0631\u0627\u0626\u06cc\u0628 -territories.BZ=\u0628\u0644\u06cc\u0632 -territories.BY=\u0628\u06cc\u0644\u0648\u0631\u0648\u0633\u06cc -territories.BW=\u0628\u0648\u062a\u0633\u0648\u0627\u0646\u0627 -territories.BV=\u062c\u0632\u06cc\u0631\u0647\u0654 \u0628\u0648\u0648\u062a -territories.BT=\u0628\u0648\u062a\u0627\u0646 -territories.BS=\u0628\u0627\u0647\u0627\u0645\u0627 -territories.BR=\u0628\u0631\u0632\u06cc\u0644 -territories.019=\u0627\u0645\u0631\u06cc\u06a9\u0627 -territories.018=\u062c\u0646\u0648\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627 -territories.NZ=\u0632\u0644\u0627\u0646\u062f \u0646\u0648 -territories.017=\u0645\u0631\u06a9\u0632 \u0627\u0641\u0631\u06cc\u0642\u0627 -territories.BO=\u0628\u0648\u0644\u06cc\u0648\u06cc -territories.BN=\u0628\u0631\u0648\u0646\u0626\u06cc -territories.015=\u0634\u0645\u0627\u0644 \u0627\u0641\u0631\u06cc\u0642\u0627 -territories.BM=\u0628\u0631\u0645\u0648\u062f\u0627 -territories.014=\u0634\u0631\u0642 \u0627\u0641\u0631\u06cc\u0642\u0627 -territories.BL=\u0633\u0646\u062a \u0628\u0627\u0631\u062a\u0644\u06cc\u0645\u06cc -territories.013=\u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc -territories.NU=\u0646\u06cc\u0648\u0626\u0647 -territories.BJ=\u0628\u0646\u06cc\u0646 -territories.011=\u063a\u0631\u0628 \u0627\u0641\u0631\u06cc\u0642\u0627 -territories.BI=\u0628\u0648\u0631\u0648\u0646\u062f\u06cc +territories.062=\u062c\u0646\u0648\u0628 \u0622\u0633\u06cc\u0627 \u0648 \u0622\u0633\u06cc\u0627\u06cc \u0645\u06cc\u0627\u0646\u0647 +territories.142=\u0622\u0633\u06cc\u0627 +territories.143=\u0622\u0633\u06cc\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc +territories.145=\u063a\u0631\u0628 \u0622\u0633\u06cc\u0627 +territories.150=\u0627\u0631\u0648\u067e\u0627 +territories.151=\u0634\u0631\u0642 \u0627\u0631\u0648\u067e\u0627 +territories.154=\u0634\u0645\u0627\u0644 \u0627\u0631\u0648\u067e\u0627 +territories.155=\u063a\u0631\u0628 \u0627\u0631\u0648\u067e\u0627 territories.172=\u06a9\u0634\u0648\u0631\u0647\u0627\u06cc \u0645\u0633\u062a\u0642\u0644 \u0645\u0634\u062a\u0631\u06a9\u200c\u0627\u0644\u0645\u0646\u0627\u0641\u0639 -territories.BH=\u0628\u062d\u0631\u06cc\u0646 -territories.NR=\u0646\u0627\u0626\u0648\u0631\u0648 -territories.BG=\u0628\u0644\u063a\u0627\u0631\u0633\u062a\u0627\u0646 -territories.BF=\u0628\u0648\u0631\u06a9\u06cc\u0646\u0627\u0641\u0627\u0633\u0648 -territories.NP=\u0646\u067e\u0627\u0644 -territories.BE=\u0628\u0644\u0698\u06cc\u06a9 -territories.ZZ=\u0646\u0627\u062d\u06cc\u0647\u0654 \u0646\u0627\u0645\u0634\u062e\u0635 \u06cc\u0627 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 -territories.NO=\u0646\u0631\u0648\u0698 -territories.BD=\u0628\u0646\u06af\u0644\u0627\u062f\u0634 -territories.BB=\u0628\u0627\u0631\u0628\u0627\u062f\u0648\u0633 -territories.ZW=\u0632\u06cc\u0645\u0628\u0627\u0628\u0648\u0647 -territories.NL=\u0647\u0644\u0646\u062f -territories.BA=\u0628\u0648\u0633\u0646\u06cc \u0648 \u0647\u0631\u0632\u06af\u0648\u06cc\u0646 -territories.NI=\u0646\u06cc\u06a9\u0627\u0631\u0627\u06af\u0648\u0626\u0647 -territories.NG=\u0646\u06cc\u062c\u0631\u06cc\u0647 -territories.NF=\u062c\u0632\u06cc\u0631\u0647\u0654 \u0646\u0648\u0631\u0641\u0648\u0644\u06a9 -territories.AZ=\u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 -territories.NE=\u0646\u06cc\u062c\u0631 -territories.AX=\u062c\u0632\u0627\u06cc\u0631 \u0622\u0644\u0627\u0646\u062f -territories.NC=\u06a9\u0627\u0644\u062f\u0648\u0646\u06cc\u0627\u06cc \u062c\u062f\u06cc\u062f -territories.AW=\u0622\u0631\u0648\u0628\u0627 -territories.ZM=\u0632\u0627\u0645\u0628\u06cc\u0627 -territories.NA=\u0646\u0627\u0645\u06cc\u0628\u06cc\u0627 -territories.AU=\u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 -territories.AT=\u0627\u062a\u0631\u06cc\u0634 -territories.AS=\u0633\u0627\u0645\u0648\u0627\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627 -territories.AR=\u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646 -territories.AQ=\u062c\u0646\u0648\u0628\u06af\u0627\u0646 -territories.009=\u0627\u0642\u06cc\u0627\u0646\u0648\u0633\u06cc\u0647 -territories.MZ=\u0645\u0648\u0632\u0627\u0645\u0628\u06cc\u06a9 -territories.AO=\u0622\u0646\u06af\u0648\u0644\u0627 -territories.MY=\u0645\u0627\u0644\u0632\u06cc -territories.AN=\u0622\u0646\u062a\u06cc\u0644 \u0647\u0644\u0646\u062f -territories.MX=\u0645\u06a9\u0632\u06cc\u06a9 -territories.AM=\u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646 -territories.005=\u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc -territories.MW=\u0645\u0627\u0644\u0627\u0648\u06cc -territories.AL=\u0622\u0644\u0628\u0627\u0646\u06cc -territories.MV=\u0645\u0627\u0644\u062f\u06cc\u0648 -territories.003=\u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc -territories.ZA=\u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc -territories.MU=\u0645\u0648\u0631\u06cc\u062a\u06cc\u0648\u0633 -territories.002=\u0627\u0641\u0631\u06cc\u0642\u0627 -territories.MT=\u0645\u0627\u0644\u062a -territories.AI=\u0622\u0646\u06af\u06cc\u0644 -territories.001=\u062c\u0647\u0627\u0646 -territories.MS=\u0645\u0648\u0646\u062a\u200c\u0633\u0631\u0627\u062a -territories.MR=\u0645\u0648\u0631\u06cc\u062a\u0627\u0646\u06cc -territories.AG=\u0622\u0646\u062a\u06cc\u06af\u0648\u0627 \u0648 \u0628\u0627\u0631\u0628\u0648\u062f\u0627 -territories.MQ=\u0645\u0627\u0631\u062a\u06cc\u0646\u06cc\u06a9 -territories.AF=\u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646 -territories.MP=\u062c\u0632\u0627\u06cc\u0631 \u0645\u0627\u0631\u06cc\u0627\u0646\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc -territories.AE=\u0627\u0645\u0627\u0631\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0639\u0631\u0628\u06cc -territories.MO=\u0645\u0627\u06a9\u0627\u0626\u0648 +territories.419=\u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0644\u0627\u062a\u06cc\u0646 \u0648 \u06a9\u0627\u0631\u0627\u0626\u06cc\u0628 territories.AD=\u0622\u0646\u062f\u0648\u0631\u0627 -territories.MN=\u0645\u063a\u0648\u0644\u0633\u062a\u0627\u0646 -territories.MM=\u0645\u06cc\u0627\u0646\u0645\u0627\u0631 -territories.ML=\u0645\u0627\u0644\u06cc -territories.MK=\u0645\u0642\u062f\u0648\u0646\u06cc\u0647 -territories.YT=\u0645\u0627\u06cc\u0648\u062a -territories.MH=\u062c\u0632\u0627\u06cc\u0631 \u0645\u0627\u0631\u0634\u0627\u0644 -territories.MG=\u0645\u0627\u062f\u0627\u06af\u0627\u0633\u06a9\u0627\u0631 -territories.MF=\u0633\u0646\u062a \u0645\u0627\u0631\u062a\u06cc\u0646 -territories.ME=\u0645\u0648\u0646\u062a\u0647\u200c\u0646\u06af\u0631\u0648 -territories.MD=\u0645\u0648\u0644\u062f\u0648\u0648\u0627 -territories.MC=\u0645\u0648\u0646\u0627\u06a9\u0648 -territories.MA=\u0645\u0631\u0627\u06a9\u0634 -territories.YE=\u06cc\u0645\u0646 -territories.LY=\u0644\u06cc\u0628\u06cc -territories.LV=\u0644\u062a\u0648\u0646\u06cc -territories.155=\u063a\u0631\u0628 \u0627\u0631\u0648\u067e\u0627 -territories.LU=\u0644\u0648\u06a9\u0632\u0627\u0645\u0628\u0648\u0631\u06af -territories.154=\u0634\u0645\u0627\u0644 \u0627\u0631\u0648\u067e\u0627 -territories.LT=\u0644\u06cc\u062a\u0648\u0627\u0646\u06cc -territories.LS=\u0644\u0633\u0648\u062a\u0648 -territories.LR=\u0644\u06cc\u0628\u0631\u06cc\u0627 -territories.151=\u0634\u0631\u0642 \u0627\u0631\u0648\u067e\u0627 -territories.150=\u0627\u0631\u0648\u067e\u0627 -territories.LK=\u0633\u0631\u06cc\u200c\u0644\u0627\u0646\u06a9\u0627 -territories.LI=\u0644\u06cc\u062e\u062a\u0646\u200c\u0627\u0634\u062a\u0627\u06cc\u0646 -territories.LC=\u0633\u0646\u062a \u0644\u0648\u0633\u06cc\u0627 -territories.LB=\u0644\u0628\u0646\u0627\u0646 -territories.LA=\u0644\u0627\u0626\u0648\u0633 -territories.KZ=\u0642\u0632\u0627\u0642\u0633\u062a\u0627\u0646 -territories.KY=\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0650\u06cc\u0645\u0646 -territories.KW=\u06a9\u0648\u06cc\u062a -territories.145=\u063a\u0631\u0628 \u0622\u0633\u06cc\u0627 -territories.143=\u0622\u0633\u06cc\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc -territories.142=\u0622\u0633\u06cc\u0627 -territories.KR=\u06a9\u0631\u0647\u0654 \u062c\u0646\u0648\u0628\u06cc -territories.KP=\u06a9\u0631\u0647\u0654 \u0634\u0645\u0627\u0644\u06cc -territories.KN=\u0633\u0646\u062a \u06a9\u06cc\u062a\u0633 \u0648 \u0646\u0648\u06cc\u0633 -territories.KM=\u06a9\u0648\u0645\u0648\u0631\u0648 -territories.KI=\u06a9\u06cc\u0631\u06cc\u0628\u0627\u062a\u06cc -territories.WS=\u0633\u0627\u0645\u0648\u0627 -territories.KH=\u06a9\u0627\u0645\u0628\u0648\u062c -territories.KG=\u0642\u0631\u0642\u06cc\u0632\u0633\u062a\u0627\u0646 -territories.KE=\u06a9\u0646\u06cc\u0627 -territories.WF=\u0648\u0627\u0644\u06cc\u0633 \u0648 \u0641\u06cc\u0648\u062a\u0648\u0646\u0627 -territories.JP=\u0698\u0627\u067e\u0646 -territories.JO=\u0627\u0631\u062f\u0646 -territories.JM=\u062c\u0627\u0645\u0627\u0626\u06cc\u06a9\u0627 -territories.VU=\u0648\u0627\u0646\u0648\u0627\u062a\u0648 -territories.JE=\u062c\u0631\u0633\u06cc -territories.VN=\u0648\u06cc\u062a\u0646\u0627\u0645 -territories.VI=\u062c\u0632\u0627\u06cc\u0631 \u0648\u06cc\u0631\u062c\u06cc\u0646 \u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647 -territories.VG=\u062c\u0632\u0627\u06cc\u0631 \u0648\u06cc\u0631\u062c\u06cc\u0646 \u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 -territories.VE=\u0648\u0646\u0632\u0648\u0626\u0644\u0627 -territories.VC=\u0633\u0646\u062a \u0648\u06cc\u0646\u0633\u0646\u062a \u0648 \u06af\u0631\u0646\u0627\u062f\u06cc\u0646 -territories.VA=\u0648\u0627\u062a\u06cc\u06a9\u0627\u0646 -territories.IT=\u0627\u06cc\u062a\u0627\u0644\u06cc\u0627 -territories.IS=\u0627\u06cc\u0633\u0644\u0646\u062f -territories.IR=\u0627\u06cc\u0631\u0627\u0646 -territories.IQ=\u0639\u0631\u0627\u0642 -territories.UZ=\u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646 -territories.IO=\u0645\u0633\u062a\u0639\u0645\u0631\u0647\u200c\u0647\u0627\u06cc \u0627\u0646\u06af\u0644\u0633\u062a\u0627\u0646 \u062f\u0631 \u0627\u0642\u06cc\u0627\u0646\u0648\u0633 \u0647\u0646\u062f -territories.UY=\u0627\u0648\u0631\u0648\u06af\u0648\u0626\u0647 -territories.IN=\u0647\u0646\u062f -territories.IM=\u062c\u0632\u06cc\u0631\u06c0 \u0645\u0631\u062f -territories.IL=\u0627\u0633\u0631\u0627\u0626\u06cc\u0644 -territories.US=\u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0627\u0645\u0631\u06cc\u06a9\u0627 -territories.IE=\u0627\u06cc\u0631\u0644\u0646\u062f -territories.ID=\u0627\u0646\u062f\u0648\u0646\u0632\u06cc -territories.UM=\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u0686\u06a9 \u062f\u0648\u0631\u0627\u0641\u062a\u0627\u062f\u0647\u0654 \u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647 -territories.UG=\u0627\u0648\u06af\u0627\u0646\u062f\u0627 -territories.UA=\u0627\u0648\u06a9\u0631\u0627\u06cc\u0646 -territories.HU=\u0645\u062c\u0627\u0631\u0633\u062a\u0627\u0646 -territories.HT=\u0647\u0627\u06cc\u06cc\u062a\u06cc -territories.HR=\u06a9\u0631\u0648\u0627\u0633\u06cc -territories.TZ=\u062a\u0627\u0646\u0632\u0627\u0646\u06cc\u0627 -territories.HN=\u0647\u0646\u062f\u0648\u0631\u0627\u0633 +territories.AE=\u0627\u0645\u0627\u0631\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0639\u0631\u0628\u06cc +territories.AF=\u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646 +territories.AG=\u0622\u0646\u062a\u06cc\u06af\u0648\u0627 \u0648 \u0628\u0627\u0631\u0628\u0648\u062f\u0627 +territories.AI=\u0622\u0646\u06af\u06cc\u0644 +territories.AL=\u0622\u0644\u0628\u0627\u0646\u06cc +territories.AM=\u0627\u0631\u0645\u0646\u0633\u062a\u0627\u0646 +territories.AN=\u0622\u0646\u062a\u06cc\u0644 \u0647\u0644\u0646\u062f +territories.AO=\u0622\u0646\u06af\u0648\u0644\u0627 +territories.AQ=\u062c\u0646\u0648\u0628\u06af\u0627\u0646 +territories.AR=\u0622\u0631\u0698\u0627\u0646\u062a\u06cc\u0646 +territories.AS=\u0633\u0627\u0645\u0648\u0627\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627 +territories.AT=\u0627\u062a\u0631\u06cc\u0634 +territories.AU=\u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 +territories.AW=\u0622\u0631\u0648\u0628\u0627 +territories.AX=\u062c\u0632\u0627\u06cc\u0631 \u0622\u0644\u0627\u0646\u062f +territories.AZ=\u062c\u0645\u0647\u0648\u0631\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 +territories.BA=\u0628\u0648\u0633\u0646\u06cc \u0648 \u0647\u0631\u0632\u06af\u0648\u06cc\u0646 +territories.BB=\u0628\u0627\u0631\u0628\u0627\u062f\u0648\u0633 +territories.BD=\u0628\u0646\u06af\u0644\u0627\u062f\u0634 +territories.BE=\u0628\u0644\u0698\u06cc\u06a9 +territories.BF=\u0628\u0648\u0631\u06a9\u06cc\u0646\u0627\u0641\u0627\u0633\u0648 +territories.BG=\u0628\u0644\u063a\u0627\u0631\u0633\u062a\u0627\u0646 +territories.BH=\u0628\u062d\u0631\u06cc\u0646 +territories.BI=\u0628\u0648\u0631\u0648\u0646\u062f\u06cc +territories.BJ=\u0628\u0646\u06cc\u0646 +territories.BL=\u0633\u0646\u062a \u0628\u0627\u0631\u062a\u0644\u06cc\u0645\u06cc +territories.BM=\u0628\u0631\u0645\u0648\u062f\u0627 +territories.BN=\u0628\u0631\u0648\u0646\u0626\u06cc +territories.BO=\u0628\u0648\u0644\u06cc\u0648\u06cc +territories.BR=\u0628\u0631\u0632\u06cc\u0644 +territories.BS=\u0628\u0627\u0647\u0627\u0645\u0627 +territories.BT=\u0628\u0648\u062a\u0627\u0646 +territories.BV=\u062c\u0632\u06cc\u0631\u0647\u0654 \u0628\u0648\u0648\u062a +territories.BW=\u0628\u0648\u062a\u0633\u0648\u0627\u0646\u0627 +territories.BY=\u0628\u06cc\u0644\u0648\u0631\u0648\u0633\u06cc +territories.BZ=\u0628\u0644\u06cc\u0632 +territories.CA=\u06a9\u0627\u0646\u0627\u062f\u0627 +territories.CC=\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9\u0648\u0633 +territories.CD=\u06a9\u0646\u06af\u0648 \u06a9\u06cc\u0646\u0634\u0627\u0633\u0627 +territories.CF=\u062c\u0645\u0647\u0648\u0631\u06cc \u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc +territories.CG=\u06a9\u0646\u06af\u0648 \u0628\u0631\u0627\u0632\u0648\u06cc\u0644 +territories.CH=\u0633\u0648\u0626\u06cc\u0633 +territories.CI=\u0633\u0627\u062d\u0644 \u0639\u0627\u062c +territories.CK=\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u06a9 +territories.CL=\u0634\u06cc\u0644\u06cc +territories.CM=\u06a9\u0627\u0645\u0631\u0648\u0646 +territories.CN=\u0686\u06cc\u0646 +territories.CO=\u06a9\u0644\u0645\u0628\u06cc\u0627 +territories.CR=\u06a9\u0627\u0633\u062a\u0627\u0631\u06cc\u06a9\u0627 +territories.CS=\u0635\u0631\u0628\u0633\u062a\u0627\u0646 \u0648 \u0645\u0648\u0646\u062a\u0647\u200c\u0646\u06af\u0631\u0648 +territories.CU=\u06a9\u0648\u0628\u0627 +territories.CV=\u06a9\u06cc\u067e \u0648\u0631\u062f +territories.CX=\u062c\u0632\u06cc\u0631\u0647\u0654 \u06a9\u0631\u06cc\u0633\u0645\u0633 +territories.CY=\u0642\u0628\u0631\u0633 +territories.CZ=\u062c\u0645\u0647\u0648\u0631\u06cc \u0686\u06a9 +territories.DE=\u0622\u0644\u0645\u0627\u0646 +territories.DJ=\u062c\u06cc\u0628\u0648\u062a\u06cc +territories.DK=\u062f\u0627\u0646\u0645\u0627\u0631\u06a9 +territories.DM=\u062f\u0648\u0645\u06cc\u0646\u06cc\u06a9 +territories.DO=\u062c\u0645\u0647\u0648\u0631\u06cc \u062f\u0648\u0645\u06cc\u0646\u06cc\u06a9\u0646 +territories.DZ=\u0627\u0644\u062c\u0632\u0627\u06cc\u0631 +territories.EC=\u0627\u06a9\u0648\u0627\u062f\u0631 +territories.EE=\u0627\u0633\u062a\u0648\u0646\u06cc +territories.EG=\u0645\u0635\u0631 +territories.EH=\u0635\u062d\u0631\u0627\u06cc \u063a\u0631\u0628\u06cc +territories.ER=\u0627\u0631\u06cc\u062a\u0631\u0647 +territories.ES=\u0627\u0633\u067e\u0627\u0646\u06cc\u0627 +territories.ET=\u0627\u062a\u06cc\u0648\u067e\u06cc +territories.FI=\u0641\u0646\u0644\u0627\u0646\u062f +territories.FJ=\u0641\u06cc\u062c\u06cc +territories.FK=\u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0644\u06a9\u0644\u0646\u062f +territories.FM=\u0645\u06cc\u06a9\u0631\u0648\u0646\u0632\u06cc +territories.FO=\u062c\u0632\u0627\u06cc\u0631 \u0641\u0627\u0631\u0648 +territories.FR=\u0641\u0631\u0627\u0646\u0633\u0647 +territories.GA=\u06af\u0627\u0628\u0648\u0646 +territories.GB=\u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 +territories.GD=\u06af\u0631\u0627\u0646\u0627\u062f\u0627 +territories.GE=\u06af\u0631\u062c\u0633\u062a\u0627\u0646 +territories.GF=\u06af\u0648\u06cc\u0627\u0646 \u0641\u0631\u0627\u0646\u0633\u0647 +territories.GG=\u06af\u0648\u0631\u0646\u0633\u06cc +territories.GH=\u063a\u0646\u0627 +territories.GI=\u06af\u06cc\u0628\u0631\u0627\u0644\u062a\u0627\u0631 +territories.GL=\u06af\u0631\u0648\u0626\u0646\u0644\u0646\u062f +territories.GM=\u06af\u0627\u0645\u0628\u06cc\u0627 +territories.GN=\u06af\u06cc\u0646\u0647 +territories.GP=\u06af\u0648\u0627\u062f\u0644\u0648\u067e +territories.GQ=\u06af\u06cc\u0646\u0647\u0654 \u0627\u0633\u062a\u0648\u0627\u06cc\u06cc +territories.GR=\u06cc\u0648\u0646\u0627\u0646 +territories.GS=\u062c\u0648\u0631\u062c\u06cc\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc \u0648 \u062c\u0632\u0627\u06cc\u0631 \u0633\u0627\u0646\u062f\u0648\u06cc\u0686 \u062c\u0646\u0648\u0628\u06cc +territories.GT=\u06af\u0648\u0627\u062a\u0645\u0627\u0644\u0627 +territories.GU=\u06af\u0648\u0627\u0645 +territories.GW=\u06af\u06cc\u0646\u0647\u0654 \u0628\u06cc\u0633\u0627\u0626\u0648 +territories.GY=\u06af\u0648\u06cc\u0627\u0646 +territories.HK=\u0647\u0646\u06af\u200c\u06a9\u0646\u06af\u060c \u0646\u0627\u062d\u06cc\u0647\u0654 \u0648\u06cc\u0698\u0647\u0654 \u062d\u06a9\u0648\u0645\u062a\u06cc \u0686\u06cc\u0646 territories.HM=\u062c\u0632\u06cc\u0631\u0647\u0654 \u0647\u0631\u062f \u0648 \u062c\u0632\u0627\u06cc\u0631 \u0645\u06a9\u200c\u062f\u0648\u0646\u0627\u0644\u062f -territories.TW=\u062a\u0627\u06cc\u0648\u0627\u0646 -territories.TV=\u062a\u0648\u0648\u0627\u0644\u0648 -territories.HK=\u0647\u0646\u06af\u200c\u06a9\u0646\u06af -territories.TT=\u062a\u0631\u06cc\u0646\u06cc\u062f\u0627\u062f \u0648 \u062a\u0648\u0628\u0627\u06af\u0648 -territories.TR=\u062a\u0631\u06a9\u06cc\u0647 -territories.TO=\u062a\u0648\u0646\u06af\u0627 -territories.TN=\u062a\u0648\u0646\u0633 +territories.HN=\u0647\u0646\u062f\u0648\u0631\u0627\u0633 +territories.HR=\u06a9\u0631\u0648\u0627\u0633\u06cc +territories.HT=\u0647\u0627\u06cc\u06cc\u062a\u06cc +territories.HU=\u0645\u062c\u0627\u0631\u0633\u062a\u0627\u0646 +territories.ID=\u0627\u0646\u062f\u0648\u0646\u0632\u06cc +territories.IE=\u0627\u06cc\u0631\u0644\u0646\u062f +territories.IL=\u0627\u0633\u0631\u0627\u0626\u06cc\u0644 +territories.IM=IM +territories.IN=\u0647\u0646\u062f +territories.IO=\u0645\u0633\u062a\u0639\u0645\u0631\u0647\u200c\u0647\u0627\u06cc \u0627\u0646\u06af\u0644\u0633\u062a\u0627\u0646 \u062f\u0631 \u0627\u0642\u06cc\u0627\u0646\u0648\u0633 \u0647\u0646\u062f +territories.IQ=\u0639\u0631\u0627\u0642 +territories.IR=\u0627\u06cc\u0631\u0627\u0646 +territories.IS=\u0627\u06cc\u0633\u0644\u0646\u062f +territories.IT=\u0627\u06cc\u062a\u0627\u0644\u06cc\u0627 +territories.JE=\u062c\u0631\u0633\u06cc +territories.JM=\u062c\u0627\u0645\u0627\u0626\u06cc\u06a9\u0627 +territories.JO=\u0627\u0631\u062f\u0646 +territories.JP=\u0698\u0627\u067e\u0646 +territories.KE=\u06a9\u0646\u06cc\u0627 +territories.KG=\u0642\u0631\u0642\u06cc\u0632\u0633\u062a\u0627\u0646 +territories.KH=\u06a9\u0627\u0645\u0628\u0648\u062c +territories.KI=\u06a9\u06cc\u0631\u06cc\u0628\u0627\u062a\u06cc +territories.KM=\u06a9\u0648\u0645\u0648\u0631\u0648 +territories.KN=\u0633\u0646\u062a \u06a9\u06cc\u062a\u0633 \u0648 \u0646\u0648\u06cc\u0633 +territories.KP=\u06a9\u0631\u0647\u0654 \u0634\u0645\u0627\u0644\u06cc +territories.KR=\u06a9\u0631\u0647\u0654 \u062c\u0646\u0648\u0628\u06cc +territories.KW=\u06a9\u0648\u06cc\u062a +territories.KY=\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0650\u06cc\u0645\u0646 +territories.KZ=\u0642\u0632\u0627\u0642\u0633\u062a\u0627\u0646 +territories.LA=\u0644\u0627\u0626\u0648\u0633 +territories.LB=\u0644\u0628\u0646\u0627\u0646 +territories.LC=\u0633\u0646\u062a \u0644\u0648\u0633\u06cc\u0627 +territories.LI=\u0644\u06cc\u062e\u062a\u0646\u200c\u0627\u0634\u062a\u0627\u06cc\u0646 +territories.LK=\u0633\u0631\u06cc\u200c\u0644\u0627\u0646\u06a9\u0627 +territories.LR=\u0644\u06cc\u0628\u0631\u06cc\u0627 +territories.LS=\u0644\u0633\u0648\u062a\u0648 +territories.LT=\u0644\u06cc\u062a\u0648\u0627\u0646\u06cc +territories.LU=\u0644\u0648\u06a9\u0632\u0627\u0645\u0628\u0648\u0631\u06af +territories.LV=\u0644\u062a\u0648\u0646\u06cc +territories.LY=\u0644\u06cc\u0628\u06cc +territories.MA=\u0645\u0631\u0627\u06a9\u0634 +territories.MC=\u0645\u0648\u0646\u0627\u06a9\u0648 +territories.MD=\u0645\u0648\u0644\u062f\u0648\u0648\u0627 +territories.ME=\u0645\u0648\u0646\u062a\u0647\u200c\u0646\u06af\u0631\u0648 +territories.MF=\u0633\u0646\u062a \u0645\u0627\u0631\u062a\u06cc\u0646 +territories.MG=\u0645\u0627\u062f\u0627\u06af\u0627\u0633\u06a9\u0627\u0631 +territories.MH=\u062c\u0632\u0627\u06cc\u0631 \u0645\u0627\u0631\u0634\u0627\u0644 +territories.MK=\u0645\u0642\u062f\u0648\u0646\u06cc\u0647 +territories.ML=\u0645\u0627\u0644\u06cc +territories.MM=\u0645\u06cc\u0627\u0646\u0645\u0627\u0631 +territories.MN=\u0645\u063a\u0648\u0644\u0633\u062a\u0627\u0646 +territories.MO=\u0645\u0627\u06a9\u0627\u0626\u0648\u060c \u0646\u0627\u062d\u06cc\u0647\u0654 \u0648\u06cc\u0698\u0647\u0654 \u062d\u06a9\u0648\u0645\u062a\u06cc \u0686\u06cc\u0646 +territories.MP=\u062c\u0632\u0627\u06cc\u0631 \u0645\u0627\u0631\u06cc\u0627\u0646\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc +territories.MQ=\u0645\u0627\u0631\u062a\u06cc\u0646\u06cc\u06a9 +territories.MR=\u0645\u0648\u0631\u06cc\u062a\u0627\u0646\u06cc +territories.MS=\u0645\u0648\u0646\u062a\u200c\u0633\u0631\u0627\u062a +territories.MT=\u0645\u0627\u0644\u062a +territories.MU=\u0645\u0648\u0631\u06cc\u062a\u06cc\u0648\u0633 +territories.MV=\u0645\u0627\u0644\u062f\u06cc\u0648 +territories.MW=\u0645\u0627\u0644\u0627\u0648\u06cc +territories.MX=\u0645\u06a9\u0632\u06cc\u06a9 +territories.MY=\u0645\u0627\u0644\u0632\u06cc +territories.MZ=\u0645\u0648\u0632\u0627\u0645\u0628\u06cc\u06a9 +territories.NA=\u0646\u0627\u0645\u06cc\u0628\u06cc\u0627 +territories.NC=\u06a9\u0627\u0644\u062f\u0648\u0646\u06cc\u0627\u06cc \u062c\u062f\u06cc\u062f +territories.NE=\u0646\u06cc\u062c\u0631 +territories.NF=\u062c\u0632\u06cc\u0631\u0647\u0654 \u0646\u0648\u0631\u0641\u0648\u0644\u06a9 +territories.NG=\u0646\u06cc\u062c\u0631\u06cc\u0647 +territories.NI=\u0646\u06cc\u06a9\u0627\u0631\u0627\u06af\u0648\u0626\u0647 +territories.NL=\u0647\u0644\u0646\u062f +territories.NO=\u0646\u0631\u0648\u0698 +territories.NP=\u0646\u067e\u0627\u0644 +territories.NR=\u0646\u0627\u0626\u0648\u0631\u0648 +territories.NU=\u0646\u06cc\u0648\u0626\u0647 +territories.NZ=\u0632\u0644\u0627\u0646\u062f \u0646\u0648 +territories.OM=\u0639\u0645\u0627\u0646 +territories.PA=\u067e\u0627\u0646\u0627\u0645\u0627 +territories.PE=\u067e\u0631\u0648 +territories.PF=\u067e\u0644\u06cc\u200c\u0646\u0632\u06cc \u0641\u0631\u0627\u0646\u0633\u0647 +territories.PG=\u067e\u0627\u067e\u0648\u0627 \u06af\u06cc\u0646\u0647\u0654 \u0646\u0648 +territories.PH=\u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646 +territories.PK=\u067e\u0627\u06a9\u0633\u062a\u0627\u0646 +territories.PL=\u0644\u0647\u0633\u062a\u0627\u0646 +territories.PM=\u0633\u0646\u062a \u067e\u06cc\u0631 \u0648 \u0645\u06cc\u06a9\u0644\u0648\u0646 +territories.PN=\u067e\u06cc\u062a\u06a9\u0627\u06cc\u0631\u0646 +territories.PR=\u067e\u0648\u0631\u062a\u0648 \u0631\u06cc\u06a9\u0648 +territories.PS=\u0641\u0644\u0633\u0637\u06cc\u0646 +territories.PT=\u067e\u0631\u062a\u063a\u0627\u0644 +territories.PW=\u067e\u0627\u0644\u0627\u0626\u0648 +territories.PY=\u067e\u0627\u0631\u0627\u06af\u0648\u0626\u0647 +territories.QA=\u0642\u0637\u0631 +territories.QO=\u0627\u0642\u06cc\u0627\u0646\u0648\u0633\u06cc\u0647\u0654 \u062f\u0648\u0631\u062f\u0633\u062a +territories.QU=\u0627\u062a\u062d\u0627\u062f\u06cc\u0647\u0654 \u0627\u0631\u0648\u067e\u0627 +territories.RE=\u0631\u06cc\u0648\u0646\u06cc\u0648\u0646 +territories.RO=\u0631\u0648\u0645\u0627\u0646\u06cc +territories.RS=\u0635\u0631\u0628\u0633\u062a\u0627\u0646 +territories.RU=\u0631\u0648\u0633\u06cc\u0647 +territories.RW=\u0631\u0648\u0627\u0646\u062f\u0627 +territories.SA=\u0639\u0631\u0628\u0633\u062a\u0627\u0646 \u0633\u0639\u0648\u062f\u06cc +territories.SB=\u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u06cc\u0645\u0627\u0646 +territories.SC=\u0633\u06cc\u0634\u0644 +territories.SD=\u0633\u0648\u062f\u0627\u0646 +territories.SE=\u0633\u0648\u0626\u062f +territories.SG=\u0633\u0646\u06af\u0627\u067e\u0648\u0631 +territories.SH=\u0633\u0646\u062a \u0647\u0644\u0646 +territories.SI=\u0627\u0633\u0644\u0648\u0648\u0646\u06cc +territories.SJ=\u0627\u0633\u0648\u0627\u0644\u0628\u0627\u0631\u062f \u0648 \u062c\u0627\u0646 \u0645\u0627\u06cc\u0646 +territories.SK=\u0627\u0633\u0644\u0648\u0627\u06a9\u06cc +territories.SL=\u0633\u06cc\u0631\u0627\u0644\u0626\u0648\u0646 +territories.SM=\u0633\u0627\u0646 \u0645\u0627\u0631\u06cc\u0646\u0648 +territories.SN=\u0633\u0646\u06af\u0627\u0644 +territories.SO=\u0633\u0648\u0645\u0627\u0644\u06cc +territories.SR=\u0633\u0648\u0631\u06cc\u0646\u0627\u0645 +territories.ST=\u0633\u0627\u0626\u0648 \u062a\u0648\u0645\u0647 \u0648 \u067e\u0631\u06cc\u0646\u0633\u06cc\u067e\u0647 +territories.SV=\u0627\u0644\u0633\u0627\u0644\u0648\u0627\u062f\u0648\u0631 +territories.SY=\u0633\u0648\u0631\u06cc\u0647 +territories.SZ=\u0633\u0648\u0627\u0632\u06cc\u0644\u0646\u062f +territories.TC=\u062c\u0632\u0627\u06cc\u0631 \u062a\u0631\u06a9 \u0648 \u06a9\u0627\u06cc\u06a9\u0648\u0633 +territories.TD=\u0686\u0627\u062f +territories.TF=\u0645\u0633\u062a\u0639\u0645\u0631\u0647\u200c\u0647\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc \u0641\u0631\u0627\u0646\u0633\u0647 +territories.TG=\u062a\u0648\u06af\u0648 +territories.TH=\u062a\u0627\u06cc\u0644\u0646\u062f +territories.TJ=\u062a\u0627\u062c\u06cc\u06a9\u0633\u062a\u0627\u0646 +territories.TK=\u062a\u0648\u06a9\u0644\u0627\u0626\u0648 +territories.TL=\u062a\u06cc\u0645\u0648\u0631 \u0634\u0631\u0642\u06cc territories.TM=\u062a\u0631\u06a9\u0645\u0646\u0633\u062a\u0627\u0646 -languages.gwi=\u06af\u0648\u06cc\u0686 \u0627\u06cc\u0646 -languages.akk=\u0622\u06a9\u062f\u06cc -languages.eka=\u0627\u06a9\u0627\u062c\u0648\u06a9 -languages.ijo=\u0627\u06cc\u062c\u0648\u06cc\u06cc -languages.xh=\u062e\u0648\u0633\u0627\u06cc\u06cc -languages.sux=\u0633\u0648\u0645\u0631\u06cc -languages.sus=\u0633\u0648\u0633\u0648\u06cc\u06cc -languages.mis=\u0632\u0628\u0627\u0646 \u0645\u062a\u0641\u0631\u0642\u0647 -languages.loz=\u0644\u0648\u0632\u06cc\u0627\u06cc\u06cc -languages.tog=\u062a\u0648\u0646\u06af\u0627\u06cc\u06cc \u0646\u06cc\u0627\u0633\u0627 -languages.zbl=\u0632\u0628\u0627\u0646 \u0633\u0645\u0628\u0644\u06cc\u06a9 \u0628\u0644\u06cc\u0633 -languages.pon=\u067e\u0645\u067e\u0626\u06cc -languages.min=\u0645\u06cc\u0646\u0627\u0646\u06af\u200c\u06a9\u0627\u0628\u0648\u06cc\u06cc -languages.suk=\u0633\u0648\u06a9\u0648\u0645\u0627\u06cc\u06cc -languages.wo=\u0648\u0644\u0648\u0641\u06cc -languages.lol=\u0645\u0648\u0646\u06af\u0648\u06cc\u06cc -languages.kut=\u06a9\u0648\u062a\u0646\u06cc -languages.mic=\u0645\u06cc\u06a9\u0645\u0627\u06a9\u06cc -languages.wa=\u0648\u0627\u0644\u0648\u0646\u06cc -languages.kum=\u06a9\u0648\u0645\u06cc\u06a9\u06cc -languages.zap=\u0632\u0627\u067e\u0648\u062a\u06a9\u06cc +territories.TN=\u062a\u0648\u0646\u0633 +territories.TO=\u062a\u0648\u0646\u06af\u0627 +territories.TR=\u062a\u0631\u06a9\u06cc\u0647 +territories.TT=\u062a\u0631\u06cc\u0646\u06cc\u062f\u0627\u062f \u0648 \u062a\u0648\u0628\u0627\u06af\u0648 +territories.TV=\u062a\u0648\u0648\u0627\u0644\u0648 +territories.TW=\u062a\u0627\u06cc\u0648\u0627\u0646 +territories.TZ=\u062a\u0627\u0646\u0632\u0627\u0646\u06cc\u0627 +territories.UA=\u0627\u0648\u06a9\u0631\u0627\u06cc\u0646 +territories.UG=\u0627\u0648\u06af\u0627\u0646\u062f\u0627 +territories.UM=\u062c\u0632\u0627\u06cc\u0631 \u06a9\u0648\u0686\u06a9 \u062f\u0648\u0631\u0627\u0641\u062a\u0627\u062f\u0647\u0654 \u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647 +territories.US=\u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0627\u0645\u0631\u06cc\u06a9\u0627 +territories.UY=\u0627\u0648\u0631\u0648\u06af\u0648\u0626\u0647 +territories.UZ=\u0627\u0632\u0628\u06a9\u0633\u062a\u0627\u0646 +territories.VA=\u0648\u0627\u062a\u06cc\u06a9\u0627\u0646 +territories.VC=\u0633\u0646\u062a \u0648\u06cc\u0646\u0633\u0646\u062a \u0648 \u06af\u0631\u0646\u0627\u062f\u06cc\u0646 +territories.VE=\u0648\u0646\u0632\u0648\u0626\u0644\u0627 +territories.VG=\u062c\u0632\u0627\u06cc\u0631 \u0648\u06cc\u0631\u062c\u06cc\u0646 \u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 +territories.VI=\u062c\u0632\u0627\u06cc\u0631 \u0648\u06cc\u0631\u062c\u06cc\u0646 \u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647 +territories.VN=\u0648\u06cc\u062a\u0646\u0627\u0645 +territories.VU=\u0648\u0627\u0646\u0648\u0627\u062a\u0648 +territories.WF=\u0648\u0627\u0644\u06cc\u0633 \u0648 \u0641\u06cc\u0648\u062a\u0648\u0646\u0627 +territories.WS=\u0633\u0627\u0645\u0648\u0627 +territories.YE=\u06cc\u0645\u0646 +territories.YT=\u0645\u0627\u06cc\u0648\u062a +territories.ZA=\u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc +territories.ZM=\u0632\u0627\u0645\u0628\u06cc\u0627 +territories.ZW=\u0632\u06cc\u0645\u0628\u0627\u0628\u0648\u0647 +territories.ZZ=\u0646\u0627\u062d\u06cc\u0647\u0654 \u0646\u0627\u0645\u0634\u062e\u0635 \u06cc\u0627 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 +languages.aa=\u0622\u0641\u0627\u0631\u06cc +languages.ab=\u0622\u0628\u062e\u0627\u0632\u06cc +languages.ace=\u0622\u0686\u0626\u06cc +languages.ach=\u0622\u0686\u0648\u0644\u06cc\u0627\u06cc\u06cc +languages.ada=\u0622\u062f\u0627\u0646\u06af\u0645\u0647\u200c\u0627\u06cc +languages.ady=\u0622\u062f\u06cc\u062c\u06cc\u0627\u06cc\u06cc +languages.ae=\u0627\u0648\u0633\u062a\u0627\u06cc\u06cc +languages.af=\u0622\u0641\u0631\u06cc\u06a9\u0627\u0646\u0633 +languages.afa=\u0632\u0628\u0627\u0646 \u0627\u0641\u0631\u06cc\u0642\u0627 \u0648 \u0622\u0633\u06cc\u0627\u06cc\u06cc +languages.afh=\u0622\u0641\u0631\u06cc\u0647\u06cc\u0644\u06cc languages.ain=\u0622\u06cc\u0646\u0648 -languages.cus=\u0632\u0628\u0627\u0646 \u06a9\u0648\u0634\u06cc -languages.jbo=\u0644\u0648\u062c\u0628\u0627\u0646 -languages.doi=\u062f\u0648\u06af\u0631\u06cc -languages.zza=\u0632\u0627\u0632\u0627\u06cc\u06cc -languages.vo=\u0648\u0644\u0627\u067e\u0648\u06a9 -languages.oto=\u0632\u0628\u0627\u0646 \u0627\u062a\u0648\u0645\u06cc\u0627\u06cc\u06cc -languages.vi=\u0648\u06cc\u062a\u0646\u0627\u0645\u06cc -languages.vai=\u0648\u06cc\u0627\u06cc\u06cc -languages.rar=\u0631\u0627\u0631\u0648\u062a\u0648\u0646\u06af\u0627\u06cc\u06cc -languages.ve=\u0648\u0646\u062f\u0627\u06cc\u06cc -languages.rap=\u0631\u0627\u067e\u0627\u0646\u0648\u06cc\u06cc -languages.raj=\u0631\u0627\u062c\u0633\u062a\u0627\u0646\u06cc -languages.ota=\u062a\u0631\u06a9\u06cc \u0639\u062b\u0645\u0627\u0646\u06cc -languages.nzi=\u0646\u0632\u06cc\u0645\u0627\u06cc\u06cc -languages.nap=\u0646\u0627\u067e\u0644\u06cc -languages.uz=\u0627\u0632\u0628\u06a9\u06cc -languages.uga=\u0627\u0648\u06af\u0627\u0631\u06cc\u062a\u06cc -languages.tmh=\u062a\u0627\u0645\u0627\u0634\u0642\u06cc -languages.nai=\u0632\u0628\u0627\u0646 \u0633\u0631\u062e\u067e\u0648\u0633\u062a\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc -languages.nah=\u0646\u0627\u0648\u0627\u062a\u0644\u06cc -languages.ur=\u0627\u0631\u062f\u0648 -languages.fat=\u0641\u0627\u0646\u062a\u06cc\u0627\u06cc\u06cc -languages.uk=\u0627\u0648\u06a9\u0631\u0627\u06cc\u0646\u06cc -languages.egy=\u0645\u0635\u0631\u06cc \u06a9\u0647\u0646 -languages.zxx=\u0628\u062f\u0648\u0646 \u0645\u062d\u062a\u0648\u0627\u06cc \u0632\u0628\u0627\u0646 \u0634\u062a\u0627\u0633\u06cc -languages.ug=\u0627\u0648\u06cc\u063a\u0648\u0631\u06cc -languages.fan=\u0641\u0627\u0646\u06a9\u06cc -languages.ssa=\u0632\u0628\u0627\u0646 \u0646\u06cc\u0644\u06cc \u0648 \u0635\u062d\u0631\u0627\u06cc\u06cc -languages.mga=\u0627\u06cc\u0631\u0644\u0646\u062f\u06cc \u0645\u06cc\u0627\u0646\u0647 -languages.bat=\u0632\u0628\u0627\u0646 \u0628\u0627\u0644\u062a\u06cc\u06a9\u06cc -languages.nyo=\u0646\u06cc\u0648\u0631\u0648\u06cc\u06cc -languages.bas=\u0628\u0627\u0633\u0627\u06cc\u06cc -languages.nyn=\u0646\u06cc\u0627\u0646\u06a9\u0648\u0644\u0647\u200c\u0627\u06cc -languages.nym=\u0646\u06cc\u0627\u0645\u0648\u0633\u06cc -languages.gsw=\u0622\u0644\u0645\u0627\u0646\u06cc \u0633\u0648\u0626\u06cc\u0633\u06cc -languages.hmn=\u0647\u0645\u0648\u0646\u06af -languages.ban=\u0628\u0627\u0644\u06cc\u0627\u06cc\u06cc -languages.osa=\u0627\u0648\u0633\u06cc\u062c\u06cc -languages.bal=\u0628\u0644\u0648\u0686\u06cc -languages.ty=\u062a\u0627\u0647\u06cc\u062a\u06cc\u0627\u06cc\u06cc -languages.bai=\u0632\u0628\u0627\u0646 \u0628\u0627\u0645\u06cc\u0644\u06a9 -languages.tw=\u062a\u0648\u0627\u06cc -languages.srr=\u0633\u0631\u06cc\u0631\u06cc -languages.tli=\u062a\u0644\u06cc\u0646\u200c\u06af\u06cc\u062a\u06cc -languages.tlh=\u06a9\u0644\u06cc\u0646\u06af\u0648\u0646 -languages.tt=\u062a\u0627\u062a\u0627\u0631\u06cc -languages.ts=\u062a\u0633\u0648\u0646\u06af\u0627\u06cc\u06cc +languages.ak=\u0622\u06a9\u0627\u0646 +languages.akk=\u0622\u06a9\u062f\u06cc +languages.ale=\u0622\u0644\u0626\u0648\u062a\u06cc +languages.alg=\u0632\u0628\u0627\u0646 \u0622\u0644\u06af\u0648\u0646\u06a9\u06cc\u0646\u06cc +languages.alt=alt +languages.am=\u0627\u0645\u0647\u0631\u06cc +languages.an=an +languages.ang=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 +languages.anp=\u0622\u0646\u06af\u06cc\u06a9\u0627 +languages.apa=\u0632\u0628\u0627\u0646 \u0622\u067e\u0627\u0686\u06cc\u0627\u06cc\u06cc +languages.ar=\u0639\u0631\u0628\u06cc +languages.arc=\u0622\u0631\u0627\u0645\u06cc +languages.arn=\u0622\u0631\u0648\u06a9\u0627\u0646\u06cc\u0627\u06cc\u06cc +languages.arp=\u0622\u0631\u0627\u067e\u0627\u0647\u0648\u06cc\u06cc +languages.art=\u0632\u0628\u0627\u0646 \u0633\u0627\u062e\u062a\u06af\u06cc +languages.arw=\u0622\u0631\u0627\u0648\u0627\u06a9\u06cc +languages.as=\u0622\u0633\u0627\u0645\u06cc +languages.ast=ast +languages.ath=\u0632\u0628\u0627\u0646 \u0622\u062a\u0627\u067e\u0627\u0633\u06a9\u0627\u06cc\u06cc +languages.aus=\u0632\u0628\u0627\u0646 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u06cc\u06cc +languages.av=\u0622\u0648\u0627\u0631\u06cc +languages.awa=awa +languages.ay=\u0622\u06cc\u0645\u0627\u0631\u0627\u06cc\u06cc +languages.az=\u062a\u0631\u06a9\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646\u06cc +languages.ba=\u0628\u0627\u0634\u063a\u06cc\u0631\u06cc languages.bad=\u0628\u0627\u0646\u062f\u0627\u06cc\u06cc -languages.tr=\u062a\u0631\u06a9\u06cc \u0627\u0633\u062a\u0627\u0646\u0628\u0648\u0644\u06cc -languages.to=\u062a\u0648\u0646\u06af\u0627\u06cc\u06cc (\u062c\u0632\u0627\u06cc\u0631 \u062a\u0648\u0646\u06af\u0627) -languages.tn=\u062a\u0633\u0648\u0627\u0646\u0627\u06cc\u06cc -languages.tl=\u062a\u0627\u06af\u0627\u0644\u0648\u06af\u06cc -languages.tk=\u062a\u0631\u06a9\u0645\u0646\u06cc -languages.ti=\u062a\u06cc\u06af\u0631\u06cc\u0646\u06cc\u0627\u06cc\u06cc -languages.th=\u062a\u0627\u06cc\u0644\u0646\u062f\u06cc -languages.kru=\u06a9\u0648\u0631\u0648\u062e\u06cc -languages.tg=\u062a\u0627\u062c\u06cc\u06a9\u06cc +languages.bai=bai +languages.bal=\u0628\u0644\u0648\u0686\u06cc +languages.ban=\u0628\u0627\u0644\u06cc\u0627\u06cc\u06cc +languages.bas=\u0628\u0627\u0633\u0627\u06cc\u06cc +languages.bat=\u0632\u0628\u0627\u0646 \u0628\u0627\u0644\u062a\u06cc\u06a9\u06cc +languages.be=\u0628\u0644\u0648\u0631\u0648\u0633\u06cc +languages.bej=\u0628\u062c\u0627\u06cc\u06cc +languages.bem=\u0628\u0645\u0628\u0627\u06cc\u06cc +languages.ber=\u0628\u0631\u0628\u0631\u06cc +languages.bg=\u0628\u0644\u063a\u0627\u0631\u06cc +languages.bh=\u0628\u06cc\u0647\u0627\u0631\u06cc +languages.bho=\u0628\u0648\u062c\u067e\u0648\u0631\u06cc +languages.bi=\u0628\u06cc\u0633\u0644\u0627\u0645\u0627 +languages.bik=\u0628\u06cc\u06a9\u0648\u0644\u06cc +languages.bin=\u0628\u06cc\u0646\u06cc +languages.bla=bla +languages.bm=\u0628\u0627\u0645\u0628\u0627\u0631\u0627\u06cc\u06cc +languages.bn=\u0628\u0646\u06af\u0627\u0644\u06cc +languages.bnt=\u0628\u0627\u0646\u062a\u0648\u06cc\u06cc +languages.bo=\u062a\u0628\u062a\u06cc +languages.br=\u0628\u0631\u062a\u0627\u0646\u06cc\u0627\u06cc\u06cc +languages.bra=\u0628\u0631\u0627\u062c +languages.bs=\u0628\u0648\u0633\u0646\u06cc\u0627\u06cc\u06cc +languages.btk=\u0628\u0627\u062a\u0627\u06a9\u06cc +languages.bua=\u0628\u0648\u0631\u06cc\u0627\u062a\u06cc +languages.bug=\u0628\u0648\u06af\u06cc\u0627\u06cc\u06cc languages.byn=\u0628\u0644\u06cc\u0646 -languages.te=\u062a\u0644\u0648\u06af\u0648\u06cc\u06cc -languages.kro=\u06a9\u0631\u0648\u06cc\u06cc +languages.ca=\u06a9\u0627\u062a\u0627\u0644\u0648\u0646\u06cc\u0627\u06cc\u06cc +languages.cad=\u06a9\u0627\u062f\u0648\u06cc\u06cc +languages.cai=\u0632\u0628\u0627\u0646 \u0633\u0631\u062e\u067e\u0648\u0633\u062a\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc +languages.car=\u06a9\u0627\u0631\u06cc\u0628\u06cc +languages.cau=\u0632\u0628\u0627\u0646 \u0642\u0641\u0642\u0627\u0632\u06cc +languages.cch=cch +languages.ce=\u0686\u0686\u0646\u06cc +languages.ceb=\u0633\u0628\u0648\u06cc\u06cc +languages.cel=\u0632\u0628\u0627\u0646 \u0633\u0644\u062a\u06cc +languages.ch=\u0686\u0627\u0645\u0648\u0631\u0648\u06cc\u06cc +languages.chb=\u0686\u06cc\u0628\u0686\u0627 +languages.chg=\u0686\u0627\u06af\u0627\u062a\u0627\u06cc\u06cc +languages.chk=\u0686\u0648\u06a9\u0632\u06cc +languages.chm=\u0645\u0627\u0631\u06cc\u0627\u06cc\u06cc +languages.chn=chn +languages.cho=\u0686\u0648\u06a9\u062a\u0648\u06cc\u06cc +languages.chp=\u0686\u06cc\u067e\u0647\u200c\u0648\u06cc\u0647\u200c\u0627\u06cc +languages.chr=\u0686\u0631\u0648\u06a9\u06cc\u0627\u06cc\u06cc +languages.chy=\u0634\u0627\u06cc\u0627\u0646\u06cc +languages.cmc=cmc +languages.co=\u06a9\u0648\u0631\u0633\u06cc +languages.cop=\u0642\u0628\u0637\u06cc +languages.cpe=\u06a9\u0631\u06cc\u0648\u0644 \u06cc\u0627 \u067e\u06cc\u062c\u06cc\u0646 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc +languages.cpf=\u06a9\u0631\u06cc\u0648\u0644 \u06cc\u0627 \u067e\u06cc\u062c\u06cc\u0646 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0641\u0631\u0627\u0646\u0633\u0648\u06cc +languages.cpp=\u06a9\u0631\u06cc\u0648\u0644 \u06cc\u0627 \u067e\u06cc\u062c\u06cc\u0646 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u067e\u0631\u062a\u063a\u0627\u0644\u06cc +languages.cr=\u06a9\u0631\u06cc\u0627\u06cc\u06cc +languages.crh=\u062a\u0631\u06a9\u06cc \u06a9\u0631\u06cc\u0645\u0647 +languages.crp=\u06a9\u0631\u06cc\u0648\u0644 \u06cc\u0627 \u067e\u06cc\u062c\u06cc\u0646 +languages.cs=\u0686\u06a9\u06cc languages.csb=\u06a9\u0627\u0634\u0648\u0628\u06cc -languages.ta=\u062a\u0627\u0645\u06cc\u0644\u06cc -languages.krl=\u06a9\u0627\u0631\u0644\u06cc\u0627\u0646 -languages.tkl=\u062a\u0648\u06a9\u0644\u0648\u06cc +languages.cu=\u0627\u0633\u0644\u0627\u0648\u06cc \u06a9\u0644\u06cc\u0633\u0627\u06cc\u06cc +languages.cus=\u0632\u0628\u0627\u0646 \u06a9\u0648\u0634\u06cc +languages.cv=\u0686\u0648\u0648\u0627\u0634\u06cc +languages.cy=\u0648\u06cc\u0644\u0632\u06cc +languages.da=\u062f\u0627\u0646\u0645\u0627\u0631\u06a9\u06cc +languages.dak=\u062f\u0627\u06a9\u0648\u062a\u0627\u06cc\u06cc +languages.dar=\u062f\u0627\u0631\u06af\u0648\u0627 +languages.day=\u062f\u0627\u06cc\u0627\u06a9 +languages.de=\u0622\u0644\u0645\u0627\u0646\u06cc +languages.de_AT=\u0622\u0644\u0645\u0627\u0646\u06cc \u0627\u062a\u0631\u06cc\u0634 +languages.de_CH=\u0622\u0644\u0645\u0627\u0646\u06cc \u0639\u0644\u06cc\u0627\u06cc \u0633\u0648\u0626\u06cc\u0633 +languages.del=\u062f\u0644\u0627\u0648\u0627\u0631\u06cc +languages.den=den +languages.dgr=\u062f\u0648\u06af\u0631\u06cc\u0628 +languages.din=\u062f\u06cc\u0646\u06a9\u0627\u06cc\u06cc +languages.doi=\u062f\u0648\u06af\u0631\u06cc +languages.dra=\u0632\u0628\u0627\u0646 \u062f\u0631\u0627\u0648\u06cc\u062f\u06cc +languages.dsb=\u0635\u064f\u0631\u0628\u06cc \u0633\u0641\u0644\u06cc +languages.dua=\u062f\u0648\u0622\u0644\u0627\u06cc\u06cc +languages.dum=\u0647\u0644\u0646\u062f\u06cc \u0645\u06cc\u0627\u0646\u0647 +languages.dv=dv +languages.dyu=\u062f\u0627\u06cc\u0648\u0644\u0627\u06cc\u06cc +languages.dz=\u062c\u0648\u0646\u062e\u0627\u06cc\u06cc +languages.ee=\u0627\u0648\u0647\u200c\u0627\u06cc languages.efi=\u0627\u0641\u06cc\u06a9\u06cc -languages.sw=\u0633\u0648\u0627\u062d\u064a\u0644\u06cc -languages.sv=\u0633\u0648\u0626\u062f\u06cc -languages.su=\u0633\u0648\u0646\u062f\u0627\u06cc\u06cc -languages.krc=\u0642\u0631\u0647\u200c\u0686\u0627\u06cc\u06cc\u2010\u0628\u0627\u0644\u06a9\u0627\u0631\u06cc -languages.st=\u0633\u0648\u062a\u0648\u06cc\u06cc \u062c\u0646\u0648\u0628\u06cc -languages.ss=\u0633\u0648\u0633\u0648\u06cc\u06cc -languages.sr=\u0635\u0631\u0628\u06cc -languages.sq=\u0622\u0644\u0628\u0627\u0646\u06cc\u0627\u06cc\u06cc -languages.men=\u0645\u0646\u062f\u0647\u200c\u0627\u06cc -languages.crp=\u06a9\u0631\u06cc\u0648\u0644 \u06cc\u0627 \u067e\u06cc\u062c\u06cc\u0646 -languages.so=\u0633\u0648\u0645\u0627\u0644\u06cc\u0627\u06cc\u06cc -languages.afh=\u0622\u0641\u0631\u06cc\u0647\u06cc\u0644\u06cc -languages.sn=\u0634\u0648\u0646\u0627\u06cc\u06cc -languages.sm=\u0633\u0627\u0645\u0648\u0622\u06cc\u06cc -languages.sl=\u0627\u0633\u0644\u0648\u0648\u06cc\u0646\u06cc\u0627\u06cc\u06cc -languages.grc=\u06cc\u0648\u0646\u0627\u0646\u06cc \u06a9\u0647\u0646 -languages.sk=\u0627\u0633\u0644\u0648\u0627\u06a9\u06cc -languages.grb=\u06af\u0631\u06cc\u0628\u0648\u06cc\u06cc -languages.si=\u0633\u06cc\u0646\u0647\u0627\u0644\u06cc -languages.sh=\u0635\u0631\u0628 \u0648 \u06a9\u0631\u0648\u0627\u062a\u06cc -languages.crh=\u062a\u0631\u06a9\u06cc \u06a9\u0631\u06cc\u0645\u0647 -languages.afa=\u0632\u0628\u0627\u0646 \u0627\u0641\u0631\u06cc\u0642\u0627 \u0648 \u0622\u0633\u06cc\u0627\u06cc\u06cc -languages.sg=\u0633\u0627\u0646\u06af\u0648\u06cc\u06cc -languages.se=\u0633\u0627\u0645\u06cc \u0634\u0645\u0627\u0644\u06cc -languages.sd=\u0633\u0646\u062f\u06cc -languages.udm=\u0627\u0648\u062f\u0645\u0648\u0631\u062a\u06cc -languages.sc=\u0633\u0627\u0631\u062f\u06cc\u0646\u06cc\u0627\u06cc\u06cc -languages.sa=\u0633\u0646\u0633\u06a9\u0631\u06cc\u062a -languages.rw=\u06a9\u06cc\u0646\u06cc\u0627\u0631\u0648\u0627\u0646\u062f\u0627\u06cc\u06cc -languages.nwc=\u0646\u0648\u0627\u0631\u06cc\u0627\u06cc\u06cc \u06a9\u0644\u0627\u0633\u06cc\u06a9 -languages.ru=\u0631\u0648\u0633\u06cc -languages.mdr=\u0645\u0627\u0646\u062f\u0627\u0631 -languages.ro=\u0631\u0648\u0645\u0627\u0646\u06cc\u0627\u06cc\u06cc -languages.rn=\u0631\u0648\u0646\u062f\u06cc\u0627\u06cc\u06cc -languages.rm=\u0631\u062a\u0648\u2010\u0631\u0648\u0645\u06cc\u0627\u06cc\u06cc -languages.fr_CH=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc \u0633\u0648\u0626\u06cc\u0633 -languages.mdf=\u0645\u06a9\u0634\u0627\u06cc\u06cc -languages.tiv=\u062a\u06cc\u0648\u06cc +languages.egy=\u0645\u0635\u0631\u06cc \u06a9\u0647\u0646 +languages.eka=\u0627\u06a9\u0627\u062c\u0648\u06a9 +languages.el=\u06cc\u0648\u0646\u0627\u0646\u06cc +languages.elx=\u0639\u06cc\u0644\u0627\u0645\u06cc +languages.en=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc +languages.en_AU=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 +languages.en_CA=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u06a9\u0627\u0646\u0627\u062f\u0627 +languages.en_GB=\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 +languages.en_US=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627 +languages.enm=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0645\u06cc\u0627\u0646\u0647 +languages.eo=\u0627\u0633\u067e\u0631\u0627\u0646\u062a\u0648 +languages.es=\u0627\u0633\u067e\u0627\u0646\u06cc\u0627\u06cc\u06cc +languages.es_419=\u0627\u0633\u067e\u0627\u0646\u06cc\u0627\u06cc\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0644\u0627\u062a\u06cc\u0646 +languages.es_ES=\u0627\u0633\u067e\u0627\u0646\u06cc\u0627\u06cc\u06cc \u0627\u0633\u067e\u0627\u0646\u06cc\u0627 +languages.et=\u0627\u0633\u062a\u0648\u0646\u06cc\u0627\u06cc\u06cc +languages.eu=\u0628\u0627\u0633\u06a9\u06cc +languages.ewo=\u0627\u0648\u0627\u0646\u062f\u0648 +languages.fa=\u0641\u0627\u0631\u0633\u06cc +languages.fan=\u0641\u0627\u0646\u06a9\u06cc +languages.fat=\u0641\u0627\u0646\u062a\u06cc\u0627\u06cc\u06cc +languages.ff=\u0641\u0648\u0644\u0627\u06cc\u06cc +languages.fi=\u0641\u0646\u0644\u0627\u0646\u062f\u06cc +languages.fil=\u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646\u06cc +languages.fiu=\u0632\u0628\u0627\u0646 \u0641\u06cc\u0646 \u0648 \u0627\u0648\u06af\u0631\u0627\u06cc\u06cc +languages.fj=\u0641\u06cc\u062c\u06cc\u0627\u06cc\u06cc +languages.fo=\u0641\u0627\u0631\u0648\u06cc\u06cc +languages.fon=\u0641\u0648\u0646\u06cc +languages.fr=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc languages.fr_CA=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc \u06a9\u0627\u0646\u0627\u062f\u0627 -languages.ady=\u0622\u062f\u06cc\u062c\u06cc\u0627\u06cc\u06cc -languages.zun=\u0632\u0648\u0646\u06cc\u0627\u06cc\u06cc -languages.kpe=\u06a9\u067e\u0644\u0647\u200c\u0627\u06cc -languages.qu=\u06a9\u0686\u0648\u0627\u06cc\u06cc -languages.tig=\u062a\u06cc\u06af\u0631\u0647\u200c\u0627\u06cc -languages.son=\u0633\u0648\u0646\u063a\u0627\u06cc\u06cc -languages.cpp=\u06a9\u0631\u06cc\u0648\u0644 \u06cc\u0627 \u067e\u06cc\u062c\u06cc\u0646 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u067e\u0631\u062a\u063a\u0627\u0644\u06cc -languages.rup=\u0622\u0631\u0648\u0645\u0627\u0646\u06cc\u0646 -languages.sog=\u0633\u063a\u062f\u06cc -languages.ada=\u0622\u062f\u0627\u0646\u06af\u0645\u0647\u200c\u0627\u06cc -languages.kos=\u06a9\u0648\u0633\u0631\u0627 \u0626\u0646 -languages.hit=\u0647\u06cc\u062a\u06cc -languages.cpf=\u06a9\u0631\u06cc\u0648\u0644 \u06cc\u0627 \u067e\u06cc\u062c\u06cc\u0646 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0641\u0631\u0627\u0646\u0633\u0648\u06cc -languages.cpe=\u06a9\u0631\u06cc\u0648\u0644 \u06cc\u0627 \u067e\u06cc\u062c\u06cc\u0646 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc -languages.him=\u0647\u06cc\u0645\u0627\u0686\u0627\u0644\u06cc -languages.kok=\u06a9\u0646\u06a9\u0627\u0646\u06cc -languages.hil=\u0647\u06cc\u0644\u06cc\u200c\u06af\u0627\u06cc\u0646\u0648\u0646\u06cc -languages.got=\u06af\u0627\u062a\u06cc\u06a9 -languages.gor=\u06af\u0648\u0631\u0648\u0646\u062a\u0627\u0644\u0648 -languages.gon=\u06af\u0648\u0646\u062f\u06cc -languages.din=\u062f\u06cc\u0646\u06a9\u0627\u06cc\u06cc -languages.nub=\u0632\u0628\u0627\u0646\u0647\u0627\u06cc \u0646\u0648\u0628\u06cc\u0627\u06cc\u06cc -languages.pt=\u067e\u0631\u062a\u063a\u0627\u0644\u06cc -languages.ps=\u067e\u0634\u062a\u0648 +languages.fr_CH=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc \u0633\u0648\u0626\u06cc\u0633 +languages.frm=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc \u0645\u06cc\u0627\u0646\u0647 +languages.fro=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 +languages.frr=\u0641\u0631\u06cc\u0632\u06cc \u0634\u0645\u0627\u0644\u06cc +languages.frs=\u0641\u0631\u06cc\u0632\u06cc \u0634\u0631\u0642\u06cc languages.fur=\u0641\u0631\u06cc\u0648\u0644\u06cc\u0627\u06cc\u06cc -languages.phn=\u0641\u0646\u06cc\u0642\u06cc -languages.de_CH=\u0622\u0644\u0645\u0627\u0646\u06cc \u0639\u0644\u06cc\u0627\u06cc \u0633\u0648\u0626\u06cc\u0633 +languages.fy=\u0641\u0631\u06cc\u0632\u06cc \u063a\u0631\u0628\u06cc +languages.ga=\u0627\u06cc\u0631\u0644\u0646\u062f\u06cc +languages.gaa=\u06af\u0627\u06cc\u06cc +languages.gay=\u06af\u0627\u06cc\u0648 +languages.gba=\u06af\u0628\u0627\u06cc\u0627\u06cc\u06cc +languages.gd=\u06af\u06cc\u0644\u06cc \u0627\u0633\u06a9\u0627\u062a\u0644\u0646\u062f\u06cc +languages.gem=\u0632\u0628\u0627\u0646 \u0698\u0631\u0645\u0646\u06cc +languages.gez=\u06af\u06cc\u200c\u0626\u0632\u06cc +languages.gil=\u06af\u06cc\u0644\u0628\u0631\u062a\u06cc +languages.gl=\u06af\u0627\u0644\u06cc\u0633\u06cc\u0627\u06cc\u06cc +languages.gmh=\u0622\u0644\u0645\u0627\u0646\u06cc \u0639\u0644\u06cc\u0627\u06cc \u0645\u06cc\u0627\u0646\u0647 +languages.gn=\u06af\u0648\u0627\u0631\u0627\u0646\u06cc languages.goh=\u0622\u0644\u0645\u0627\u0646\u06cc \u0639\u0644\u06cc\u0627\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 -languages.snk=\u0633\u0648\u0646\u06cc\u0646\u06a9\u0647\u200c\u0627\u06cc -languages.cop=\u0642\u0628\u0637\u06cc -languages.yap=\u06cc\u0627\u067e\u06cc -languages.ach=\u0622\u0686\u0648\u0644\u06cc\u0627\u06cc\u06cc -languages.yao=\u06cc\u0627\u0626\u0648\u06cc\u06cc -languages.phi=\u0632\u0628\u0627\u0646 \u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646\u06cc -languages.pl=\u0644\u0647\u0633\u062a\u0627\u0646\u06cc -languages.ace=\u0622\u0686\u0626\u06cc -languages.pi=\u067e\u0627\u0644\u06cc -languages.pt_PT=\u067e\u0631\u062a\u063a\u0627\u0644\u064a -languages.pa=\u067e\u0646\u062c\u0627\u0628\u06cc -languages.bug=\u0628\u0648\u06af\u06cc\u0627\u06cc\u06cc +languages.gon=\u06af\u0648\u0646\u062f\u06cc +languages.gor=\u06af\u0648\u0631\u0648\u0646\u062a\u0627\u0644\u0648 +languages.got=\u06af\u0627\u062a\u06cc\u06a9 +languages.grb=\u06af\u0631\u06cc\u0628\u0648\u06cc\u06cc +languages.grc=\u06cc\u0648\u0646\u0627\u0646\u06cc \u06a9\u0647\u0646 +languages.gsw=\u0622\u0644\u0645\u0627\u0646\u06cc \u0633\u0648\u0626\u06cc\u0633\u06cc +languages.gu=\u06af\u062c\u0631\u0627\u062a\u06cc +languages.gv=\u0645\u0627\u0646\u06cc +languages.gwi=\u06af\u0648\u06cc\u0686 \u0627\u06cc\u0646 +languages.ha=\u0647\u0648\u0633\u06cc\u0627\u06cc\u06cc +languages.hai=\u0647\u0627\u06cc\u062f\u0627\u06cc\u06cc +languages.haw=\u0647\u0627\u0648\u0627\u0626\u06cc\u0627\u06cc\u06cc +languages.he=\u0639\u0628\u0631\u06cc +languages.hi=\u0647\u0646\u062f\u06cc +languages.hil=\u0647\u06cc\u0644\u06cc\u200c\u06af\u0627\u06cc\u0646\u0648\u0646\u06cc +languages.him=\u0647\u06cc\u0645\u0627\u0686\u0627\u0644\u06cc +languages.hit=\u0647\u06cc\u062a\u06cc +languages.hmn=\u0647\u0645\u0648\u0646\u06af +languages.ho=\u0647\u06cc\u0631\u06cc \u0645\u0648\u062a\u0648 +languages.hr=\u06a9\u0631\u0648\u0627\u062a\u06cc +languages.hsb=\u0635\u064f\u0631\u0628\u06cc \u0639\u0644\u06cc\u0627 +languages.ht=\u0647\u0627\u0626\u06cc\u062a\u06cc\u0627\u06cc\u06cc +languages.hu=\u0645\u062c\u0627\u0631\u06cc +languages.hup=\u0647\u0648\u067e\u0627 +languages.hy=\u0627\u0631\u0645\u0646\u06cc +languages.hz=\u0647\u0631\u06cc\u0631\u0648\u06cc\u06cc +languages.ia=\u0645\u06cc\u0627\u0646\u200c\u0632\u0628\u0627\u0646 languages.iba=\u0622\u06cc\u0628\u0646 -languages.sms=\u0633\u0627\u0645\u06cc \u0627\u0633\u06a9\u0627\u0644\u062a -languages.bua=\u0628\u0648\u0631\u06cc\u0627\u062a\u06cc -languages.mas=\u0645\u0627\u0633\u0627\u06cc\u06cc -languages.smn=\u0633\u0627\u0645\u06cc \u0627\u06cc\u0646\u0627\u0631\u06cc -languages.os=\u0622\u0633\u06cc -languages.map=\u0622\u0633\u062a\u0631\u0648\u0646\u06cc\u0632\u06cc\u0627\u06cc\u06cc -languages.or=\u0627\u0648\u0631\u06cc\u0647\u200c\u0627\u06cc -languages.man=\u0645\u0627\u0646\u062f\u06cc\u0646\u06af\u0648\u06cc\u06cc -languages.smj=\u0633\u0627\u0645\u06cc \u0644\u0648\u0644 -languages.smi=\u0632\u0628\u0627\u0646 \u0633\u0627\u0645\u06cc -languages.mak=\u0645\u0627\u06a9\u0627\u0633\u0627\u0631 -languages.om=\u0627\u0648\u0631\u0648\u0645\u0648\u06cc\u06cc -languages.mai=\u0645\u0627\u06cc\u062f\u06cc\u0644\u06cc -languages.oj=\u0627\u0648\u062c\u06cc\u0628\u0648\u0627\u06cc\u06cc -languages.mag=\u0645\u0627\u06af\u0627\u0647\u06cc\u0627\u06cc\u06cc -languages.mad=\u0645\u0627\u062f\u0648\u0631\u0627\u06cc\u06cc -languages.sma=\u0633\u0627\u0645\u06cc \u062c\u0646\u0648\u0628\u06cc -languages.oc=\u0627\u0648\u06a9\u06cc\u062a\u0627\u06cc\u06cc -languages.nso=\u0633\u0648\u062a\u0648\u06cc\u06cc \u0634\u0645\u0627\u0644\u06cc -languages.btk=\u0628\u0627\u062a\u0627\u06a9\u06cc -languages.myv=\u0627\u0631\u0632\u06cc\u0627\u06cc\u06cc -languages.es_ES=\u0627\u0633\u067e\u0627\u0646\u06cc\u0627\u06cc\u06cc \u0627\u0633\u067e\u0627\u0646\u06cc\u0627 -languages.de_AT=\u0622\u0644\u0645\u0627\u0646\u06cc \u0627\u062a\u0631\u06cc\u0634 -languages.dgr=\u062f\u0648\u06af\u0631\u06cc\u0628 -languages.ny=\u0646\u06cc\u0627\u0646\u062c\u0627\u06cc\u06cc -languages.myn=\u0632\u0628\u0627\u0646 \u0645\u0627\u06cc\u0627\u06cc\u06cc -languages.nv=\u0646\u0627\u0648\u0627\u0647\u0648\u06cc\u06cc +languages.id=\u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u0627\u06cc\u06cc +languages.ie=\u0628\u06cc\u0646 \u0632\u0628\u0627\u0646\u06cc +languages.ig=\u0627\u06cc\u06af\u0628\u0648\u06cc\u06cc +languages.ii=\u06cc\u06cc \u0633\u06cc\u0686\u0648\u0627\u0646 +languages.ijo=\u0627\u06cc\u062c\u0648\u06cc\u06cc +languages.ik=\u0627\u06cc\u0646\u0648\u067e\u06cc\u06a9 +languages.ilo=\u0627\u06cc\u0644\u0648\u06a9\u0648\u06cc\u06cc +languages.inc=\u0632\u0628\u0627\u0646 \u0647\u0646\u062f\u06cc\u06a9 +languages.ine=\u0632\u0628\u0627\u0646 \u0647\u0646\u062f \u0648 \u0627\u0631\u0648\u067e\u0627\u06cc\u06cc +languages.inh=\u0627\u06cc\u0646\u06af\u0648\u0634\u06cc +languages.io=\u0627\u06cc\u062f\u0648 +languages.ira=\u0632\u0628\u0627\u0646 \u0627\u06cc\u0631\u0627\u0646\u06cc +languages.iro=\u0632\u0628\u0627\u0646 \u0627\u06cc\u0631\u0648\u06a9\u0648\u0627\u06cc\u06cc +languages.is=\u0627\u06cc\u0633\u0644\u0646\u062f\u06cc +languages.it=\u0627\u06cc\u062a\u0627\u0644\u06cc\u0627\u06cc\u06cc +languages.iu=\u0627\u06cc\u0646\u0648\u06a9\u062a\u06cc\u062a\u0648\u062a +languages.ja=\u0698\u0627\u067e\u0646\u06cc +languages.jbo=\u0644\u0648\u062c\u0628\u0627\u0646 +languages.jpr=\u0641\u0627\u0631\u0633\u06cc \u06cc\u0647\u0648\u062f\u06cc +languages.jrb=\u0639\u0631\u0628\u06cc \u06cc\u0647\u0648\u062f\u06cc +languages.jv=\u062c\u0627\u0648\u0647\u200c\u0627\u06cc +languages.ka=\u06af\u0631\u062c\u06cc +languages.kaa=\u0642\u0631\u0647\u200c\u0642\u0627\u0644\u067e\u0627\u0642\u06cc +languages.kab=\u0642\u0628\u0627\u06cc\u0644\u06cc +languages.kac=\u06a9\u0627\u0686\u06cc\u0646\u06cc +languages.kaj=\u062c\u0648 +languages.kam=\u06a9\u0627\u0645\u0628\u0627\u06cc\u06cc +languages.kar=\u06a9\u0627\u0631\u0646\u06cc +languages.kaw=\u06a9\u0627\u0648\u06cc +languages.kbd=\u06a9\u0627\u0628\u0627\u0631\u062f\u06cc\u0646\u06cc +languages.kcg=kcg +languages.kfo=\u06a9\u0648\u0631\u0648 +languages.kg=\u06a9\u0646\u06af\u0648\u06cc\u06cc +languages.kha=\u062e\u0627\u0632\u06cc\u0627\u06cc\u06cc +languages.khi=\u0632\u0628\u0627\u0646 \u062e\u0648\u0627\u0633\u06cc +languages.kho=\u062e\u062a\u0646\u06cc +languages.ki=\u06a9\u06cc\u06a9\u0648\u06cc\u0648\u06cc\u06cc +languages.kj=\u06a9\u0648\u0627\u0646\u06cc\u0627\u0645\u0627 +languages.kk=\u0642\u0632\u0627\u0642\u06cc +languages.kl=\u06af\u0631\u06cc\u0646\u0644\u0646\u062f\u06cc +languages.km=\u062e\u0645\u0631\u06cc languages.kmb=\u06a9\u06cc\u0645\u0628\u0648\u0646\u062f\u0648\u06cc\u06cc -languages.nr=\u0627\u0646\u062f\u0647\u200c\u0628\u0644\u0647\u200c\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc -languages.gmh=\u0622\u0644\u0645\u0627\u0646\u06cc \u0639\u0644\u06cc\u0627\u06cc \u0645\u06cc\u0627\u0646\u0647 -languages.no=\u0646\u0631\u0648\u0698\u06cc -languages.nn=\u0646\u0631\u0648\u0698\u06cc -languages.nl=\u0647\u0644\u0646\u062f\u06cc -languages.root=\u0631\u06cc\u0634\u0647 -languages.ng=\u0646\u062f\u0648\u0646\u06af\u0627\u06cc\u06cc -languages.sla=\u0632\u0628\u0627\u0646 \u0627\u0633\u0644\u0627\u0648\u06cc -languages.ne=\u0646\u067e\u0627\u0644\u06cc -languages.nd=\u0627\u0646\u062f\u0647\u200c\u0628\u0644\u0647\u200c\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc -languages.cmc=\u0632\u0628\u0627\u0646 \u0686\u0627\u0645\u06cc\u06a9 -languages.tet=\u062a\u062a\u0648\u0645\u06cc -languages.nb=\u0628\u0648\u06a9\u0633\u0645\u0627\u0644 \u0646\u0631\u0648\u0698\u06cc -languages.na=\u0646\u0627\u0626\u0648\u0631\u0648\u06cc\u06cc -languages.ter=\u062a\u0631\u0646\u0648 -languages.tem=\u062a\u06cc\u0645\u0646\u0647\u200c\u0627\u06cc -languages.my=\u0628\u0631\u0645\u0647\u200c\u0627\u06cc +languages.kn=\u06a9\u0627\u0646\u0627\u062f\u0647\u200c\u0627\u06cc +languages.ko=\u06a9\u0631\u0647\u200c\u0627\u06cc +languages.kok=\u06a9\u0646\u06a9\u0627\u0646\u06cc +languages.kos=kos +languages.kpe=\u06a9\u067e\u0644\u0647\u200c\u0627\u06cc +languages.kr=\u06a9\u0627\u0646\u0648\u0631\u06cc\u0627\u06cc\u06cc +languages.krc=\u0642\u0631\u0647\u200c\u0686\u0627\u06cc\u06cc\u2010\u0628\u0627\u0644\u06a9\u0627\u0631\u06cc +languages.krl=krl +languages.kro=\u06a9\u0631\u0648\u06cc\u06cc +languages.kru=\u06a9\u0648\u0631\u0648\u062e\u06cc +languages.ks=\u06a9\u0634\u0645\u06cc\u0631\u06cc +languages.ku=\u06a9\u0631\u062f\u06cc +languages.kum=\u06a9\u0648\u0645\u06cc\u06a9\u06cc +languages.kut=\u06a9\u0648\u062a\u0646\u06cc +languages.kv=\u06a9\u0648\u0645\u06cc\u0627\u06cc\u06cc +languages.kw=\u06a9\u0631\u0646\u0648\u0627\u0644\u06cc +languages.ky=\u0642\u0631\u0642\u06cc\u0632\u06cc +languages.la=\u0644\u0627\u062a\u06cc\u0646\u06cc +languages.lad=\u0644\u0627\u062f\u06cc\u0646\u0648 +languages.lah=\u0644\u0627\u0647\u0646\u062f\u0627 +languages.lam=\u0644\u0627\u0645\u0628\u0627 +languages.lb=\u0644\u0648\u06af\u0632\u0627\u0645\u0628\u0648\u0631\u06af\u06cc languages.lez=\u0644\u0632\u06af\u06cc -languages.mt=\u0645\u0627\u0644\u062a\u06cc -languages.frs=\u0641\u0631\u06cc\u0632\u06cc \u0634\u0631\u0642\u06cc -languages.peo=\u0641\u0627\u0631\u0633\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 -languages.ms=\u0645\u0627\u0644\u0632\u06cc\u0627\u06cc\u06cc -languages.frr=\u0641\u0631\u06cc\u0632\u06cc \u0634\u0645\u0627\u0644\u06cc -languages.mr=\u0645\u0631\u0627\u062a\u06cc -languages.fro=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 -languages.mo=\u0645\u0648\u0644\u062f\u0627\u0648\u06cc\u0627\u06cc\u06cc -languages.mn=\u0645\u063a\u0648\u0644\u06cc -languages.frm=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc \u0645\u06cc\u0627\u0646\u0647 -languages.ml=\u0645\u0627\u0644\u0627\u06cc\u0627\u0644\u0627\u0645\u06cc -languages.jrb=\u0639\u0631\u0628\u06cc \u06cc\u0647\u0648\u062f\u06cc -languages.mk=\u0645\u0642\u062f\u0648\u0646\u06cc -languages.mi=\u0645\u0627\u0626\u0648\u0631\u06cc\u0627\u06cc\u06cc -languages.mh=\u0645\u0627\u0631\u0634\u0627\u0644\u06cc +languages.lg=\u06af\u0627\u0646\u062f\u0627\u06cc\u06cc +languages.li=\u0644\u06cc\u0645\u0628\u0648\u0631\u06af\u06cc +languages.ln=\u0644\u06cc\u0646\u06af\u0627\u0644\u0627 +languages.lo=\u0644\u0627\u0626\u0648\u0633\u06cc +languages.lol=\u0645\u0648\u0646\u06af\u0648\u06cc\u06cc +languages.loz=\u0644\u0648\u0632\u06cc\u0627\u06cc\u06cc +languages.lt=\u0644\u06cc\u062a\u0648\u0627\u0646\u06cc\u0627\u06cc\u06cc +languages.lu=\u0644\u0648\u0628\u0627\u06cc\u06cc\u2010\u06a9\u0627\u062a\u0627\u0646\u06af\u0627 +languages.lua=\u0644\u0648\u0628\u0627\u06cc\u06cc\u2010\u0644\u0648\u0644\u0648\u0627 +languages.lui=\u0644\u0648\u06cc\u0633\u0646\u0648 +languages.lun=\u0644\u0648\u0646\u062f\u0627\u06cc\u06cc +languages.luo=\u0644\u0648\u0626\u0648\u06cc\u06cc +languages.lus=\u0644\u0648\u0634\u0647\u200c\u0627\u06cc +languages.lv=\u0644\u062a\u0648\u0646\u06cc\u0627\u06cc\u06cc +languages.mad=\u0645\u0627\u062f\u0648\u0631\u0627\u06cc\u06cc +languages.mag=\u0645\u0627\u06af\u0627\u0647\u06cc\u0627\u06cc\u06cc +languages.mai=\u0645\u0627\u06cc\u062f\u06cc\u0644\u06cc +languages.mak=\u0645\u0627\u06a9\u0627\u0633\u0627\u0631 +languages.man=\u0645\u0627\u0646\u062f\u06cc\u0646\u06af\u0648\u06cc\u06cc +languages.map=\u0622\u0633\u062a\u0631\u0648\u0646\u06cc\u0632\u06cc\u0627\u06cc\u06cc +languages.mas=\u0645\u0627\u0633\u0627\u06cc\u06cc +languages.mdf=\u0645\u06a9\u0634\u0627\u06cc\u06cc +languages.mdr=\u0645\u0627\u0646\u062f\u0627\u0631 +languages.men=\u0645\u0646\u062f\u0647\u200c\u0627\u06cc languages.mg=\u0645\u0627\u0644\u0627\u06af\u0627\u0633\u06cc\u0627\u06cc\u06cc -languages.nqo=\u0627\u0646 \u06a9\u0648 +languages.mga=\u0627\u06cc\u0631\u0644\u0646\u062f\u06cc \u0645\u06cc\u0627\u0646\u0647 +languages.mh=\u0645\u0627\u0631\u0634\u0627\u0644\u06cc +languages.mi=\u0645\u0627\u0626\u0648\u0631\u06cc\u0627\u06cc\u06cc +languages.mic=\u0645\u06cc\u06a9\u0645\u0627\u06a9\u06cc +languages.min=\u0645\u06cc\u0646\u0627\u0646\u06af\u200c\u06a9\u0627\u0628\u0648\u06cc\u06cc +languages.mis=\u0632\u0628\u0627\u0646 \u0645\u062a\u0641\u0631\u0642\u0647 +languages.mk=\u0645\u0642\u062f\u0648\u0646\u06cc +languages.mkh=\u0632\u0628\u0627\u0646 \u0645\u0648\u0646\u200c\u062e\u0645\u0631\u06cc +languages.ml=\u0645\u0627\u0644\u0627\u06cc\u0627\u0644\u0627\u0645\u06cc +languages.mn=\u0645\u063a\u0648\u0644\u06cc +languages.mnc=\u0645\u0627\u0646\u0686\u0648\u06cc\u06cc +languages.mni=\u0645\u0627\u0646\u06cc\u067e\u0648\u0631\u06cc +languages.mno=\u0632\u0628\u0627\u0646 \u0645\u0627\u0646\u0648\u0628\u0648 +languages.mo=\u0645\u0648\u0644\u062f\u0627\u0648\u06cc\u0627\u06cc\u06cc +languages.moh=\u0645\u0648\u0647\u0627\u06a9\u06cc +languages.mos=\u0645\u0627\u0633\u06cc\u0627\u06cc\u06cc +languages.mr=\u0645\u0631\u0627\u062a\u06cc +languages.ms=\u0645\u0627\u0644\u0632\u06cc\u0627\u06cc\u06cc +languages.mt=\u0645\u0627\u0644\u062a\u06cc +languages.mul=\u0686\u0646\u062f\u06cc\u0646 \u0632\u0628\u0627\u0646 +languages.mun=\u0632\u0628\u0627\u0646 \u0645\u0648\u0646\u062f\u0627\u06cc\u06cc +languages.mus=\u06a9\u0631\u06cc\u06a9\u06cc +languages.mwl=mwl languages.mwr=\u0645\u0627\u0631\u0648\u0627\u0631\u06cc -languages.bra=\u0628\u0631\u0627\u062c -languages.mwl=\u0645\u06cc\u0631\u0627\u0646\u062f\u0633\u06cc -languages.den=\u0628\u0631\u062f\u0647 -languages.lv=\u0644\u062a\u0648\u0646\u06cc\u0627\u06cc\u06cc -languages.lu=\u0644\u0648\u0628\u0627\u06cc\u06cc\u2010\u06a9\u0627\u062a\u0627\u0646\u06af\u0627 -languages.del=\u062f\u0644\u0627\u0648\u0627\u0631\u06cc -languages.lt=\u0644\u06cc\u062a\u0648\u0627\u0646\u06cc\u0627\u06cc\u06cc -languages.lo=\u0644\u0627\u0626\u0648\u0633\u06cc -languages.ln=\u0644\u06cc\u0646\u06af\u0627\u0644\u0627 -languages.li=\u0644\u06cc\u0645\u0628\u0648\u0631\u06af\u06cc -languages.ewo=\u0627\u0648\u0627\u0646\u062f\u0648 -languages.lg=\u06af\u0627\u0646\u062f\u0627\u06cc\u06cc -languages.lb=\u0644\u0648\u06af\u0632\u0627\u0645\u0628\u0648\u0631\u06af\u06cc -languages.la=\u0644\u0627\u062a\u06cc\u0646 -languages.jpr=\u0641\u0627\u0631\u0633\u06cc \u06cc\u0647\u0648\u062f\u06cc -languages.vot=\u0648\u062a\u06cc\u06a9 -languages.sit=\u0632\u0628\u0627\u0646 \u0686\u06cc\u0646 \u0648 \u062a\u0628\u062a\u06cc -languages.ky=\u0642\u0631\u0642\u06cc\u0632\u06cc -languages.kw=\u06a9\u0631\u0646\u0648\u0627\u0644\u06cc -languages.kv=\u06a9\u0648\u0645\u06cc\u0627\u06cc\u06cc -languages.ku=\u06a9\u0631\u062f\u06cc -languages.sio=\u0632\u0628\u0627\u0646 \u0633\u0648\u06cc\u06cc -languages.ks=\u06a9\u0634\u0645\u06cc\u0631\u06cc -languages.kr=\u06a9\u0627\u0646\u0648\u0631\u06cc\u0627\u06cc\u06cc -languages.awa=\u0622\u0648\u0627\u0647\u06cc -languages.ko=\u06a9\u0631\u0647\u200c\u0627\u06cc -languages.kn=\u06a9\u0627\u0646\u0627\u062f\u0647\u200c\u0627\u06cc -languages.km=\u062e\u0645\u0631\u06cc -languages.en_GB=\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 -languages.kl=\u06af\u0631\u06cc\u0646\u0644\u0646\u062f\u06cc -languages.kk=\u0642\u0632\u0627\u0642\u06cc -languages.rom=\u0631\u0648\u0645\u0627\u0646\u0648\u06cc\u06cc -languages.kj=\u06a9\u0648\u0627\u0646\u06cc\u0627\u0645\u0627 -languages.sid=\u0633\u06cc\u062f\u0627\u0645\u0648\u06cc\u06cc -languages.ki=\u06a9\u06cc\u06a9\u0648\u06cc\u0648\u06cc\u06cc -languages.kg=\u06a9\u0646\u06af\u0648\u06cc\u06cc +languages.my=\u0628\u0631\u0645\u0647\u200c\u0627\u06cc +languages.myn=\u0632\u0628\u0627\u0646 \u0645\u0627\u06cc\u0627\u06cc\u06cc +languages.myv=\u0627\u0631\u0632\u06cc\u0627\u06cc\u06cc +languages.na=\u0646\u0627\u0626\u0648\u0631\u0648\u06cc\u06cc +languages.nah=\u0646\u0627\u0648\u0627\u062a\u0644\u06cc +languages.nai=\u0632\u0628\u0627\u0646 \u0633\u0631\u062e\u067e\u0648\u0633\u062a\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc +languages.nap=\u0646\u0627\u067e\u0644\u06cc +languages.nb=\u0628\u0648\u06a9\u0633\u0645\u0627\u0644 \u0646\u0631\u0648\u0698\u06cc +languages.nd=\u0627\u0646\u062f\u0647\u200c\u0628\u0644\u0647\u200c\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc +languages.nds=\u0622\u0644\u0645\u0627\u0646\u06cc \u0633\u0641\u0644\u06cc +languages.ne=\u0646\u067e\u0627\u0644\u06cc +languages.new=\u0646\u0648\u0627\u0631\u06cc\u0627\u06cc\u06cc +languages.ng=\u0646\u062f\u0648\u0646\u06af\u0627\u06cc\u06cc +languages.nia=\u0646\u06cc\u0627\u0633 +languages.nic=nic +languages.niu=\u0646\u06cc\u0648\u06cc\u06cc +languages.nl=\u0647\u0644\u0646\u062f\u06cc +languages.nl_BE=\u0647\u0644\u0646\u062f\u06cc \u0628\u0644\u0698\u06cc\u06a9 +languages.nn=\u0646\u0631\u0633 \u062c\u062f\u06cc\u062f \u0646\u0631\u0648\u0698\u06cc +languages.no=\u0646\u0631\u0648\u0698\u06cc +languages.nog=\u0646\u063a\u0627\u06cc\u06cc languages.non=\u0646\u0631\u0633 \u0628\u0627\u0633\u062a\u0627\u0646 -languages.ka=\u06af\u0631\u062c\u06cc -languages.mus=\u06a9\u0631\u06cc\u06a9\u06cc +languages.nqo=nqo +languages.nr=\u0627\u0646\u062f\u0647\u200c\u0628\u0644\u0647\u200c\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc +languages.nso=\u0633\u0648\u062a\u0648\u06cc\u06cc \u0634\u0645\u0627\u0644\u06cc +languages.nub=\u0632\u0628\u0627\u0646 \u0646\u0648\u0628\u06cc\u0627\u06cc\u06cc +languages.nv=\u0646\u0627\u0648\u0627\u0647\u0648\u06cc\u06cc +languages.nwc=\u0646\u0648\u0627\u0631\u06cc\u0627\u06cc\u06cc \u06a9\u0644\u0627\u0633\u06cc\u06a9 +languages.ny=\u0646\u06cc\u0627\u0646\u062c\u0627\u06cc\u06cc +languages.nym=nym +languages.nyn=\u0646\u06cc\u0627\u0646\u06a9\u0648\u0644\u0647\u200c\u0627\u06cc +languages.nyo=\u0646\u06cc\u0648\u0631\u0648\u06cc\u06cc +languages.nzi=\u0646\u0632\u06cc\u0645\u0627\u06cc\u06cc +languages.oc=\u0627\u0648\u06a9\u06cc\u062a\u0627\u06cc\u06cc +languages.oj=\u0627\u0648\u062c\u06cc\u0628\u0648\u0627\u06cc\u06cc +languages.om=\u0627\u0648\u0631\u0648\u0645\u0648\u06cc\u06cc +languages.or=\u0627\u0648\u0631\u06cc\u0647\u200c\u0627\u06cc +languages.os=\u0622\u0633\u06cc +languages.osa=\u0627\u0648\u0633\u06cc\u062c\u06cc +languages.ota=\u062a\u0631\u06a9\u06cc \u0639\u062b\u0645\u0627\u0646\u06cc +languages.oto=\u0632\u0628\u0627\u0646 \u0627\u062a\u0648\u0645\u06cc\u0627\u06cc\u06cc +languages.pa=\u067e\u0646\u062c\u0627\u0628\u06cc +languages.paa=\u0632\u0628\u0627\u0646 \u067e\u0627\u067e\u0648\u0627\u06cc\u06cc +languages.pag=\u067e\u0627\u0646\u06af\u0627\u0633\u06cc\u0646\u0627\u0646\u06cc +languages.pal=\u067e\u0647\u0644\u0648\u06cc +languages.pam=\u067e\u0627\u0645\u067e\u0627\u0646\u06af\u0627\u06cc\u06cc +languages.pap=\u067e\u0627\u067e\u06cc\u0627\u0645\u0646\u062a\u0648 +languages.pau=\u067e\u0627\u0644\u0627\u0626\u0648\u06cc\u06cc +languages.peo=\u0641\u0627\u0631\u0633\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 +languages.phi=\u0632\u0628\u0627\u0646 \u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646\u06cc +languages.phn=\u0641\u0646\u06cc\u0642\u06cc +languages.pi=\u067e\u0627\u0644\u06cc +languages.pl=\u0644\u0647\u0633\u062a\u0627\u0646\u06cc +languages.pon=pon +languages.pra=\u0632\u0628\u0627\u0646 \u067e\u0631\u0627\u06a9\u0631\u06cc\u062a\u06cc +languages.pro=pro +languages.ps=\u067e\u0634\u062a\u0648 +languages.pt=\u067e\u0631\u062a\u063a\u0627\u0644\u06cc +languages.pt_BR=\u067e\u0631\u062a\u063a\u0627\u0644\u06cc \u0628\u0631\u0632\u06cc\u0644 +languages.pt_PT=\u067e\u0631\u062a\u063a\u0627\u0644\u06cc \u067e\u0631\u062a\u063a\u0627\u0644 +languages.qu=\u06a9\u0686\u0648\u0627\u06cc\u06cc +languages.raj=\u0631\u0627\u062c\u0633\u062a\u0627\u0646\u06cc +languages.rap=\u0631\u0627\u067e\u0627\u0646\u0648\u06cc\u06cc +languages.rar=\u0631\u0627\u0631\u0648\u062a\u0648\u0646\u06af\u0627\u06cc\u06cc +languages.rm=\u0631\u062a\u0648\u2010\u0631\u0648\u0645\u06cc\u0627\u06cc\u06cc +languages.rn=\u0631\u0648\u0646\u062f\u06cc\u0627\u06cc\u06cc +languages.ro=\u0631\u0648\u0645\u0627\u0646\u06cc\u0627\u06cc\u06cc languages.roa=\u0632\u0628\u0627\u0646 \u0631\u0648\u0645\u06cc\u0627\u06cc\u06cc -languages.nog=\u0646\u063a\u0627\u06cc\u06cc -languages.mun=\u0632\u0628\u0627\u0646 \u0645\u0648\u0646\u062f\u0627\u06cc\u06cc -languages.mul=\u0686\u0646\u062f\u06cc\u0646 \u0632\u0628\u0627\u0646 -languages.jv=\u062c\u0627\u0648\u0647\u200c\u0627\u06cc -languages.gil=\u06af\u06cc\u0644\u0628\u0631\u062a\u06cc -languages.znd=\u0632\u0627\u0646\u062f\u0647\u200c\u0627\u06cc +languages.rom=\u0631\u0648\u0645\u0627\u0646\u0648\u06cc\u06cc +languages.root=\u0631\u06cc\u0634\u0647 +languages.ru=\u0631\u0648\u0633\u06cc +languages.rup=rup +languages.rw=\u06a9\u06cc\u0646\u06cc\u0627\u0631\u0648\u0627\u0646\u062f\u0627\u06cc\u06cc +languages.sa=\u0633\u0646\u0633\u06a9\u0631\u06cc\u062a +languages.sad=\u0633\u0627\u0646\u062f\u0627\u0648\u0647\u200c\u0627\u06cc +languages.sah=\u06cc\u0627\u0642\u0648\u062a\u06cc +languages.sai=\u0632\u0628\u0627\u0646 \u0633\u0631\u062e\u067e\u0648\u0633\u062a\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc +languages.sal=\u0632\u0628\u0627\u0646 \u0633\u0627\u0644\u06cc\u0634\u06cc +languages.sam=sam +languages.sas=\u0633\u0627\u0633\u0627\u06a9 +languages.sat=\u0633\u0627\u0646\u062a\u0627\u0644\u06cc +languages.sc=\u0633\u0627\u0631\u062f\u06cc\u0646\u06cc\u0627\u06cc\u06cc +languages.scn=\u0633\u06cc\u0633\u06cc\u0644\u06cc +languages.sco=\u0627\u0633\u06a9\u0627\u062a\u0644\u0646\u062f\u06cc +languages.sd=\u0633\u0646\u062f\u06cc +languages.se=\u0633\u0627\u0645\u06cc \u0634\u0645\u0627\u0644\u06cc +languages.sel=\u0633\u0644\u06a9\u0648\u067e\u06cc +languages.sem=\u0632\u0628\u0627\u0646 \u0633\u0627\u0645\u06cc +languages.sg=\u0633\u0627\u0646\u06af\u0648\u06cc\u06cc +languages.sga=\u0627\u06cc\u0631\u0644\u0646\u062f\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 +languages.sgn=\u0632\u0628\u0627\u0646 \u0646\u0634\u0627\u0646\u0647\u200c\u0627\u06cc +languages.sh=\u0635\u0631\u0628 \u0648 \u06a9\u0631\u0648\u0627\u062a\u06cc languages.shn=\u0634\u0627\u0646\u06cc -languages.fon=\u0641\u0648\u0646\u06cc -languages.xal=\u0642\u0644\u0645\u0648\u0642\u06cc -languages.aus=\u0632\u0628\u0627\u0646 \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u06cc\u06cc -languages.kho=\u062e\u062a\u0646\u06cc -languages.ja=\u0698\u0627\u067e\u0646\u06cc -languages.khi=\u0632\u0628\u0627\u0646 \u062e\u0648\u0627\u0633\u06cc -languages.pau=\u067e\u0627\u0644\u0627\u0626\u0648\u06cc\u06cc -languages.chy=\u0634\u0627\u06cc\u0627\u0646\u06cc +languages.si=\u0633\u06cc\u0646\u0647\u0627\u0644\u06cc +languages.sid=\u0633\u06cc\u062f\u0627\u0645\u0648\u06cc\u06cc +languages.sio=\u0632\u0628\u0627\u0646 \u0633\u0648\u06cc\u06cc +languages.sit=\u0632\u0628\u0627\u0646 \u0686\u06cc\u0646 \u0648 \u062a\u0628\u062a\u06cc +languages.sk=\u0627\u0633\u0644\u0648\u0627\u06a9\u06cc +languages.sl=\u0627\u0633\u0644\u0648\u0648\u06cc\u0646\u06cc\u0627\u06cc\u06cc +languages.sla=\u0632\u0628\u0627\u0646 \u0627\u0633\u0644\u0627\u0648\u06cc +languages.sm=\u0633\u0627\u0645\u0648\u0622\u06cc\u06cc +languages.sma=\u0633\u0627\u0645\u06cc \u062c\u0646\u0648\u0628\u06cc +languages.smi=smi +languages.smj=\u0633\u0627\u0645\u06cc \u0644\u0648\u0644 +languages.smn=\u0633\u0627\u0645\u06cc \u0627\u06cc\u0646\u0627\u0631\u06cc +languages.sms=\u0633\u0627\u0645\u06cc \u0627\u0633\u06a9\u0627\u0644\u062a +languages.sn=\u0634\u0648\u0646\u0627\u06cc\u06cc +languages.snk=\u0633\u0648\u0646\u06cc\u0646\u06a9\u0647\u200c\u0627\u06cc +languages.so=\u0633\u0648\u0645\u0627\u0644\u06cc\u0627\u06cc\u06cc +languages.sog=\u0633\u063a\u062f\u06cc +languages.son=\u0633\u0648\u0646\u063a\u0627\u06cc\u06cc +languages.sq=\u0622\u0644\u0628\u0627\u0646\u06cc\u0627\u06cc\u06cc +languages.sr=\u0635\u0631\u0628\u06cc +languages.srr=\u0633\u0631\u06cc\u0631\u06cc +languages.ss=ss +languages.ssa=\u0632\u0628\u0627\u0646 \u0646\u06cc\u0644\u06cc \u0648 \u0635\u062d\u0631\u0627\u06cc\u06cc +languages.st=\u0633\u0648\u062a\u0648\u06cc\u06cc \u062c\u0646\u0648\u0628\u06cc +languages.su=\u0633\u0648\u0646\u062f\u0627\u06cc\u06cc +languages.suk=\u0633\u0648\u06a9\u0648\u0645\u0627\u06cc\u06cc +languages.sus=\u0633\u0648\u0633\u0648\u06cc\u06cc +languages.sux=\u0633\u0648\u0645\u0631\u06cc +languages.sv=\u0633\u0648\u0626\u062f\u06cc +languages.sw=\u0633\u0648\u0627\u062d\u0644\u06cc +languages.syc=\u0633\u0631\u06cc\u0627\u0646\u06cc \u06a9\u0644\u0627\u0633\u06cc\u06a9 +languages.syr=\u0633\u0631\u06cc\u0627\u0646\u06cc +languages.ta=\u062a\u0627\u0645\u06cc\u0644\u06cc languages.tai=\u0632\u0628\u0627\u0646 \u062a\u0627\u06cc\u06cc -languages.iu=\u0627\u06cc\u0646\u0648\u06a9\u062a\u06cc\u062a\u0648\u062a -languages.pap=\u067e\u0627\u067e\u06cc\u0627\u0645\u0646\u062a\u0648 -languages.it=\u0627\u06cc\u062a\u0627\u0644\u06cc\u0627\u06cc\u06cc -languages.sgn=\u0632\u0628\u0627\u0646 \u0646\u0634\u0627\u0646\u0647\u200c\u0627\u06cc -languages.is=\u0627\u06cc\u0633\u0644\u0646\u062f\u06cc -languages.kha=\u062e\u0627\u0632\u06cc\u0627\u06cc\u06cc -languages.chr=\u0686\u0631\u0648\u06a9\u06cc\u0627\u06cc\u06cc -languages.pam=\u067e\u0627\u0645\u067e\u0627\u0646\u06af\u0627\u06cc\u06cc -languages.pal=\u067e\u0647\u0644\u0648\u06cc -languages.chp=\u0686\u06cc\u067e\u0647\u200c\u0648\u06cc\u0647\u200c\u0627\u06cc -languages.io=\u0627\u06cc\u062f\u0648 -languages.cho=\u0686\u0648\u06a9\u062a\u0648\u06cc\u06cc -languages.chn=\u0644\u0647\u062c\u0647 \u0686\u06cc\u0646\u0648\u06a9 -languages.chm=\u0645\u0627\u0631\u06cc\u0627\u06cc\u06cc +languages.te=\u062a\u0644\u0648\u06af\u0648\u06cc\u06cc +languages.tem=\u062a\u06cc\u0645\u0646\u0647\u200c\u0627\u06cc +languages.ter=\u062a\u0631\u0646\u0648 +languages.tet=\u062a\u062a\u0648\u0645\u06cc +languages.tg=\u062a\u0627\u062c\u06cc\u06a9\u06cc +languages.th=\u062a\u0627\u06cc\u0644\u0646\u062f\u06cc +languages.ti=\u062a\u06cc\u06af\u0631\u06cc\u0646\u06cc\u0627\u06cc\u06cc +languages.tig=\u062a\u06cc\u06af\u0631\u0647\u200c\u0627\u06cc +languages.tiv=\u062a\u06cc\u0648\u06cc +languages.tk=\u062a\u0631\u06a9\u0645\u0646\u06cc +languages.tkl=\u062a\u0648\u06a9\u0644\u0648\u06cc +languages.tl=\u062a\u0627\u06af\u0627\u0644\u0648\u06af\u06cc +languages.tlh=\u06a9\u0644\u06cc\u0646\u06af\u0648\u0646 +languages.tli=\u062a\u0644\u06cc\u0646\u200c\u06af\u06cc\u062a\u06cc +languages.tmh=\u062a\u0627\u0645\u0627\u0634\u0642\u06cc +languages.tn=\u062a\u0633\u0648\u0627\u0646\u0627\u06cc\u06cc +languages.to=\u062a\u0648\u0646\u06af\u0627\u06cc\u06cc +languages.tog=\u062a\u0648\u0646\u06af\u0627\u06cc\u06cc \u0646\u06cc\u0627\u0633\u0627 +languages.tpi=tpi +languages.tr=\u062a\u0631\u06a9\u06cc \u0627\u0633\u062a\u0627\u0646\u0628\u0648\u0644\u06cc +languages.ts=\u062a\u0633\u0648\u0646\u06af\u0627\u06cc\u06cc +languages.tsi=\u062a\u0633\u06cc\u0645\u200c\u0634\u06cc\u0627\u0646\u06cc +languages.tt=\u062a\u0627\u062a\u0627\u0631\u06cc +languages.tum=\u062a\u0648\u0645\u0628\u0648\u06a9\u0627\u06cc\u06cc +languages.tup=\u0632\u0628\u0627\u0646 \u062a\u0648\u067e\u06cc\u0627\u06cc\u06cc +languages.tut=\u0632\u0628\u0627\u0646 \u0622\u0644\u062a\u0627\u06cc\u06cc\u06a9 +languages.tvl=\u062a\u0648\u0648\u0627\u0644\u0648\u06cc\u06cc +languages.tw=\u062a\u0648\u06cc\u200c\u06cc\u0627\u06cc\u06cc +languages.ty=\u062a\u0627\u0647\u06cc\u062a\u06cc\u0627\u06cc\u06cc languages.tyv=\u062a\u0648\u0648\u0627\u06cc\u06cc -languages.bnt=\u0628\u0627\u0646\u062a\u0648\u06cc\u06cc -languages.pag=\u067e\u0627\u0646\u06af\u0627\u0633\u06cc\u0646\u0627\u0646\u06cc -languages.ik=\u0627\u06cc\u0646\u0648\u067e\u06cc\u06a9 -languages.chk=\u0686\u0648\u06a9\u0632\u06cc -languages.ii=\u06cc\u06cc \u0633\u06cc\u0686\u0648\u0627\u0646 -languages.haw=\u0647\u0627\u0648\u0627\u0626\u06cc -languages.lam=\u0644\u0627\u0645\u0628\u0627 -languages.ig=\u0627\u06cc\u06af\u0628\u0648\u06cc\u06cc -languages.chg=\u0686\u0627\u06af\u0627\u062a\u0627\u06cc\u06cc -languages.sga=\u0627\u06cc\u0631\u0644\u0646\u062f\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 -languages.paa=\u0632\u0628\u0627\u0646 \u067e\u0627\u067e\u0648\u0627\u06cc\u06cc -languages.ie=\u0628\u06cc\u0646 \u0632\u0628\u0627\u0646\u06cc -languages.id=\u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u0627\u06cc\u06cc -languages.lah=\u0644\u0627\u0647\u0646\u062f\u0627 -languages.day=\u062f\u0627\u06cc\u0627\u06a9 -languages.chb=\u0686\u06cc\u0628\u0686\u0627 -languages.ia=\u0645\u06cc\u0627\u0646\u200c\u0632\u0628\u0627\u0646 -languages.lad=\u0644\u0627\u062f\u06cc\u0646\u0648 -languages.hz=\u0647\u0631\u06cc\u0631\u0648\u06cc\u06cc -languages.hai=\u0647\u0627\u06cc\u062f\u0627\u06cc\u06cc -languages.dar=\u062f\u0627\u0631\u06af\u0648\u0627 -languages.hy=\u0627\u0631\u0645\u0646\u06cc -languages.ath=\u0632\u0628\u0627\u0646 \u0622\u062a\u0627\u067e\u0627\u0633\u06a9\u0627\u06cc\u06cc -languages.hu=\u0645\u062c\u0627\u0631\u06cc -languages.ht=\u0647\u0627\u0626\u06cc\u062a\u06cc\u0627\u06cc\u06cc -languages.dak=\u062f\u0627\u06a9\u0648\u062a\u0627\u06cc\u06cc -languages.hr=\u06a9\u0631\u0648\u0627\u062a\u06cc -languages.ho=\u0647\u06cc\u0631\u06cc \u0645\u0648\u062a\u0648 -languages.hi=\u0647\u0646\u062f\u06cc -languages.dyu=\u062f\u0627\u06cc\u0648\u0644\u0627\u06cc\u06cc -languages.he=\u0639\u0628\u0631\u06cc -languages.ast=\u0622\u0633\u062a\u0648\u0631\u06cc\u0646 -languages.kfo=\u06a9\u0648\u0631\u0648 -languages.ha=\u0647\u0648\u0633\u06cc\u0627\u06cc\u06cc +languages.udm=\u0627\u0648\u062f\u0645\u0648\u0631\u062a\u06cc +languages.ug=\u0627\u0648\u06cc\u063a\u0648\u0631\u06cc +languages.uga=\u0627\u0648\u06af\u0627\u0631\u06cc\u062a\u06cc +languages.uk=\u0627\u0648\u06a9\u0631\u0627\u06cc\u0646\u06cc +languages.umb=\u0627\u0645\u0628\u0646\u062f\u0648\u06cc\u06cc +languages.und=\u0632\u0628\u0627\u0646 \u0646\u0627\u0645\u0634\u062e\u0635 \u06cc\u0627 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 +languages.ur=\u0627\u0631\u062f\u0648 +languages.uz=\u0627\u0632\u0628\u06a9\u06cc +languages.vai=\u0648\u06cc\u0627\u06cc\u06cc +languages.ve=\u0648\u0646\u062f\u0627\u06cc\u06cc +languages.vi=\u0648\u06cc\u062a\u0646\u0627\u0645\u06cc +languages.vo=\u0648\u0644\u0627\u067e\u0648\u06a9 +languages.vot=\u0648\u062a\u06cc\u06a9 +languages.wa=\u0648\u0627\u0644\u0648\u0646\u06cc +languages.wak=\u0632\u0628\u0627\u0646 \u0648\u0627\u06a9\u0627\u0634\u06cc +languages.wal=\u0648\u0627\u0644\u0627\u0645\u0648 +languages.war=\u0648\u0627\u0631\u0627\u06cc\u06cc +languages.was=\u0648\u0627\u0634\u0648\u06cc\u06cc languages.wen=\u0632\u0628\u0627\u0646 \u0635\u064f\u0631\u0628\u06cc -languages.gv=\u0645\u0627\u0646\u06cc -languages.gu=\u06af\u062c\u0631\u0627\u062a\u06cc -languages.sem=\u0632\u0628\u0627\u0646 \u0633\u0627\u0645\u06cc -languages.sel=\u0633\u0644\u06a9\u0648\u067e\u06cc -languages.iro=\u0632\u0628\u0627\u0646 \u0627\u06cc\u0631\u0648\u06a9\u0648\u0627\u06cc\u06cc -languages.gn=\u0632\u0628\u0627\u0646 \u06af\u0631\u0627\u062a\u06cc-\u0632\u0628\u0627\u0646 \u0633\u0631\u062e\u067e\u0648\u0633\u062a\u0627\u0646 \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc -languages.gl=\u06af\u0627 \u0644\u064a\u06a9\u064a\u0627\u0626\u06cc -languages.en_CA=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u06a9\u0627\u0646\u0627\u062f\u0627 -languages.arw=\u0622\u0631\u0627\u0648\u0627\u06a9\u06cc -languages.gez=\u06af\u06cc\u200c\u0626\u0632\u06cc -languages.art=\u0632\u0628\u0627\u0646 \u0633\u0627\u062e\u062a\u06af\u06cc -languages.gd=\u06af\u06cc\u0644\u06cc \u0627\u0633\u06a9\u0627\u062a\u0644\u0646\u062f\u06cc -languages.ira=\u0632\u0628\u0627\u0646 \u0627\u06cc\u0631\u0627\u0646\u06cc -languages.ga=\u0627\u06cc\u0631\u0644\u0646\u062f\u06cc -languages.arp=\u0622\u0631\u0627\u067e\u0627\u0647\u0648\u06cc\u06cc -languages.arn=\u0622\u0631\u0648\u06a9\u0627\u0646\u06cc\u0627\u06cc\u06cc -languages.fy=\u0641\u0631\u06cc\u0632\u06cc \u063a\u0631\u0628\u06cc -languages.bla=\u0633\u06cc\u06a9 \u0633\u06cc\u06a9\u0627\u06cc\u06cc -languages.gem=\u0632\u0628\u0627\u0646 \u0698\u0631\u0645\u0646\u06cc +languages.wo=\u0648\u0644\u0648\u0641\u06cc +languages.xal=\u0642\u0644\u0645\u0648\u0642\u06cc +languages.xh=\u062e\u0648\u0633\u0627\u06cc\u06cc +languages.yao=\u06cc\u0627\u0626\u0648\u06cc\u06cc +languages.yap=\u06cc\u0627\u067e\u06cc +languages.yi=\u06cc\u062f\u06cc +languages.yo=\u06cc\u0648\u0631\u0648\u0628\u0627\u06cc\u06cc languages.ypk=\u0632\u0628\u0627\u0646 \u06cc\u0648\u067e\u06cc\u06a9\u06cc -languages.arc=\u0622\u0631\u0627\u0645\u06cc -languages.fr=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc -languages.fo=\u0641\u0627\u0631\u0648\u06cc\u06cc -languages.cel=\u0632\u0628\u0627\u0646 \u0633\u0644\u062a\u06cc -languages.fj=\u0641\u06cc\u062c\u06cc\u0627\u06cc\u06cc -languages.fi=\u0641\u0646\u0644\u0627\u0646\u062f\u06cc -languages.ff=\u0641\u0648\u0644\u0627\u06cc\u06cc -languages.tvl=\u062a\u0648\u0648\u0627\u0644\u0648\u06cc\u06cc -languages.ceb=\u0633\u0628\u0648\u06cc\u06cc -languages.fa=\u0641\u0627\u0631\u0633\u06cc -languages.en_AU=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 +languages.za=\u0686\u0648\u0627\u0646\u06af\u06cc +languages.zap=\u0632\u0627\u067e\u0648\u062a\u06a9\u06cc +languages.zbl=zbl +languages.zen=\u0632\u0646\u0627\u06af\u0627 +languages.zh=\u0686\u06cc\u0646\u06cc languages.zh_Hans=\u0686\u06cc\u0646\u06cc \u0633\u0627\u062f\u0647\u200c\u0634\u062f\u0647 languages.zh_Hant=\u0686\u06cc\u0646\u06cc \u0633\u0646\u062a\u06cc -languages.eu=\u0628\u0627\u0633\u06a9\u06cc -languages.sco=\u0627\u0633\u06a9\u0627\u062a\u0644\u0646\u062f\u06cc -languages.et=\u0627\u0633\u062a\u0648\u0646\u06cc\u0627\u06cc\u06cc -languages.scn=\u0633\u06cc\u0633\u06cc\u0644\u06cc -languages.es=\u0627\u0633\u067e\u0627\u0646\u06cc\u0627\u06cc\u06cc -languages.eo=\u0627\u0633\u067e\u0631\u0627\u0646\u062a\u0648 -languages.en=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc -languages.el=\u06cc\u0648\u0646\u0627\u0646\u06cc -languages.tut=\u0632\u0628\u0627\u0646 \u0622\u0644\u062a\u0627\u06cc\u06cc\u06a9 -languages.niu=\u0646\u06cc\u0648\u06cc\u06cc -languages.tup=\u0632\u0628\u0627\u0646 \u062a\u0648\u067e\u06cc\u0627\u06cc\u06cc -languages.ee=\u0627\u0648\u0647\u200c\u0627\u06cc -languages.tum=\u062a\u0648\u0645\u0628\u0648\u06a9\u0627\u06cc\u06cc -languages.nl_BE=\u0647\u0644\u0646\u062f\u06cc \u0628\u0644\u0698\u06cc\u06a9 -languages.es_419=\u0627\u0633\u067e\u0627\u0646\u06cc\u0627\u06cc\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0644\u0627\u062a\u06cc\u0646 -languages.mos=\u0645\u0627\u0633\u06cc\u0627\u06cc\u06cc -languages.dz=\u062c\u0648\u0646\u062e\u0627\u06cc\u06cc -languages.kcg=\u062a\u0627\u06cc\u067e\u0647 -languages.nic=\u0632\u0628\u0627\u0646 \u0646\u06cc\u062c\u0631\u06cc\u0627\u06cc\u06cc-\u06a9\u0648\u0631\u062f\u0648\u0641\u0627\u0646\u06cc -languages.lus=\u0644\u0648\u0634\u0647\u200c\u0627\u06cc -languages.fiu=\u0632\u0628\u0627\u0646 \u0641\u06cc\u0646 \u0648 \u0627\u0648\u06af\u0631\u0627\u06cc\u06cc -languages.dv=\u062f\u0627\u06cc\u0648\u0647\u06cc -languages.nia=\u0646\u06cc\u0627\u0633 -languages.moh=\u0645\u0648\u0647\u0627\u06a9\u06cc -languages.luo=\u0644\u0648\u0626\u0648\u06cc\u06cc -languages.lun=\u0644\u0648\u0646\u062f\u0627\u06cc\u06cc -languages.apa=\u0632\u0628\u0627\u0646 \u0622\u067e\u0627\u0686\u06cc\u0627\u06cc\u06cc -languages.fil=\u0641\u06cc\u0644\u06cc\u067e\u06cc\u0646\u06cc -languages.lui=\u0644\u0648\u06cc\u0633\u0646\u0648 -languages.hup=\u0647\u0648\u067e\u0627 -languages.cch=\u0622\u062a\u0633\u0627\u0645 -languages.bin=\u0628\u06cc\u0646\u06cc -languages.de=\u0622\u0644\u0645\u0627\u0646\u06cc -languages.lua=\u0644\u0648\u0628\u0627\u06cc\u06cc\u2010\u0644\u0648\u0644\u0648\u0627 -languages.bik=\u0628\u06cc\u06a9\u0648\u0644\u06cc -languages.was=\u0648\u0627\u0634\u0648\u06cc\u06cc -languages.und=\u0632\u0628\u0627\u0646 \u0646\u0627\u0645\u0634\u062e\u0635 \u06cc\u0627 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 -languages.war=\u0648\u0627\u0631\u0627\u06cc\u06cc -languages.da=\u062f\u0627\u0646\u0645\u0627\u0631\u06a9\u06cc -languages.dum=\u0647\u0644\u0646\u062f\u06cc \u0645\u06cc\u0627\u0646\u0647 -languages.wal=\u0648\u0627\u0644\u0627\u0645\u0648 -languages.mno=\u0632\u0628\u0627\u0646 \u0645\u0627\u0646\u0648\u0628\u0648 -languages.wak=\u0632\u0628\u0627\u0646 \u0648\u0627\u06a9\u0627\u0634\u06cc -languages.sat=\u0633\u0627\u0646\u062a\u0627\u0644\u06cc -languages.cy=\u0648\u06cc\u0644\u0632\u06cc -languages.sas=\u0633\u0627\u0633\u0627\u06a9 -languages.kbd=\u06a9\u0627\u0628\u0627\u0631\u062f\u06cc\u0646\u06cc -languages.cv=\u0686\u0648\u0648\u0627\u0634\u06cc -languages.cu=\u0627\u0633\u0644\u0627\u0648\u06cc \u06a9\u0644\u06cc\u0633\u0627\u06cc\u06cc -languages.mni=\u0645\u0627\u0646\u06cc\u067e\u0648\u0631\u06cc -languages.cs=\u0686\u06a9 -languages.sam=\u0632\u0628\u0627\u0646 \u0633\u0627\u0645\u0631\u06cc \u0622\u0631\u0627\u0645\u06cc -languages.cr=\u06a9\u0631\u06cc\u0627\u06cc\u06cc -languages.sal=\u0632\u0628\u0627\u0646 \u0633\u0627\u0644\u06cc\u0634\u06cc -languages.dua=\u062f\u0648\u0622\u0644\u0627\u06cc\u06cc -languages.co=\u06a9\u0648\u0631\u0633\u06cc -languages.sai=\u0632\u0628\u0627\u0646 \u0633\u0631\u062e\u067e\u0648\u0633\u062a\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc -languages.mnc=\u0645\u0627\u0646\u0686\u0648\u06cc\u06cc -languages.sah=\u06cc\u0627\u0642\u0648\u062a\u06cc -languages.kaw=\u06a9\u0627\u0648\u06cc -languages.inh=\u0627\u06cc\u0646\u06af\u0648\u0634\u06cc -languages.gba=\u06af\u0628\u0627\u06cc\u0627\u06cc\u06cc -languages.sad=\u0633\u0627\u0646\u062f\u0627\u0648\u0647\u200c\u0627\u06cc -languages.ch=\u0686\u0627\u0645\u0648\u0631\u0648\u06cc\u06cc -languages.ine=\u0632\u0628\u0627\u0646 \u0647\u0646\u062f \u0648 \u0627\u0631\u0648\u067e\u0627\u06cc\u06cc -languages.bho=\u0628\u0648\u062c\u067e\u0648\u0631\u06cc -languages.enm=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0645\u06cc\u0627\u0646\u0647 -languages.kar=\u06a9\u0627\u0631\u0646\u06cc -languages.inc=\u0632\u0628\u0627\u0646 \u0647\u0646\u062f\u06cc\u06a9 -languages.ce=\u0686\u0686\u0646\u06cc -languages.gay=\u06af\u0627\u06cc\u0648 -languages.ca=\u06a9\u0627\u062a\u0627\u0644\u0648\u0646\u06cc\u0627\u06cc\u06cc -languages.umb=\u0627\u0645\u0628\u0646\u062f\u0648\u06cc\u06cc -languages.syr=\u0633\u0631\u06cc\u0627\u0646\u06cc -languages.kam=\u06a9\u0627\u0645\u0628\u0627\u06cc\u06cc -languages.anp=\u0622\u0646\u06af\u06cc\u06a9\u0627 -languages.tsi=\u062a\u0633\u06cc\u0645\u200c\u0634\u06cc\u0627\u0646\u06cc -languages.kaj=\u062c\u0648 -languages.ang=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0627\u0633\u062a\u0627\u0646 -languages.kac=\u06a9\u0627\u0686\u06cc\u0646\u06cc -languages.cau=\u0632\u0628\u0627\u0646 \u0642\u0641\u0642\u0627\u0632\u06cc -languages.kab=\u0642\u0628\u0627\u06cc\u0644\u06cc -languages.kaa=\u0642\u0631\u0647\u200c\u0642\u0627\u0644\u067e\u0627\u0642\u06cc -languages.bs=\u0628\u0648\u0633\u0646\u06cc\u0627\u06cc\u06cc -languages.car=\u06a9\u0627\u0631\u06cc\u0628\u06cc -languages.br=\u0628\u0631\u062a\u0627\u0646\u06cc\u0627\u06cc\u06cc -languages.syc=\u0633\u0631\u06cc\u0627\u0646\u06cc \u06a9\u0644\u0627\u0633\u06cc\u06a9 -languages.bo=\u062a\u0628\u062a\u06cc -languages.bn=\u0628\u0646\u06af\u0627\u0644\u06cc -languages.bm=\u0628\u0627\u0645\u0628\u0627\u0631\u0627\u06cc\u06cc -languages.gaa=\u06af\u0627\u06cc\u06cc -languages.cai=\u0632\u0628\u0627\u0646 \u0633\u0631\u062e\u067e\u0648\u0633\u062a\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc -languages.bi=\u0628\u06cc\u0633\u0644\u0627\u0645\u0627 -languages.bh=\u0628\u06cc\u0647\u0627\u0631\u06cc -languages.bg=\u0628\u0644\u063a\u0627\u0631\u06cc -languages.be=\u0628\u0644\u0648\u0631\u0648\u0633\u06cc -languages.pt_BR=\u067e\u0631\u062a\u063a\u0627\u0644\u064a (\u0628\u0631\u0632\u064a\u0644) -languages.cad=\u06a9\u0627\u062f\u0648\u06cc\u06cc -languages.ba=\u0628\u0627\u0634\u063a\u06cc\u0631\u06cc +languages.znd=\u0632\u0627\u0646\u062f\u0647\u200c\u0627\u06cc languages.zu=\u0632\u0648\u0644\u0648\u06cc\u06cc -languages.zen=\u0632\u0646\u0627\u06af\u0627 -languages.pro=\u067e\u0631\u0648\u0648\u0646\u0634\u0627\u0644 \u0628\u0627\u0633\u062a\u0627\u0646 -languages.hsb=\u0635\u064f\u0631\u0628\u06cc \u0639\u0644\u06cc\u0627 -languages.az=\u062a\u0631\u06a9\u06cc \u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646\u06cc -languages.ay=\u0622\u06cc\u0645\u0627\u0631\u0627\u06cc\u06cc -languages.av=\u0622\u0648\u0627\u0631\u06cc -languages.as=\u0622\u0633\u0627\u0645\u06cc -languages.dsb=\u0635\u064f\u0631\u0628\u06cc \u0633\u0641\u0644\u06cc -languages.ar=\u0639\u0631\u0628\u06cc -languages.ilo=\u0627\u06cc\u0644\u0648\u06a9\u0648\u06cc\u06cc -languages.elx=\u0639\u06cc\u0644\u0627\u0645\u06cc -languages.zh=\u0686\u06cc\u0646\u06cc -languages.an=\u0622\u0631\u0627\u06af\u0648\u0646\u0632 -languages.pra=\u0632\u0628\u0627\u0646 \u067e\u0631\u0627\u06a9\u0631\u06cc\u062a\u06cc -languages.am=\u0627\u0645\u0647\u0631\u06cc -languages.new=\u0646\u0648\u0627\u0631\u06cc\u0627\u06cc\u06cc -languages.ak=\u0622\u06a9\u0627\u0646 -languages.za=\u0686\u0648\u0627\u0646\u06af\u06cc -languages.en_US=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0627\u0645\u0631\u06cc\u06a9\u0627 -languages.af=\u0622\u0641\u0631\u06cc\u06a9\u0627\u0646 -languages.ae=\u0627\u0648\u0633\u062a\u0627\u06cc\u06cc -languages.alt=\u0622\u0644\u062a\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc -languages.ab=\u0622\u0628\u062e\u0627\u0632\u06cc -languages.aa=\u0622\u0641\u0627\u0631\u06cc -languages.yo=\u06cc\u0648\u0631\u0648\u0628\u0627\u06cc\u06cc -languages.alg=\u0632\u0628\u0627\u0646\u0647\u0627\u06cc \u0622\u0644\u06af\u0648\u0646\u06a9\u06cc\u0646\u06cc -languages.ale=\u0622\u0644\u0626\u0648\u062a\u06cc -languages.mkh=\u0632\u0628\u0627\u0646 \u0645\u0648\u0646\u200c\u062e\u0645\u0631\u06cc -languages.yi=\u0627\u064a\u062f\u064a\u0634 -languages.dra=\u0632\u0628\u0627\u0646 \u062f\u0631\u0627\u0648\u06cc\u062f\u06cc -languages.ber=\u0628\u0631\u0628\u0631\u06cc -languages.nds=\u0622\u0644\u0645\u0627\u0646\u06cc \u0633\u0641\u0644\u06cc -languages.bem=\u0628\u0645\u0628\u0627\u06cc\u06cc -languages.bej=\u0628\u062c\u0627\u06cc\u06cc -languages.tpi=\u062a\u0648\u06a9 \u067e\u06cc\u0633\u06cc\u0646\u06cc -variants.POSIX=\u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u06cc +languages.zun=\u0632\u0648\u0646\u06cc\u0627\u06cc\u06cc +languages.zxx=zxx +languages.zza=\u0632\u0627\u0632\u0627\u06cc\u06cc variants.1901=\u0631\u0633\u0645\u200c\u0627\u0644\u062e\u0637 \u0633\u0646\u062a\u06cc \u0622\u0644\u0645\u0627\u0646\u06cc variants.1996=\u0631\u0633\u0645\u200c\u0627\u0644\u062e\u0637 \u0622\u0644\u0645\u0627\u0646\u06cc \u06f1\u06f9\u06f9\u06f6 \u0645\u06cc\u0644\u0627\u062f\u06cc variants.AREVELA=\u0627\u0631\u0645\u0646\u06cc \u0634\u0631\u0642\u06cc -variants.SCOTLAND=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0645\u0639\u06cc\u0627\u0631 \u0627\u0633\u06a9\u0627\u062a\u0644\u0646\u062f +variants.POSIX=\u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u06cc variants.REVISED=\u0631\u0633\u0645\u200c\u0627\u0644\u062e\u0637 \u062a\u062c\u062f\u06cc\u062f\u0646\u0638\u0631\u0634\u062f\u0647 +variants.SCOTLAND=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0645\u0639\u06cc\u0627\u0631 \u0627\u0633\u06a9\u0627\u062a\u0644\u0646\u062f diff --git a/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fa_AF.properties b/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fa_AF.properties index d6b375d8a03..75064abf79c 100644 --- a/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fa_AF.properties +++ b/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fa_AF.properties @@ -11,135 +11,135 @@ zeroDigit=\u06f0 decimalSeparator=\u066b groupingSeparator=\u066c percentFormat='\u202a'#,##0%'\u202c' -currenciesDisplayName.NOK=\u06a9\u0631\u0648\u0646 \u0646\u0627\u0631\u0648\u06cc +currenciesDisplayName.AUD=\u062f\u0627\u0644\u0631 \u0622\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 currenciesDisplayName.BND=\u062f\u0627\u0644\u0631 \u0628\u0631\u0648\u0646\u06cc -currenciesDisplayName.JPY=\u06cc\u0646 \u062c\u0627\u067e\u0627\u0646 -currenciesDisplayName.SGD=\u062f\u0627\u0644\u0631 \u0633\u06cc\u0646\u06af\u0627\u067e\u0648\u0631 -currenciesDisplayName.DKK=\u06a9\u0631\u0648\u0646 \u062f\u0646\u0645\u0627\u0631\u06a9 -currenciesDisplayName.NLG=\u06af\u06cc\u0644\u062f\u0631 \u0647\u0627\u0644\u0646\u062f +currenciesDisplayName.BYR=\u0631\u0648\u0628\u0644 \u0631\u0648\u0633\u06cc\u0647\u0654 \u0633\u0641\u06cc\u062f +currenciesDisplayName.CAD=\u062f\u0627\u0644\u0631 \u06a9\u0627\u0646\u0627\u062f\u0627 currenciesDisplayName.CHF=\u0641\u0631\u0627\u0646\u06a9 \u0633\u0648\u06cc\u0633 -currenciesDisplayName.AUD=\u062f\u0627\u0644\u0631 \u0622\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 -currenciesDisplayName.USD=\u062f\u0627\u0644\u0631 \u0627\u0645\u0631\u06cc\u06a9\u0627 +currenciesDisplayName.DKK=\u06a9\u0631\u0648\u0646 \u062f\u0646\u0645\u0627\u0631\u06a9 +currenciesDisplayName.JPY=\u06cc\u0646 \u062c\u0627\u067e\u0627\u0646 currenciesDisplayName.MXN=\u067e\u0632\u0648\u06cc \u0645\u06a9\u0633\u06cc\u06a9\u0648 +currenciesDisplayName.NLG=\u06af\u06cc\u0644\u062f\u0631 \u0647\u0627\u0644\u0646\u062f +currenciesDisplayName.NOK=\u06a9\u0631\u0648\u0646 \u0646\u0627\u0631\u0648\u06cc currenciesDisplayName.SEK=\u06a9\u0631\u0648\u0646 \u0633\u0648\u06cc\u062f\u0646 -currenciesDisplayName.BYR=\u0631\u0648\u0628\u0644 \u0631\u0648\u0633\u06cc\u0647\u0654 \u0633\u0641\u06cc\u062f +currenciesDisplayName.SGD=\u062f\u0627\u0644\u0631 \u0633\u06cc\u0646\u06af\u0627\u067e\u0648\u0631 currenciesDisplayName.TJS=\u0633\u0627\u0645\u0627\u0646\u06cc \u062a\u0627\u062c\u06a9\u0633\u062a\u0627\u0646 -currenciesDisplayName.CAD=\u062f\u0627\u0644\u0631 \u06a9\u0627\u0646\u0627\u062f\u0627 +currenciesDisplayName.USD=\u062f\u0627\u0644\u0631 \u0627\u0645\u0631\u06cc\u06a9\u0627 currenciesSymbol.AFN=\u060b -shortMonths=\u062c\u0646\u0648\u00ae\u00ae\u00ae\u00ae\u0645\u0640\u06cc\u00ae\u062c\u0648\u0646\u00ae\u062c\u0648\u0644\u00ae\u00ae\u00ae\u00ae\u00ae\u062f\u0633\u0645\u00ae\u00ae -months=\u062c\u0646\u0648\u0631\u06cc\u00ae\u0641\u0628\u0631\u0648\u0631\u06cc\u00ae\u0645\u0627\u0631\u0686\u00ae\u0627\u067e\u0631\u06cc\u0644\u00ae\u0645\u06cc\u00ae\u062c\u0648\u0646\u00ae\u062c\u0648\u0644\u0627\u06cc\u00ae\u0627\u06af\u0633\u062a\u00ae\u0633\u067e\u062a\u0645\u0628\u0631\u00ae\u0627\u06a9\u062a\u0648\u0628\u0631\u00ae\u0646\u0648\u0645\u0628\u0631\u00ae\u062f\u0633\u0645\u0628\u0631\u00ae\u00ae -territories.AU=\u0622\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 -territories.GY=\u06af\u06cc\u0627\u0646\u0627 -territories.GW=\u06af\u06cc\u0646\u06cc\u0627 \u0628\u06cc\u0633\u0627\u0626\u0648 -territories.AR=\u0627\u0631\u062c\u0646\u062a\u0627\u06cc\u0646 -territories.MZ=\u0645\u0648\u0632\u0645\u0628\u06cc\u0642 -territories.MY=\u0645\u0627\u0644\u06cc\u0632\u06cc\u0627 -territories.GT=\u06af\u0648\u0627\u062a\u06cc\u0645\u0627\u0644\u0627 -territories.AO=\u0627\u0646\u06af\u0648\u0644\u0627 -territories.MX=\u0645\u06a9\u0633\u06cc\u06a9\u0648 -territories.GQ=\u06af\u06cc\u0646\u06cc\u0627 \u0627\u0633\u062a\u0648\u0627\u06cc\u06cc -territories.AL=\u0627\u0644\u0628\u0627\u0646\u06cc\u0627 -territories.MT=\u0645\u0627\u0644\u062a\u0627 -territories.GN=\u06af\u06cc\u0646\u06cc\u0627 -territories.MR=\u0645\u0648\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 -territories.SV=\u0627\u0644\u0633\u0644\u0648\u0627\u062f\u0648\u0631 -territories.AG=\u0627\u0646\u062a\u06cc\u06af\u0648\u0627 \u0648 \u0628\u0627\u0631\u0628\u0648\u062f\u0627 -territories.ST=\u0633\u0627\u0626\u0648 \u062a\u0648\u0645\u0647 \u0648 \u067e\u0631\u06cc\u0646\u0633\u06cc\u067e -territories.AE=\u0627\u0645\u0627\u0631\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0639\u0631\u0628\u06cc -territories.MN=\u0645\u0646\u06af\u0648\u0644\u06cc\u0627 +shortMonths=\u062c\u0646\u0648\u00ae\u00ae\u00ae\u00ae\u0645\u0640\u06cc\u00ae\u062c\u0648\u0646\u00ae\u062c\u0648\u0644\u00ae\u00ae\u00ae\u00ae\u00ae\u062f\u0633\u0645\u00ae +months=\u062c\u0646\u0648\u0631\u06cc\u00ae\u0641\u0628\u0631\u0648\u0631\u06cc\u00ae\u0645\u0627\u0631\u0686\u00ae\u0627\u067e\u0631\u06cc\u0644\u00ae\u0645\u06cc\u00ae\u062c\u0648\u0646\u00ae\u062c\u0648\u0644\u0627\u06cc\u00ae\u0627\u06af\u0633\u062a\u00ae\u0633\u067e\u062a\u0645\u0628\u0631\u00ae\u0627\u06a9\u062a\u0648\u0628\u0631\u00ae\u0646\u0648\u0645\u0628\u0631\u00ae\u062f\u0633\u0645\u0628\u0631\u00ae territories.AD=\u0627\u0646\u062f\u0648\u0631\u0627 -territories.SO=\u0633\u0648\u0645\u0627\u0644\u06cc\u0647 -territories.SN=\u0633\u06cc\u0646\u06cc\u06af\u0627\u0644 -territories.GD=\u06af\u0631\u06cc\u0646\u0627\u062f\u0627 -territories.SL=\u0633\u06cc\u0631\u0627\u0644\u06cc\u0648\u0646 -territories.MG=\u0645\u0627\u062f\u063a\u0627\u0633\u06a9\u0631 -territories.SK=\u0633\u0644\u0648\u0627\u06a9\u06cc\u0627 -territories.SI=\u0633\u0644\u0648\u0646\u06cc\u0627 -territories.SG=\u0633\u06cc\u0646\u06af\u0627\u067e\u0648\u0631 -territories.SE=\u0633\u0648\u06cc\u062f\u0646 -territories.SB=\u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u0648\u0645\u0648\u0646 -territories.LY=\u0644\u06cc\u0628\u06cc\u0627 -territories.LV=\u0644\u0627\u062a\u0648\u06cc\u0627 -territories.LT=\u0644\u062a\u0648\u0627\u0646\u06cc\u0627 -territories.LS=\u0644\u06cc\u0633\u0648\u062a\u0648 -territories.RW=\u0631\u0648\u0622\u0646\u062f\u0627 -territories.FM=\u0645\u06cc\u06a9\u0631\u0648\u0646\u0632\u06cc\u0627 -territories.FI=\u0641\u0646\u0644\u0646\u062f -territories.LK=\u0633\u0631\u06cc\u0644\u0627\u0646\u06a9\u0627 -territories.RO=\u0631\u0648\u0645\u0627\u0646\u06cc\u0627 -territories.ET=\u0627\u06cc\u062a\u0648\u067e\u06cc\u0627 -territories.ES=\u0647\u0633\u067e\u0627\u0646\u06cc\u0647 -territories.ER=\u0627\u0631\u06cc\u062a\u0631\u06cc\u0627 -territories.KR=\u06a9\u0648\u0631\u06cc\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc -territories.KP=\u06a9\u0648\u0631\u06cc\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc -territories.KN=\u0633\u0646\u062a \u06a9\u06cc\u062a\u0633 \u0648 \u0646\u06cc\u0648\u06cc\u0633 -territories.KM=\u06a9\u0648\u0645\u0648\u0631 -territories.EE=\u0627\u0633\u062a\u0648\u0646\u06cc\u0627 -territories.WS=\u0633\u0627\u0645\u0648\u0622 -territories.KH=\u06a9\u0645\u067e\u0648\u0686\u06cc\u0627 +territories.AE=\u0627\u0645\u0627\u0631\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0639\u0631\u0628\u06cc +territories.AG=\u0627\u0646\u062a\u06cc\u06af\u0648\u0627 \u0648 \u0628\u0627\u0631\u0628\u0648\u062f\u0627 +territories.AL=\u0627\u0644\u0628\u0627\u0646\u06cc\u0627 +territories.AO=\u0627\u0646\u06af\u0648\u0644\u0627 +territories.AR=\u0627\u0631\u062c\u0646\u062a\u0627\u06cc\u0646 +territories.AU=\u0622\u0633\u062a\u0631\u0627\u0644\u06cc\u0627 +territories.BA=\u0628\u0648\u0633\u0646\u06cc\u0627 \u0648 \u0647\u0631\u0632\u0647\u200c\u06af\u0648\u06cc\u0646\u0627 +territories.BD=\u0628\u0646\u06af\u0644\u0647\u200c\u062f\u06cc\u0634 +territories.BE=\u0628\u0644\u062c\u06cc\u0645 +territories.BG=\u0628\u0644\u063a\u0627\u0631\u06cc\u0627 +territories.BN=\u0628\u0631\u0648\u0646\u06cc +territories.BO=\u0628\u0648\u0644\u06cc\u0648\u06cc\u0627 +territories.BR=\u0628\u0631\u0627\u0632\u06cc\u0644 +territories.BS=\u0628\u0647\u0627\u0645\u0627\u0633 +territories.BY=\u0631\u0648\u0633\u06cc\u0647\u0654 \u0633\u0641\u06cc\u062f +territories.CD=\u062c\u0645\u0647\u0648\u0631\u06cc \u062f\u0645\u0648\u06a9\u0631\u0627\u062a\u06cc\u06a9 \u06a9\u0627\u0646\u06af\u0648 +territories.CF=\u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc +territories.CG=\u06a9\u0627\u0646\u06af\u0648 +territories.CH=\u0633\u0648\u06cc\u0633 +territories.CL=\u0686\u0644\u06cc +territories.CO=\u06a9\u0648\u0644\u0645\u0628\u06cc\u0627 +territories.CR=\u06a9\u0627\u0633\u062a\u0631\u06cc\u06a9\u0627 +territories.CU=\u06a9\u06cc\u0648\u0628\u0627 +territories.DK=\u062f\u0646\u0645\u0627\u0631\u06a9 territories.EC=\u0627\u06a9\u0648\u0627\u062f\u0648\u0631 -territories.KG=\u0642\u0631\u063a\u0632\u0633\u062a\u0627\u0646 -territories.KE=\u06a9\u06cc\u0646\u06cc\u0627 -territories.PY=\u067e\u0627\u0631\u0627\u06af\u0648\u0627\u06cc +territories.EE=\u0627\u0633\u062a\u0648\u0646\u06cc\u0627 +territories.ER=\u0627\u0631\u06cc\u062a\u0631\u06cc\u0627 +territories.ES=\u0647\u0633\u067e\u0627\u0646\u06cc\u0647 +territories.ET=\u0627\u06cc\u062a\u0648\u067e\u06cc\u0627 +territories.FI=\u0641\u0646\u0644\u0646\u062f +territories.FM=\u0645\u06cc\u06a9\u0631\u0648\u0646\u0632\u06cc\u0627 +territories.GD=\u06af\u0631\u06cc\u0646\u0627\u062f\u0627 +territories.GN=\u06af\u06cc\u0646\u06cc\u0627 +territories.GQ=\u06af\u06cc\u0646\u06cc\u0627 \u0627\u0633\u062a\u0648\u0627\u06cc\u06cc +territories.GT=\u06af\u0648\u0627\u062a\u06cc\u0645\u0627\u0644\u0627 +territories.GW=\u06af\u06cc\u0646\u06cc\u0627 \u0628\u06cc\u0633\u0627\u0626\u0648 +territories.GY=\u06af\u06cc\u0627\u0646\u0627 +territories.HN=\u0647\u0627\u0646\u062f\u0648\u0631\u0627\u0633 +territories.HR=\u06a9\u0631\u0648\u0634\u06cc\u0627 +territories.HT=\u0647\u0627\u06cc\u062a\u06cc +territories.ID=\u0627\u0646\u062f\u0648\u0646\u06cc\u0632\u06cc\u0627 +territories.IE=\u0622\u06cc\u0631\u0644\u0646\u062f +territories.IS=\u0622\u06cc\u0633\u0644\u0646\u062f territories.JP=\u062c\u0627\u067e\u0627\u0646 -territories.DK=\u062f\u0646\u0645\u0627\u0631\u06a9 -territories.PT=\u067e\u0631\u062a\u06af\u0627\u0644 -territories.PL=\u067e\u0648\u0644\u0646\u062f -territories.PG=\u067e\u0627\u067e\u0648\u0627 \u0646\u06cc\u0648 \u06af\u06cc\u0646\u06cc\u0627 -territories.PE=\u067e\u06cc\u0631\u0648 +territories.KE=\u06a9\u06cc\u0646\u06cc\u0627 +territories.KG=\u0642\u0631\u063a\u0632\u0633\u062a\u0627\u0646 +territories.KH=\u06a9\u0645\u067e\u0648\u0686\u06cc\u0627 +territories.KM=\u06a9\u0648\u0645\u0648\u0631 +territories.KN=\u0633\u0646\u062a \u06a9\u06cc\u062a\u0633 \u0648 \u0646\u06cc\u0648\u06cc\u0633 +territories.KP=\u06a9\u0648\u0631\u06cc\u0627\u06cc \u0634\u0645\u0627\u0644\u06cc +territories.KR=\u06a9\u0648\u0631\u06cc\u0627\u06cc \u062c\u0646\u0648\u0628\u06cc +territories.LK=\u0633\u0631\u06cc\u0644\u0627\u0646\u06a9\u0627 +territories.LS=\u0644\u06cc\u0633\u0648\u062a\u0648 +territories.LT=\u0644\u062a\u0648\u0627\u0646\u06cc\u0627 +territories.LV=\u0644\u0627\u062a\u0648\u06cc\u0627 +territories.LY=\u0644\u06cc\u0628\u06cc\u0627 +territories.MG=\u0645\u0627\u062f\u063a\u0627\u0633\u06a9\u0631 +territories.MN=\u0645\u0646\u06af\u0648\u0644\u06cc\u0627 +territories.MR=\u0645\u0648\u0631\u06cc\u062a\u0627\u0646\u06cc\u0627 +territories.MT=\u0645\u0627\u0644\u062a\u0627 +territories.MX=\u0645\u06a9\u0633\u06cc\u06a9\u0648 +territories.MY=\u0645\u0627\u0644\u06cc\u0632\u06cc\u0627 +territories.MZ=\u0645\u0648\u0632\u0645\u0628\u06cc\u0642 +territories.NG=\u0646\u06cc\u062c\u0631\u06cc\u0627 +territories.NI=\u0646\u06cc\u06a9\u0627\u0631\u0627\u06af\u0648\u0627 +territories.NL=\u0647\u0627\u0644\u0646\u062f +territories.NO=\u0646\u0627\u0631\u0648\u06cc +territories.NP=\u0646\u06cc\u067e\u0627\u0644 +territories.NZ=\u0632\u06cc\u0644\u0627\u0646\u062f \u062c\u062f\u06cc\u062f territories.PA=\u067e\u0627\u0646\u0627\u0645\u0647 -territories.VE=\u0648\u0646\u0632\u0648\u06cc\u0644\u0627 -territories.CU=\u06a9\u06cc\u0648\u0628\u0627 -territories.VC=\u0633\u0646\u062a \u0648\u06cc\u0646\u0633\u0646\u062a \u0648 \u06af\u0631\u06cc\u0646\u0627\u062f\u06cc\u0646 -territories.CR=\u06a9\u0627\u0633\u062a\u0631\u06cc\u06a9\u0627 -territories.CO=\u06a9\u0648\u0644\u0645\u0628\u06cc\u0627 -territories.IS=\u0622\u06cc\u0633\u0644\u0646\u062f -territories.CL=\u0686\u0644\u06cc -territories.UY=\u06cc\u0648\u0631\u0648\u06af\u0648\u0627\u06cc -territories.CH=\u0633\u0648\u06cc\u0633 -territories.CG=\u06a9\u0627\u0646\u06af\u0648 -territories.CF=\u0627\u0641\u0631\u06cc\u0642\u0627\u06cc \u0645\u0631\u06a9\u0632\u06cc -territories.US=\u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0627\u0645\u0631\u06cc\u06a9\u0627 -territories.CD=\u062c\u0645\u0647\u0648\u0631\u06cc \u062f\u0645\u0648\u06a9\u0631\u0627\u062a\u06cc\u06a9 \u06a9\u0627\u0646\u06af\u0648 -territories.IE=\u0622\u06cc\u0631\u0644\u0646\u062f -territories.ID=\u0627\u0646\u062f\u0648\u0646\u06cc\u0632\u06cc\u0627 -territories.BY=\u0631\u0648\u0633\u06cc\u0647\u0654 \u0633\u0641\u06cc\u062f -territories.BS=\u0628\u0647\u0627\u0645\u0627\u0633 -territories.BR=\u0628\u0631\u0627\u0632\u06cc\u0644 +territories.PE=\u067e\u06cc\u0631\u0648 +territories.PG=\u067e\u0627\u067e\u0648\u0627 \u0646\u06cc\u0648 \u06af\u06cc\u0646\u06cc\u0627 +territories.PL=\u067e\u0648\u0644\u0646\u062f +territories.PT=\u067e\u0631\u062a\u06af\u0627\u0644 +territories.PY=\u067e\u0627\u0631\u0627\u06af\u0648\u0627\u06cc +territories.RO=\u0631\u0648\u0645\u0627\u0646\u06cc\u0627 +territories.RW=\u0631\u0648\u0622\u0646\u062f\u0627 +territories.SB=\u062c\u0632\u0627\u06cc\u0631 \u0633\u0644\u0648\u0645\u0648\u0646 +territories.SE=\u0633\u0648\u06cc\u062f\u0646 +territories.SG=\u0633\u06cc\u0646\u06af\u0627\u067e\u0648\u0631 +territories.SI=\u0633\u0644\u0648\u0646\u06cc\u0627 +territories.SK=\u0633\u0644\u0648\u0627\u06a9\u06cc\u0627 +territories.SL=\u0633\u06cc\u0631\u0627\u0644\u06cc\u0648\u0646 +territories.SN=\u0633\u06cc\u0646\u06cc\u06af\u0627\u0644 +territories.SO=\u0633\u0648\u0645\u0627\u0644\u06cc\u0647 +territories.ST=\u0633\u0627\u0626\u0648 \u062a\u0648\u0645\u0647 \u0648 \u067e\u0631\u06cc\u0646\u0633\u06cc\u067e +territories.SV=\u0627\u0644\u0633\u0644\u0648\u0627\u062f\u0648\u0631 +territories.TJ=\u062a\u0627\u062c\u06a9\u0633\u062a\u0627\u0646 territories.UA=\u0627\u06a9\u0631\u0627\u06cc\u0646 -territories.NZ=\u0632\u06cc\u0644\u0627\u0646\u062f \u062c\u062f\u06cc\u062f -territories.HT=\u0647\u0627\u06cc\u062a\u06cc -territories.BO=\u0628\u0648\u0644\u06cc\u0648\u06cc\u0627 -territories.BN=\u0628\u0631\u0648\u0646\u06cc -territories.HR=\u06a9\u0631\u0648\u0634\u06cc\u0627 -territories.HN=\u0647\u0627\u0646\u062f\u0648\u0631\u0627\u0633 -territories.BG=\u0628\u0644\u063a\u0627\u0631\u06cc\u0627 -territories.NP=\u0646\u06cc\u067e\u0627\u0644 -territories.NO=\u0646\u0627\u0631\u0648\u06cc -territories.BE=\u0628\u0644\u062c\u06cc\u0645 -territories.BD=\u0628\u0646\u06af\u0644\u0647\u200c\u062f\u06cc\u0634 +territories.US=\u0627\u06cc\u0627\u0644\u0627\u062a \u0645\u062a\u062d\u062f\u0647\u0654 \u0627\u0645\u0631\u06cc\u06a9\u0627 +territories.UY=\u06cc\u0648\u0631\u0648\u06af\u0648\u0627\u06cc +territories.VC=\u0633\u0646\u062a \u0648\u06cc\u0646\u0633\u0646\u062a \u0648 \u06af\u0631\u06cc\u0646\u0627\u062f\u06cc\u0646 +territories.VE=\u0648\u0646\u0632\u0648\u06cc\u0644\u0627 +territories.WS=\u0633\u0627\u0645\u0648\u0622 territories.ZW=\u0632\u06cc\u0645\u0628\u0627\u0628\u0648\u06cc -territories.NL=\u0647\u0627\u0644\u0646\u062f -territories.BA=\u0628\u0648\u0633\u0646\u06cc\u0627 \u0648 \u0647\u0631\u0632\u0647\u200c\u06af\u0648\u06cc\u0646\u0627 -territories.NI=\u0646\u06cc\u06a9\u0627\u0631\u0627\u06af\u0648\u0627 -territories.NG=\u0646\u06cc\u062c\u0631\u06cc\u0627 -territories.TJ=\u062a\u0627\u062c\u06a9\u0633\u062a\u0627\u0646 -languages.ja=\u062c\u0627\u067e\u0627\u0646\u06cc -languages.ko=\u06a9\u0648\u0631\u06cc\u0627\u06cc\u06cc -languages.no=\u0646\u0627\u0631\u0648\u06cc\u0698\u06cc -languages.nl=\u0647\u0627\u0644\u0646\u062f\u06cc -languages.it=\u0627\u06cc\u062a\u0627\u0644\u0648\u06cc -languages.tg=\u062a\u0627\u062c\u06a9\u06cc -languages.ne=\u0646\u06cc\u067e\u0627\u0644\u06cc -languages.is=\u0622\u06cc\u0633\u0644\u0646\u062f\u06cc +languages.es=\u0647\u0633\u067e\u0627\u0646\u0648\u06cc +languages.fa=\u062f\u0631\u06cc languages.fi=\u0641\u0646\u0644\u0646\u062f\u06cc +languages.ga=\u0622\u06cc\u0631\u0644\u0646\u062f\u06cc +languages.hr=\u06a9\u0631\u0648\u0634\u06cc\u0627\u06cc\u06cc languages.id=\u0627\u0646\u062f\u0648\u0646\u06cc\u0632\u06cc\u0627\u06cc\u06cc -languages.sv=\u0633\u0648\u06cc\u062f\u0646\u06cc -languages.fa=\u062f\u0631\u06cc -languages.pt=\u067e\u0631\u062a\u06af\u0627\u0644\u06cc +languages.is=\u0622\u06cc\u0633\u0644\u0646\u062f\u06cc +languages.it=\u0627\u06cc\u062a\u0627\u0644\u0648\u06cc +languages.ja=\u062c\u0627\u067e\u0627\u0646\u06cc +languages.ko=\u06a9\u0648\u0631\u06cc\u0627\u06cc\u06cc +languages.ky=\u0642\u0631\u063a\u0632\u06cc languages.mn=\u0645\u063a\u0644\u06cc +languages.ne=\u0646\u06cc\u067e\u0627\u0644\u06cc +languages.nl=\u0647\u0627\u0644\u0646\u062f\u06cc +languages.no=\u0646\u0627\u0631\u0648\u06cc\u0698\u06cc languages.pl=\u067e\u0648\u0644\u0646\u062f\u06cc -languages.ky=\u0642\u0631\u063a\u0632\u06cc -languages.es=\u0647\u0633\u067e\u0627\u0646\u0648\u06cc -languages.hr=\u06a9\u0631\u0648\u0634\u06cc\u0627\u06cc\u06cc -languages.ga=\u0622\u06cc\u0631\u0644\u0646\u062f\u06cc +languages.pt=\u067e\u0631\u062a\u06af\u0627\u0644\u06cc +languages.sv=\u0633\u0648\u06cc\u062f\u0646\u06cc +languages.tg=\u062a\u0627\u062c\u06a9\u06cc diff --git a/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fi.properties b/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fi.properties index a2223b268f1..1e37abfd559 100644 --- a/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fi.properties +++ b/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fi.properties @@ -18,1115 +18,1115 @@ digit=# percentFormat=#,##0\u00a0% currencyFormat=#,##0.00\u00a0\u00a4;-#,##0.00\u00a0\u00a4 localPatternChars=GanjkHmsSEDFwWxhKzAeugXZvcL -currenciesDisplayName.YDD=Jemenin dinaaria -currenciesDisplayName.KES=Kenian \u0161illinki\u00e4 -currenciesDisplayName.TWD=Taiwanin uutta dollaria -currenciesDisplayName.LKR=Sri Lankan rupiaa -currenciesDisplayName.BYB=Valko-Ven\u00e4j\u00e4n uutta ruplaa (1994\u20131999) -currenciesDisplayName.TJS=Tad\u017eikistanin somonia -currenciesDisplayName.RWF=Ruandan frangia -currenciesDisplayName.ERN=Eritrean nakfaa -currenciesDisplayName.TJR=Tad\u017eikistanin ruplaa -currenciesDisplayName.SDP=Sudanin puntaa (1957\u20131999) -currenciesDisplayName.GRD=Kreikan drakmaa -currenciesDisplayName.AFN=Afganistanin afgaania -currenciesDisplayName.IEP=Irlannin puntaa -currenciesDisplayName.ARS=Argentiinan pesoa -currenciesDisplayName.SDG=Sudanin puntaa -currenciesDisplayName.ARP=Argentiinan pesoa (1983\u20131985) -currenciesDisplayName.SDD=Sudanin dinaaria -currenciesDisplayName.GEL=Georgian laria -currenciesDisplayName.GEK=Georgian kuponkilaria +currenciesDisplayName.ADP=Andorran pesetaa +currenciesDisplayName.AED=Arabiemiirikuntien dirhamia currenciesDisplayName.AFA=Afganistanin afgaania (1927-2002) -currenciesDisplayName.CRC=Costa Rican colonia -currenciesDisplayName.FKP=Falklandinsaarten puntaa -currenciesDisplayName.EEK=Viron kruunua -currenciesDisplayName.MDL=Moldovan leuta -currenciesDisplayName.HKD=Hongkongin dollaria -currenciesDisplayName.IQD=Irakin dinaaria +currenciesDisplayName.AFN=Afganistanin afgaania +currenciesDisplayName.ALL=Albanian leki\u00e4 +currenciesDisplayName.AMD=Armenian dramia +currenciesDisplayName.ANG=Alankomaiden Antillien guldenia +currenciesDisplayName.AOA=Angolan kwanzaa +currenciesDisplayName.AOK=Angolan kwanzaa (1977\u20131990) +currenciesDisplayName.AON=Angolan uutta kwanzaa (1990\u20132000) +currenciesDisplayName.AOR=Angolan kwanza reajustadoa (1995\u20131999) currenciesDisplayName.ARA=Argentiinan australia -currenciesDisplayName.SCR=Seychellien rupiaa -currenciesDisplayName.VUV=Vanuatun vatua -currenciesDisplayName.KPW=Pohjois-Korean wonia -currenciesDisplayName.DKK=Tanskan kruunua -currenciesDisplayName.IDR=Indonesian rupiaa -currenciesDisplayName.GQE=P\u00e4iv\u00e4ntasaajan Guinean ekwele\u00e4 (\u20131986) -currenciesDisplayName.SOS=Somalian \u0161illinki\u00e4 -currenciesDisplayName.LVR=Latvian ruplaa -currenciesDisplayName.EQE=P\u00e4iv\u00e4ntasaajan Guinean ekwele\u00e4 (1986\u20131989) -currenciesDisplayName.AED=Arabiemiirikuntien dirhamia -currenciesDisplayName.LVL=Latvian latia +currenciesDisplayName.ARP=Argentiinan pesoa (1983\u20131985) +currenciesDisplayName.ARS=Argentiinan pesoa +currenciesDisplayName.ATS=It\u00e4vallan \u0161illinki\u00e4 +currenciesDisplayName.AUD=Australian dollaria +currenciesDisplayName.AWG=Aruban guldenia +currenciesDisplayName.AZM=Azerbaid\u017eanin manatia (1993\u20132006) +currenciesDisplayName.AZN=Azerbaid\u017eanin manatia +currenciesDisplayName.BAD=Bosnia-Hertsegovinan dinaaria +currenciesDisplayName.BAM=Bosnia-Hertsegovinan vaihdettavaa markkaa +currenciesDisplayName.BBD=Barbadosin dollaria +currenciesDisplayName.BDT=Bangladeshin takaa +currenciesDisplayName.BEC=Belgian vaihdettavaa frangia +currenciesDisplayName.BEF=Belgian frangia +currenciesDisplayName.BEL=Belgian rahoitusfrangia +currenciesDisplayName.BGL=Bulgarian kovaa levaa +currenciesDisplayName.BGN=Bulgarian uutta levaa +currenciesDisplayName.BHD=Bahrainin dinaaria +currenciesDisplayName.BIF=Burundin frangia +currenciesDisplayName.BMD=Bermudan dollaria +currenciesDisplayName.BND=Brunein dollaria +currenciesDisplayName.BOB=Bolivian bolivianoa +currenciesDisplayName.BOP=Bolivian pesoa +currenciesDisplayName.BOV=Bolivian mvdol'ia +currenciesDisplayName.BRB=Brasilian uutta cruzeiroa (1967\u20131986) +currenciesDisplayName.BRC=Brasilian cruzadoa +currenciesDisplayName.BRE=Brasilian cruzeiroa (1990\u20131993) +currenciesDisplayName.BRL=Brasilian realia +currenciesDisplayName.BRN=Brasilian uutta cruzadoa +currenciesDisplayName.BRR=Brasilian cruzeiroa +currenciesDisplayName.BSD=Bahaman dollaria +currenciesDisplayName.BTN=Bhutanin ngultrumia +currenciesDisplayName.BUK=Burman kyatia currenciesDisplayName.BWP=Botswanan pulaa -currenciesDisplayName.RUR=Ven\u00e4j\u00e4n ruplaa (1991\u20131998) -currenciesDisplayName.NIO=Nicaraguan kultacordobaa -currenciesDisplayName.XTS=testaustarkoitukseen varattua valuuttakoodi -currenciesDisplayName.MOP=Macaon patacaa -currenciesDisplayName.FJD=Fid\u017ein dollaria -currenciesDisplayName.ADP=Andorran pesetaa -currenciesDisplayName.RUB=Ven\u00e4j\u00e4n ruplaa +currenciesDisplayName.BYB=Valko-Ven\u00e4j\u00e4n uutta ruplaa (1994\u20131999) +currenciesDisplayName.BYR=Valko-Ven\u00e4j\u00e4n ruplaa +currenciesDisplayName.BZD=Belizen dollaria +currenciesDisplayName.CAD=Kanadan dollaria currenciesDisplayName.CDF=Kongon frangia -currenciesDisplayName.NIC=Nicaraguan cordobaa +currenciesDisplayName.CHE=Sveitsin WIR-euroa +currenciesDisplayName.CHF=Sveitsin frangia +currenciesDisplayName.CHW=Sveitsin WIR-frangia +currenciesDisplayName.CLF=Chilen unidades de fomentoa +currenciesDisplayName.CLP=Chilen pesoa +currenciesDisplayName.CNY=Kiinan yuania +currenciesDisplayName.COP=Kolumbian pesoa +currenciesDisplayName.COU=Kolumbian unidad de valor realia +currenciesDisplayName.CRC=Costa Rican colonia +currenciesDisplayName.CSD=Serbian vanhaa dinaaria +currenciesDisplayName.CSK=T\u0161ekkoslovakian kovaa korunaa +currenciesDisplayName.CUP=Kuuban pesoa +currenciesDisplayName.CVE=Kap Verden escudoa +currenciesDisplayName.CYP=Kyproksen puntaa +currenciesDisplayName.CZK=T\u0161ekin korunaa +currenciesDisplayName.DDM=It\u00e4-Saksan markkaa +currenciesDisplayName.DEM=Saksan markkaa currenciesDisplayName.DJF=Djiboutin frangia -currenciesDisplayName.UZS=Uzbekistanin somia -currenciesDisplayName.SBD=Salomonsaarten dollaria -currenciesDisplayName.ECV=Ecuadorin UVC'ta -currenciesDisplayName.LUL=Luxemburgin rahoitusfrangia +currenciesDisplayName.DKK=Tanskan kruunua +currenciesDisplayName.DOP=Dominikaanisen tasavallan pesoa +currenciesDisplayName.DZD=Algerian dinaaria currenciesDisplayName.ECS=Ecuadorin sucrea -currenciesDisplayName.THB=Thaimaan bahtia -currenciesDisplayName.PHP=Filippiinien pesoa -currenciesDisplayName.LUF=Luxemburgin frangia -currenciesDisplayName.RHD=Rhodesian dollaria -currenciesDisplayName.LUC=Luxemburgin vaihdettavaa frangia +currenciesDisplayName.ECV=Ecuadorin UVC'ta +currenciesDisplayName.EEK=Viron kruunua +currenciesDisplayName.EGP=Egyptin puntaa +currenciesDisplayName.EQE=P\u00e4iv\u00e4ntasaajan Guinean ekwele\u00e4 (1986\u20131989) +currenciesDisplayName.ERN=Eritrean nakfaa +currenciesDisplayName.ESA=Espanjan pesetaa (A-tili) +currenciesDisplayName.ESB=Espanjan pesetaa (vaihdettava tili) +currenciesDisplayName.ESP=Espanjan pesetaa +currenciesDisplayName.ETB=Etiopian birri\u00e4 +currenciesDisplayName.EUR=euroa currenciesDisplayName.FIM=Suomen markkaa -currenciesDisplayName.TTD=Trinidadin ja Tobagon dollaria -currenciesDisplayName.SZL=Swazimaan lilangenia -currenciesDisplayName.MNT=Mongolian tugrikia -currenciesDisplayName.UAK=Ukrainan karbovanetzi\u00e4 -currenciesDisplayName.SAR=Saudi-Arabian rialia -currenciesDisplayName.COU=Kolumbian unidad de valor realia -currenciesDisplayName.UAH=Ukrainan hryvniaa -currenciesDisplayName.HUF=Unkarin forinttia -currenciesDisplayName.QAR=Qatarin rialia -currenciesDisplayName.COP=Kolumbian pesoa -currenciesDisplayName.LTT=Liettuan talonasia -currenciesDisplayName.PTE=Portugalin escudoa -currenciesDisplayName.UYU=Uruguayn pesoa -currenciesDisplayName.AOR=Angolan kwanza reajustadoa (1995\u20131999) +currenciesDisplayName.FJD=Fid\u017ein dollaria +currenciesDisplayName.FKP=Falklandinsaarten puntaa +currenciesDisplayName.FRF=Ranskan frangia currenciesDisplayName.GBP=Englannin puntaa -currenciesDisplayName.ZRZ=Zairen zairea -currenciesDisplayName.INR=Intian rupiaa -currenciesDisplayName.BIF=Burundin frangia -currenciesDisplayName.XFU=Ranskan UIC-frangia -currenciesDisplayName.MZN=Mosambikin meticalia -currenciesDisplayName.LTL=Liettuan liti\u00e4 -currenciesDisplayName.AON=Angolan uutta kwanzaa (1990\u20132000) -currenciesDisplayName.UYP=Uruguayn pesoa (1975\u20131993) -currenciesDisplayName.MZM=Mosambikin meticalia (1980\u20132006) -currenciesDisplayName.KZT=Kazakstanin tenge\u00e4 -currenciesDisplayName.AOK=Angolan kwanzaa (1977\u20131990) -currenciesDisplayName.GNS=Guinean syli\u00e4 -currenciesDisplayName.BUK=Burman kyatia -currenciesDisplayName.XFO=Ranskan kultafrangia -currenciesDisplayName.PGK=Papua-Uuden-Guinean kinaa -currenciesDisplayName.UYI=Uruguayn pesoa en unidades indexadas -currenciesDisplayName.SYP=Syyrian puntaa -currenciesDisplayName.OMR=Omanin rialia -currenciesDisplayName.MZE=Mosambikin escudoa -currenciesDisplayName.ZRN=Zairen uutta zairea -currenciesDisplayName.NGN=Nigerian nairaa -currenciesDisplayName.CNY=Kiinan yuania -currenciesDisplayName.AOA=Angolan kwanzaa -currenciesDisplayName.MAF=Marokon frangia -currenciesDisplayName.RSD=Serbian dinaaria +currenciesDisplayName.GEK=Georgian kuponkilaria +currenciesDisplayName.GEL=Georgian laria +currenciesDisplayName.GHC=Ghanan cedi\u00e4 (1979\u20132007) +currenciesDisplayName.GHS=Ghanan cedi\u00e4 +currenciesDisplayName.GIP=Gibraltarin puntaa +currenciesDisplayName.GMD=Gambian dalasia currenciesDisplayName.GNF=Guinean frangia -currenciesDisplayName.MAD=Marokon dirhamia +currenciesDisplayName.GNS=Guinean syli\u00e4 +currenciesDisplayName.GQE=P\u00e4iv\u00e4ntasaajan Guinean ekwele\u00e4 (\u20131986) +currenciesDisplayName.GRD=Kreikan drakmaa +currenciesDisplayName.GTQ=Guatemalan quetzalia +currenciesDisplayName.GWE=Portugalin Guinean escudoa +currenciesDisplayName.GWP=Guinea-Bissaun pesoa +currenciesDisplayName.GYD=Guyanan dollaria +currenciesDisplayName.HKD=Hongkongin dollaria +currenciesDisplayName.HNL=Hondurasin lempiraa +currenciesDisplayName.HRD=Kroatian dinaaria +currenciesDisplayName.HRK=Kroatian kunaa currenciesDisplayName.HTG=Haitin gourdea -currenciesDisplayName.TRY=Turkin liiraa -currenciesDisplayName.MMK=Myanmarin kyatia -currenciesDisplayName.XRE=RINET-rahastoyksikk\u00f6\u00e4 -currenciesDisplayName.MYR=Malesian ringgiti\u00e4 -currenciesDisplayName.LSM=Lesothon malotia -currenciesDisplayName.XEU=Euroopan valuuttayksikk\u00f6\u00e4 (ECU) -currenciesDisplayName.LSL=Lesothon lotia -currenciesDisplayName.SLL=Sierra Leonen leonea -currenciesDisplayName.BHD=Bahrainin dinaaria -currenciesDisplayName.BTN=Bhutanin ngultrumia -currenciesDisplayName.TRL=Turkin vanhaa liiraa +currenciesDisplayName.HUF=Unkarin forinttia +currenciesDisplayName.IDR=Indonesian rupiaa +currenciesDisplayName.IEP=Irlannin puntaa +currenciesDisplayName.ILP=Israelin puntaa +currenciesDisplayName.ILS=Israelin uutta sekeli\u00e4 +currenciesDisplayName.INR=Intian rupiaa +currenciesDisplayName.IQD=Irakin dinaaria +currenciesDisplayName.IRR=Iranin rialia +currenciesDisplayName.ISK=Islannin kruunua +currenciesDisplayName.ITL=Italian liiraa +currenciesDisplayName.JMD=Jamaikan dollaria +currenciesDisplayName.JOD=Jordanian dinaaria +currenciesDisplayName.JPY=Japanin jeni\u00e4 +currenciesDisplayName.KES=Kenian \u0161illinki\u00e4 +currenciesDisplayName.KGS=Kirgisian somia +currenciesDisplayName.KHR=Kambod\u017ean rieli\u00e4 currenciesDisplayName.KMF=Komorien frangia -currenciesDisplayName.CZK=T\u0161ekin korunaa -currenciesDisplayName.ANG=Alankomaiden Antillien guldenia -currenciesDisplayName.AZN=Azerbaid\u017eanin manatia -currenciesDisplayName.AZM=Azerbaid\u017eanin manatia (1993\u20132006) +currenciesDisplayName.KPW=Pohjois-Korean wonia +currenciesDisplayName.KRW=Etel\u00e4-Korean wonia +currenciesDisplayName.KWD=Kuwaitin dinaaria currenciesDisplayName.KYD=Caymansaarten dollaria -currenciesDisplayName.GMD=Gambian dalasia -currenciesDisplayName.VEF=Venezuelan bolivar fuertea -currenciesDisplayName.BGN=Bulgarian uutta levaa -currenciesDisplayName.MXV=Meksikon UDI'ta -currenciesDisplayName.CAD=Kanadan dollaria -currenciesDisplayName.BGL=Bulgarian kovaa levaa -currenciesDisplayName.VEB=Venezuelan bolivaria -currenciesDisplayName.MLF=Malin frangia -currenciesDisplayName.MXP=Meksikon hopeapesoa (1861\u20131992) -currenciesDisplayName.ILS=Israelin uutta sekeli\u00e4 -currenciesDisplayName.PES=Perun solia -currenciesDisplayName.MXN=Meksikon pesoa -currenciesDisplayName.GYD=Guyanan dollaria -currenciesDisplayName.ILP=Israelin puntaa -currenciesDisplayName.CYP=Kyproksen puntaa -currenciesDisplayName.SKK=Slovakian korunaa -currenciesDisplayName.XDR=erityisnosto-oikeutta (SDR) -currenciesDisplayName.PEN=Perun uutta solia +currenciesDisplayName.KZT=Kazakstanin tenge\u00e4 +currenciesDisplayName.LAK=Laosin kipi\u00e4 +currenciesDisplayName.LBP=Libanonin puntaa +currenciesDisplayName.LKR=Sri Lankan rupiaa currenciesDisplayName.LRD=Liberian dollaria -currenciesDisplayName.PEI=Perun inti\u00e4 -currenciesDisplayName.AMD=Armenian dramia -currenciesDisplayName.BSD=Bahaman dollaria -currenciesDisplayName.XPT=platinayksikk\u00f6\u00e4 -currenciesDisplayName.HRK=Kroatian kunaa -currenciesDisplayName.CLP=Chilen pesoa -currenciesDisplayName.HRD=Kroatian dinaaria -currenciesDisplayName.XPF=CFP-frangia -currenciesDisplayName.FRF=Ranskan frangia -currenciesDisplayName.XPD=palladiumyksikk\u00f6\u00e4 -currenciesDisplayName.BRR=Brasilian cruzeiroa -currenciesDisplayName.MKD=Makedonian dinaaria -currenciesDisplayName.CLF=Chilen unidades de fomentoa -currenciesDisplayName.ALL=Albanian leki\u00e4 -currenciesDisplayName.BRN=Brasilian uutta cruzadoa +currenciesDisplayName.LSL=Lesothon lotia +currenciesDisplayName.LSM=Lesothon malotia +currenciesDisplayName.LTL=Liettuan liti\u00e4 +currenciesDisplayName.LTT=Liettuan talonasia +currenciesDisplayName.LUC=Luxemburgin vaihdettavaa frangia +currenciesDisplayName.LUF=Luxemburgin frangia +currenciesDisplayName.LUL=Luxemburgin rahoitusfrangia +currenciesDisplayName.LVL=Latvian latia +currenciesDisplayName.LVR=Latvian ruplaa +currenciesDisplayName.LYD=Libyan dinaaria +currenciesDisplayName.MAD=Marokon dirhamia +currenciesDisplayName.MAF=Marokon frangia +currenciesDisplayName.MDL=Moldovan leuta +currenciesDisplayName.MGA=Madagaskarin ariarya +currenciesDisplayName.MGF=Madagaskarin frangia +currenciesDisplayName.MKD=Makedonian dinaaria +currenciesDisplayName.MLF=Malin frangia +currenciesDisplayName.MMK=Myanmarin kyatia +currenciesDisplayName.MNT=Mongolian tugrikia +currenciesDisplayName.MOP=Macaon patacaa +currenciesDisplayName.MRO=Mauritanian ouguiyaa +currenciesDisplayName.MTL=Maltan liiraa +currenciesDisplayName.MTP=Maltan puntaa +currenciesDisplayName.MUR=Mauritiuksen rupiaa +currenciesDisplayName.MVR=Malediivien rufiyaata currenciesDisplayName.MWK=Malawin kwachaa -currenciesDisplayName.BRL=Brasilian realia -currenciesDisplayName.TPE=Timorin escudoa -currenciesDisplayName.BRE=Brasilian cruzeiroa (1990\u20131993) -currenciesDisplayName.BRC=Brasilian cruzadoa -currenciesDisplayName.BRB=Brasilian uutta cruzeiroa (1967\u20131986) -currenciesDisplayName.DEM=Saksan markkaa -currenciesDisplayName.KWD=Kuwaitin dinaaria -currenciesDisplayName.XCD=It\u00e4-Karibian dollaria +currenciesDisplayName.MXN=Meksikon pesoa +currenciesDisplayName.MXP=Meksikon hopeapesoa (1861\u20131992) +currenciesDisplayName.MXV=Meksikon UDI'ta +currenciesDisplayName.MYR=Malesian ringgiti\u00e4 +currenciesDisplayName.MZE=Mosambikin escudoa +currenciesDisplayName.MZM=Mosambikin meticalia (1980\u20132006) +currenciesDisplayName.MZN=Mosambikin meticalia +currenciesDisplayName.NAD=Namibian dollaria +currenciesDisplayName.NGN=Nigerian nairaa +currenciesDisplayName.NIC=Nicaraguan cordobaa +currenciesDisplayName.NIO=Nicaraguan kultacordobaa +currenciesDisplayName.NLG=Alankomaiden guldenia +currenciesDisplayName.NOK=Norjan kruunua currenciesDisplayName.NPR=Nepalin rupiaa -currenciesDisplayName.GWP=Guinea-Bissaun pesoa -currenciesDisplayName.YUN=Jugoslavian vaihdettavaa dinaaria -currenciesDisplayName.SVC=El Salvadorin colonia -currenciesDisplayName.YUM=Jugoslavian uutta dinaaria -currenciesDisplayName.BEL=Belgian frangi (rahoitus) -currenciesDisplayName.SIT=Slovenian tolaria -currenciesDisplayName.JPY=Japanin jeni\u00e4 -currenciesDisplayName.XOF=CFA-frangia BCEAO -currenciesDisplayName.MVR=Malediivien rufiyaata -currenciesDisplayName.BEF=Belgian frangia -currenciesDisplayName.GWE=Portugalin Guinean escudoa -currenciesDisplayName.TOP=Tongan pa\u2019angaa -currenciesDisplayName.YUD=Jugoslavian kovaa dinaaria -currenciesDisplayName.BEC=Belgian frangi (vaihdettava) -currenciesDisplayName.SUR=Neuvostoliiton ruplaa -currenciesDisplayName.RON=Romanian uutta leuta +currenciesDisplayName.NZD=Uuden-Seelannin dollaria +currenciesDisplayName.OMR=Omanin rialia +currenciesDisplayName.PAB=Panaman balboaa +currenciesDisplayName.PEI=Perun inti\u00e4 +currenciesDisplayName.PEN=Perun uutta solia +currenciesDisplayName.PES=Perun solia +currenciesDisplayName.PGK=Papua-Uuden-Guinean kinaa +currenciesDisplayName.PHP=Filippiinien pesoa +currenciesDisplayName.PKR=Pakistanin rupiaa +currenciesDisplayName.PLN=Puolan zlotya +currenciesDisplayName.PLZ=Puolan zlotya (1950\u20131995) +currenciesDisplayName.PTE=Portugalin escudoa +currenciesDisplayName.PYG=Paraguayn guarania +currenciesDisplayName.QAR=Qatarin rialia +currenciesDisplayName.RHD=Rhodesian dollaria currenciesDisplayName.ROL=Romanian vanhaa leuta -currenciesDisplayName.BDT=Bangladeshin takaa -currenciesDisplayName.DDM=It\u00e4-Saksan markkaa -currenciesDisplayName.XBD=EUA'ta (XBD) -currenciesDisplayName.AWG=Aruban guldenia -currenciesDisplayName.XBC=EUA'ta (XBC) -currenciesDisplayName.XBB=Euroopan rahayksikk\u00f6\u00e4 (EMU) -currenciesDisplayName.XBA=EURCO'a -currenciesDisplayName.NOK=Norjan kruunua -currenciesDisplayName.MUR=Mauritiuksen rupiaa -currenciesDisplayName.ZAR=Etel\u00e4-Afrikan randia +currenciesDisplayName.RON=Romanian uutta leuta +currenciesDisplayName.RSD=Serbian dinaaria +currenciesDisplayName.RUB=Ven\u00e4j\u00e4n ruplaa +currenciesDisplayName.RUR=Ven\u00e4j\u00e4n ruplaa (1991\u20131998) +currenciesDisplayName.RWF=Ruandan frangia +currenciesDisplayName.SAR=Saudi-Arabian rialia +currenciesDisplayName.SBD=Salomonsaarten dollaria +currenciesDisplayName.SCR=Seychellien rupiaa +currenciesDisplayName.SDD=Sudanin dinaaria +currenciesDisplayName.SDG=Sudanin puntaa +currenciesDisplayName.SDP=Sudanin puntaa (1957\u20131999) +currenciesDisplayName.SEK=Ruotsin kruunua +currenciesDisplayName.SGD=Singaporen dollaria currenciesDisplayName.SHP=Saint Helenan puntaa -currenciesDisplayName.XAU=kultayksikk\u00f6\u00e4 -currenciesDisplayName.ZAL=Etel\u00e4-Afrikan randi (rahoitus) -currenciesDisplayName.VND=Vietnamin dongia -currenciesDisplayName.TZS=Tansanian \u0161illinki\u00e4 -currenciesDisplayName.GIP=Gibraltarin puntaa -currenciesDisplayName.TND=Tunisian dinaaria -currenciesDisplayName.CVE=Kap Verden escudoa -currenciesDisplayName.UGX=Ugandan \u0161illinki\u00e4 -currenciesDisplayName.XAG=hopeayksikk\u00f6\u00e4 -currenciesDisplayName.ZMK=Sambian kwachaa -currenciesDisplayName.JOD=Jordanian dinaaria -currenciesDisplayName.XAF=CFA-frangia BEAC -currenciesDisplayName.LBP=Libanonin puntaa -currenciesDisplayName.UGS=Ugandan \u0161illinki\u00e4 (1966\u20131987) +currenciesDisplayName.SIT=Slovenian tolaria +currenciesDisplayName.SKK=Slovakian korunaa +currenciesDisplayName.SLL=Sierra Leonen leonea +currenciesDisplayName.SOS=Somalian \u0161illinki\u00e4 +currenciesDisplayName.SRD=Surinamin dollaria +currenciesDisplayName.SRG=Surinamin guldenia currenciesDisplayName.STD=S\u00e3o Tom\u00e9n ja Pr\u00edncipen dobraa -currenciesDisplayName.WST=Samoan talaa -currenciesDisplayName.KHR=Kambod\u017ean rieli\u00e4 -currenciesDisplayName.DOP=Dominikaanisen tasavallan pesoa -currenciesDisplayName.EUR=euroa -currenciesDisplayName.BOV=Bolivian mvdol'ia -currenciesDisplayName.MTP=Maltan puntaa -currenciesDisplayName.USS=Yhdysvaltain dollaria (sama p\u00e4iv\u00e4) -currenciesDisplayName.BOP=Bolivian pesoa -currenciesDisplayName.CUP=Kuuban pesoa -currenciesDisplayName.MTL=Maltan liiraa +currenciesDisplayName.SUR=Neuvostoliiton ruplaa +currenciesDisplayName.SVC=El Salvadorin colonia +currenciesDisplayName.SYP=Syyrian puntaa +currenciesDisplayName.SZL=Swazimaan lilangenia +currenciesDisplayName.THB=Thaimaan bahtia +currenciesDisplayName.TJR=Tad\u017eikistanin ruplaa +currenciesDisplayName.TJS=Tad\u017eikistanin somonia currenciesDisplayName.TMM=Turkmenistanin manatia -currenciesDisplayName.USN=Yhdysvaltain dollaria (seuraava p\u00e4iv\u00e4) -currenciesDisplayName.GHS=Ghanan cedi\u00e4 -currenciesDisplayName.SGD=Singaporen dollaria -currenciesDisplayName.NZD=Uuden-Seelannin dollaria +currenciesDisplayName.TND=Tunisian dinaaria +currenciesDisplayName.TOP=Tongan pa\u2019angaa +currenciesDisplayName.TPE=Timorin escudoa +currenciesDisplayName.TRL=Turkin vanhaa liiraa +currenciesDisplayName.TRY=Turkin liiraa +currenciesDisplayName.TTD=Trinidadin ja Tobagon dollaria +currenciesDisplayName.TWD=Taiwanin uutta dollaria +currenciesDisplayName.TZS=Tansanian \u0161illinki\u00e4 +currenciesDisplayName.UAH=Ukrainan hryvniaa +currenciesDisplayName.UAK=Ukrainan karbovanetzi\u00e4 +currenciesDisplayName.UGS=Ugandan \u0161illinki\u00e4 (1966\u20131987) +currenciesDisplayName.UGX=Ugandan \u0161illinki\u00e4 currenciesDisplayName.USD=Yhdysvaltain dollaria -currenciesDisplayName.BOB=Bolivian bolivianoa -currenciesDisplayName.HNL=Hondurasin lempiraa -currenciesDisplayName.CHW=Sveitsin WIR-frangia -currenciesDisplayName.ITL=Italian liiraa -currenciesDisplayName.PAB=Panaman balboaa -currenciesDisplayName.GTQ=Guatemalan quetzalia +currenciesDisplayName.USN=Yhdysvaltain dollaria (seuraava p\u00e4iv\u00e4) +currenciesDisplayName.USS=Yhdysvaltain dollaria (sama p\u00e4iv\u00e4) +currenciesDisplayName.UYI=Uruguayn pesoa en unidades indexadas +currenciesDisplayName.UYP=Uruguayn pesoa (1975\u20131993) +currenciesDisplayName.UYU=Uruguayn pesoa +currenciesDisplayName.UZS=Uzbekistanin somia +currenciesDisplayName.VEB=Venezuelan bolivaria +currenciesDisplayName.VEF=Venezuelan bolivar fuertea +currenciesDisplayName.VND=Vietnamin dongia +currenciesDisplayName.VUV=Vanuatun vatua +currenciesDisplayName.WST=Samoan talaa +currenciesDisplayName.XAF=CFA-frangia BEAC +currenciesDisplayName.XAG=hopeayksikk\u00f6\u00e4 +currenciesDisplayName.XAU=kultayksikk\u00f6\u00e4 +currenciesDisplayName.XBA=EURCO'a +currenciesDisplayName.XBB=Euroopan rahayksikk\u00f6\u00e4 (EMU) +currenciesDisplayName.XBC=EUA'ta (XBC) +currenciesDisplayName.XBD=EUA'ta (XBD) +currenciesDisplayName.XCD=It\u00e4-Karibian dollaria +currenciesDisplayName.XDR=erityisnosto-oikeutta (SDR) +currenciesDisplayName.XEU=Euroopan valuuttayksikk\u00f6\u00e4 (ECU) +currenciesDisplayName.XFO=Ranskan kultafrangia +currenciesDisplayName.XFU=Ranskan UIC-frangia +currenciesDisplayName.XOF=CFA-frangia BCEAO +currenciesDisplayName.XPD=palladiumyksikk\u00f6\u00e4 +currenciesDisplayName.XPF=CFP-frangia +currenciesDisplayName.XPT=platinayksikk\u00f6\u00e4 +currenciesDisplayName.XRE=RINET-rahastoyksikk\u00f6\u00e4 +currenciesDisplayName.XTS=testaustarkoitukseen varattua valuuttakoodi currenciesDisplayName.XXX=tuntematonta tai virheellist\u00e4 rahayksikk\u00f6\u00e4 -currenciesDisplayName.AUD=Australian dollaria -currenciesDisplayName.GHC=Ghanan cedi\u00e4 (1979\u20132007) -currenciesDisplayName.LAK=Laosin kipi\u00e4 -currenciesDisplayName.NAD=Namibian dollaria -currenciesDisplayName.KGS=Kirgisian somia -currenciesDisplayName.MGF=Madagaskarin frangia -currenciesDisplayName.BBD=Barbadosin dollaria -currenciesDisplayName.CHF=Sveitsin frangia -currenciesDisplayName.CHE=Sveitsin WIR-euroa -currenciesDisplayName.MGA=Madagaskarin ariarya -currenciesDisplayName.PYG=Paraguayn guarania -currenciesDisplayName.PLZ=Puolan zlotya (1950\u20131995) +currenciesDisplayName.YDD=Jemenin dinaaria currenciesDisplayName.YER=Jemenin rialia -currenciesDisplayName.ATS=It\u00e4vallan \u0161illinki\u00e4 -currenciesDisplayName.ETB=Etiopian birri\u00e4 -currenciesDisplayName.BND=Brunein dollaria -currenciesDisplayName.EGP=Egyptin puntaa -currenciesDisplayName.JMD=Jamaikan dollaria -currenciesDisplayName.PLN=Puolan zlotya -currenciesDisplayName.DZD=Algerian dinaaria -currenciesDisplayName.ISK=Islannin kruunua -currenciesDisplayName.SRG=Surinamin guldenia -currenciesDisplayName.LYD=Libyan dinaaria -currenciesDisplayName.SRD=Surinamin dollaria -currenciesDisplayName.BAM=Bosnia-Hertsegovinan vaihdettavaa markkaa -currenciesDisplayName.BZD=Belizen dollaria -currenciesDisplayName.ESP=Espanjan pesetaa -currenciesDisplayName.KRW=Etel\u00e4-Korean wonia -currenciesDisplayName.NLG=Alankomaiden guldenia -currenciesDisplayName.MRO=Mauritanian ouguiyaa -currenciesDisplayName.BAD=Bosnia-Hertsegovinan dinaaria +currenciesDisplayName.YUD=Jugoslavian kovaa dinaaria +currenciesDisplayName.YUM=Jugoslavian uutta dinaaria +currenciesDisplayName.YUN=Jugoslavian vaihdettavaa dinaaria +currenciesDisplayName.ZAL=Etel\u00e4-Afrikan rahoitusrandia +currenciesDisplayName.ZAR=Etel\u00e4-Afrikan randia +currenciesDisplayName.ZMK=Sambian kwachaa +currenciesDisplayName.ZRN=Zairen uutta zairea +currenciesDisplayName.ZRZ=Zairen zairea currenciesDisplayName.ZWD=Zimbabwen dollaria -currenciesDisplayName.SEK=Ruotsin kruunua -currenciesDisplayName.CSK=T\u0161ekkoslovakian kovaa korunaa -currenciesDisplayName.BYR=Valko-Ven\u00e4j\u00e4n ruplaa -currenciesDisplayName.ESB=Espanjan pesetaa (vaihdettava tili) -currenciesDisplayName.IRR=Iranin rialia -currenciesDisplayName.ESA=Espanjan pesetaa (A-tili) -currenciesDisplayName.PKR=Pakistanin rupiaa -currenciesDisplayName.BMD=Bermudan dollaria -currenciesDisplayName.CSD=Serbian vanhaa dinaaria +currenciesSymbol.BRL=BRL +currenciesSymbol.DKK=Tkr +currenciesSymbol.FIM=mk +currenciesSymbol.GBP=\u00a3 currenciesSymbol.INR=INR -currenciesSymbol.NOK=Nkr currenciesSymbol.ITL=ITL currenciesSymbol.JPY=\u00a5 -currenciesSymbol.DKK=Tkr -currenciesSymbol.FIM=mk -currenciesSymbol.BRL=BRL -currenciesSymbol.USD=$ +currenciesSymbol.NOK=Nkr currenciesSymbol.SEK=Rkr -currenciesSymbol.GBP=\u00a3 -shortMonths=tammi\u00aehelmi\u00aemaalis\u00aehuhti\u00aetouko\u00aekes\u00e4\u00aehein\u00e4\u00aeelo\u00aesyys\u00aeloka\u00aemarras\u00aejoulu\u00ae\u00ae -months=tammikuu\u00aehelmikuu\u00aemaaliskuu\u00aehuhtikuu\u00aetoukokuu\u00aekes\u00e4kuu\u00aehein\u00e4kuu\u00aeelokuu\u00aesyyskuu\u00aelokakuu\u00aemarraskuu\u00aejoulukuu\u00ae\u00ae -shortWeekdays=\u00aesu\u00aema\u00aeti\u00aeke\u00aeto\u00aepe\u00aela\u00ae -weekdays=\u00aesunnuntai\u00aemaanantai\u00aetiistai\u00aekeskiviikko\u00aetorstai\u00aeperjantai\u00aelauantai\u00ae +currenciesSymbol.USD=$ +shortMonths=tammi\u00aehelmi\u00aemaalis\u00aehuhti\u00aetouko\u00aekes\u00e4\u00aehein\u00e4\u00aeelo\u00aesyys\u00aeloka\u00aemarras\u00aejoulu\u00ae +months=tammikuuta\u00aehelmikuuta\u00aemaaliskuuta\u00aehuhtikuuta\u00aetoukokuuta\u00aekes\u00e4kuuta\u00aehein\u00e4kuuta\u00aeelokuuta\u00aesyyskuuta\u00aelokakuuta\u00aemarraskuuta\u00aejoulukuuta\u00ae +shortWeekdays=\u00aesu\u00aema\u00aeti\u00aeke\u00aeto\u00aepe\u00aela +weekdays=\u00aesunnuntaina\u00aemaanantaina\u00aetiistaina\u00aekeskiviikkona\u00aetorstaina\u00aeperjantaina\u00aelauantaina eras=eKr.\u00aejKr.\u00ae ampms=ap.\u00aeip.\u00ae shortDateFormat=d.M.yyyy mediumDateFormat=d.M.yyyy -longDateFormat=d. MMMM'ta' yyyy -fullDateFormat=EEEE d. MMMM'ta' yyyy +longDateFormat=d. MMMM yyyy +fullDateFormat=EEEE d. MMMM yyyy shortTimeFormat=H.mm mediumTimeFormat=H.mm.ss longTimeFormat=H.mm.ss z fullTimeFormat=H.mm.ss z -zoneStrings=America_Eastern\u00aeYhdysvaltain it\u00e4inen normaaliaika\u00ae\u00aeYhdysvaltain it\u00e4inen kes\u00e4aika\u00ae\u00ae\u00a9China\u00aeKiinan normaaliaika\u00aeCST (Kiina)\u00aeKiinan kes\u00e4aika\u00aeCDT (Kiina)\u00ae\u00a9Europe_Eastern\u00aeIt\u00e4-Euroopan normaaliaika\u00ae\u00aeIt\u00e4-Euroopan kes\u00e4aika\u00ae\u00ae\u00a9Europe_Central\u00aeKeski-Euroopan normaaliaika\u00ae\u00aeKeski-Euroopan kes\u00e4aika\u00ae\u00ae\u00a9America_Mountain\u00aeKalliovuorten normaaliaika\u00ae\u00aeKalliovuorten kes\u00e4aika\u00ae\u00ae\u00a9America_Central\u00aeYhdysvaltain keskinen normaaliaika\u00ae\u00aeYhdysvaltain keskinen kes\u00e4aika\u00ae\u00ae\u00a9GMT\u00aeGreenwichin normaaliaika\u00ae\u00ae\u00ae\u00ae\u00a9Atlantic\u00aeKanadan Atlantin normaaliaika\u00ae\u00aeKanadan Atlantin kes\u00e4aika\u00ae\u00ae\u00a9Newfoundland\u00aeNewfoundlandin normaaliaika\u00ae\u00aeNewfoundlandin kes\u00e4aika\u00ae\u00ae\u00a9America_Pacific\u00aeYhdysvaltain Tyynenmeren normaaliaika\u00ae\u00aeYhdysvaltain Tyynenmeren kes\u00e4aika\u00ae\u00ae\u00a9Israel\u00aeIsraelin normaaliaika\u00aeIST (Israel)\u00aeIsraelin kes\u00e4aika\u00ae\u00ae\u00a9Alaska\u00aeAlaskan normaaliaika\u00ae\u00aeAlaskan kes\u00e4aika\u00ae\u00ae\u00a9Japan\u00aeJapanin normaaliaika\u00ae\u00aeJapanin kes\u00e4aika\u00ae\u00ae\u00a9 -territories.TL=It\u00e4-Timor -territories.TK=Tokelau -territories.TJ=Tad\u017eikistan -territories.TH=Thaimaa -territories.TG=Togo -territories.TF=Ranskan ulkopuoliset etel\u00e4iset alueet -territories.GY=Guyana -territories.TD=T\u0161ad -territories.TC=Turks- ja Caicossaaret -territories.GW=Guinea-Bissau -territories.GU=Guam -territories.GT=Guatemala -territories.GS=Etel\u00e4-Georgia ja Etel\u00e4iset Sandwichsaaret -territories.GR=Kreikka -territories.GQ=P\u00e4iv\u00e4ntasaajan Guinea -territories.GP=Guadeloupe -territories.SZ=Swazimaa -territories.SY=Syyria -territories.GN=Guinea -territories.GM=Gambia -territories.GL=Gr\u00f6nlanti -territories.SV=El Salvador -territories.062=Etel\u00e4- ja Keski-Aasia -territories.ST=S\u00e3o Tom\u00e9 ja Pr\u00edncipe -territories.GI=Gibraltar -territories.061=Polynesia -territories.GH=Ghana -territories.SR=Surinam -territories.GG=Guernsey -territories.GF=Ranskan Guayana -territories.GE=Georgia -territories.SO=Somalia -territories.GD=Grenada -territories.SN=Senegal -territories.SM=San Marino -territories.GB=Britannia -territories.SL=Sierra Leone -territories.GA=Gabon -territories.SK=Slovakia -territories.SJ=Huippuvuoret ja Jan Mayen -territories.SI=Slovenia -territories.SH=Saint Helena -territories.SG=Singapore -territories.SE=Ruotsi -territories.SD=Sudan -territories.SC=Seychellit -territories.SB=Salomonsaaret -territories.SA=Saudi-Arabia -territories.FR=Ranska -territories.FO=F\u00e4rsaaret -territories.057=Mikronesia -territories.FM=Mikronesian liittovaltio -territories.RW=Ruanda -territories.054=Melanesia -territories.FK=Falklandinsaaret -territories.053=Australia ja Uusi-Seelanti -territories.RU=Ven\u00e4j\u00e4 -territories.FJ=Fid\u017ei -territories.FI=Suomi -territories.RS=Serbia -territories.RO=Romania -territories.RE=R\u00e9union -territories.ET=Etiopia -territories.ES=Espanja -territories.ER=Eritrea -territories.QU=Euroopan unioni -territories.EH=L\u00e4nsi-Sahara -territories.EG=Egypti -territories.EE=Viro -territories.830=Kanaalisaaret -territories.QO=ulkomeri -territories.EC=Ecuador -territories.DZ=Algeria -territories.QA=Qatar -territories.039=Etel\u00e4-Eurooppa -territories.DO=Dominikaaninen tasavalta -territories.PY=Paraguay -territories.DM=Dominica -territories.035=Kaakkois-Aasia -territories.PW=Palau -territories.034=Etel\u00e4-Aasia -territories.DK=Tanska -territories.DJ=Djibouti -territories.PT=Portugali -territories.PS=Palestiina -territories.030=It\u00e4-Aasia -territories.PR=Puerto Rico -territories.DE=Saksa -territories.PN=Pitcairn -territories.PM=Saint-Pierre ja Miquelon -territories.PL=Puola -territories.PK=Pakistan -territories.PH=Filippiinit -territories.PG=Papua-Uusi-Guinea -territories.PF=Ranskan Polynesia -territories.CZ=T\u0161ekki -territories.PE=Peru -territories.CY=Kypros -territories.CX=Joulusaari -territories.CV=Kap Verde -territories.PA=Panama -territories.CU=Kuuba -territories.CS=Serbia ja Montenegro -territories.CR=Costa Rica -territories.029=Karibia -territories.CO=Kolumbia -territories.CN=Kiina -territories.CM=Kamerun -territories.CL=Chile -territories.CK=Cookinsaaret -territories.021=pohjoinen Amerikka -territories.CI=Norsunluurannikko -territories.CH=Sveitsi -territories.CG=Kongo-Brazzaville -territories.CF=Keski-Afrikan tasavalta -territories.CD=Kongo-Kinshasa -territories.CC=Kookossaaret -territories.OM=Oman -territories.CA=Kanada -territories.419=Latinalainen Amerikka ja Karibia -territories.BZ=Belize -territories.BY=Valko-Ven\u00e4j\u00e4 -territories.BW=Botswana -territories.BV=Bouvet\u2019nsaari -territories.BT=Bhutan -territories.BS=Bahama -territories.BR=Brasilia -territories.019=Amerikka -territories.018=etel\u00e4inen Afrikka -territories.NZ=Uusi-Seelanti -territories.017=Keski-Afrikka -territories.BO=Bolivia -territories.BN=Brunei -territories.015=Pohjois-Afrikka -territories.BM=Bermuda -territories.014=It\u00e4-Afrikka -territories.BL=Saint-Barth\u00e9lemy -territories.013=V\u00e4li-Amerikka -territories.NU=Niue -territories.BJ=Benin +zoneStrings=Alaska\u00aeAlaskan normaaliaika\u00ae\u00aeAlaskan kes\u00e4aika\u00ae\u00ae\u00a9America_Central\u00aeYhdysvaltain keskinen normaaliaika\u00ae\u00aeYhdysvaltain keskinen kes\u00e4aika\u00ae\u00ae\u00a9America_Eastern\u00aeYhdysvaltain it\u00e4inen normaaliaika\u00ae\u00aeYhdysvaltain it\u00e4inen kes\u00e4aika\u00ae\u00ae\u00a9America_Mountain\u00aeKalliovuorten normaaliaika\u00ae\u00aeKalliovuorten kes\u00e4aika\u00ae\u00ae\u00a9America_Pacific\u00aeYhdysvaltain Tyynenmeren normaaliaika\u00ae\u00aeYhdysvaltain Tyynenmeren kes\u00e4aika\u00ae\u00ae\u00a9Atlantic\u00aeKanadan Atlantin normaaliaika\u00ae\u00aeKanadan Atlantin kes\u00e4aika\u00ae\u00ae\u00a9China\u00aeKiinan normaaliaika\u00aeCST (Kiina)\u00aeKiinan kes\u00e4aika\u00aeCDT (Kiina)\u00ae\u00a9Europe_Central\u00aeKeski-Euroopan normaaliaika\u00ae\u00aeKeski-Euroopan kes\u00e4aika\u00ae\u00ae\u00a9Europe_Eastern\u00aeIt\u00e4-Euroopan normaaliaika\u00ae\u00aeIt\u00e4-Euroopan kes\u00e4aika\u00ae\u00ae\u00a9GMT\u00aeGreenwichin normaaliaika\u00ae\u00ae\u00ae\u00ae\u00a9Israel\u00aeIsraelin normaaliaika\u00aeIST (Israel)\u00aeIsraelin kes\u00e4aika\u00ae\u00ae\u00a9Japan\u00aeJapanin normaaliaika\u00ae\u00aeJapanin kes\u00e4aika\u00ae\u00ae\u00a9Newfoundland\u00aeNewfoundlandin normaaliaika\u00ae\u00aeNewfoundlandin kes\u00e4aika\u00ae\u00ae\u00a9 +territories.001=maailma +territories.002=Afrikka +territories.003=Pohjois-Amerikka +territories.005=Etel\u00e4-Amerikka +territories.009=Oseania territories.011=L\u00e4nsi-Afrikka -territories.BI=Burundi +territories.013=V\u00e4li-Amerikka +territories.014=It\u00e4-Afrikka +territories.015=Pohjois-Afrikka +territories.017=Keski-Afrikka +territories.018=etel\u00e4inen Afrikka +territories.019=Amerikka +territories.021=pohjoinen Amerikka +territories.029=Karibia +territories.030=It\u00e4-Aasia +territories.034=Etel\u00e4-Aasia +territories.035=Kaakkois-Aasia +territories.039=Etel\u00e4-Eurooppa +territories.053=Australia ja Uusi-Seelanti +territories.054=Melanesia +territories.057=Mikronesia +territories.061=Polynesia +territories.062=Etel\u00e4- ja Keski-Aasia +territories.142=Aasia +territories.143=Keski-Aasia +territories.145=L\u00e4nsi-Aasia +territories.150=Eurooppa +territories.151=It\u00e4-Eurooppa +territories.154=Pohjois-Eurooppa +territories.155=L\u00e4nsi-Eurooppa territories.172=Itsen\u00e4isten valtioiden yhteis\u00f6 -territories.BH=Bahrain -territories.NR=Nauru -territories.BG=Bulgaria -territories.BF=Burkina Faso -territories.NP=Nepal -territories.BE=Belgia -territories.ZZ=tuntematon tai virheellinen alue -territories.NO=Norja -territories.BD=Bangladesh -territories.BB=Barbados -territories.ZW=Zimbabwe -territories.NL=Alankomaat -territories.BA=Bosnia ja Hertsegovina -territories.NI=Nicaragua -territories.NG=Nigeria -territories.NF=Norfolkinsaari -territories.AZ=Azerbaid\u017ean -territories.NE=Niger -territories.AX=Ahvenanmaa -territories.NC=Uusi-Kaledonia -territories.AW=Aruba -territories.ZM=Sambia -territories.NA=Namibia -territories.AU=Australia -territories.AT=It\u00e4valta -territories.AS=Amerikan Samoa -territories.AR=Argentiina -territories.AQ=Antarktis -territories.009=Oseania -territories.MZ=Mosambik -territories.AO=Angola -territories.MY=Malesia -territories.AN=Alankomaiden Antillit -territories.MX=Meksiko -territories.AM=Armenia -territories.005=Etel\u00e4-Amerikka -territories.MW=Malawi -territories.AL=Albania -territories.MV=Malediivit -territories.003=Pohjois-Amerikka -territories.ZA=Etel\u00e4-Afrikka -territories.MU=Mauritius -territories.002=Afrikka -territories.MT=Malta -territories.AI=Anguilla -territories.001=maailma -territories.MS=Montserrat -territories.MR=Mauritania -territories.AG=Antigua ja Barbuda -territories.MQ=Martinique -territories.AF=Afganistan -territories.MP=Pohjois-Mariaanit -territories.AE=Arabiemiirikunnat -territories.MO=Macao +territories.419=Latinalainen Amerikka ja Karibia +territories.830=Kanaalisaaret territories.AD=Andorra -territories.MN=Mongolia -territories.MM=Myanmar -territories.ML=Mali -territories.MK=Makedonia -territories.YT=Mayotte -territories.MH=Marshallinsaaret -territories.MG=Madagaskar -territories.MF=Saint-Martin -territories.ME=Montenegro -territories.MD=Moldova -territories.MC=Monaco -territories.MA=Marokko -territories.YE=Jemen -territories.LY=Libya -territories.LV=Latvia -territories.155=L\u00e4nsi-Eurooppa -territories.LU=Luxemburg -territories.154=Pohjois-Eurooppa -territories.LT=Liettua -territories.LS=Lesotho -territories.LR=Liberia -territories.151=It\u00e4-Eurooppa -territories.150=Eurooppa -territories.LK=Sri Lanka -territories.LI=Liechtenstein -territories.LC=Saint Lucia -territories.LB=Libanon -territories.LA=Laos -territories.KZ=Kazakstan -territories.KY=Caymansaaret -territories.KW=Kuwait -territories.145=L\u00e4nsi-Aasia -territories.143=Keski-Aasia -territories.142=Aasia -territories.KR=Etel\u00e4-Korea -territories.KP=Pohjois-Korea -territories.KN=Saint Kitts ja Nevis -territories.KM=Komorit -territories.KI=Kiribati -territories.WS=Samoa -territories.KH=Kambod\u017ea -territories.KG=Kirgisia -territories.KE=Kenia -territories.WF=Wallis ja Futuna -territories.JP=Japani -territories.JO=Jordania -territories.JM=Jamaika -territories.VU=Vanuatu -territories.JE=Jersey -territories.VN=Vietnam -territories.VI=Yhdysvaltain Neitsytsaaret -territories.VG=Brittil\u00e4iset Neitsytsaaret -territories.VE=Venezuela -territories.VC=Saint Vincent ja Grenadiinit -territories.VA=Vatikaani -territories.IT=Italia -territories.IS=Islanti -territories.IR=Iran -territories.IQ=Irak -territories.UZ=Uzbekistan -territories.IO=Brittil\u00e4inen Intian valtameren alue -territories.UY=Uruguay -territories.IN=Intia -territories.IM=Mansaari -territories.IL=Israel -territories.US=Yhdysvallat -territories.IE=Irlanti -territories.ID=Indonesia -territories.UM=Yhdysvaltain pienet erillissaaret -territories.UG=Uganda -territories.UA=Ukraina -territories.HU=Unkari -territories.HT=Haiti -territories.HR=Kroatia -territories.TZ=Tansania -territories.HN=Honduras +territories.AE=Arabiemiirikunnat +territories.AF=Afganistan +territories.AG=Antigua ja Barbuda +territories.AI=Anguilla +territories.AL=Albania +territories.AM=Armenia +territories.AN=Alankomaiden Antillit +territories.AO=Angola +territories.AQ=Antarktis +territories.AR=Argentiina +territories.AS=Amerikan Samoa +territories.AT=It\u00e4valta +territories.AU=Australia +territories.AW=Aruba +territories.AX=Ahvenanmaa +territories.AZ=Azerbaid\u017ean +territories.BA=Bosnia ja Hertsegovina +territories.BB=Barbados +territories.BD=Bangladesh +territories.BE=Belgia +territories.BF=Burkina Faso +territories.BG=Bulgaria +territories.BH=Bahrain +territories.BI=Burundi +territories.BJ=Benin +territories.BL=Saint-Barth\u00e9lemy +territories.BM=Bermuda +territories.BN=Brunei +territories.BO=Bolivia +territories.BR=Brasilia +territories.BS=Bahama +territories.BT=Bhutan +territories.BV=Bouvet\u2019nsaari +territories.BW=Botswana +territories.BY=Valko-Ven\u00e4j\u00e4 +territories.BZ=Belize +territories.CA=Kanada +territories.CC=Kookossaaret +territories.CD=Kongo-Kinshasa +territories.CF=Keski-Afrikan tasavalta +territories.CG=Kongo-Brazzaville +territories.CH=Sveitsi +territories.CI=Norsunluurannikko +territories.CK=Cookinsaaret +territories.CL=Chile +territories.CM=Kamerun +territories.CN=Kiina +territories.CO=Kolumbia +territories.CR=Costa Rica +territories.CS=Serbia ja Montenegro +territories.CU=Kuuba +territories.CV=Kap Verde +territories.CX=Joulusaari +territories.CY=Kypros +territories.CZ=T\u0161ekki +territories.DE=Saksa +territories.DJ=Djibouti +territories.DK=Tanska +territories.DM=Dominica +territories.DO=Dominikaaninen tasavalta +territories.DZ=Algeria +territories.EC=Ecuador +territories.EE=Viro +territories.EG=Egypti +territories.EH=L\u00e4nsi-Sahara +territories.ER=Eritrea +territories.ES=Espanja +territories.ET=Etiopia +territories.FI=Suomi +territories.FJ=Fid\u017ei +territories.FK=Falklandinsaaret +territories.FM=Mikronesian liittovaltio +territories.FO=F\u00e4rsaaret +territories.FR=Ranska +territories.GA=Gabon +territories.GB=Britannia +territories.GD=Grenada +territories.GE=Georgia +territories.GF=Ranskan Guayana +territories.GG=Guernsey +territories.GH=Ghana +territories.GI=Gibraltar +territories.GL=Gr\u00f6nlanti +territories.GM=Gambia +territories.GN=Guinea +territories.GP=Guadeloupe +territories.GQ=P\u00e4iv\u00e4ntasaajan Guinea +territories.GR=Kreikka +territories.GS=Etel\u00e4-Georgia ja Etel\u00e4iset Sandwichsaaret +territories.GT=Guatemala +territories.GU=Guam +territories.GW=Guinea-Bissau +territories.GY=Guyana +territories.HK=Hongkong \u2013 Kiinan erityishallintoalue territories.HM=Heard- ja McDonaldinsaaret -territories.TW=Taiwan -territories.TV=Tuvalu -territories.HK=Hongkong -territories.TT=Trinidad ja Tobago -territories.TR=Turkki -territories.TO=Tonga -territories.TN=Tunisia -territories.TM=Turkmenistan -languages.gwi=gwit\u0161in -languages.akk=akkadi -languages.eka=ekajuk -languages.ijo=id\u017eo -languages.xh=xhosa -languages.sux=sumeri -languages.sus=susu -languages.mis=luokittelematon kieli -languages.loz=lozi -languages.tog=malawintonga -languages.zbl=blisskieli -languages.pon=pohnpei -languages.min=minangkabau -languages.suk=sukuma -languages.wo=wolof -languages.lol=mongo -languages.kut=kutenai -languages.mic=micmac -languages.wa=valloni -languages.kum=kumykki -languages.zap=sapoteekki -languages.ain=ainu -languages.cus=kuu\u0161ilainen kieli -languages.jbo=lojban -languages.doi=dogri -languages.zza=zaza -languages.vo=volap\u00fck -languages.oto=otomi-kieli -languages.vi=vietnam -languages.vai=vai -languages.rar=rarotonga -languages.ve=venda -languages.rap=rapanui -languages.raj=rajastani -languages.ota=osmani -languages.nzi=nzima -languages.nap=napoli -languages.uz=uzbekki -languages.uga=ugarit -languages.tmh=tama\u0161ek -languages.nai=pohjoisamerikkalainen intiaanikieli -languages.nah=nahuatl -languages.ur=urdu -languages.fat=fanti -languages.uk=ukraina -languages.egy=muinaisegypti -languages.zxx=ei kielellist\u00e4 sis\u00e4lt\u00f6\u00e4 -languages.ug=uiguuri -languages.fan=fang -languages.ssa=niilil\u00e4is-saharalainen kieli -languages.mga=keski-iiri -languages.bat=balttilainen kieli -languages.nyo=nyoro -languages.bas=basa -languages.nyn=nyankole -languages.nym=nyamwezi -languages.gsw=sveitsinsaksa -languages.hmn=hmong -languages.ban=bali -languages.osa=osage -languages.bal=belut\u0161i -languages.ty=tahiti -languages.bai=bamileke-kieli -languages.tw=twi -languages.srr=serer -languages.tli=tlingit -languages.tlh=klingon -languages.tt=tataari -languages.ts=tsonga -languages.srn=sranan -languages.bad=banda -languages.tr=turkki -languages.to=tongantonga -languages.tn=tswana -languages.tl=tagalog -languages.tk=turkmeeni -languages.ti=tigrinja -languages.th=thai -languages.kru=kurukh -languages.tg=tad\u017eikki -languages.byn=bilin -languages.te=telugu -languages.kro=kru-kieli -languages.csb=ka\u0161ubi -languages.ta=tamil -languages.krl=karjala -languages.tkl=tokelau -languages.efi=efik -languages.sw=swahili -languages.sv=ruotsi -languages.su=sunda -languages.krc=karat\u0161ai-balkaari -languages.st=etel\u00e4sotho -languages.ss=swazi -languages.sr=serbia -languages.sq=albania -languages.men=mende -languages.crp=kreoli- tai pidgin-kieli -languages.so=somali -languages.afh=afrihili -languages.sn=\u0161ona -languages.sm=samoa -languages.sl=sloveeni -languages.grc=muinaiskreikka -languages.sk=slovakki -languages.grb=grebo -languages.si=sinhala -languages.sh=serbokroatia -languages.crh=kriminturkki -languages.afa=afro-aasialainen kieli -languages.sg=sango -languages.se=pohjoissaame -languages.sd=sindhi -languages.udm=udmurtti -languages.sc=sardi -languages.sa=sanskrit -languages.rw=ruanda -languages.nwc=klassinen newari -languages.ru=ven\u00e4j\u00e4 -languages.mdr=mandar -languages.ro=romania -languages.rn=rundi -languages.rm=retoromaani -languages.fr_CH=sveitsinranska -languages.mdf=mok\u0161a -languages.tiv=tiv -languages.fr_CA=kanadanranska -languages.ady=adyge -languages.zun=zuni -languages.kpe=kpelle -languages.qu=ket\u0161ua -languages.tig=tigre -languages.son=songhai -languages.cpp=portugaliin perustuva kreoli- tai pidgin-kieli -languages.rup=aromania -languages.sog=sogdi -languages.ada=adangme -languages.kos=kosrae -languages.hit=heetti -languages.cpf=ranskaan perustuva kreoli- tai pidgin-kieli -languages.cpe=englantiin perustuva kreoli- tai pidgin-kieli -languages.him=himat\u0161ali -languages.kok=konkani -languages.hil=hiligaino -languages.got=gootti -languages.gor=gorontalo -languages.gon=gondi -languages.din=dinka -languages.nub=nubialainen kieli -languages.pt=portugali -languages.ps=pa\u0161tu -languages.fur=friuli -languages.phn=foinikia -languages.de_CH=sveitsinyl\u00e4saksa -languages.goh=muinaisyl\u00e4saksa -languages.snk=soninke -languages.cop=kopti -languages.yap=japi -languages.ach=at\u0161oli -languages.yao=jao -languages.phi=filippiinil\u00e4inen kieli -languages.pl=puola -languages.ace=aceh -languages.pi=paali -languages.pt_PT=portugalinportugali -languages.pa=punjabi -languages.bug=bugi -languages.iba=iban -languages.sms=koltansaame -languages.bua=burjaatti -languages.mas=maasai -languages.smn=inarinsaame -languages.os=osseetti -languages.map=austronesialainen kieli -languages.or=oriya -languages.man=mandingo -languages.smj=luulajansaame -languages.smi=saamelaiskieli -languages.mak=makassar -languages.om=oromo -languages.mai=maithili -languages.oj=od\u017eibwa -languages.mag=magahi -languages.mad=madura -languages.sma=etel\u00e4saame -languages.oc=oksitaani -languages.nso=pohjoissotho -languages.btk=batak -languages.myv=ers\u00e4 -languages.es_ES=espanjanespanja -languages.de_AT=it\u00e4vallansaksa -languages.dgr=dogrib -languages.ny=njand\u017ea -languages.myn=maya-kieli -languages.nv=navajo -languages.kmb=kimbundu -languages.nr=etel\u00e4-ndebele -languages.gmh=keskiyl\u00e4saksa -languages.no=norja -languages.nn=norjan nynorsk -languages.nl=hollanti -languages.root=juuri -languages.ng=ndonga -languages.sla=slaavilainen kieli -languages.ne=nepali -languages.nd=pohjois-ndebele -languages.cmc=t\u0161am-kieli -languages.tet=tetum -languages.nb=norjan bokm\u00e5l -languages.na=nauru -languages.ter=tereno -languages.tem=temne -languages.my=burma -languages.lez=lezgi -languages.mt=malta -languages.frs=it\u00e4friisi -languages.peo=muinaispersia -languages.ms=malaiji -languages.frr=pohjoisfriisi -languages.mr=marathi -languages.fro=muinaisranska -languages.mo=moldavia -languages.mn=mongoli -languages.frm=keskiranska -languages.ml=malayalam -languages.jrb=juutalaisarabia -languages.mk=makedonia -languages.mi=maori -languages.mh=marshall -languages.mg=malagassi -languages.nqo=n\u2019ko -languages.mwr=marwari -languages.bra=brad\u017e -languages.mwl=mirandeesi -languages.den=slevi -languages.lv=latvia -languages.lu=katanganluba -languages.del=delaware -languages.lt=liettua -languages.lo=lao -languages.ln=lingala -languages.li=limburg -languages.ewo=ewondo -languages.lg=ganda -languages.lb=luxemburg -languages.la=latina -languages.jpr=juutalaispersia -languages.vot=vatja -languages.sit=sinotiibetil\u00e4inen kieli -languages.ky=kirgiisi -languages.kw=korni -languages.kv=komi -languages.ku=kurdi -languages.sio=sioux-kieli -languages.ks=ka\u0161miri -languages.kr=kanuri -languages.awa=awadhi -languages.ko=korea -languages.kn=kannada -languages.km=khmer -languages.en_GB=britannianenglanti -languages.kl=gr\u00f6nlanti -languages.kk=kazakki -languages.rom=romani -languages.kj=kuanjama -languages.sid=sidamo -languages.ki=kikuju -languages.kg=kongo -languages.non=muinaisnorja -languages.ka=georgia -languages.mus=creek -languages.roa=romaaninen kieli -languages.nog=nogai -languages.mun=mundakieli -languages.mul=monia kieli\u00e4 -languages.jv=jaava -languages.gil=kiribati -languages.znd=zande -languages.shn=shan -languages.fon=fon -languages.xal=kalmukki +territories.HN=Honduras +territories.HR=Kroatia +territories.HT=Haiti +territories.HU=Unkari +territories.ID=Indonesia +territories.IE=Irlanti +territories.IL=Israel +territories.IM=Mansaari +territories.IN=Intia +territories.IO=Brittil\u00e4inen Intian valtameren alue +territories.IQ=Irak +territories.IR=Iran +territories.IS=Islanti +territories.IT=Italia +territories.JE=Jersey +territories.JM=Jamaika +territories.JO=Jordania +territories.JP=Japani +territories.KE=Kenia +territories.KG=Kirgisia +territories.KH=Kambod\u017ea +territories.KI=Kiribati +territories.KM=Komorit +territories.KN=Saint Kitts ja Nevis +territories.KP=Pohjois-Korea +territories.KR=Etel\u00e4-Korea +territories.KW=Kuwait +territories.KY=Caymansaaret +territories.KZ=Kazakstan +territories.LA=Laos +territories.LB=Libanon +territories.LC=Saint Lucia +territories.LI=Liechtenstein +territories.LK=Sri Lanka +territories.LR=Liberia +territories.LS=Lesotho +territories.LT=Liettua +territories.LU=Luxemburg +territories.LV=Latvia +territories.LY=Libya +territories.MA=Marokko +territories.MC=Monaco +territories.MD=Moldova +territories.ME=Montenegro +territories.MF=Saint-Martin +territories.MG=Madagaskar +territories.MH=Marshallinsaaret +territories.MK=Makedonia +territories.ML=Mali +territories.MM=Myanmar +territories.MN=Mongolia +territories.MO=Macao \u2013 Kiinan erityishallintoalue +territories.MP=Pohjois-Mariaanit +territories.MQ=Martinique +territories.MR=Mauritania +territories.MS=Montserrat +territories.MT=Malta +territories.MU=Mauritius +territories.MV=Malediivit +territories.MW=Malawi +territories.MX=Meksiko +territories.MY=Malesia +territories.MZ=Mosambik +territories.NA=Namibia +territories.NC=Uusi-Kaledonia +territories.NE=Niger +territories.NF=Norfolkinsaari +territories.NG=Nigeria +territories.NI=Nicaragua +territories.NL=Alankomaat +territories.NO=Norja +territories.NP=Nepal +territories.NR=Nauru +territories.NU=Niue +territories.NZ=Uusi-Seelanti +territories.OM=Oman +territories.PA=Panama +territories.PE=Peru +territories.PF=Ranskan Polynesia +territories.PG=Papua-Uusi-Guinea +territories.PH=Filippiinit +territories.PK=Pakistan +territories.PL=Puola +territories.PM=Saint-Pierre ja Miquelon +territories.PN=Pitcairn +territories.PR=Puerto Rico +territories.PS=Palestiina +territories.PT=Portugali +territories.PW=Palau +territories.PY=Paraguay +territories.QA=Qatar +territories.QO=ulkomeri +territories.QU=Euroopan unioni +territories.RE=R\u00e9union +territories.RO=Romania +territories.RS=Serbia +territories.RU=Ven\u00e4j\u00e4 +territories.RW=Ruanda +territories.SA=Saudi-Arabia +territories.SB=Salomonsaaret +territories.SC=Seychellit +territories.SD=Sudan +territories.SE=Ruotsi +territories.SG=Singapore +territories.SH=Saint Helena +territories.SI=Slovenia +territories.SJ=Huippuvuoret ja Jan Mayen +territories.SK=Slovakia +territories.SL=Sierra Leone +territories.SM=San Marino +territories.SN=Senegal +territories.SO=Somalia +territories.SR=Surinam +territories.ST=S\u00e3o Tom\u00e9 ja Pr\u00edncipe +territories.SV=El Salvador +territories.SY=Syyria +territories.SZ=Swazimaa +territories.TC=Turks- ja Caicossaaret +territories.TD=T\u0161ad +territories.TF=Ranskan ulkopuoliset etel\u00e4iset alueet +territories.TG=Togo +territories.TH=Thaimaa +territories.TJ=Tad\u017eikistan +territories.TK=Tokelau +territories.TL=It\u00e4-Timor +territories.TM=Turkmenistan +territories.TN=Tunisia +territories.TO=Tonga +territories.TR=Turkki +territories.TT=Trinidad ja Tobago +territories.TV=Tuvalu +territories.TW=Taiwan +territories.TZ=Tansania +territories.UA=Ukraina +territories.UG=Uganda +territories.UM=Yhdysvaltain pienet erillissaaret +territories.US=Yhdysvallat +territories.UY=Uruguay +territories.UZ=Uzbekistan +territories.VA=Vatikaani +territories.VC=Saint Vincent ja Grenadiinit +territories.VE=Venezuela +territories.VG=Brittil\u00e4iset Neitsytsaaret +territories.VI=Yhdysvaltain Neitsytsaaret +territories.VN=Vietnam +territories.VU=Vanuatu +territories.WF=Wallis ja Futuna +territories.WS=Samoa +territories.YE=Jemen +territories.YT=Mayotte +territories.ZA=Etel\u00e4-Afrikka +territories.ZM=Sambia +territories.ZW=Zimbabwe +territories.ZZ=tuntematon tai virheellinen alue +languages.aa=afar +languages.ab=abhaasi +languages.ace=aceh +languages.ach=at\u0161oli +languages.ada=adangme +languages.ady=adyge +languages.ae=avesta +languages.af=afrikaans +languages.afa=afro-aasialainen kieli +languages.afh=afrihili +languages.ain=ainu +languages.ak=akan +languages.akk=akkadi +languages.ale=aleutti +languages.alg=algonkin-kieli +languages.alt=altai +languages.am=amhara +languages.an=aragonia +languages.ang=muinaisenglanti +languages.anp=angika +languages.apa=apa\u0161\u0161ikieli +languages.ar=arabia +languages.arc=aramea +languages.arn=araukaani +languages.arp=arapaho +languages.art=keinotekoinen kieli +languages.arw=arawak +languages.as=assami +languages.ast=asturia +languages.ath=athabasca-kieli languages.aus=australialainen kieli -languages.kho=khotani -languages.ja=japani -languages.khi=khoisan-kieli -languages.pau=palau -languages.chy=cheyenne -languages.tai=thaikieli -languages.iu=inuktitut -languages.pap=papiamentu -languages.it=italia -languages.sgn=viittomakieli -languages.is=islanti -languages.kha=khasi -languages.chr=cherokee -languages.pam=pampanga -languages.pal=pahlavi -languages.chp=chipewyan -languages.io=ido -languages.cho=choctaw -languages.chn=chinook-jargon -languages.chm=mari -languages.tyv=tuva +languages.av=avaari +languages.awa=awadhi +languages.ay=aimara +languages.az=azeri +languages.ba=ba\u0161kiiri +languages.bad=banda +languages.bai=bamileke-kieli +languages.bal=belut\u0161i +languages.ban=bali +languages.bas=basa +languages.bat=balttilainen kieli +languages.be=valkoven\u00e4j\u00e4 +languages.bej=bed\u017ea +languages.bem=bemba +languages.ber=berberikieli +languages.bg=bulgaria +languages.bh=bihari +languages.bho=bhod\u017epuri +languages.bi=bislama +languages.bik=bikol +languages.bin=bini +languages.bla=mustajalka +languages.bm=bambara +languages.bn=bengali languages.bnt=bantukieli -languages.pag=pangasinan -languages.ik=inupiatun -languages.chk=chuuk -languages.ii=sichuanin-yi -languages.haw=havaiji -languages.lam=lamba -languages.ig=igbo -languages.chg=t\u0161agatai -languages.sga=muinaisiiri -languages.paa=papualaiskieli -languages.ie=interlingue -languages.id=indonesia -languages.lah=lahnda -languages.day=dajakki +languages.bo=tiibet +languages.br=bretoni +languages.bra=brad\u017e +languages.bs=bosnia +languages.btk=batak +languages.bua=burjaatti +languages.bug=bugi +languages.byn=bilin +languages.ca=katalaani +languages.cad=caddo +languages.cai=keskiamerikkalainen intiaanikieli +languages.car=karibi +languages.cau=kaukasialainen kieli +languages.cch=atsam +languages.ce=t\u0161et\u0161eeni +languages.ceb=cebuano +languages.cel=kelttil\u00e4inen kieli +languages.ch=t\u0161amorro languages.chb=t\u0161ibt\u0161a -languages.ia=interlingua -languages.lad=juutalaisespanja -languages.hz=herero -languages.hai=haida -languages.dar=dargi -languages.hy=armenia -languages.ath=athabasca-kieli -languages.hu=unkari -languages.ht=haiti +languages.chg=t\u0161agatai +languages.chk=chuuk +languages.chm=mari +languages.chn=chinook-jargon +languages.cho=choctaw +languages.chp=chipewyan +languages.chr=cherokee +languages.chy=cheyenne +languages.cmc=t\u0161am-kieli +languages.co=korsika +languages.cop=kopti +languages.cpe=englantiin perustuva kreoli- tai pidgin-kieli +languages.cpf=ranskaan perustuva kreoli- tai pidgin-kieli +languages.cpp=portugaliin perustuva kreoli- tai pidgin-kieli +languages.cr=cree +languages.crh=krimintataari +languages.crp=kreoli- tai pidgin-kieli +languages.cs=t\u0161ekki +languages.csb=ka\u0161ubi +languages.cu=kirkkoslaavi +languages.cus=kuu\u0161ilainen kieli +languages.cv=t\u0161uvassi +languages.cy=kymri +languages.da=tanska languages.dak=dakota -languages.hr=kroatia -languages.ho=hiri-motu -languages.hi=hindi +languages.dar=dargi +languages.day=dajakki +languages.de=saksa +languages.de_AT=it\u00e4vallansaksa +languages.de_CH=sveitsinyl\u00e4saksa +languages.del=delaware +languages.den=slevi +languages.dgr=dogrib +languages.din=dinka +languages.doi=dogri +languages.dra=dravidakieli +languages.dsb=alasorbi +languages.dua=duala +languages.dum=keskihollanti +languages.dv=divehi languages.dyu=djula -languages.he=heprea -languages.ast=asturia -languages.kfo=norsunluurannikonkoro -languages.ha=hausa -languages.wen=sorbin kieli -languages.gv=manx -languages.gu=gujarati -languages.sem=seemil\u00e4inen kieli -languages.sel=selkuppi -languages.iro=irokeesikieli -languages.gn=guarani -languages.gl=galicia -languages.en_CA=kanadanenglanti -languages.arw=arawak -languages.gez=ge\u2019ez -languages.art=keinotekoinen kieli -languages.gd=gaeli -languages.ira=iranilainen kieli -languages.ga=iiri -languages.arp=arapaho -languages.arn=araukaani -languages.fy=l\u00e4nsifriisi -languages.bla=mustajalka -languages.gem=germaaninen kieli -languages.ypk=jupikkikieli -languages.arc=aramea -languages.fr=ranska -languages.fo=f\u00e4\u00e4ri -languages.cel=kelttil\u00e4inen kieli -languages.fj=fid\u017ei -languages.fi=suomi -languages.ff=fulani -languages.tvl=tuvalu -languages.ceb=cebuano -languages.fa=persia +languages.dz=dzongkha +languages.ee=ewe +languages.efi=efik +languages.egy=muinaisegypti +languages.eka=ekajuk +languages.el=kreikka +languages.elx=elami +languages.en=englanti languages.en_AU=australianenglanti -languages.zh_Hans=yksinkertaistettu kiina -languages.zh_Hant=perinteinen kiina -languages.eu=baski -languages.sco=skotti -languages.et=viro -languages.scn=sisilia -languages.es=espanja +languages.en_CA=kanadanenglanti +languages.en_GB=britannianenglanti +languages.en_US=amerikanenglanti +languages.enm=keskienglanti languages.eo=esperanto -languages.en=englanti -languages.el=kreikka -languages.tut=altailainen kieli -languages.niu=niue -languages.tup=tupi-kieli -languages.ee=ewe -languages.tum=tumbuka -languages.nl_BE=flaami +languages.es=espanja languages.es_419=amerikanespanja -languages.mos=mossi -languages.dz=dzongkha -languages.kcg=tyap -languages.nic=nigeril\u00e4is-kongolainen kieli -languages.lus=lusai -languages.fiu=suomalais-ugrilainen kieli -languages.dv=divehi -languages.nia=nias -languages.moh=mohawk -languages.luo=luo -languages.lun=lunda -languages.apa=apa\u0161\u0161ikieli +languages.es_ES=espanjanespanja +languages.et=viro +languages.eu=baski +languages.ewo=ewondo +languages.fa=farsi +languages.fan=fang +languages.fat=fanti +languages.ff=fulani +languages.fi=suomi languages.fil=filipino -languages.lui=luise\u00f1o +languages.fiu=suomalais-ugrilainen kieli +languages.fj=fid\u017ei +languages.fo=f\u00e4\u00e4ri +languages.fon=fon +languages.fr=ranska +languages.fr_CA=kanadanranska +languages.fr_CH=sveitsinranska +languages.frm=keskiranska +languages.fro=muinaisranska +languages.frr=pohjoisfriisi +languages.frs=it\u00e4friisi +languages.fur=friuli +languages.fy=l\u00e4nsifriisi +languages.ga=iiri +languages.gaa=ga +languages.gay=gajo +languages.gba=gbaja +languages.gd=gaeli +languages.gem=germaaninen kieli +languages.gez=ge\u2019ez +languages.gil=kiribati +languages.gl=galicia +languages.gmh=keskiyl\u00e4saksa +languages.gn=guarani +languages.goh=muinaisyl\u00e4saksa +languages.gon=gondi +languages.gor=gorontalo +languages.got=gootti +languages.grb=grebo +languages.grc=muinaiskreikka +languages.gsw=sveitsinsaksa +languages.gu=gud\u017earati +languages.gv=manx +languages.gwi=gwit\u0161in +languages.ha=hausa +languages.hai=haida +languages.haw=havaiji +languages.he=heprea +languages.hi=hindi +languages.hil=hiligaino +languages.him=himat\u0161ali +languages.hit=heetti +languages.hmn=hmong +languages.ho=hiri-motu +languages.hr=kroatia +languages.hsb=yl\u00e4sorbi +languages.ht=haiti +languages.hu=unkari languages.hup=hupa -languages.cch=atsam -languages.bin=bini -languages.de=saksa -languages.lua=luluanluba -languages.bik=bikol -languages.was=washo -languages.und=m\u00e4\u00e4ritt\u00e4m\u00e4t\u00f6n -languages.war=waray -languages.da=tanska -languages.dum=keskihollanti -languages.wal=walamo -languages.mno=manobo-kieli -languages.wak=wakash-kieli -languages.sat=santali -languages.cy=kymri -languages.sas=sasak +languages.hy=armenia +languages.hz=herero +languages.ia=interlingua +languages.iba=iban +languages.id=indonesia +languages.ie=interlingue +languages.ig=igbo +languages.ii=sichuanin-yi +languages.ijo=id\u017eo +languages.ik=inupiatun +languages.ilo=iloko +languages.inc=indoarjalainen kieli +languages.ine=indoeurooppalainen kieli +languages.inh=inguu\u0161i +languages.io=ido +languages.ira=iranilainen kieli +languages.iro=irokeesikieli +languages.is=islanti +languages.it=italia +languages.iu=inuktitut +languages.ja=japani +languages.jbo=lojban +languages.jpr=juutalaispersia +languages.jrb=juutalaisarabia +languages.jv=jaava +languages.ka=georgia +languages.kaa=karakalpakki +languages.kab=kabyyli +languages.kac=kachin +languages.kaj=jju +languages.kam=kamba +languages.kar=karen +languages.kaw=kavi languages.kbd=kabardi -languages.cv=t\u0161uvassi -languages.cu=kirkkoslaavi -languages.mni=manipuri -languages.cs=t\u0161ekki -languages.sam=samarianaramea -languages.cr=cree -languages.sal=sali\u0161ilainen kieli -languages.dua=duala -languages.co=korsika -languages.sai=etel\u00e4amerikkalainen intiaanikieli +languages.kcg=tyap +languages.kfo=norsunluurannikonkoro +languages.kg=kongo +languages.kha=khasi +languages.khi=khoisan-kieli +languages.kho=khotani +languages.ki=kikuju +languages.kj=kuanjama +languages.kk=kazakki +languages.kl=kalaallisut +languages.km=khmer +languages.kmb=kimbundu +languages.kn=kannada +languages.ko=korea +languages.kok=konkani +languages.kos=kosrae +languages.kpe=kpelle +languages.kr=kanuri +languages.krc=karat\u0161ai-balkaari +languages.krl=karjala +languages.kro=kru-kieli +languages.kru=kurukh +languages.ks=ka\u0161miri +languages.ku=kurdi +languages.kum=kumykki +languages.kut=kutenai +languages.kv=komi +languages.kw=korni +languages.ky=kirgiisi +languages.la=latina +languages.lad=ladino +languages.lah=lahnda +languages.lam=lamba +languages.lb=luxemburg +languages.lez=lezgi +languages.lg=ganda +languages.li=limburg +languages.ln=lingala +languages.lo=lao +languages.lol=mongo +languages.loz=lozi +languages.lt=liettua +languages.lu=katanganluba +languages.lua=luluanluba +languages.lui=luise\u00f1o +languages.lun=lunda +languages.luo=luo +languages.lus=lusai +languages.lv=latvia +languages.mad=madura +languages.mag=magahi +languages.mai=maithili +languages.mak=makassar +languages.man=mandingo +languages.map=austronesialainen kieli +languages.mas=maasai +languages.mdf=mok\u0161a +languages.mdr=mandar +languages.men=mende +languages.mg=malagassi +languages.mga=keski-iiri +languages.mh=marshall +languages.mi=maori +languages.mic=micmac +languages.min=minangkabau +languages.mis=luokittelematon kieli +languages.mk=makedonia +languages.mkh=mon-khmer-kieli +languages.ml=malajalam +languages.mn=mongoli languages.mnc=mant\u0161u -languages.sah=jakuutti -languages.kaw=kavi -languages.inh=inguu\u0161i -languages.gba=gbaja +languages.mni=manipuri +languages.mno=manobo-kieli +languages.mo=moldavia +languages.moh=mohawk +languages.mos=mossi +languages.mr=marathi +languages.ms=malaiji +languages.mt=malta +languages.mul=monia kieli\u00e4 +languages.mun=mundakieli +languages.mus=creek +languages.mwl=mirandeesi +languages.mwr=marwari +languages.my=burma +languages.myn=maya-kieli +languages.myv=ers\u00e4 +languages.na=nauru +languages.nah=nahuatl +languages.nai=pohjoisamerikkalainen intiaanikieli +languages.nap=napoli +languages.nb=norjan bokm\u00e5l +languages.nd=pohjois-ndebele +languages.nds=alasaksa +languages.ne=nepali +languages.new=newari +languages.ng=ndonga +languages.nia=nias +languages.nic=nigeril\u00e4is-kongolainen kieli +languages.niu=niue +languages.nl=hollanti +languages.nl_BE=flaami +languages.nn=norjan nynorsk +languages.no=norja +languages.nog=nogai +languages.non=muinaisnorja +languages.nqo=n\u2019ko +languages.nr=etel\u00e4-ndebele +languages.nso=pohjoissotho +languages.nub=nubialainen kieli +languages.nv=navajo +languages.nwc=klassinen newari +languages.ny=njand\u017ea +languages.nym=nyamwezi +languages.nyn=nyankole +languages.nyo=nyoro +languages.nzi=nzima +languages.oc=oksitaani +languages.oj=od\u017eibwa +languages.om=oromo +languages.or=orija +languages.os=osseetti +languages.osa=osage +languages.ota=osmani +languages.oto=otomi-kieli +languages.pa=pand\u017eabi +languages.paa=papualaiskieli +languages.pag=pangasinan +languages.pal=pahlavi +languages.pam=pampanga +languages.pap=papiamentu +languages.pau=palau +languages.peo=muinaispersia +languages.phi=filippiinil\u00e4inen kieli +languages.phn=foinikia +languages.pi=paali +languages.pl=puola +languages.pon=pohnpei +languages.pra=prakrit-kieli +languages.pro=muinaisprovensaali +languages.ps=pa\u0161tu +languages.pt=portugali +languages.pt_BR=brasilianportugali +languages.pt_PT=portugalinportugali +languages.qu=ket\u0161ua +languages.raj=rad\u017eastani +languages.rap=rapanui +languages.rar=rarotonga +languages.rm=retoromaani +languages.rn=rundi +languages.ro=romania +languages.roa=romaaninen kieli +languages.rom=romani +languages.root=juuri +languages.ru=ven\u00e4j\u00e4 +languages.rup=aromania +languages.rw=ruanda +languages.sa=sanskrit languages.sad=sandawe -languages.ch=t\u0161amorro -languages.ine=indoeurooppalainen kieli -languages.bho=bhojpuri -languages.enm=keskienglanti -languages.kar=karen -languages.inc=indoarjalainen kieli -languages.ce=t\u0161et\u0161eeni -languages.gay=gajo -languages.ca=katalaani -languages.umb=umbundu +languages.sah=jakuutti +languages.sai=etel\u00e4amerikkalainen intiaanikieli +languages.sal=sali\u0161ilainen kieli +languages.sam=samarianaramea +languages.sas=sasak +languages.sat=santali +languages.sc=sardi +languages.scn=sisilia +languages.sco=skotti +languages.sd=sindhi +languages.se=pohjoissaame +languages.sel=selkuppi +languages.sem=seemil\u00e4inen kieli +languages.sg=sango +languages.sga=muinaisiiri +languages.sgn=viittomakieli +languages.sh=serbokroaatti +languages.shn=shan +languages.si=sinhali +languages.sid=sidamo +languages.sio=sioux-kieli +languages.sit=sinotiibetil\u00e4inen kieli +languages.sk=slovakki +languages.sl=sloveeni +languages.sla=slaavilainen kieli +languages.sm=samoa +languages.sma=etel\u00e4saame +languages.smi=saamelaiskieli +languages.smj=luulajansaame +languages.smn=inarinsaame +languages.sms=koltansaame +languages.sn=\u0161ona +languages.snk=soninke +languages.so=somali +languages.sog=sogdi +languages.son=songhai +languages.sq=albania +languages.sr=serbia +languages.srn=sranan +languages.srr=serer +languages.ss=swazi +languages.ssa=niilil\u00e4is-saharalainen kieli +languages.st=etel\u00e4sotho +languages.su=sunda +languages.suk=sukuma +languages.sus=susu +languages.sux=sumeri +languages.sv=ruotsi +languages.sw=swahili +languages.syc=muinaissyyria languages.syr=syyria -languages.kam=kamba -languages.anp=angika +languages.ta=tamil +languages.tai=thaikieli +languages.te=telugu +languages.tem=temne +languages.ter=tereno +languages.tet=tetum +languages.tg=tad\u017eikki +languages.th=thai +languages.ti=tigrinja +languages.tig=tigre +languages.tiv=tiv +languages.tk=turkmeeni +languages.tkl=tokelau +languages.tl=tagalog +languages.tlh=klingon +languages.tli=tlingit +languages.tmh=tama\u0161ek +languages.tn=tswana +languages.to=tongantonga +languages.tog=malawintonga +languages.tpi=tok-pisin +languages.tr=turkki +languages.ts=tsonga languages.tsi=tsim\u0161i -languages.kaj=jju -languages.ang=muinaisenglanti -languages.kac=kachin -languages.cau=kaukasialainen kieli -languages.kab=kabyyli -languages.kaa=karakalpakki -languages.bs=bosnia -languages.car=karibi -languages.br=bretoni -languages.syc=syc -languages.bo=tiibet -languages.bn=bengali -languages.bm=bambara -languages.gaa=ga -languages.cai=keskiamerikkalainen intiaanikieli -languages.bi=bislama -languages.bh=bihari -languages.bg=bulgaria -languages.be=valkoven\u00e4j\u00e4 -languages.pt_BR=brasilianportugali -languages.cad=caddo -languages.ba=ba\u0161kiiri -languages.zu=zulu +languages.tt=tataari +languages.tum=tumbuka +languages.tup=tupi-kieli +languages.tut=altailainen kieli +languages.tvl=tuvalu +languages.tw=twi +languages.ty=tahiti +languages.tyv=tuva +languages.udm=udmurtti +languages.ug=uiguuri +languages.uga=ugarit +languages.uk=ukraina +languages.umb=umbundu +languages.und=m\u00e4\u00e4ritt\u00e4m\u00e4t\u00f6n +languages.ur=urdu +languages.uz=uzbekki +languages.vai=vai +languages.ve=venda +languages.vi=vietnam +languages.vo=volap\u00fck +languages.vot=vatja +languages.wa=valloni +languages.wak=wakash-kieli +languages.wal=walamo +languages.war=waray +languages.was=washo +languages.wen=sorbin kieli +languages.wo=wolof +languages.xal=kalmukki +languages.xh=xhosa +languages.yao=jao +languages.yap=japi +languages.yi=jiddi\u0161 +languages.yo=joruba +languages.ypk=jupikkikieli +languages.za=zhuang +languages.zap=sapoteekki +languages.zbl=blisskieli languages.zen=zenaga -languages.pro=muinaisprovensaali -languages.hsb=yl\u00e4sorbi -languages.az=azeri -languages.ay=aimara -languages.av=avaari -languages.as=assami -languages.dsb=alasorbi -languages.ar=arabia -languages.ilo=iloko -languages.elx=elami languages.zh=kiina -languages.an=aragonia -languages.pra=prakrit-kieli -languages.am=amhara -languages.new=newari -languages.ak=akan -languages.za=zhuang -languages.en_US=amerikanenglanti -languages.af=afrikaans -languages.ae=avesta -languages.alt=altai -languages.ab=abhaasi -languages.aa=afar -languages.yo=joruba -languages.alg=algonkin-kieli -languages.ale=aleutti -languages.mkh=mon-khmer-kieli -languages.yi=jiddi\u0161 -languages.dra=dravidakieli -languages.ber=berberikieli -languages.nds=alasaksa -languages.bem=bemba -languages.bej=bed\u017ea -languages.tpi=tok-pisin -variants.POSIX=tietokonem\u00e4\u00e4rittely POSIX -variants.AREVMDA=l\u00e4nsiarmenialainen -variants.1996=saksan uusi oikeinkirjoitus -variants.SOLBA=sloveenin resian Stolvizzan/Solbican alamurre -variants.NEDIS=sloveenin natisone-murre -variants.1994=sloveenin resian murteen yhdenmukaistettu oikeinkirjoitus -variants.1901=saksan perinteinen oikeinkirjoitus -variants.FONUPA=suomalais-ugrilainen tarkekirjoitus -variants.OSOJS=sloveenin resian Oseaccon/Osojanen alamurre +languages.zh_Hans=yksinkertaistettu kiina +languages.zh_Hant=perinteinen kiina +languages.znd=zande +languages.zu=zulu +languages.zun=zuni +languages.zxx=ei kielellist\u00e4 sis\u00e4lt\u00f6\u00e4 +languages.zza=zaza +variants.1606NICT=my\u00f6h\u00e4iskeskiranska variants.1694ACAD=varhaisnykyranska -variants.LIPAW=sloveenin resian Lipovazin/Lipovecin alamurre -variants.REVISED=uudistettu oikeinkirjoitus -variants.NJIVA=sloveenin resian Gnivan/Njivan alamurre -variants.TARASK=valkoven\u00e4j\u00e4n tara\u0161kevitsa-oikeinkirjoitus -variants.FONIPA=kansainv\u00e4linen foneettinen aakkosto IPA -variants.BISKE=sloveenin resian San Giorgion/Bilan alamurre -variants.SCOUSE=englannin scouse-murre +variants.1901=saksan perinteinen oikeinkirjoitus +variants.1994=sloveenin resian murteen yhdenmukaistettu oikeinkirjoitus +variants.1996=saksan uusi oikeinkirjoitus +variants.AREVELA=it\u00e4armenialainen +variants.AREVMDA=l\u00e4nsiarmenialainen variants.BAKU1926=yhten\u00e4istetty turkkilainen latinalainen aakkosto -variants.SAAHO=afarin saho-murre -variants.ROZAJ=sloveenin resia-murre +variants.BISKE=sloveenin resian San Giorgion/Bilan alamurre +variants.BOONT=englannin boontling-murre +variants.FONIPA=kansainv\u00e4linen foneettinen aakkosto IPA +variants.FONUPA=uralilainen foneettinen aakkosto UPA +variants.LIPAW=sloveenin resian Lipovazin/Lipovecin alamurre variants.MONOTON=monotoninen kreikka +variants.NEDIS=sloveenin natisonen murre +variants.NJIVA=sloveenin resian Gnivan/Njivan alamurre +variants.OSOJS=sloveenin resian Oseaccon/Osojanen alamurre variants.POLYTON=polytoninen kreikka -variants.AREVELA=it\u00e4armenialainen +variants.POSIX=tietokonem\u00e4\u00e4rittely POSIX +variants.REVISED=uudistettu oikeinkirjoitus +variants.ROZAJ=sloveenin resian murre +variants.SAAHO=afarin saho-murre variants.SCOTLAND=skotlanninenglanti -variants.VALENCIA=katalaanin valencia-murre -variants.BOONT=englannin boontling-murre -variants.1606NICT=my\u00f6h\u00e4iskeskiranska +variants.SCOUSE=englannin scouse-murre +variants.SOLBA=sloveenin resian Stolvizzan/Solbican alamurre +variants.TARASK=valkoven\u00e4j\u00e4n tara\u0161kevitsa-oikeinkirjoitus +variants.VALENCIA=katalaanin valencian murre diff --git a/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fil.properties b/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fil.properties index 62194e5b9ab..24f73901287 100644 --- a/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fil.properties +++ b/libjava/classpath/resource/gnu/java/locale/LocaleInformation_fil.properties @@ -17,65 +17,65 @@ groupingSeparator=, digit=# percentFormat=#,##0% currencyFormat=\u00a4\u00a0#,##0.00;-\u00a4\u00a0#,##0.00 -currenciesDisplayName.CHF=Swiss Francs +currenciesDisplayName.AED=United Arab Emirates Dirham +currenciesDisplayName.ARS=Argentine Peso currenciesDisplayName.AUD=Australian Dollar -currenciesDisplayName.RUB=Russian Ruble +currenciesDisplayName.BGN=Bulgarian Lev +currenciesDisplayName.BOB=Bolivian Boliviano +currenciesDisplayName.BRL=Brazilian Real +currenciesDisplayName.CAD=Canadian Dollar +currenciesDisplayName.CHF=Swiss Francs +currenciesDisplayName.CLP=Chilean Peso +currenciesDisplayName.CNY=Yuan Renminbi +currenciesDisplayName.COP=Colombian Peso currenciesDisplayName.CZK=Czech Koruna -currenciesDisplayName.THB=Thai Baht -currenciesDisplayName.SEK=Sweden Kronor +currenciesDisplayName.DEM=Deutsche Marks +currenciesDisplayName.DKK=Denmark Kroner +currenciesDisplayName.EEK=Estonian Kroon +currenciesDisplayName.EGP=Egyptian Pound +currenciesDisplayName.EUR=Euros +currenciesDisplayName.FRF=French Franc +currenciesDisplayName.GBP=British Pounds Sterling +currenciesDisplayName.HKD=Hong Kong Dollars currenciesDisplayName.HRK=Croatian Kuna -currenciesDisplayName.PLN=Polish NewZloty -currenciesDisplayName.SKK=Slovak Koruna -currenciesDisplayName.MAD=Moroccan Dirham -currenciesDisplayName.TWD=New Taiwan Dollar -currenciesDisplayName.XXX=XXX -currenciesDisplayName.MYR=Malaysian Ringgit currenciesDisplayName.HUF=Hungarian Forint +currenciesDisplayName.IDR=Indonesian Rupiah +currenciesDisplayName.ILS=Israeli Shekel currenciesDisplayName.INR=Indian Rupee -currenciesDisplayName.AED=United Arab Emirates Dirham -currenciesDisplayName.SAR=Saudi Riyal -currenciesDisplayName.CAD=Canadian Dollar -currenciesDisplayName.USD=US Dollar -currenciesDisplayName.BGN=Bulgarian Lev currenciesDisplayName.JPY=Japanese Yen -currenciesDisplayName.GBP=British Pounds Sterling -currenciesDisplayName.PKR=Pakistan Rupee -currenciesDisplayName.PHP=Philippine Peso -currenciesDisplayName.PEN=Peruvian Nuevo Sol -currenciesDisplayName.FRF=French Franc +currenciesDisplayName.KRW=South Korean Won +currenciesDisplayName.LTL=Lithuanian Litas +currenciesDisplayName.MAD=Moroccan Dirham +currenciesDisplayName.MXN=Mexico Peso +currenciesDisplayName.MYR=Malaysian Ringgit currenciesDisplayName.NOK=Norwegian Kroner -currenciesDisplayName.EUR=Euros -currenciesDisplayName.HKD=Hong Kong Dollars -currenciesDisplayName.IDR=Indonesian Rupiah -currenciesDisplayName.ZAR=South African Rand +currenciesDisplayName.NZD=New Zealand Dollars +currenciesDisplayName.PEN=Peruvian Nuevo Sol +currenciesDisplayName.PHP=Philippine Peso +currenciesDisplayName.PKR=Pakistan Rupee +currenciesDisplayName.PLN=Polish NewZloty +currenciesDisplayName.RON=Romanian Leu +currenciesDisplayName.RSD=Serbian Dinar +currenciesDisplayName.RUB=Russian Ruble +currenciesDisplayName.SAR=Saudi Riyal +currenciesDisplayName.SEK=Sweden Kronor currenciesDisplayName.SGD=Singapore Dollars -currenciesDisplayName.MXN=Mexico Peso -currenciesDisplayName.TRY=Turkish Lira -currenciesDisplayName.CLP=Chilean Peso -currenciesDisplayName.COP=Colombian Peso -currenciesDisplayName.KRW=South Korean Won currenciesDisplayName.SIT=Slovenian Tolar -currenciesDisplayName.EEK=Estonian Kroon -currenciesDisplayName.RSD=Serbian Dinar +currenciesDisplayName.SKK=Slovak Koruna +currenciesDisplayName.THB=Thai Baht currenciesDisplayName.TRL=Turkish Lira -currenciesDisplayName.BRL=Brazilian Real -currenciesDisplayName.DEM=Deutsche Marks +currenciesDisplayName.TRY=Turkish Lira +currenciesDisplayName.TWD=New Taiwan Dollar +currenciesDisplayName.USD=US Dollar currenciesDisplayName.VEB=Venezuela Bolivar -currenciesDisplayName.ARS=Argentine Peso -currenciesDisplayName.CNY=Yuan Renminbi -currenciesDisplayName.DKK=Denmark Kroner -currenciesDisplayName.ILS=Israeli Shekel -currenciesDisplayName.BOB=Bolivian Boliviano -currenciesDisplayName.NZD=New Zealand Dollars -currenciesDisplayName.RON=Romanian Leu -currenciesDisplayName.LTL=Lithuanian Litas -currenciesDisplayName.EGP=Egyptian Pound +currenciesDisplayName.XXX=XXX +currenciesDisplayName.ZAR=South African Rand currenciesSymbol.INR=0\u2264Rs.|1\u2264Re.|1= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) result.append(c); diff --git a/libjava/classpath/tools/gnu/classpath/tools/javah/JniIncludePrinter.java b/libjava/classpath/tools/gnu/classpath/tools/javah/JniIncludePrinter.java index cb8bcd8d9c2..cf5fed39f13 100644 --- a/libjava/classpath/tools/gnu/classpath/tools/javah/JniIncludePrinter.java +++ b/libjava/classpath/tools/gnu/classpath/tools/javah/JniIncludePrinter.java @@ -1,5 +1,5 @@ /* JniIncludePrinter.java - Generate a JNI header file - Copyright (C) 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2011 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -63,6 +63,7 @@ public class JniIncludePrinter { klass.linkSupers(); boolean wroteAny = false; + ClassWrapper headerClass = klass; for (; klass != null; klass = klass.superClass) { Iterator i = klass.fields.iterator(); @@ -77,7 +78,7 @@ public class JniIncludePrinter continue; // Note that we don't want to mangle the field name. - String name = (JniHelper.mangle(klass.name) + "_" + field.name); + String name = (JniHelper.mangle(headerClass.name) + "_" + field.name); out.print("#undef "); out.println(name); out.print("#define "); diff --git a/libjava/classpath/tools/gnu/classpath/tools/javah/Main.java b/libjava/classpath/tools/gnu/classpath/tools/javah/Main.java index bec04f00dab..894a5c4d2c0 100644 --- a/libjava/classpath/tools/gnu/classpath/tools/javah/Main.java +++ b/libjava/classpath/tools/gnu/classpath/tools/javah/Main.java @@ -58,9 +58,11 @@ import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.Set; import java.util.Map; import org.objectweb.asm.ClassReader; +import org.objectweb.asm.tree.InnerClassNode; public class Main { @@ -101,6 +103,9 @@ public class Main // Map class names to lists of Text objects. HashMap> textMap = new HashMap>(); + // Set of classes which have been parsed + Set parsed = new HashSet(); + void readCommandFile(String textFileName) throws OptionException { FileInputStream fis; @@ -317,7 +322,7 @@ public class Main return result; } - private void writeHeaders(HashMap klasses, Printer printer) + private void writeHeaders(Map klasses, Printer printer) throws IOException { Iterator> i = klasses.entrySet().iterator(); @@ -332,6 +337,53 @@ public class Main } } + private Map parseClasses(Iterator inputs) + throws IOException + { + Map results = new HashMap(); + while (inputs.hasNext()) + { + // Let user specify either kind of class name or a + // file name. + Object item = inputs.next(); + ClassWrapper klass; + File filename; + if (item instanceof File) + { + // Load class from file. + if (verbose) + System.err.println("[reading file " + item + "]"); + klass = getClass((File) item); + filename = new File(klass.name); + } + else + { + // Load class given the class name. + String className = ((String) item).replace('.', '/'); + if (verbose) + System.err.println("[reading class " + className + "]"); + // Use the name the user specified, even if it is + // different from the ultimate class name. + filename = new File(className); + klass = getClass(className); + } + results.put(filename, klass); + parsed.add(item.toString()); + + // Check to see if there are inner classes to also parse + Iterator innerClasses = klass.innerClasses.iterator(); + HashSet innerNames = new HashSet(); + while (innerClasses.hasNext()) + { + String innerName = ((InnerClassNode) innerClasses.next()).name; + if (!parsed.contains(innerName)) + innerNames.add(innerName); + } + results.putAll(parseClasses(innerNames.iterator())); + } + return results; + } + protected void postParse(String[] names) { // Nothing here. @@ -385,36 +437,7 @@ public class Main } } - Iterator i = klasses.iterator(); - HashMap results = new HashMap(); - while (i.hasNext()) - { - // Let user specify either kind of class name or a - // file name. - Object item = i.next(); - ClassWrapper klass; - File filename; - if (item instanceof File) - { - // Load class from file. - if (verbose) - System.err.println("[reading file " + item + "]"); - klass = getClass((File) item); - filename = new File(klass.name); - } - else - { - // Load class given the class name. - String className = ((String) item).replace('.', '/'); - if (verbose) - System.err.println("[reading class " + className + "]"); - // Use the name the user specified, even if it is - // different from the ultimate class name. - filename = new File(className); - klass = getClass(className); - } - results.put(filename, klass); - } + Map results = parseClasses(klasses.iterator()); writeHeaders(results, printer); } @@ -457,7 +480,7 @@ public class Main ClassWrapper result = readClass(is); classMap.put(name, result); } - return (ClassWrapper) classMap.get(name); + return classMap.get(name); } public static void main(String[] args) throws IOException diff --git a/libjava/classpath/tools/resource/gnu/classpath/tools/common/Messages.properties b/libjava/classpath/tools/resource/gnu/classpath/tools/common/Messages.properties deleted file mode 100644 index 17e79c453ac..00000000000 --- a/libjava/classpath/tools/resource/gnu/classpath/tools/common/Messages.properties +++ /dev/null @@ -1,40 +0,0 @@ -# MessagesBundle.properties -- English language messages -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. -# -# This file is part of GNU Classpath. -# -# GNU Classpath is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# GNU Classpath 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 for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Classpath; see the file COPYING. If not, write to the -# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA. -# -# Linking this library statically or dynamically with other modules is -# making a combined work based on this library. Thus, the terms and -# conditions of the GNU General Public License cover the whole -# combination. -# -# As a special exception, the copyright holders of this library give you -# permission to link this library with independent modules to produce an -# executable, regardless of the license terms of these independent -# modules, and to copy and distribute the resulting executable under -# terms of your choice, provided that you also meet, for each linked -# independent module, the terms and conditions of the license of that -# module. An independent module is a module which is not derived from -# or based on this library. If you modify this library, you may extend -# this exception to your version of the library, but you are not -# obligated to do so. If you do not wish to do so, delete this -# exception statement from your version. - -ClasspathToolParser.JArgument=pass argument to the Java runtime -ClasspathToolParser.JName=OPTION -ClasspathToolParser.VersionFormat={0} (GNU Classpath) {1}\n\nCopyright 2008 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/libjava/classpath/tools/resource/gnu/classpath/tools/common/messages.properties b/libjava/classpath/tools/resource/gnu/classpath/tools/common/messages.properties new file mode 100644 index 00000000000..afd751e6447 --- /dev/null +++ b/libjava/classpath/tools/resource/gnu/classpath/tools/common/messages.properties @@ -0,0 +1,40 @@ +# messages.properties -- English language messages +# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. +# +# This file is part of GNU Classpath. +# +# GNU Classpath is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# GNU Classpath 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 for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Classpath; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. +# +# Linking this library statically or dynamically with other modules is +# making a combined work based on this library. Thus, the terms and +# conditions of the GNU General Public License cover the whole +# combination. +# +# As a special exception, the copyright holders of this library give you +# permission to link this library with independent modules to produce an +# executable, regardless of the license terms of these independent +# modules, and to copy and distribute the resulting executable under +# terms of your choice, provided that you also meet, for each linked +# independent module, the terms and conditions of the license of that +# module. An independent module is a module which is not derived from +# or based on this library. If you modify this library, you may extend +# this exception to your version of the library, but you are not +# obligated to do so. If you do not wish to do so, delete this +# exception statement from your version. + +ClasspathToolParser.JArgument=pass argument to the Java runtime +ClasspathToolParser.JName=OPTION +ClasspathToolParser.VersionFormat={0} (GNU Classpath) {1}\n\nCopyright 2008 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/libjava/classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties b/libjava/classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties deleted file mode 100644 index a747ab4b473..00000000000 --- a/libjava/classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties +++ /dev/null @@ -1,46 +0,0 @@ -# MessagesBundle.properties -- English language messages -# Copyright (C) 2006 Free Software Foundation, Inc. -# -# This file is part of GNU Classpath. -# -# GNU Classpath is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# GNU Classpath 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 for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Classpath; see the file COPYING. If not, write to the -# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA. -# -# Linking this library statically or dynamically with other modules is -# making a combined work based on this library. Thus, the terms and -# conditions of the GNU General Public License cover the whole -# combination. -# -# As a special exception, the copyright holders of this library give you -# permission to link this library with independent modules to produce an -# executable, regardless of the license terms of these independent -# modules, and to copy and distribute the resulting executable under -# terms of your choice, provided that you also meet, for each linked -# independent module, the terms and conditions of the license of that -# module. An independent module is a module which is not derived from -# or based on this library. If you modify this library, you may extend -# this exception to your version of the library, but you are not -# obligated to do so. If you do not wish to do so, delete this -# exception statement from your version. - -Parser.StdOptions=Standard options -Parser.PrintHelp=print this help, then exit -Parser.PrintVersion=print version number, then exit -Parser.ArgReqd=option ''{0}'' requires an argument -Parser.Unrecognized=unrecognized option ''{0}'' -Parser.NoArg=option ''{0}'' doesn''t allow an argument -Parser.UnrecDash=unrecognized option ''-{0}'' -Parser.TryHelpShort=Try ''{0} -help'' for more information -Parser.TryHelpLong=Try ''{0} --help'' for more information diff --git a/libjava/classpath/tools/resource/gnu/classpath/tools/getopt/messages.properties b/libjava/classpath/tools/resource/gnu/classpath/tools/getopt/messages.properties new file mode 100644 index 00000000000..61bfd0e8fdc --- /dev/null +++ b/libjava/classpath/tools/resource/gnu/classpath/tools/getopt/messages.properties @@ -0,0 +1,46 @@ +# messages.properties -- English language messages +# Copyright (C) 2006, 2010 Free Software Foundation, Inc. +# +# This file is part of GNU Classpath. +# +# GNU Classpath is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# GNU Classpath 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 for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Classpath; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. +# +# Linking this library statically or dynamically with other modules is +# making a combined work based on this library. Thus, the terms and +# conditions of the GNU General Public License cover the whole +# combination. +# +# As a special exception, the copyright holders of this library give you +# permission to link this library with independent modules to produce an +# executable, regardless of the license terms of these independent +# modules, and to copy and distribute the resulting executable under +# terms of your choice, provided that you also meet, for each linked +# independent module, the terms and conditions of the license of that +# module. An independent module is a module which is not derived from +# or based on this library. If you modify this library, you may extend +# this exception to your version of the library, but you are not +# obligated to do so. If you do not wish to do so, delete this +# exception statement from your version. + +Parser.StdOptions=Standard options +Parser.PrintHelp=print this help, then exit +Parser.PrintVersion=print version number, then exit +Parser.ArgReqd=option ''{0}'' requires an argument +Parser.Unrecognized=unrecognized option ''{0}'' +Parser.NoArg=option ''{0}'' doesn''t allow an argument +Parser.UnrecDash=unrecognized option ''-{0}'' +Parser.TryHelpShort=Try ''{0} -help'' for more information +Parser.TryHelpLong=Try ''{0} --help'' for more information diff --git a/libjava/classpath/vm/reference/gnu/classpath/VMStackWalker.java b/libjava/classpath/vm/reference/gnu/classpath/VMStackWalker.java index 2214e757110..26c4053565b 100644 --- a/libjava/classpath/vm/reference/gnu/classpath/VMStackWalker.java +++ b/libjava/classpath/vm/reference/gnu/classpath/VMStackWalker.java @@ -1,5 +1,5 @@ /* VMStackWalker.java -- Reference implementation of VM hooks for stack access - Copyright (C) 2005, 2006 Free Software Foundation + Copyright (C) 2005, 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -51,6 +51,9 @@ package gnu.classpath; */ public final class VMStackWalker { + + private VMStackWalker() {} // Prohibits instantiation. + /** * Get a list of all the classes currently executing methods on the * Java stack. getClassContext()[0] is the class associated diff --git a/libjava/classpath/vm/reference/gnu/classpath/VMSystemProperties.java b/libjava/classpath/vm/reference/gnu/classpath/VMSystemProperties.java index 1e0dd4e2632..d1ce7751c24 100644 --- a/libjava/classpath/vm/reference/gnu/classpath/VMSystemProperties.java +++ b/libjava/classpath/vm/reference/gnu/classpath/VMSystemProperties.java @@ -1,5 +1,5 @@ /* VMSystemProperties.java -- Allow the VM to set System properties. - Copyright (C) 2004 Free Software Foundation + Copyright (C) 2004, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -39,8 +39,11 @@ package gnu.classpath; import java.util.Properties; -class VMSystemProperties +final class VMSystemProperties { + + private VMSystemProperties() {} // Prohibits instantiation. + /** * Get the system properties. This is done here, instead of in System, * because of the bootstrap sequence. Note that the native code should diff --git a/libjava/classpath/vm/reference/gnu/java/lang/VMCPStringBuilder.java b/libjava/classpath/vm/reference/gnu/java/lang/VMCPStringBuilder.java index c3a3784f398..391f7af953d 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/VMCPStringBuilder.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/VMCPStringBuilder.java @@ -1,5 +1,5 @@ /* VMCPStringBuilder.java -- Growable strings without locking or copying - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -72,6 +72,8 @@ final class VMCPStringBuilder } } + private VMCPStringBuilder() {} // Prohibits instantiation. + /** * Convert this StringBuilder to a String. The * String is composed of the characters currently in this StringBuilder. Note diff --git a/libjava/classpath/vm/reference/gnu/java/lang/VMInstrumentationImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/VMInstrumentationImpl.java index 5501f0f7f5b..d9583ac8cce 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/VMInstrumentationImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/VMInstrumentationImpl.java @@ -1,6 +1,6 @@ /* VMInstrumentationImpl.java -- interface for the GNU implementation of InstrumentationImpl - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -49,6 +49,8 @@ import java.lang.instrument.Instrumentation; final class VMInstrumentationImpl { + private VMInstrumentationImpl() {} // Prohibits instantiation. + /** * Returns if the current JVM supports class redefinition * diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMClassLoadingMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMClassLoadingMXBeanImpl.java index ea49897419b..7b94020a46a 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMClassLoadingMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMClassLoadingMXBeanImpl.java @@ -1,5 +1,5 @@ /* VMClassLoadingMXBeanImpl.java - VM impl. of a class loading bean - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -49,6 +49,8 @@ package gnu.java.lang.management; final class VMClassLoadingMXBeanImpl { + private VMClassLoadingMXBeanImpl() {} // Prohibits instantiation. + /** * Returns the number of classes currently loaded by * the virtual machine. diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMCompilationMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMCompilationMXBeanImpl.java index 019af0ca411..f421a8aa49f 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMCompilationMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMCompilationMXBeanImpl.java @@ -1,5 +1,5 @@ /* VMCompilationMXBeanImpl.java - VM implementation of a compilation bean - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -50,6 +50,8 @@ package gnu.java.lang.management; final class VMCompilationMXBeanImpl { + private VMCompilationMXBeanImpl() {} // Prohibits instantiation. + /** * Returns the number of milliseconds the JIT * compiler has spent compiling Java bytecode diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java index 00861bc21de..99450b4107d 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java @@ -1,5 +1,5 @@ /* VMGarbageCollectorMXBeanImpl.java - VM interface for a GC bean - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -52,6 +52,8 @@ package gnu.java.lang.management; final class VMGarbageCollectorMXBeanImpl { + private VMGarbageCollectorMXBeanImpl() {} // Prohibits instantiation. + /** * Returns the number of collections the garbage collector * represented by this bean has made. -1 is returned if the diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java index 7f69bdfb741..12aa886186e 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java @@ -1,5 +1,5 @@ /* VMMemoryMXBeanImpl.java - VM impl. of a memory bean - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -57,6 +57,8 @@ import java.util.List; final class VMMemoryMXBeanImpl { + private VMMemoryMXBeanImpl() {} // Prohibits instantiation. + /** * Returns an instance of {@link java.lang.management.MemoryUsage} * with appropriate initial, used, committed and maximum values diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java index 477329f0aed..81a8c0d216a 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java @@ -1,5 +1,5 @@ /* VMMemoryManagerMXBeanImpl.java - VM interface for a memory manager bean - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -56,6 +56,8 @@ import java.util.List; final class VMMemoryManagerMXBeanImpl { + private VMMemoryManagerMXBeanImpl() {} // Prohibits instantiation. + /** * Returns an array containing the names of the memory pools * this memory manager manages. diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java index 36cd2586a8e..39775c4edae 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java @@ -1,5 +1,5 @@ /* MemoryPoolMXBeanImpl.java - VM interface for memory pool beans - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -49,6 +49,8 @@ import java.lang.management.MemoryUsage; final class VMMemoryPoolMXBeanImpl { + private VMMemoryPoolMXBeanImpl() {} // Prohibits instantiation. + /** * Returns memory usage statistics for the specified pool * just after a best-effort attempt to free memory. This diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java index 20b3f9ed271..5530007aeb1 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java @@ -1,5 +1,5 @@ /* VMOperatingSystemMXBeanImpl.java - VM implementation of an OS bean - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -56,6 +56,8 @@ final class VMOperatingSystemMXBeanImpl } } + private VMOperatingSystemMXBeanImpl() {} // Prohibits instantiation. + /** * Returns the system load average from the last * minute. diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMRuntimeMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMRuntimeMXBeanImpl.java index 32a86604614..1bffa75c50d 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMRuntimeMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMRuntimeMXBeanImpl.java @@ -1,5 +1,5 @@ /* VMRuntimeMXBeanImpl.java - VM implementation of an runtime bean - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -48,6 +48,8 @@ import gnu.classpath.SystemProperties; final class VMRuntimeMXBeanImpl { + private VMRuntimeMXBeanImpl() {} // Prohibits instantiation. + /** * Returns the command-line arguments supplied * to the virtual machine, excluding those supplied diff --git a/libjava/classpath/vm/reference/gnu/java/lang/management/VMThreadMXBeanImpl.java b/libjava/classpath/vm/reference/gnu/java/lang/management/VMThreadMXBeanImpl.java index 33448d9d534..8fd0d90a281 100644 --- a/libjava/classpath/vm/reference/gnu/java/lang/management/VMThreadMXBeanImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/lang/management/VMThreadMXBeanImpl.java @@ -1,5 +1,5 @@ /* VMThreadMXBeanImpl.java - VM impl. of a thread bean - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -58,6 +58,8 @@ final class VMThreadMXBeanImpl */ private static int filled; + private VMThreadMXBeanImpl() {} // Prohibits instantiation. + /** * Returns the ids of cycles of deadlocked threads, occurring * due to monitor ownership or ownable synchronizer ownership. diff --git a/libjava/classpath/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java b/libjava/classpath/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java index da0f893cfbc..399470036d2 100644 --- a/libjava/classpath/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java +++ b/libjava/classpath/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java @@ -1,5 +1,5 @@ /* PlainDatagramSocketImpl.java -- VM interface for DatagramSocket impl - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -53,7 +53,7 @@ import java.net.SocketException; * @author Ingo Proetel (proetel@aicas.com) * @author Roman Kennke (kennke@aicas.com) */ -public final class VMPlainDatagramSocketImpl +final class VMPlainDatagramSocketImpl { /** * Option id for the IP_TTL (time to live) value. @@ -70,8 +70,10 @@ public final class VMPlainDatagramSocketImpl } } + private VMPlainDatagramSocketImpl() {} // Prohibits instantiation. + /** - * Binds this socket to a particular port and interface + * Binds this socket to a particular port and interface. * * @param socket the socket object * @param port the port to bind to diff --git a/libjava/classpath/vm/reference/gnu/java/nio/VMPipe.java b/libjava/classpath/vm/reference/gnu/java/nio/VMPipe.java index a369704522a..9a075342572 100644 --- a/libjava/classpath/vm/reference/gnu/java/nio/VMPipe.java +++ b/libjava/classpath/vm/reference/gnu/java/nio/VMPipe.java @@ -1,5 +1,5 @@ /* VMPipe.java -- Reference implementation for VM hooks used by PipeImpl - Copyright (C) 2004 Free Software Foundation + Copyright (C) 2004, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -58,6 +58,8 @@ final class VMPipe } } + private VMPipe() {} // Prohibits instantiation. + /** * Create a pipe, consisting of a readable VMChannel and a writable * VMChannel. The readable channel is returned is the first element diff --git a/libjava/classpath/vm/reference/gnu/java/nio/VMSelector.java b/libjava/classpath/vm/reference/gnu/java/nio/VMSelector.java index 4d37c2c1ca9..18fad5c8a62 100644 --- a/libjava/classpath/vm/reference/gnu/java/nio/VMSelector.java +++ b/libjava/classpath/vm/reference/gnu/java/nio/VMSelector.java @@ -1,5 +1,5 @@ /* VMSelector.java -- - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -40,8 +40,9 @@ package gnu.java.nio; import gnu.classpath.Configuration; import java.io.IOException; -public final class VMSelector +final class VMSelector { + static { // load the shared library needed for native methods. @@ -51,6 +52,8 @@ public final class VMSelector } } + private VMSelector() {} // Prohibits instantiation. + // A timeout value of 0 means block forever. static native int select (int[] read, int[] write, int[] except, long timeout) diff --git a/libjava/classpath/vm/reference/gnu/java/security/jce/prng/VMSecureRandom.java b/libjava/classpath/vm/reference/gnu/java/security/jce/prng/VMSecureRandom.java index 86faa097c17..fef92d8457f 100644 --- a/libjava/classpath/vm/reference/gnu/java/security/jce/prng/VMSecureRandom.java +++ b/libjava/classpath/vm/reference/gnu/java/security/jce/prng/VMSecureRandom.java @@ -1,5 +1,5 @@ /* VMSecureRandom.java -- random seed generator. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -55,6 +55,8 @@ package gnu.java.security.jce.prng; final class VMSecureRandom { + private VMSecureRandom() {} // Prohibits instantiation. + /** * Generate a random seed. Implementations are free to generate * fewer random bytes than are requested, and leave the remaining @@ -104,7 +106,8 @@ final class VMSecureRandom return length; } - static class Spinner implements Runnable + static class Spinner + implements Runnable { volatile byte value; volatile boolean running; @@ -121,7 +124,7 @@ final class VMSecureRandom value++; } - private void stop() + void stop() { running = false; } diff --git a/libjava/classpath/vm/reference/java/io/VMConsole.java b/libjava/classpath/vm/reference/java/io/VMConsole.java new file mode 100644 index 00000000000..69c9df9527f --- /dev/null +++ b/libjava/classpath/vm/reference/java/io/VMConsole.java @@ -0,0 +1,44 @@ +/* VMConsole.java -- helper for java.io.Console + Copyright (C) 2012 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.io; + +public final class VMConsole +{ + static native String readPassword(Console con); +} diff --git a/libjava/classpath/vm/reference/java/io/VMFile.java b/libjava/classpath/vm/reference/java/io/VMFile.java index 2af1e95c864..f2ac5c38c93 100644 --- a/libjava/classpath/vm/reference/java/io/VMFile.java +++ b/libjava/classpath/vm/reference/java/io/VMFile.java @@ -1,5 +1,5 @@ /* VMFile.java -- Class for methods natively accessing files - Copyright (C) 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -50,6 +50,7 @@ import gnu.java.io.PlatformHelper; */ final class VMFile { + // FIXME: We support only case sensitive filesystems currently. static final boolean IS_CASE_SENSITIVE = true; static final boolean IS_DOS_8_3 = false; @@ -62,105 +63,113 @@ final class VMFile } } - /* + private VMFile() {} // Prohibits instantiation. + + /** * This native method does the actual work of getting the last file * modification time. It also does the existence check to avoid the - * overhead of a call to exists() + * overhead of a call to exists(). */ static native long lastModified(String path); - /* + /** * This native method sets the permissions to make the file read only. + * + * @return true if file exists and the operation completed successfully */ static native boolean setReadOnly(String path); /** - * This method is used to create a temporary file + * This method is used to create a temporary file. */ static native boolean create(String path) throws IOException; - /* + /** * This native function actually produces the list of files in this - * directory + * directory. + * + * @return null if dirpath does not exist or is not a directory; + * null or empty array if the directory is unreadable; an array of + * file names in the directory otherwise. */ static native synchronized String[] list(String dirpath); - /* + /** * This native method actually performs the rename. */ static native boolean renameTo(String targetpath, String destpath); - /* + /** * This native method actually determines the length of the file and - * handles the existence check + * handles the existence check. */ static native long length(String path); - /* + /** * This native method does the actual checking of file existence. */ static native boolean exists(String path); - /* - * This native method handles the actual deleting of the file + /** + * This native method handles the actual deleting of the file. */ static native boolean delete(String path); - /* + /** * This method does the actual setting of the modification time. */ static native boolean setLastModified(String path, long time); - /* - * This native method actually creates the directory + /** + * This native method actually creates the directory. */ static native boolean mkdir(String dirpath); /** * Gets the total bytes of the filesystem named by path. */ - public static native long getTotalSpace(String path); + static native long getTotalSpace(String path); /** * Gets the total free bytes of the filesystem named by path. */ - public static native long getFreeSpace(String path); + static native long getFreeSpace(String path); /** * Gets the available bytes of the filesystem named by path. */ - public static native long getUsableSpace(String path); + static native long getUsableSpace(String path); /** * Set the read permission of the file. */ - public static synchronized native boolean setReadable(String path, - boolean readable, - boolean ownerOnly); + static synchronized native boolean setReadable(String path, + boolean readable, + boolean ownerOnly); /** * Set the write permission of the file. */ - public static synchronized native boolean setWritable(String path, - boolean writable, - boolean ownerOnly); + static synchronized native boolean setWritable(String path, + boolean writable, + boolean ownerOnly); /** * Set the execute permission of the file. */ - public static synchronized native boolean setExecutable(String path, - boolean executable, - boolean ownerOnly); + static synchronized native boolean setExecutable(String path, + boolean executable, + boolean ownerOnly); - /* + /** * This native method does the actual check of whether or not a file * is a plain file or not. It also handles the existence check to - * eliminate the overhead of a call to exists() + * eliminate the overhead of a call to exists(). */ static native boolean isFile(String path); /** - * This native method checks file permissions for writing + * This native method checks file permissions for writing. */ static synchronized native boolean canWrite(String path); @@ -170,19 +179,23 @@ final class VMFile static native boolean canWriteDirectory(String path); /** - * This native method checks file permissions for reading + * This native method checks file permissions for reading. + * It also handles the existence check to eliminate the overhead of + * a call to exists(). */ static synchronized native boolean canRead(String path); /** - * This native method checks file permissions for execution + * This native method checks file permissions for execution. + * It also handles the existence check to eliminate the overhead of + * a call to exists(). */ static synchronized native boolean canExecute(String path); - /* + /** * This method does the actual check of whether or not a file is a - * directory or not. It also handle the existence check to eliminate - * the overhead of a call to exists() + * directory or not. It also handles the existence check to eliminate + * the overhead of a call to exists(). */ static native boolean isDirectory(String dirpath); @@ -359,9 +372,9 @@ final class VMFile *

* Note that this method, unlike the other methods which return path * names, can throw an IOException. This is because native method - * might be required in order to resolve the canonical path + * might be required in order to resolve the canonical path. * * @exception IOException If an error occurs */ - public static native String toCanonicalForm(String path) throws IOException; + static native String toCanonicalForm(String path) throws IOException; } diff --git a/libjava/classpath/vm/reference/java/io/VMObjectInputStream.java b/libjava/classpath/vm/reference/java/io/VMObjectInputStream.java index 10e1f34cbd2..a29115bbe39 100644 --- a/libjava/classpath/vm/reference/java/io/VMObjectInputStream.java +++ b/libjava/classpath/vm/reference/java/io/VMObjectInputStream.java @@ -1,5 +1,5 @@ /* ObjectInputStream.java -- Class used to read serialized objects - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -44,6 +44,7 @@ import java.lang.reflect.Constructor; final class VMObjectInputStream { + static { if (Configuration.INIT_LOAD_LIBRARY) @@ -52,6 +53,8 @@ final class VMObjectInputStream } } + private VMObjectInputStream() {} // Prohibits instantiation. + /** * Allocates a new Object of type clazz but without running the * default constructor on it. It then calls the given constructor on diff --git a/libjava/classpath/vm/reference/java/io/VMObjectStreamClass.java b/libjava/classpath/vm/reference/java/io/VMObjectStreamClass.java index fbaf7d6c8c5..6a78d8ec898 100644 --- a/libjava/classpath/vm/reference/java/io/VMObjectStreamClass.java +++ b/libjava/classpath/vm/reference/java/io/VMObjectStreamClass.java @@ -1,5 +1,5 @@ /* VMObjectStreamClass.java -- VM helper functions for ObjectStreamClass - Copyright (C) 2003, 2005 Free Software Foundation, Inc. + Copyright (C) 2003, 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -43,6 +43,7 @@ import java.lang.reflect.Field; final class VMObjectStreamClass { + static { if (Configuration.INIT_LOAD_LIBRARY) @@ -51,6 +52,8 @@ final class VMObjectStreamClass } } + private VMObjectStreamClass() {} // Prohibits instantiation. + /** * Returns true if CLAZZ has a static class initializer * (a.k.a. ). diff --git a/libjava/classpath/vm/reference/java/lang/VMClass.java b/libjava/classpath/vm/reference/java/lang/VMClass.java index a0091c073c5..d80eecdfd9a 100644 --- a/libjava/classpath/vm/reference/java/lang/VMClass.java +++ b/libjava/classpath/vm/reference/java/lang/VMClass.java @@ -303,20 +303,21 @@ final class VMClass return getComponentType(klass).getSimpleName() + "[]"; } String fullName = getName(klass); - int pos = fullName.lastIndexOf("$"); - if (pos == -1) - pos = 0; - else - { - ++pos; - while (Character.isDigit(fullName.charAt(pos))) - ++pos; - } - int packagePos = fullName.lastIndexOf(".", pos); - if (packagePos == -1) - return fullName.substring(pos); - else - return fullName.substring(packagePos + 1); + Class enclosingClass = getEnclosingClass(klass); + if (enclosingClass == null) + // It's a top level class. + return fullName.substring(fullName.lastIndexOf(".") + 1); + + fullName = fullName.substring(enclosingClass.getName().length()); + + // We've carved off the enclosing class name; now we must have '$' + // followed optionally by digits, followed by the class name. + int pos = 1; + while (Character.isDigit(fullName.charAt(pos))) + ++pos; + fullName = fullName.substring(pos); + + return fullName; } /** diff --git a/libjava/classpath/vm/reference/java/lang/VMClassLoader.java b/libjava/classpath/vm/reference/java/lang/VMClassLoader.java index c1d4625883c..bab7c23cc67 100644 --- a/libjava/classpath/vm/reference/java/lang/VMClassLoader.java +++ b/libjava/classpath/vm/reference/java/lang/VMClassLoader.java @@ -1,6 +1,7 @@ /* VMClassLoader.java -- Reference implementation of native interface required by ClassLoader - Copyright (C) 1998, 2001, 2002, 2004, 2005, 2006 Free Software Foundation + Copyright (C) 1998, 2001, 2002, 2004, 2005, 2006, 2010 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -71,7 +72,6 @@ import java.util.zip.ZipFile; final class VMClassLoader { - /** packages loaded by the bootstrap class loader */ static final HashMap definedPackages = new HashMap(); @@ -116,6 +116,7 @@ final class VMClassLoader } } + private VMClassLoader() {} // Prohibits instantiation. /** * Helper to define a class using a string of bytes. This assumes that @@ -172,6 +173,7 @@ final class VMClassLoader return (URL)e.nextElement(); return null; } + /** * Helper to get a list of resources from the bootstrap class loader. * @@ -239,7 +241,6 @@ final class VMClassLoader return v.elements(); } - /** * Returns a String[] of native package names. The default * implementation tries to load a list of package from @@ -284,7 +285,6 @@ final class VMClassLoader return new String[0]; } - /** * Helper to get a package from the bootstrap class loader. * diff --git a/libjava/classpath/vm/reference/java/lang/VMCompiler.java b/libjava/classpath/vm/reference/java/lang/VMCompiler.java index fe740075671..9a7d83facee 100644 --- a/libjava/classpath/vm/reference/java/lang/VMCompiler.java +++ b/libjava/classpath/vm/reference/java/lang/VMCompiler.java @@ -1,5 +1,5 @@ /* VMClassLoader.java -- Reference implementation of compiler interface - Copyright (C) 2004 Free Software Foundation + Copyright (C) 2004, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -58,7 +58,7 @@ final class VMCompiler * compilation failed, true if compilation succeeded * @throws NullPointerException if oneClass is null */ - public static boolean compileClass(Class oneClass) + static boolean compileClass(Class oneClass) { // Never succeed. return false; @@ -72,7 +72,7 @@ final class VMCompiler * compilation failed, true if compilation succeeded * @throws NullPointerException if classNames is null */ - public static boolean compileClasses(String classNames) + static boolean compileClasses(String classNames) { // Note the incredibly lame interface. Always fail. return false; @@ -87,7 +87,7 @@ final class VMCompiler * @return a compiler-specific value, including null * @throws NullPointerException if the compiler doesn't like a null arg */ - public static Object command(Object arg) + static Object command(Object arg) { // Our implementation defines this to a no-op. return null; @@ -98,7 +98,7 @@ final class VMCompiler * to resume operation if it was previously disabled; provided that a * compiler even exists. */ - public static void enable() + static void enable() { } @@ -106,7 +106,7 @@ final class VMCompiler * Calling Compiler.disable() will cause the compiler * to be suspended; provided that a compiler even exists. */ - public static void disable() + static void disable() { } } diff --git a/libjava/classpath/vm/reference/java/lang/VMDouble.java b/libjava/classpath/vm/reference/java/lang/VMDouble.java index 8e523cd2e85..edfa723a052 100644 --- a/libjava/classpath/vm/reference/java/lang/VMDouble.java +++ b/libjava/classpath/vm/reference/java/lang/VMDouble.java @@ -1,5 +1,5 @@ /* VMDouble.java -- VM Specific Double methods - Copyright (C) 2003, 2005 Free Software Foundation + Copyright (C) 2003, 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -65,6 +65,8 @@ final class VMDouble initIDs(); } + private VMDouble() {} // Prohibits instantiation. + /** * Convert the double to the IEEE 754 floating-point "double format" bit * layout. Bit 63 (the most significant) is the sign bit, bits 62-52 @@ -79,7 +81,7 @@ final class VMDouble * @return the bits of the double * @see #longBitsToDouble(long) */ - public static native long doubleToRawLongBits(double value); + static native long doubleToRawLongBits(double value); /** * Convert the argument in IEEE 754 floating-point "double format" bit @@ -94,7 +96,7 @@ final class VMDouble * @see #doubleToLongBits(double) * @see #doubleToRawLongBits(double) */ - public static native double longBitsToDouble(long bits); + static native double longBitsToDouble(long bits); /** * Helper method to convert to string. @@ -103,13 +105,18 @@ final class VMDouble * @param isFloat true if the conversion is requested by Float (results in * fewer digits) */ - public static native String toString(double d, boolean isFloat); + static native String toString(double d, boolean isFloat); /** * Initialize JNI cache. This method is called only by the * static initializer when using JNI. */ - public static native void initIDs(); + private static native void initIDs(); - public static native double parseDouble(String str); + /** + * Parse the specified String as a double. + * @throws NumberFormatException if str cannot be parsed + * @throws NullPointerException if str is null + */ + static native double parseDouble(String str); } diff --git a/libjava/classpath/vm/reference/java/lang/VMFloat.java b/libjava/classpath/vm/reference/java/lang/VMFloat.java index ba523d6973e..e6e784f3392 100644 --- a/libjava/classpath/vm/reference/java/lang/VMFloat.java +++ b/libjava/classpath/vm/reference/java/lang/VMFloat.java @@ -1,5 +1,5 @@ /* VMFloat.java -- VM Specific Float methods - Copyright (C) 2003 Free Software Foundation + Copyright (C) 2003, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -63,6 +63,8 @@ final class VMFloat } } + private VMFloat() {} // Prohibits instantiation. + /** * Convert the float to the IEEE 754 floating-point "single format" bit * layout. Bit 31 (the most significant) is the sign bit, bits 30-23 diff --git a/libjava/classpath/vm/reference/java/lang/VMMath.java b/libjava/classpath/vm/reference/java/lang/VMMath.java index dc5fd420708..35c3f645e42 100644 --- a/libjava/classpath/vm/reference/java/lang/VMMath.java +++ b/libjava/classpath/vm/reference/java/lang/VMMath.java @@ -1,5 +1,5 @@ /* VMMath.java -- Common mathematical functions. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -40,7 +40,7 @@ package java.lang; import gnu.classpath.Configuration; -class VMMath +final class VMMath { static @@ -51,6 +51,8 @@ class VMMath } } + private VMMath() {} // Prohibits instantiation. + /** * The trigonometric function sin. The sine of NaN or infinity is * NaN, and the sine of 0 retains its sign. This is accurate within 1 ulp, @@ -59,7 +61,7 @@ class VMMath * @param a the angle (in radians) * @return sin(a) */ - public static native double sin(double a); + static native double sin(double a); /** * The trigonometric function cos. The cosine of NaN or infinity is @@ -68,7 +70,7 @@ class VMMath * @param a the angle (in radians) * @return cos(a) */ - public static native double cos(double a); + static native double cos(double a); /** * The trigonometric function tan. The tangent of NaN or infinity @@ -78,7 +80,7 @@ class VMMath * @param a the angle (in radians) * @return tan(a) */ - public static native double tan(double a); + static native double tan(double a); /** * The trigonometric function arcsin. The range of angles returned @@ -89,7 +91,7 @@ class VMMath * @param a the sin to turn back into an angle * @return arcsin(a) */ - public static native double asin(double a); + static native double asin(double a); /** * The trigonometric function arccos. The range of angles returned @@ -100,7 +102,7 @@ class VMMath * @param a the cos to turn back into an angle * @return arccos(a) */ - public static native double acos(double a); + static native double acos(double a); /** * The trigonometric function arcsin. The range of angles returned @@ -112,7 +114,7 @@ class VMMath * @return arcsin(a) * @see #atan2(double, double) */ - public static native double atan(double a); + static native double atan(double a); /** * A special version of the trigonometric function arctan, for @@ -161,7 +163,7 @@ class VMMath * @return theta in the conversion of (x, y) to (r, theta) * @see #atan(double) */ - public static native double atan2(double y, double x); + static native double atan2(double y, double x); /** * Take ea. The opposite of log(). If the @@ -175,7 +177,7 @@ class VMMath * @see #log(double) * @see #pow(double, double) */ - public static native double exp(double a); + static native double exp(double a); /** * Take ln(a) (the natural log). The opposite of exp(). If the @@ -191,7 +193,7 @@ class VMMath * @return the natural log of a * @see #exp(double) */ - public static native double log(double a); + static native double log(double a); /** * Take a square root. If the argument is NaN or negative, the result is @@ -205,7 +207,7 @@ class VMMath * @return the square root of the argument * @see #pow(double, double) */ - public static native double sqrt(double a); + static native double sqrt(double a); /** * Raise a number to a power. Special cases:

    @@ -275,7 +277,7 @@ class VMMath * @param b the power to raise it to * @return ab */ - public static native double pow(double a, double b); + static native double pow(double a, double b); /** * Get the IEEE 754 floating point remainder on two numbers. This is the @@ -291,7 +293,7 @@ class VMMath * @return the IEEE 754-defined floating point remainder of x/y * @see #rint(double) */ - public static native double IEEEremainder(double x, double y); + static native double IEEEremainder(double x, double y); /** * Take the nearest integer that is that is greater than or equal to the @@ -302,7 +304,7 @@ class VMMath * @param a the value to act upon * @return the nearest integer >= a */ - public static native double ceil(double a); + static native double ceil(double a); /** * Take the nearest integer that is that is less than or equal to the @@ -312,7 +314,7 @@ class VMMath * @param a the value to act upon * @return the nearest integer <= a */ - public static native double floor(double a); + static native double floor(double a); /** * Take the nearest integer to the argument. If it is exactly between @@ -322,7 +324,7 @@ class VMMath * @param a the value to act upon * @return the nearest integer to a */ - public static native double rint(double a); + static native double rint(double a); /** *

    @@ -342,7 +344,7 @@ class VMMath * @see #sqrt(double) * @see #pow(double, double) */ - public static native double cbrt(double a); + static native double cbrt(double a); /** *

    @@ -362,7 +364,7 @@ class VMMath * @return the hyperbolic cosine of a. * @since 1.5 */ - public static native double cosh(double a); + static native double cosh(double a); /** *

    @@ -382,7 +384,7 @@ class VMMath * @return ea - 1 * @since 1.5 */ - public static native double expm1(double a); + static native double expm1(double a); /** *

    @@ -402,7 +404,7 @@ class VMMath * @return the hypotenuse matching the supplied parameters. * @since 1.5 */ - public static native double hypot(double a, double b); + static native double hypot(double a, double b); /** *

    @@ -422,7 +424,7 @@ class VMMath * @return the base 10 logarithm of a. * @since 1.5 */ - public static native double log10(double a); + static native double log10(double a); /** *

    @@ -444,7 +446,7 @@ class VMMath * @return the natural logarithm of a + 1. * @since 1.5 */ - public static native double log1p(double a); + static native double log1p(double a); /** *

    @@ -463,7 +465,7 @@ class VMMath * @return the hyperbolic sine of a. * @since 1.5 */ - public static native double sinh(double a); + static native double sinh(double a); /** *

    @@ -488,6 +490,5 @@ class VMMath * @return the hyperbolic tangent of a. * @since 1.5 */ - public static native double tanh(double a); - + static native double tanh(double a); } diff --git a/libjava/classpath/vm/reference/java/lang/VMObject.java b/libjava/classpath/vm/reference/java/lang/VMObject.java index 279f250c089..6a0785330bd 100644 --- a/libjava/classpath/vm/reference/java/lang/VMObject.java +++ b/libjava/classpath/vm/reference/java/lang/VMObject.java @@ -1,5 +1,5 @@ /* VMObject.java -- Reference implementation for VM hooks used by Object - Copyright (C) 1998, 2002, 2005 Free Software Foundation + Copyright (C) 1998, 2002, 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -46,6 +46,9 @@ package java.lang; */ final class VMObject { + + private VMObject() {} // Prohibits instantiation. + /** * Returns the runtime {@link Class} of a given Object. * diff --git a/libjava/classpath/vm/reference/java/lang/VMString.java b/libjava/classpath/vm/reference/java/lang/VMString.java index e1fbf839023..181e08543f5 100644 --- a/libjava/classpath/vm/reference/java/lang/VMString.java +++ b/libjava/classpath/vm/reference/java/lang/VMString.java @@ -1,5 +1,5 @@ /* VMString.java -- VM Specific String methods - Copyright (C) 2003 Free Software Foundation + Copyright (C) 2003, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -60,6 +60,8 @@ final class VMString */ private static final WeakHashMap internTable = new WeakHashMap(); + private VMString() {} // Prohibits instantiation. + /** * Fetches this String from the intern hashtable. If two Strings are * considered equal, by the equals() method, then intern() will return the diff --git a/libjava/classpath/vm/reference/java/lang/VMSystem.java b/libjava/classpath/vm/reference/java/lang/VMSystem.java index 52a3c1c9f66..0b3d6920055 100644 --- a/libjava/classpath/vm/reference/java/lang/VMSystem.java +++ b/libjava/classpath/vm/reference/java/lang/VMSystem.java @@ -1,5 +1,5 @@ /* VMSystem.java -- helper for java.lang.system - Copyright (C) 1998, 2002, 2004 Free Software Foundation + Copyright (C) 1998, 2002, 2004, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -56,6 +56,9 @@ import java.io.PrintStream; */ final class VMSystem { + + private VMSystem() {} // Prohibits instantiation. + /** * Copy one array onto another from src[srcStart] ... * src[srcStart+len-1] to dest[destStart] ... @@ -94,15 +97,6 @@ final class VMSystem */ static native int identityHashCode(Object o); - /** - * Convert a library name to its platform-specific variant. - * - * @param libname the library name, as used in loadLibrary - * @return the platform-specific mangling of the name - * @XXX Add this method - static native String mapLibraryName(String libname); - */ - /** * Set {@link System#in} to a new InputStream. * @@ -135,10 +129,7 @@ final class VMSystem * @return the current time * @see java.util.Date */ - public static long currentTimeMillis() - { - return nanoTime() / 1000000L; - } + static native long currentTimeMillis(); /** *

    @@ -165,7 +156,7 @@ final class VMSystem * @return the time of a system timer in nanoseconds. * @since 1.5 */ - public static native long nanoTime(); + static native long nanoTime(); /** * Returns a list of 'name=value' pairs representing the current environment diff --git a/libjava/classpath/vm/reference/java/lang/management/VMManagementFactory.java b/libjava/classpath/vm/reference/java/lang/management/VMManagementFactory.java index f10497014b4..253311cdf2c 100644 --- a/libjava/classpath/vm/reference/java/lang/management/VMManagementFactory.java +++ b/libjava/classpath/vm/reference/java/lang/management/VMManagementFactory.java @@ -1,5 +1,5 @@ /* VMManagementFactory.java - VM interface for obtaining system beans. - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -48,6 +48,8 @@ package java.lang.management; final class VMManagementFactory { + private VMManagementFactory() {} // Prohibits instantiation. + /** * Return a list of the names of the currently available * memory pools within the virtual machine. diff --git a/libjava/classpath/vm/reference/java/lang/reflect/VMArray.java b/libjava/classpath/vm/reference/java/lang/reflect/VMArray.java index d6277aebdbd..2055c170eca 100644 --- a/libjava/classpath/vm/reference/java/lang/reflect/VMArray.java +++ b/libjava/classpath/vm/reference/java/lang/reflect/VMArray.java @@ -1,5 +1,6 @@ /* java.lang.reflect.VMArray - VM class for array manipulation by reflection. - Copyright (C) 1998, 1999, 2001, 2003, 2005 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2003, 2005, 2010 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -40,7 +41,7 @@ package java.lang.reflect; import gnu.classpath.Configuration; -class VMArray +final class VMArray { static @@ -51,6 +52,8 @@ class VMArray } } + private VMArray() {} // Prohibits instantiation. + /** * Dynamically create an array of objects. * diff --git a/libjava/classpath/vm/reference/java/lang/reflect/VMProxy.java b/libjava/classpath/vm/reference/java/lang/reflect/VMProxy.java index 8c7b67a7202..a9d6093ebab 100644 --- a/libjava/classpath/vm/reference/java/lang/reflect/VMProxy.java +++ b/libjava/classpath/vm/reference/java/lang/reflect/VMProxy.java @@ -1,5 +1,5 @@ /* VMProxy.java -- VM interface for proxy class - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -67,6 +67,8 @@ final class VMProxy */ static boolean HAVE_NATIVE_GENERATE_PROXY_CLASS = false; + private VMProxy() {} // Prohibits instantiation. + /** * Optional native method to replace (and speed up) the pure Java * implementation of getProxyClass. Only needed if diff --git a/libjava/classpath/vm/reference/java/net/VMInetAddress.java b/libjava/classpath/vm/reference/java/net/VMInetAddress.java index a99c216b96c..97ae09a743a 100644 --- a/libjava/classpath/vm/reference/java/net/VMInetAddress.java +++ b/libjava/classpath/vm/reference/java/net/VMInetAddress.java @@ -1,5 +1,5 @@ /* VMInetAddress.java -- Class to model an Internet address - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -40,16 +40,17 @@ package java.net; import gnu.classpath.Configuration; -import java.io.Serializable; - -class VMInetAddress implements Serializable +final class VMInetAddress { + static { if (Configuration.INIT_LOAD_LIBRARY) System.loadLibrary("javanet"); } + private VMInetAddress() {} // Prohibits instantiation. + /** * This method looks up the hostname of the local machine * we are on. If the actual hostname cannot be determined, then the @@ -58,12 +59,12 @@ class VMInetAddress implements Serializable * * @return The local hostname. */ - public static native String getLocalHostname(); + static native String getLocalHostname(); /** * Returns the value of the special address INADDR_ANY */ - public static native byte[] lookupInaddrAny() throws UnknownHostException; + static native byte[] lookupInaddrAny() throws UnknownHostException; /** * This method returns the hostname for a given IP address. It will @@ -75,14 +76,14 @@ class VMInetAddress implements Serializable * * @exception UnknownHostException If the reverse lookup fails */ - public static native String getHostByAddr(byte[] ip) + static native String getHostByAddr(byte[] ip) throws UnknownHostException; /** * Returns a list of all IP addresses for a given hostname. Will throw * an UnknownHostException if the hostname cannot be resolved. */ - public static native byte[][] getHostByName(String hostname) + static native byte[][] getHostByName(String hostname) throws UnknownHostException; /** @@ -93,5 +94,5 @@ class VMInetAddress implements Serializable * * @return The IP address as a byte array */ - public static native byte[] aton(String address); + static native byte[] aton(String address); } diff --git a/libjava/classpath/vm/reference/java/net/VMURLConnection.java b/libjava/classpath/vm/reference/java/net/VMURLConnection.java index 19bf5814e67..ae04bdb6a05 100644 --- a/libjava/classpath/vm/reference/java/net/VMURLConnection.java +++ b/libjava/classpath/vm/reference/java/net/VMURLConnection.java @@ -1,5 +1,5 @@ /* VMURLConnection - VM code for URLConnection - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -45,7 +45,8 @@ import java.io.InputStream; final class VMURLConnection { - public static final int LENGTH = 1024; + + static final int LENGTH = 1024; static { @@ -54,6 +55,8 @@ final class VMURLConnection init(); } + private VMURLConnection() {} // Prohibits instantiation. + private static native void init(); private static native String guessContentTypeFromBuffer(byte[] b, int valid); diff --git a/libjava/classpath/vm/reference/java/nio/VMDirectByteBuffer.java b/libjava/classpath/vm/reference/java/nio/VMDirectByteBuffer.java index 93a83883a0e..41d44d8eb44 100644 --- a/libjava/classpath/vm/reference/java/nio/VMDirectByteBuffer.java +++ b/libjava/classpath/vm/reference/java/nio/VMDirectByteBuffer.java @@ -1,5 +1,5 @@ /* VMDirectByteBuffer.java -- - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -43,6 +43,7 @@ import gnu.classpath.Pointer; final class VMDirectByteBuffer { + static { // load the shared library needed for native methods. @@ -52,12 +53,24 @@ final class VMDirectByteBuffer } } - static native Pointer allocate (int capacity); + private VMDirectByteBuffer() {} // Prohibits instantiation. + + static native Pointer allocate(int capacity); + static native void free(Pointer address); + static native byte get(Pointer address, int index); - static native void get(Pointer address, int index, byte[] dst, int offset, int length); + + static native void get(Pointer address, int index, byte[] dst, int offset, + int length); + static native void put(Pointer address, int index, byte value); - static native void put(Pointer address, int index, byte[] src, int offset, int length); + + static native void put(Pointer address, int index, byte[] src, int offset, + int length); + static native Pointer adjustAddress(Pointer address, int offset); - static native void shiftDown(Pointer address, int dst_offset, int src_offset, int count); + + static native void shiftDown(Pointer address, int dst_offset, + int src_offset, int count); } diff --git a/libjava/classpath/vm/reference/java/security/VMAccessController.java b/libjava/classpath/vm/reference/java/security/VMAccessController.java index 9299e6f84cc..6e02f571106 100644 --- a/libjava/classpath/vm/reference/java/security/VMAccessController.java +++ b/libjava/classpath/vm/reference/java/security/VMAccessController.java @@ -71,7 +71,7 @@ final class VMAccessController Permissions permissions = new Permissions(); permissions.add(new AllPermission()); ProtectionDomain[] domain = new ProtectionDomain[] { - new ProtectionDomain(source, permissions) + new ProtectionDomain(source, permissions, null, null) }; DEFAULT_CONTEXT = new AccessControlContext(domain); } @@ -188,12 +188,13 @@ final class VMAccessController { Class clazz = classes[i]; String method = methods[i]; + ClassLoader loader = clazz.getClassLoader(); if (DEBUG) { debug("checking " + clazz + "." + method); // subject to getClassLoader RuntimePermission - debug("loader = " + clazz.getClassLoader()); + debug("loader = " + loader); } // If the previous frame was a call to doPrivileged, then this is @@ -225,7 +226,8 @@ final class VMAccessController // Create a static snapshot of this domain, which may change over time // if the current policy changes. domains.add(new ProtectionDomain(domain.getCodeSource(), - domain.getPermissions())); + domain.getPermissions(), + loader, null)); } if (DEBUG) diff --git a/libjava/classpath/vm/reference/java/security/VMSecureRandom.java b/libjava/classpath/vm/reference/java/security/VMSecureRandom.java index bea15497762..0a438455778 100644 --- a/libjava/classpath/vm/reference/java/security/VMSecureRandom.java +++ b/libjava/classpath/vm/reference/java/security/VMSecureRandom.java @@ -1,5 +1,5 @@ /* VMSecureRandom.java -- random seed generator. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is a part of GNU Classpath. @@ -55,6 +55,8 @@ package java.security; final class VMSecureRandom { + private VMSecureRandom() {} // Prohibits instantiation. + /** * Generate a random seed. Implementations are free to generate * fewer random bytes than are requested, and leave the remaining @@ -104,7 +106,8 @@ final class VMSecureRandom return length; } - static class Spinner implements Runnable + static class Spinner + implements Runnable { volatile byte value; volatile boolean running; @@ -121,7 +124,7 @@ final class VMSecureRandom value++; } - private void stop() + void stop() { running = false; } diff --git a/libjava/classpath/vm/reference/java/util/VMTimeZone.java b/libjava/classpath/vm/reference/java/util/VMTimeZone.java index 11061aa32bf..5724180d719 100644 --- a/libjava/classpath/vm/reference/java/util/VMTimeZone.java +++ b/libjava/classpath/vm/reference/java/util/VMTimeZone.java @@ -1,5 +1,5 @@ /* java.util.VMTimeZone - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -51,6 +51,7 @@ import java.io.*; */ final class VMTimeZone { + static { if (Configuration.INIT_LOAD_LIBRARY) @@ -59,6 +60,8 @@ final class VMTimeZone } } + private VMTimeZone() {} // Prohibits instantiation. + /** * This method returns a time zone id string which is in the form * (standard zone name) or (standard zone name)(GMT offset) or diff --git a/libjava/classpath/vm/reference/sun/misc/Unsafe.java b/libjava/classpath/vm/reference/sun/misc/Unsafe.java index e316bdb8da1..6fad6e4e3ea 100644 --- a/libjava/classpath/vm/reference/sun/misc/Unsafe.java +++ b/libjava/classpath/vm/reference/sun/misc/Unsafe.java @@ -1,5 +1,5 @@ /* Unsafe.java - Unsafe operations needed for concurrency - Copyright (C) 2006 Free Software Foundation + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -48,10 +48,10 @@ import java.lang.reflect.Field; * @author Tom Tromey (tromey@redhat.com) * @author Andrew John Hughes (gnu_andrew@member.fsf.org) */ -public class Unsafe +public final class Unsafe { // Singleton class. - private static Unsafe unsafe = new Unsafe(); + private static final Unsafe unsafe = new Unsafe(); /** * Private default constructor to prevent creation of an arbitrary diff --git a/libjava/gcj/Makefile.in b/libjava/gcj/Makefile.in index 44979381271..3951e358907 100644 --- a/libjava/gcj/Makefile.in +++ b/libjava/gcj/Makefile.in @@ -135,7 +135,6 @@ EXCEPTIONSPEC = @EXCEPTIONSPEC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCC_FOR_ECJX = @GCC_FOR_ECJX@ -GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ GCDEPS = @GCDEPS@ GCINCS = @GCINCS@ GCJ = @GCJ@ @@ -183,6 +182,7 @@ LIBART_LIBS = @LIBART_LIBS@ LIBDIR = @LIBDIR@ LIBFFI = @LIBFFI@ LIBFFIINCS = @LIBFFIINCS@ +LIBGCC_UNWIND_INCLUDE = @LIBGCC_UNWIND_INCLUDE@ LIBGCJDEBUG = @LIBGCJDEBUG@ LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@ diff --git a/libjava/gcj/javaprims.h b/libjava/gcj/javaprims.h index 3d4c3c947cb..19178ef878c 100644 --- a/libjava/gcj/javaprims.h +++ b/libjava/gcj/javaprims.h @@ -65,6 +65,7 @@ extern "Java" class CharArrayWriter; class CharConversionException; class Closeable; + class Console; class DataInput; class DataInputStream; class DataOutput; @@ -88,6 +89,7 @@ extern "Java" class FilterReader; class FilterWriter; class Flushable; + class IOError; class IOException; class InputStream; class InputStreamReader; @@ -108,6 +110,7 @@ extern "Java" class ObjectOutput; class ObjectOutputStream; class ObjectOutputStream$1; + class ObjectOutputStream$2; class ObjectOutputStream$PutField; class ObjectStreamClass; class ObjectStreamClass$1; @@ -142,6 +145,7 @@ extern "Java" class SyncFailedException; class UTFDataFormatException; class UnsupportedEncodingException; + class VMConsole; class VMObjectInputStream; class VMObjectStreamClass; class WriteAbortedException; diff --git a/libjava/gnu/classpath/Configuration.java b/libjava/gnu/classpath/Configuration.java index b0c57332ddc..f91d837b2b6 100644 --- a/libjava/gnu/classpath/Configuration.java +++ b/libjava/gnu/classpath/Configuration.java @@ -66,7 +66,7 @@ public final class Configuration * It is set according to the value of 'version' in the configure[.in] file * and used to set the System property gnu.classpath.version. */ - public static final String CLASSPATH_VERSION = "0.98"; + public static final String CLASSPATH_VERSION = "0.99"; /** * The value of DEBUG is substituted according to whether the diff --git a/libjava/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.h b/libjava/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.h index aaab2bf5167..512560dc6b4 100644 --- a/libjava/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.h +++ b/libjava/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.h @@ -17,10 +17,6 @@ extern "Java" { namespace security { - namespace hash - { - class Sha160; - } namespace util { class PRNG; @@ -77,8 +73,7 @@ public: static const jint DEFAULT_EXPONENT_SIZE = 160; private: static const jint DEFAULT_ENCODING_FORMAT = 1; - ::gnu::java::security::hash::Sha160 * __attribute__((aligned(__alignof__( ::java::lang::Object)))) sha; - ::java::security::SecureRandom * rnd; + ::java::security::SecureRandom * __attribute__((aligned(__alignof__( ::java::lang::Object)))) rnd; jint l; jint m; ::java::math::BigInteger * seed; diff --git a/libjava/gnu/javax/net/ssl/provider/CipherSuite.h b/libjava/gnu/javax/net/ssl/provider/CipherSuite.h index 511b6de6596..a54ec5e5c44 100644 --- a/libjava/gnu/javax/net/ssl/provider/CipherSuite.h +++ b/libjava/gnu/javax/net/ssl/provider/CipherSuite.h @@ -52,8 +52,8 @@ extern "Java" class gnu::javax::net::ssl::provider::CipherSuite : public ::java::lang::Object { - CipherSuite(::gnu::javax::net::ssl::provider::CipherAlgorithm *, ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm *, ::gnu::javax::net::ssl::provider::SignatureAlgorithm *, ::gnu::javax::net::ssl::provider::MacAlgorithm *, jint, jint, jint, ::java::lang::String *); - CipherSuite(::gnu::javax::net::ssl::provider::CipherAlgorithm *, ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm *, jboolean, ::gnu::javax::net::ssl::provider::SignatureAlgorithm *, ::gnu::javax::net::ssl::provider::MacAlgorithm *, jint, jint, jint, ::java::lang::String *); + CipherSuite(::gnu::javax::net::ssl::provider::CipherAlgorithm *, ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm *, ::gnu::javax::net::ssl::provider::SignatureAlgorithm *, ::gnu::javax::net::ssl::provider::MacAlgorithm *, jint, jint, jint, ::java::lang::String *, jboolean); + CipherSuite(::gnu::javax::net::ssl::provider::CipherAlgorithm *, ::gnu::javax::net::ssl::provider::KeyExchangeAlgorithm *, jboolean, ::gnu::javax::net::ssl::provider::SignatureAlgorithm *, ::gnu::javax::net::ssl::provider::MacAlgorithm *, jint, jint, jint, ::java::lang::String *, jboolean); CipherSuite(JArray< jbyte > *); public: static ::gnu::javax::net::ssl::provider::CipherSuite * forName(::java::lang::String *); @@ -79,6 +79,7 @@ public: jint hashCode(); ::java::lang::String * toString(::java::lang::String *); ::java::lang::String * toString(); + jboolean isCBCMode(); private: static ::java::util::List * tlsSuiteNames; static ::java::util::HashMap * namesToSuites; @@ -134,6 +135,7 @@ private: jboolean ephemeralDH; jboolean exportable; jboolean isStream; + jboolean isCBCMode__; jint keyLength__; JArray< jbyte > * id__; ::java::lang::String * name; diff --git a/libjava/gnu/javax/net/ssl/provider/OutputSecurityParameters.h b/libjava/gnu/javax/net/ssl/provider/OutputSecurityParameters.h index 7bb774beabf..cd28544ebe2 100644 --- a/libjava/gnu/javax/net/ssl/provider/OutputSecurityParameters.h +++ b/libjava/gnu/javax/net/ssl/provider/OutputSecurityParameters.h @@ -62,6 +62,7 @@ public: virtual JArray< jint > * encrypt(JArray< ::java::nio::ByteBuffer * > *, jint, jint, ::gnu::javax::net::ssl::provider::ContentType *, ::java::nio::ByteBuffer *); public: // actually package-private virtual ::gnu::javax::net::ssl::provider::CipherSuite * suite(); + virtual jboolean needToSplitPayload(); private: static ::gnu::classpath::debug::SystemLogger * logger; ::javax::crypto::Cipher * __attribute__((aligned(__alignof__( ::java::lang::Object)))) cipher; @@ -70,6 +71,8 @@ private: ::gnu::javax::net::ssl::provider::SessionImpl * session; ::gnu::javax::net::ssl::provider::CipherSuite * suite__; jlong sequence; +public: // actually package-private + static jboolean enableCBCProtection; public: static ::java::lang::Class class$; }; diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in index e6b043c378d..34f4ad03178 100644 --- a/libjava/include/Makefile.in +++ b/libjava/include/Makefile.in @@ -136,7 +136,6 @@ EXCEPTIONSPEC = @EXCEPTIONSPEC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCC_FOR_ECJX = @GCC_FOR_ECJX@ -GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ GCDEPS = @GCDEPS@ GCINCS = @GCINCS@ GCJ = @GCJ@ @@ -184,6 +183,7 @@ LIBART_LIBS = @LIBART_LIBS@ LIBDIR = @LIBDIR@ LIBFFI = @LIBFFI@ LIBFFIINCS = @LIBFFIINCS@ +LIBGCC_UNWIND_INCLUDE = @LIBGCC_UNWIND_INCLUDE@ LIBGCJDEBUG = @LIBGCJDEBUG@ LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@ diff --git a/libjava/java/io/Console.h b/libjava/java/io/Console.h new file mode 100644 index 00000000000..65a30723395 --- /dev/null +++ b/libjava/java/io/Console.h @@ -0,0 +1,36 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __java_io_Console__ +#define __java_io_Console__ + +#pragma interface + +#include +#include + + +class java::io::Console : public ::java::lang::Object +{ + +public: + static ::java::io::Console * console(); +private: + Console(); +public: + ::java::io::PrintWriter * writer(); + ::java::io::Reader * reader(); + ::java::io::Console * format(::java::lang::String *, JArray< ::java::lang::Object * > *); + ::java::io::Console * printf(::java::lang::String *, JArray< ::java::lang::Object * > *); + ::java::lang::String * readLine(::java::lang::String *, JArray< ::java::lang::Object * > *); + ::java::lang::String * readLine(); + JArray< jchar > * readPassword(::java::lang::String *, JArray< ::java::lang::Object * > *); + JArray< jchar > * readPassword(); + void flush(); +private: + static ::java::io::Console * console__; +public: + static ::java::lang::Class class$; +}; + +#endif // __java_io_Console__ diff --git a/libjava/java/io/IOError.h b/libjava/java/io/IOError.h new file mode 100644 index 00000000000..c93c95d0f71 --- /dev/null +++ b/libjava/java/io/IOError.h @@ -0,0 +1,22 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __java_io_IOError__ +#define __java_io_IOError__ + +#pragma interface + +#include + +class java::io::IOError : public ::java::lang::Error +{ + +public: + IOError(::java::lang::Throwable *); +private: + static const jlong serialVersionUID = 67100927991680413LL; +public: + static ::java::lang::Class class$; +}; + +#endif // __java_io_IOError__ diff --git a/libjava/java/io/ObjectOutputStream$2.h b/libjava/java/io/ObjectOutputStream$2.h new file mode 100644 index 00000000000..1ddf1beff90 --- /dev/null +++ b/libjava/java/io/ObjectOutputStream$2.h @@ -0,0 +1,25 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __java_io_ObjectOutputStream$2__ +#define __java_io_ObjectOutputStream$2__ + +#pragma interface + +#include + +class java::io::ObjectOutputStream$2 : public ::java::lang::Object +{ + +public: // actually package-private + ObjectOutputStream$2(::java::lang::Class *); +public: + virtual ::java::lang::Boolean * ObjectOutputStream$2$run(); + virtual ::java::lang::Object * run(); +private: + ::java::lang::Class * __attribute__((aligned(__alignof__( ::java::lang::Object)))) val$clazz; +public: + static ::java::lang::Class class$; +}; + +#endif // __java_io_ObjectOutputStream$2__ diff --git a/libjava/java/io/ObjectOutputStream.h b/libjava/java/io/ObjectOutputStream.h index fe6f88f11a8..d38f1b28f17 100644 --- a/libjava/java/io/ObjectOutputStream.h +++ b/libjava/java/io/ObjectOutputStream.h @@ -95,6 +95,7 @@ private: void callWriteMethod(::java::lang::Object *, ::java::io::ObjectStreamClass *); void dumpElementln(::java::lang::String *, ::java::lang::Object *); void dumpElementln(::java::lang::String *); + static jboolean overridesMethods(::java::lang::Class *); static const jint BUFFER_SIZE = 1024; static jint defaultProtocolVersion; ::java::io::DataOutputStream * __attribute__((aligned(__alignof__( ::java::io::OutputStream)))) dataOutput; diff --git a/libjava/java/io/VMConsole.h b/libjava/java/io/VMConsole.h new file mode 100644 index 00000000000..a75a123d49b --- /dev/null +++ b/libjava/java/io/VMConsole.h @@ -0,0 +1,22 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __java_io_VMConsole__ +#define __java_io_VMConsole__ + +#pragma interface + +#include + +class java::io::VMConsole : public ::java::lang::Object +{ + +public: + VMConsole(); +public: // actually package-private + static ::java::lang::String * readPassword(::java::io::Console *); +public: + static ::java::lang::Class class$; +}; + +#endif // __java_io_VMConsole__ diff --git a/libjava/java/io/VMConsole.java b/libjava/java/io/VMConsole.java new file mode 100644 index 00000000000..69c9df9527f --- /dev/null +++ b/libjava/java/io/VMConsole.java @@ -0,0 +1,44 @@ +/* VMConsole.java -- helper for java.io.Console + Copyright (C) 2012 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.io; + +public final class VMConsole +{ + static native String readPassword(Console con); +} diff --git a/libjava/java/io/natVMConsole.cc b/libjava/java/io/natVMConsole.cc new file mode 100644 index 00000000000..7bdc2cf681d --- /dev/null +++ b/libjava/java/io/natVMConsole.cc @@ -0,0 +1,45 @@ +// natVMConsole.cc - Native part of VMConsole class. + +/* Copyright (C) 2012 + Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the ObjectInputStream "LIBGCJ_LICENSE" for +details. */ + +#include + +#include +#include + +#include + +#include +#include + +#define TERMIOS_ECHO_IFLAGS (IUCLC|IXON|IXOFF|IXANY) +#define TERMIOS_ECHO_LFLAGS (ECHO|ECHOE|ECHOK|ECHONL|TOSTOP) + +jstring +java::io::VMConsole::readPassword(::java::io::Console *con) +{ + struct termios oldt, newt; + jstring result; + + tcgetattr (STDIN_FILENO, &oldt); + + tcgetattr (STDIN_FILENO, &newt); + + newt.c_iflag &= ~TERMIOS_ECHO_IFLAGS; + newt.c_lflag &= ~TERMIOS_ECHO_LFLAGS; + + tcsetattr (STDIN_FILENO, TCSANOW, &newt); + + result = con->readLine (); + + tcsetattr (STDIN_FILENO, TCSANOW, &oldt); + + return result; +} diff --git a/libjava/java/nio/channels/spi/SelectorProvider$1.h b/libjava/java/nio/channels/spi/SelectorProvider$1.h new file mode 100644 index 00000000000..9d8dec2a210 --- /dev/null +++ b/libjava/java/nio/channels/spi/SelectorProvider$1.h @@ -0,0 +1,38 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __java_nio_channels_spi_SelectorProvider$1__ +#define __java_nio_channels_spi_SelectorProvider$1__ + +#pragma interface + +#include +extern "Java" +{ + namespace java + { + namespace nio + { + namespace channels + { + namespace spi + { + class SelectorProvider$1; + } + } + } + } +} + +class java::nio::channels::spi::SelectorProvider$1 : public ::java::lang::Object +{ + +public: // actually package-private + SelectorProvider$1(); +public: + virtual ::java::lang::String * SelectorProvider$1$run(); + virtual ::java::lang::Object * run(); + static ::java::lang::Class class$; +}; + +#endif // __java_nio_channels_spi_SelectorProvider$1__ diff --git a/libjava/java/security/KeyStore$1.h b/libjava/java/security/KeyStore$1.h new file mode 100644 index 00000000000..335569c08b8 --- /dev/null +++ b/libjava/java/security/KeyStore$1.h @@ -0,0 +1,32 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __java_security_KeyStore$1__ +#define __java_security_KeyStore$1__ + +#pragma interface + +#include +extern "Java" +{ + namespace java + { + namespace security + { + class KeyStore$1; + } + } +} + +class java::security::KeyStore$1 : public ::java::lang::Object +{ + +public: // actually package-private + KeyStore$1(); +public: + virtual ::java::lang::String * KeyStore$1$run(); + virtual ::java::lang::Object * run(); + static ::java::lang::Class class$; +}; + +#endif // __java_security_KeyStore$1__ diff --git a/libjava/java/security/ProtectionDomain.h b/libjava/java/security/ProtectionDomain.h index 7f204667a85..bb2430be166 100644 --- a/libjava/java/security/ProtectionDomain.h +++ b/libjava/java/security/ProtectionDomain.h @@ -45,6 +45,7 @@ private: ::java::lang::ClassLoader * classloader; JArray< ::java::security::Principal * > * principals; jboolean staticBinding; + jboolean hasAllPermissions; public: static ::java::lang::Class class$; }; diff --git a/libjava/java/text/DateFormatSymbols.h b/libjava/java/text/DateFormatSymbols.h index b5cce7f5dd8..524fab106e1 100644 --- a/libjava/java/text/DateFormatSymbols.h +++ b/libjava/java/text/DateFormatSymbols.h @@ -23,7 +23,8 @@ extern "Java" class java::text::DateFormatSymbols : public ::java::lang::Object { - static JArray< ::java::lang::String * > * getStringArray(::java::util::ResourceBundle *, ::java::lang::String *); + static JArray< ::java::lang::String * > * getStringArray(::java::util::List *, ::java::lang::String *, jint); + static JArray< ::java::lang::String * > * getStringArray(::java::util::List *, ::java::lang::String *, jint, JArray< ::java::lang::String * > *); JArray< JArray< ::java::lang::String * > * > * getZoneStrings(::java::util::ResourceBundle *, ::java::util::Locale *); JArray< ::java::lang::String * > * formatsForKey(::java::util::ResourceBundle *, ::java::lang::String *); public: diff --git a/libjava/java/util/HashMap.h b/libjava/java/util/HashMap.h index 5b8c77f105e..8cd751812c1 100644 --- a/libjava/java/util/HashMap.h +++ b/libjava/java/util/HashMap.h @@ -42,7 +42,7 @@ private: void writeObject(::java::io::ObjectOutputStream *); void readObject(::java::io::ObjectInputStream *); public: // actually package-private - static const jint DEFAULT_CAPACITY = 11; + static const jint DEFAULT_CAPACITY = 16; static jfloat DEFAULT_LOAD_FACTOR; private: static const jlong serialVersionUID = 362498820763181265LL; diff --git a/libjava/java/util/regex/Matcher.h b/libjava/java/util/regex/Matcher.h index 74230ef51b7..bb59f883dae 100644 --- a/libjava/java/util/regex/Matcher.h +++ b/libjava/java/util/regex/Matcher.h @@ -62,6 +62,7 @@ public: jboolean hasAnchoringBounds(); ::java::util::regex::Matcher * useAnchoringBounds(jboolean); ::java::util::regex::MatchResult * toMatchResult(); + static ::java::lang::String * quoteReplacement(::java::lang::String *); private: ::java::util::regex::Pattern * __attribute__((aligned(__alignof__( ::java::lang::Object)))) pattern__; ::java::lang::CharSequence * input; diff --git a/libjava/java/util/regex/Pattern.h b/libjava/java/util/regex/Pattern.h index 267cafdc041..5536aec82c1 100644 --- a/libjava/java/util/regex/Pattern.h +++ b/libjava/java/util/regex/Pattern.h @@ -41,6 +41,7 @@ public: JArray< ::java::lang::String * > * split(::java::lang::CharSequence *); JArray< ::java::lang::String * > * split(::java::lang::CharSequence *, jint); ::java::lang::String * pattern(); + static ::java::lang::String * quote(::java::lang::String *); ::java::lang::String * toString(); private: static const jlong serialVersionUID = 5073258162644648461LL; diff --git a/libjava/javax/xml/stream/util/ReaderDelegate.h b/libjava/javax/xml/stream/util/ReaderDelegate.h deleted file mode 100644 index 0a887d1ee9a..00000000000 --- a/libjava/javax/xml/stream/util/ReaderDelegate.h +++ /dev/null @@ -1,95 +0,0 @@ - -// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- - -#ifndef __javax_xml_stream_util_ReaderDelegate__ -#define __javax_xml_stream_util_ReaderDelegate__ - -#pragma interface - -#include -#include - -extern "Java" -{ - namespace javax - { - namespace xml - { - namespace namespace$ - { - class NamespaceContext; - class QName; - } - namespace stream - { - class Location; - class XMLStreamReader; - namespace util - { - class ReaderDelegate; - } - } - } - } -} - -class javax::xml::stream::util::ReaderDelegate : public ::java::lang::Object -{ - -public: - ReaderDelegate(); - ReaderDelegate(::javax::xml::stream::XMLStreamReader *); - virtual void setParent(::javax::xml::stream::XMLStreamReader *); - virtual ::javax::xml::stream::XMLStreamReader * getParent(); - virtual jint next(); - virtual jint nextTag(); - virtual ::java::lang::String * getElementText(); - virtual void require(jint, ::java::lang::String *, ::java::lang::String *); - virtual jboolean hasNext(); - virtual void close(); - virtual ::java::lang::String * getNamespaceURI(::java::lang::String *); - virtual ::javax::xml::namespace$::NamespaceContext * getNamespaceContext(); - virtual jboolean isStartElement(); - virtual jboolean isEndElement(); - virtual jboolean isCharacters(); - virtual jboolean isWhiteSpace(); - virtual ::java::lang::String * getAttributeValue(::java::lang::String *, ::java::lang::String *); - virtual jint getAttributeCount(); - virtual ::javax::xml::namespace$::QName * getAttributeName(jint); - virtual ::java::lang::String * getAttributePrefix(jint); - virtual ::java::lang::String * getAttributeNamespace(jint); - virtual ::java::lang::String * getAttributeLocalName(jint); - virtual ::java::lang::String * getAttributeType(jint); - virtual ::java::lang::String * getAttributeValue(jint); - virtual jboolean isAttributeSpecified(jint); - virtual jint getNamespaceCount(); - virtual ::java::lang::String * getNamespacePrefix(jint); - virtual ::java::lang::String * getNamespaceURI(jint); - virtual jint getEventType(); - virtual ::java::lang::String * getText(); - virtual jint getTextCharacters(jint, JArray< jchar > *, jint, jint); - virtual JArray< jchar > * getTextCharacters(); - virtual jint getTextStart(); - virtual jint getTextLength(); - virtual ::java::lang::String * getEncoding(); - virtual jboolean hasText(); - virtual ::javax::xml::stream::Location * getLocation(); - virtual ::javax::xml::namespace$::QName * getName(); - virtual ::java::lang::String * getLocalName(); - virtual jboolean hasName(); - virtual ::java::lang::String * getNamespaceURI(); - virtual ::java::lang::String * getPrefix(); - virtual ::java::lang::String * getVersion(); - virtual jboolean isStandalone(); - virtual jboolean standaloneSet(); - virtual ::java::lang::String * getCharacterEncodingScheme(); - virtual ::java::lang::String * getPITarget(); - virtual ::java::lang::String * getPIData(); - virtual ::java::lang::Object * getProperty(::java::lang::String *); -private: - ::javax::xml::stream::XMLStreamReader * __attribute__((aligned(__alignof__( ::java::lang::Object)))) parent; -public: - static ::java::lang::Class class$; -}; - -#endif // __javax_xml_stream_util_ReaderDelegate__ diff --git a/libjava/sources.am b/libjava/sources.am index 4539abd4601..150b42b3c47 100644 --- a/libjava/sources.am +++ b/libjava/sources.am @@ -4535,6 +4535,7 @@ classpath/java/io/CharArrayReader.java \ classpath/java/io/CharArrayWriter.java \ classpath/java/io/CharConversionException.java \ classpath/java/io/Closeable.java \ +classpath/java/io/Console.java \ classpath/java/io/DataInput.java \ classpath/java/io/DataInputStream.java \ classpath/java/io/DataOutput.java \ @@ -4557,6 +4558,7 @@ classpath/java/io/FilterOutputStream.java \ classpath/java/io/FilterReader.java \ classpath/java/io/FilterWriter.java \ classpath/java/io/Flushable.java \ +classpath/java/io/IOError.java \ classpath/java/io/IOException.java \ classpath/java/io/InputStream.java \ java/io/InputStreamReader.java \ @@ -4600,6 +4602,7 @@ classpath/java/io/StringWriter.java \ classpath/java/io/SyncFailedException.java \ classpath/java/io/UTFDataFormatException.java \ classpath/java/io/UnsupportedEncodingException.java \ +java/io/VMConsole.java \ java/io/VMObjectInputStream.java \ java/io/VMObjectStreamClass.java \ classpath/java/io/WriteAbortedException.java \ @@ -9507,8 +9510,8 @@ property_files = \ classpath/resource/gnu/java/util/regex/MessagesBundle.properties \ classpath/resource/gnu/java/util/regex/MessagesBundle_fr.properties \ classpath/resource/gnu/java/util/regex/MessagesBundle_it.properties \ - classpath/resource/gnu/javax/print/PrinterDialog.properties \ - classpath/resource/gnu/javax/print/PrinterDialog_de.properties \ + classpath/resource/gnu/javax/print/MessagesBundle.properties \ + classpath/resource/gnu/javax/print/MessagesBundle_de.properties \ classpath/resource/gnu/javax/security/auth/callback/MessagesBundle.properties \ classpath/resource/java/text/metazones.properties \ classpath/resource/java/util/iso4217.properties \ diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in index a3ac9d81f4a..28c4630cf44 100644 --- a/libjava/testsuite/Makefile.in +++ b/libjava/testsuite/Makefile.in @@ -111,7 +111,6 @@ EXCEPTIONSPEC = @EXCEPTIONSPEC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GCC_FOR_ECJX = @GCC_FOR_ECJX@ -GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ GCDEPS = @GCDEPS@ GCINCS = @GCINCS@ GCJ = @GCJ@ @@ -159,6 +158,7 @@ LIBART_LIBS = @LIBART_LIBS@ LIBDIR = @LIBDIR@ LIBFFI = @LIBFFI@ LIBFFIINCS = @LIBFFIINCS@ +LIBGCC_UNWIND_INCLUDE = @LIBGCC_UNWIND_INCLUDE@ LIBGCJDEBUG = @LIBGCJDEBUG@ LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@