Hello community,

here is the log from the commit of package java-11-openj9 for 
openSUSE:Leap:15.2 checked in at 2020-02-19 18:47:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/java-11-openj9 (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.java-11-openj9.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "java-11-openj9"

Wed Feb 19 18:47:18 2020 rev:1 rq:776040 version:11.0.6.0

Changes:
--------
New Changes file:

--- /dev/null   2019-12-19 10:12:34.003146842 +0100
+++ 
/work/SRC/openSUSE:Leap:15.2/.java-11-openj9.new.26092/java-11-openj9.changes   
    2020-02-19 18:47:25.574926500 +0100
@@ -0,0 +1,5 @@
+-------------------------------------------------------------------
+Sun Feb  2 15:47:35 UTC 2020 - Fridrich Strba <[email protected]>
+
+- Initial release of OpenJDK 11.0.6 with OpenJ9 0.18.1 virtual
+  machine

New:
----
  51a5857d24eca5e220ccd932bc98e9f1d0438e71.zip
  7a1b0239a91f9d8819cb541812b4d774edd5bba4.zip
  97897f4e4d7cb61d36ca114cc585ea148ccf9f45.zip
  JDK-8208602.patch
  TestCryptoLevel.java
  TestECDSA.java
  _constraints
  activation-JAF-1_2_0.tar.gz
  activation-module.patch
  alternative-tzdb_dat.patch
  annotation-module.patch
  disable-doclint-by-default.patch
  freemarker-2.3.29-sources.jar
  freemarker-2.3.29.jar
  icedtea-sound-1.0.1-jdk9.patch
  icedtea-sound-1.0.1.tar.xz
  icedtea-sound-soundproperties.patch
  implicit-pointer-decl.patch
  java-11-openj9.changes
  java-11-openj9.spec
  java-atk-wrapper-0.33.2.tar.xz
  java-atk-wrapper-security.patch
  javax.annotation-1.3.2.tar.gz
  javax.xml.soap-1.4.0.tar.gz
  jaw-jdk10.patch
  jaw-misc.patch
  jaw-nogtk.patch
  jax-ws-spec-2.4.0.tar.gz
  jaxb-istack-commons-3.0.7-RELEASE.tar.gz
  jaxb-spec-2.4.0.tar.gz
  jaxb-v2-2.3.1.tar.gz
  jconsole.desktop.in
  loadAssistiveTechnologies.patch
  metro-fi-1.2.15-RELEASE.tar.gz
  metro-stax-ex-1.8.tar.gz
  multiple-pkcs11-library-init.patch
  nss.cfg
  openj9-nogit.patch.in
  system-pcsclite.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ java-11-openj9.spec ++++++
++++ 1239 lines (skipped)

++++++ JDK-8208602.patch ++++++

# HG changeset patch
# User weijun
# Date 1533101708 -28800
# Node ID 9d92ff04a29c12a5d47f2ca4e772f7716bfdb8ff
# Parent  b6e0bfe4a6ec5d8d9d9476c05627dfb47f2263e1
8208602: Cannot read PEM X.509 cert if there is whitespace after the header or 
footer
Reviewed-by: xuelei

diff -r b6e0bfe4a6ec -r 9d92ff04a29c 
src/java.base/share/classes/sun/security/provider/X509Factory.java
--- a/src/java.base/share/classes/sun/security/provider/X509Factory.java        
Wed Aug 01 01:40:44 2018 -0400
+++ b/src/java.base/share/classes/sun/security/provider/X509Factory.java        
Wed Aug 01 13:35:08 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -635,7 +635,8 @@
                 if (next != '\r') footer.append((char)next);
             }
 
-            checkHeaderFooter(header.toString(), footer.toString());
+            checkHeaderFooter(header.toString().stripTrailing(),
+                    footer.toString().stripTrailing());
 
             try {
                 return Base64.getDecoder().decode(data.toByteArray());
diff -r b6e0bfe4a6ec -r 9d92ff04a29c 
test/jdk/sun/security/provider/X509Factory/BadPem.java
--- a/test/jdk/sun/security/provider/X509Factory/BadPem.java    Wed Aug 01 
01:40:44 2018 -0400
+++ b/test/jdk/sun/security/provider/X509Factory/BadPem.java    Wed Aug 01 
13:35:08 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,14 +23,13 @@
 
 /*
  * @test
- * @bug 8074935
- * @summary jdk8 keytool doesn't validate pem files for RFC 1421 correctness, 
as jdk7 did
+ * @bug 8074935 8208602
+ * @summary X.509 cert PEM format read
  * @modules java.base/sun.security.provider
  */
 
 import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.PrintStream;
 import java.security.KeyStore;
 import java.security.cert.CertificateException;
@@ -49,10 +48,12 @@
         String pass = "passphrase";
         String alias = "dummy";
 
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
         KeyStore keyStore = KeyStore.getInstance("JKS");
         keyStore.load(new FileInputStream(ks), pass.toCharArray());
         byte[] cert = keyStore.getCertificate(alias).getEncoded();
 
+        // 8074935
         ByteArrayOutputStream bout = new ByteArrayOutputStream();
         PrintStream pout = new PrintStream(bout);
         byte[] CRLF = new byte[] {'\r', '\n'};
@@ -64,14 +65,20 @@
         }
         pout.println(X509Factory.END_CERT);
 
-        CertificateFactory cf = CertificateFactory.getInstance("X.509");
-
         try {
             cf.generateCertificate(new 
ByteArrayInputStream(bout.toByteArray()));
             throw new Exception("Should fail");
         } catch (CertificateException e) {
             // Good
         }
+
+        // 8208602
+        bout.reset();
+        pout.println(X509Factory.BEGIN_CERT + "  ");
+        pout.println(Base64.getMimeEncoder().encodeToString(cert));
+        pout.println(X509Factory.END_CERT + "    ");
+
+        cf.generateCertificate(new ByteArrayInputStream(bout.toByteArray()));
     }
 }
 

++++++ TestCryptoLevel.java ++++++
/* TestCryptoLevel -- Ensure unlimited crypto policy is in use.
   Copyright (C) 2012 Red Hat, Inc.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;

import java.security.Permission;
import java.security.PermissionCollection;

public class TestCryptoLevel
{
  public static void main(String[] args)
    throws NoSuchFieldException, ClassNotFoundException,
           IllegalAccessException, InvocationTargetException
  {
    Class<?> cls = null;
    Method def = null, exempt = null;

    try
      {
        cls = Class.forName("javax.crypto.JceSecurity");
      }
    catch (ClassNotFoundException ex)
      {
        System.err.println("Running a non-Sun JDK.");
        System.exit(0);
      }
    try
      {
        def = cls.getDeclaredMethod("getDefaultPolicy");
        exempt = cls.getDeclaredMethod("getExemptPolicy");
      }
    catch (NoSuchMethodException ex)
      {
        System.err.println("Running IcedTea with the original crypto patch.");
        System.exit(0);
      }
    def.setAccessible(true);
    exempt.setAccessible(true);
    PermissionCollection defPerms = (PermissionCollection) def.invoke(null);
    PermissionCollection exemptPerms = (PermissionCollection) 
exempt.invoke(null);
    Class<?> apCls = Class.forName("javax.crypto.CryptoAllPermission");
    Field apField = apCls.getDeclaredField("INSTANCE");
    apField.setAccessible(true);
    Permission allPerms = (Permission) apField.get(null);
    if (defPerms.implies(allPerms) && (exemptPerms == null || 
exemptPerms.implies(allPerms)))
      {
        System.err.println("Running with the unlimited policy.");
        System.exit(0);
      }
    else
      {
        System.err.println("WARNING: Running with a restricted crypto policy.");
        System.exit(-1);
      }
  }
}
++++++ TestECDSA.java ++++++
/* TestECDSA -- Ensure ECDSA signatures are working.
   Copyright (C) 2016 Red Hat, Inc.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.math.BigInteger;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;

/**
 * @test
 */
public class TestECDSA {

    public static void main(String[] args) throws Exception {
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
        KeyPair key = keyGen.generateKeyPair();
        
        byte[] data = "This is a string to sign".getBytes("UTF-8");
        
        Signature dsa = Signature.getInstance("NONEwithECDSA");
        dsa.initSign(key.getPrivate());
        dsa.update(data);
        byte[] sig = dsa.sign();
        System.out.println("Signature: " + new BigInteger(1, sig).toString(16));
        
        Signature dsaCheck = Signature.getInstance("NONEwithECDSA");
        dsaCheck.initVerify(key.getPublic());
        dsaCheck.update(data);
        boolean success = dsaCheck.verify(sig);
        if (!success) {
            throw new RuntimeException("Test failed. Signature verification 
error");
        }
        System.out.println("Test passed.");
    }
}
++++++ _constraints ++++++
<constraints>
  <hardware>
    <physicalmemory>
      <size unit="M">4096</size>
    </physicalmemory>
    <disk>
      <size unit="G">20</size>
    </disk>
  </hardware>
</constraints> 
++++++ activation-module.patch ++++++
--- activation-JAF-1_2_0/activation/src/main/java/module-info.java      
1970-01-01 01:00:00.000000000 +0100
+++ activation-JAF-1_2_0/activation/src/main/java/module-info.java      
2018-07-13 21:56:33.025843992 +0200
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Defines the JavaBeans Activation Framework (JAF) API.
+ *
+ * <p> This module is upgradeable.
+ *
+ * @moduleGraph
+ * @since 9
+ */
+module java.activation {
+    requires java.logging;
+    requires java.desktop;
+
+    requires transitive java.datatransfer;
+
+    exports javax.activation;
+}
+
++++++ alternative-tzdb_dat.patch ++++++
--- a/src/java.base/share/classes/java/time/zone/TzdbZoneRulesProvider.java     
Thu Jun 28 17:49:13 2018 -0700
+++ b/src/java.base/share/classes/java/time/zone/TzdbZoneRulesProvider.java     
Fri Jun 29 08:23:40 2018 +0200
@@ -74,6 +74,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.NavigableMap;
+import java.util.Properties;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
@@ -106,7 +107,14 @@
      */
     public TzdbZoneRulesProvider() {
         try {
-            String libDir = StaticProperty.javaHome() + File.separator + "lib";
+            final String homeDir = StaticProperty.javaHome();
+            if (homeDir == null) {
+                throw new Error("java.home is not set");
+            }
+            String libDir = homeDir + File.separator + "lib";
+            String otherDir = getZoneInfoDir(homeDir);
+            if (otherDir != null)
+                libDir = otherDir;
             try (DataInputStream dis = new DataInputStream(
                      new BufferedInputStream(new FileInputStream(
                          new File(libDir, "tzdb.dat"))))) {
@@ -117,6 +125,28 @@
         }
     }
 
+    private static String getZoneInfoDir(final String homeDir) {
+        try {
+            File f = new File(homeDir + File.separator + "conf" +
+                              File.separator + "tz.properties");
+            if (!f.exists())
+                return null;
+            BufferedInputStream bin = new BufferedInputStream(new 
FileInputStream(f));
+            Properties props = new Properties();
+            props.load(bin);
+            bin.close();
+            String dir = props.getProperty("sun.zoneinfo.dir");
+            if (dir == null)
+                return null;
+            File tzdbdat = new File(dir, "tzdb.dat");
+            if (tzdbdat.exists())
+                return dir;
+            return null;
+        } catch (Exception x) {
+            return null;
+        }
+    }
+
     @Override
     protected Set<String> provideZoneIds() {
         return new HashSet<>(regionIds);
--- a/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java   Thu Jun 
28 17:49:13 2018 -0700
+++ b/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java   Fri Jun 
29 08:23:40 2018 +0200
@@ -45,6 +45,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Properties;
 import java.util.SimpleTimeZone;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.zip.CRC32;
@@ -251,7 +252,15 @@
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
             public Void run() {
                 try {
-                    String libDir = StaticProperty.javaHome() + File.separator 
+ "lib";
+                    final String homeDir = StaticProperty.javaHome();
+                    if (homeDir == null) {
+                        throw new Error("java.home is not set");
+                    }
+                    String libDir = homeDir + File.separator + "lib";
+                    String otherDir = getZoneInfoDir(homeDir);
+                    if (otherDir != null)
+                        libDir = otherDir;
+
                     try (DataInputStream dis = new DataInputStream(
                              new BufferedInputStream(new FileInputStream(
                                  new File(libDir, "tzdb.dat"))))) {
@@ -265,6 +274,28 @@
         });
     }
 
+    private static String getZoneInfoDir(final String homeDir) {
+        try {
+            File f = new File(homeDir + File.separator + "conf" +
+                              File.separator + "tz.properties");
+            if (!f.exists())
+                return null;
+            BufferedInputStream bin = new BufferedInputStream(new 
FileInputStream(f));
+            Properties props = new Properties();
+            props.load(bin);
+            bin.close();
+            String dir = props.getProperty("sun.zoneinfo.dir");
+            if (dir == null)
+                return null;
+            File tzdbdat = new File(dir, "tzdb.dat");
+            if (tzdbdat.exists())
+                return dir;
+            return null;
+        } catch (Exception x) {
+            return null;
+        }
+    }
+
     private static void addOldMapping() {
         for (String[] alias : oldMappings) {
             aliases.put(alias[0], alias[1]);
++++++ annotation-module.patch ++++++


2018-07-14 20:40 diff -ulEbwB /dev/null 
javax.annotation-1.3.2/src/main/java/module-info.java Page 1


--- /dev/null   2018-07-14 10:01:53.274827758 +0200
+++ javax.annotation-1.3.2/src/main/java/module-info.java       2018-07-14 
20:37:45.336213151 +0200
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Defines a subset of the Common Annotations API to support programs running
+ * on the Java SE Platform.
+ */
+module java.annotation {
+    exports javax.annotation;
+}
+

























++++++ disable-doclint-by-default.patch ++++++
--- jdk10/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocEnv.java  
2018-01-18 00:25:18.000000000 +0100
+++ jdk10/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocEnv.java  
2018-01-18 17:45:18.697161064 +0100
@@ -839,7 +839,7 @@
         }
 
         if (!msgOptionSeen) {
-            doclintOpts.add(DocLint.XMSGS_OPTION);
+            return;
         }
 
         String sep = "";
--- 
jdk10/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WorkArounds.java
   2018-01-18 00:25:18.000000000 +0100
+++ 
jdk10/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WorkArounds.java
   2018-01-18 17:45:18.697161064 +0100
@@ -127,7 +127,7 @@
         }
 
         if (!msgOptionSeen) {
-            doclintOpts.add(DocLint.XMSGS_OPTION);
+            return;
         }
 
         String sep = "";
--- jdk10/test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java      
2018-01-18 00:25:18.000000000 +0100
+++ jdk10/test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java      
2018-01-18 17:49:48.865162085 +0100
@@ -147,12 +147,12 @@
             files = List.of(new TestJFO("Test.java", code));
 
             test(List.of(htmlVersion),
-                    Main.Result.ERROR,
-                    EnumSet.of(Message.DL_ERR9A, Message.DL_WRN12A));
+                    Main.Result.OK,
+                    EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
 
             test(List.of(htmlVersion, rawDiags),
-                    Main.Result.ERROR,
-                    EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
+                    Main.Result.OK,
+                    EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
 
 //            test(List.of("-Xdoclint:none"),
 //                    Main.Result.OK,
@@ -175,8 +175,8 @@
                     EnumSet.of(Message.DL_WRN12));
 
             test(List.of(htmlVersion, rawDiags, "-private"),
-                    Main.Result.ERROR,
-                    EnumSet.of(Message.DL_ERR6, Message.DL_ERR9, 
Message.DL_WRN12));
+                    Main.Result.OK,
+                    EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
 
             test(List.of(htmlVersion, rawDiags, "-Xdoclint:syntax", 
"-private"),
                     Main.Result.ERROR,
++++++ icedtea-sound-1.0.1-jdk9.patch ++++++
--- icedtea-sound-1.0.1/Makefile.am     Fri Jul 18 23:46:15 2014 +0100
+++ icedtea-sound-1.0.1/Makefile.am     Thu Nov 02 13:16:38 2017 +0100
@@ -28,7 +28,6 @@
 ICEDTEA_SOUND_JAVA_GENDIR = $(abs_top_builddir)/src/java
 
 # Build directories
-RUNTIME = $(SYSTEM_JDK_DIR)/jre/lib/rt.jar
 ICEDTEA_SOUND_BUILDDIR = $(abs_top_builddir)/build
 ICEDTEA_SOUND_NATIVE_BUILDDIR = $(ICEDTEA_SOUND_BUILDDIR)/native
 ICEDTEA_SOUND_NATIVE_OBJECTS = \
@@ -38,6 +37,7 @@
 # Files
 # Must use relative paths so as not to break make distcheck
 ICEDTEA_SOUND_JAVA_SRCS = 
$(top_srcdir)/src/java/org/classpath/icedtea/*/*.java \
+       $(top_srcdir)/src/java/module-info.java \
        $(top_builddir)/src/java/org/classpath/icedtea/Config.java
 ICEDTEA_SOUND_SRCS = $(ICEDTEA_SOUND_JAVA_SRCS) \
        
$(top_srcdir)/src/java/META-INF/services/javax.sound.sampled.spi.MixerProvider \
@@ -51,10 +51,15 @@
 EXTRA_DIST = $(ICEDTEA_SOUND_SRCS)
 
 # Flags
-IT_LANGUAGE_SOURCE_VERSION=6
-IT_CLASS_TARGET_VERSION=6
+IT_LANGUAGE_SOURCE_VERSION=10
+IT_CLASS_TARGET_VERSION=10
 IT_JAVAC_SETTINGS=-g -encoding utf-8 $(JAVACFLAGS) $(MEMORY_LIMIT) 
$(PREFER_SOURCE)
 IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) 
-target $(IT_CLASS_TARGET_VERSION)
+if ENABLE_WARNINGS
+IT_JAVACFLAGS+=-Xlint
+else
+IT_JAVACFLAGS+=-nowarn
+endif
 IT_CFLAGS=$(CFLAGS) $(ARCHFLAG)
 LDFLAGS+=-Xlinker -z -Xlinker defs
 if ENABLE_DOCS
@@ -62,7 +67,7 @@
 JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \
  -bottom '<font size="-1"> <a 
href="http://icedtea.classpath.org/bugzilla";>Submit a bug or feature</a></font>'
 if JAVADOC_SUPPORTS_J_OPTIONS
-JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m 
-J-XX:MaxPermSize=160m
+JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m
 endif
 endif
 
@@ -80,8 +85,7 @@
 install-exec-local: $(ICEDTEA_SOUND_NATIVE_BUILDDIR)/$(TARGET_NAME)
        ${mkinstalldirs} $(DESTDIR)$(libdir)
        ${INSTALL_PROGRAM} $(ICEDTEA_SOUND_NATIVE_BUILDDIR)/$(TARGET_NAME) \
-         $(DESTDIR)$(libdir)/$(LIBRARY_NAME)
-       ln -sf $(LIBRARY_NAME) $(DESTDIR)$(libdir)/$(TARGET_NAME)
+         $(DESTDIR)$(libdir)/
 
 install-data-local: stamps/icedtea-sound-jar.stamp stamps/docs.stamp
        ${mkinstalldirs} $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/
@@ -112,9 +116,8 @@
        touch $@
 
 stamps/icedtea-sound-class.stamp:
-       mkdir -p $(ICEDTEA_SOUND_CLASS_DIR)
-       $(abs_top_builddir)/javac $(IT_JAVACFLAGS) -d 
$(ICEDTEA_SOUND_CLASS_DIR) \
-        -bootclasspath $(RUNTIME) $(ICEDTEA_SOUND_JAVA_SRCS)
+       mkdir -p $(ICEDTEA_SOUND_CLASS_DIR) $(ICEDTEA_SOUND_NATIVE_BUILDDIR)
+       $(JAVAC) $(IT_JAVACFLAGS) -h $(ICEDTEA_SOUND_NATIVE_BUILDDIR) -d 
$(ICEDTEA_SOUND_CLASS_DIR) $(ICEDTEA_SOUND_JAVA_SRCS)
        cp  -r $(ICEDTEA_SOUND_JAVA_SRCDIR)/META-INF $(ICEDTEA_SOUND_CLASS_DIR)
        chmod -R ug+w $(ICEDTEA_SOUND_CLASS_DIR)/META-INF
        mkdir -p stamps
@@ -125,24 +128,7 @@
        mkdir -p stamps
        touch $@
 
-stamps/icedtea-sound-headers.stamp: stamps/icedtea-sound-class.stamp
-       mkdir -p $(ICEDTEA_SOUND_NATIVE_BUILDDIR)
-       $(JAVAH) -d $(ICEDTEA_SOUND_NATIVE_BUILDDIR) -classpath 
$(ICEDTEA_SOUND_CLASS_DIR) \
-         -J-Xbootclasspath/p:$(ICEDTEA_SOUND_CLASS_DIR) 
org.classpath.icedtea.pulseaudio.EventLoop ; \
-       $(JAVAH) -d $(ICEDTEA_SOUND_NATIVE_BUILDDIR) -classpath 
$(ICEDTEA_SOUND_CLASS_DIR) \
-         -J-Xbootclasspath/p:$(ICEDTEA_SOUND_CLASS_DIR) 
org.classpath.icedtea.pulseaudio.Stream ; \
-       $(JAVAH) -d $(ICEDTEA_SOUND_NATIVE_BUILDDIR) -classpath 
$(ICEDTEA_SOUND_CLASS_DIR) \
-         -J-Xbootclasspath/p:$(ICEDTEA_SOUND_CLASS_DIR) 
org.classpath.icedtea.pulseaudio.Operation; \
-       $(JAVAH) -d $(ICEDTEA_SOUND_NATIVE_BUILDDIR) -classpath 
$(ICEDTEA_SOUND_CLASS_DIR) \
-         -J-Xbootclasspath/p:$(ICEDTEA_SOUND_CLASS_DIR) 
org.classpath.icedtea.pulseaudio.PulseAudioSourcePort ; \
-       $(JAVAH) -d $(ICEDTEA_SOUND_NATIVE_BUILDDIR) -classpath 
$(ICEDTEA_SOUND_CLASS_DIR) \
-         -J-Xbootclasspath/p:$(ICEDTEA_SOUND_CLASS_DIR) 
org.classpath.icedtea.pulseaudio.PulseAudioTargetPort ; \
-       $(JAVAH) -d $(ICEDTEA_SOUND_NATIVE_BUILDDIR) -classpath 
$(ICEDTEA_SOUND_CLASS_DIR) \
-         -J-Xbootclasspath/p:$(ICEDTEA_SOUND_CLASS_DIR) 
org.classpath.icedtea.pulseaudio.ContextEvent
-       mkdir -p stamps
-       touch $@
-
-$(ICEDTEA_SOUND_NATIVE_BUILDDIR)/%.o: $(ICEDTEA_SOUND_NATIVE_SRCDIR)/%.c 
stamps/icedtea-sound-headers.stamp
+$(ICEDTEA_SOUND_NATIVE_BUILDDIR)/%.o: $(ICEDTEA_SOUND_NATIVE_SRCDIR)/%.c 
stamps/icedtea-sound-class.stamp
        $(CC) $(IT_CFLAGS) -fPIC -I$(SYSTEM_JDK_DIR)/include/linux 
-I$(SYSTEM_JDK_DIR)/include \
         -I$(ICEDTEA_SOUND_NATIVE_BUILDDIR) -o $@ -c $<
 
--- icedtea-sound-1.0.1/acinclude.m4    Fri Jul 18 23:46:15 2014 +0100
+++ icedtea-sound-1.0.1/acinclude.m4    Thu Nov 02 13:16:38 2017 +0100
@@ -129,63 +129,16 @@
 AC_DEFUN([IT_FIND_COMPILER],
 [
   AC_REQUIRE([IT_FIND_JAVA])
-  AC_REQUIRE([IT_FIND_ECJ_JAR])
 
   IT_FIND_JAVAC
-  IT_FIND_ECJ
-  IT_USING_ECJ
   
-  if test "x${ECJ_JAR}" = "xno"; then
-    if test "x${JAVAC}" = "x"; then
-      AC_MSG_ERROR("No compiler or ecj JAR file was found.")
-    fi
+  if test "x${JAVAC}" = "x"; then
+    AC_MSG_ERROR("No compiler found.")
   fi
 
-  AC_SUBST(ECJ)
   AC_SUBST(JAVAC)
 ])
 
-AC_DEFUN_ONCE([IT_FIND_ECJ],
-[
-  ECJ_DEFAULT=/usr/bin/ecj
-  AC_MSG_CHECKING([if an ecj binary was specified])
-  AC_ARG_WITH([ecj],
-             [AS_HELP_STRING(--with-ecj,bytecode compilation with ecj)],
-  [
-    if test "x${withval}" = "xyes"; then
-      ECJ=no
-    else
-      ECJ="${withval}"
-    fi
-  ],
-  [ 
-    ECJ=no
-  ])
-  AC_MSG_RESULT(${ECJ})
-  if test "x${ECJ}" = "xno"; then
-    ECJ=${ECJ_DEFAULT}
-  fi
-  AC_MSG_CHECKING([if $ECJ is a valid executable file])
-  if test -x "${ECJ}" && test -f "${ECJ}"; then
-    AC_MSG_RESULT([yes])
-  else
-    ECJ=""
-    AC_PATH_PROG(ECJ, "ecj")
-    if test -z "${ECJ}"; then
-      AC_PATH_PROG(ECJ, "ecj-3.1")
-    fi
-    if test -z "${ECJ}"; then
-      AC_PATH_PROG(ECJ, "ecj-3.2")
-    fi
-    if test -z "${ECJ}"; then
-      AC_PATH_PROG(ECJ, "ecj-3.3")
-    fi
-    if test -z "${ECJ}"; then
-      AC_PATH_PROG(ECJ, "ecj-3.4")
-    fi
-  fi
-])
-
 AC_DEFUN_ONCE([IT_FIND_JAVAC],
 [
   AC_REQUIRE([IT_CHECK_FOR_JDK])
@@ -260,74 +213,6 @@
   AC_SUBST(JAVA)
 ])
 
-AC_DEFUN_ONCE([IT_FIND_ECJ_JAR],
-[
-  AC_MSG_CHECKING([for an ecj JAR file])
-  AC_ARG_WITH([ecj-jar],
-              [AS_HELP_STRING([--with-ecj-jar[[=PATH]]],specify location of an 
ECJ JAR file)],
-  [
-    if test -f "${withval}"; then
-      ECJ_JAR="${withval}"
-    fi
-  ],
-  [
-    ECJ_JAR=
-  ])
-  if test -z "${ECJ_JAR}"; then
-    for jar in /usr/share/java/eclipse-ecj.jar \
-      /usr/share/java/ecj.jar \
-      /usr/share/eclipse-ecj-3.{2,3,4,5}/lib/ecj.jar; do
-        if test -e $jar; then
-          ECJ_JAR=$jar
-         break
-        fi
-      done
-      if test -z "${ECJ_JAR}"; then
-        ECJ_JAR=no
-      fi
-  fi
-  AC_MSG_RESULT(${ECJ_JAR})
-  AC_SUBST(ECJ_JAR)
-])
-
-AC_DEFUN_ONCE([IT_FIND_JAVAH],
-[
-  AC_REQUIRE([IT_CHECK_FOR_JDK])
-  JAVAH_DEFAULT=${SYSTEM_JDK_DIR}/bin/javah
-  AC_MSG_CHECKING([if a javah executable is specified])
-  AC_ARG_WITH([javah],
-              [AS_HELP_STRING([--with-javah[[=PATH]]],specify location of 
javah)],
-  [
-    if test "x${withval}" = "xyes"; then
-      JAVAH=no
-    else
-      JAVAH="${withval}"
-    fi
-  ],
-  [
-    JAVAH=no
-  ])
-  AC_MSG_RESULT(${JAVAH})
-  if test "x${JAVAH}" == "xno"; then
-    JAVAH=${JAVAH_DEFAULT}
-  fi
-  AC_MSG_CHECKING([if $JAVAH is a valid executable file])
-  if test -x "${JAVAH}" && test -f "${JAVAH}"; then
-    AC_MSG_RESULT([yes])
-  else
-    AC_MSG_RESULT([no])
-    JAVAH=""
-    AC_PATH_PROG(JAVAH, "javah")
-    if test -z "${JAVAH}"; then
-      AC_PATH_PROG(JAVAH, "gjavah")
-    fi
-    if test -z "${JAVAH}"; then
-      AC_MSG_ERROR("A Java header generator was not found.")
-    fi
-  fi
-  AC_SUBST(JAVAH)
-])
-
 AC_DEFUN_ONCE([IT_FIND_JAR],
 [
   AC_REQUIRE([IT_CHECK_FOR_JDK])
@@ -457,7 +342,7 @@
 [
   AC_MSG_CHECKING([for a JDK home directory])
   AC_ARG_WITH([jdk-home],
-             [AS_HELP_STRING([--with-jdk-home[[=PATH]]],
+             [AS_HELP_STRING([--with-jdk-home[[=PATH]]],
                               [jdk home directory (default is first predefined 
JDK found)])],
               [
                 if test "x${withval}" = xyes
@@ -474,50 +359,28 @@
                SYSTEM_JDK_DIR=
               ])
   if test -z "${SYSTEM_JDK_DIR}"; then
-    AC_MSG_RESULT([not specified])
-    if test "x${enable_bootstrap}" = "xyes"; then
-      BOOTSTRAP_VMS="/usr/lib/jvm/java-gcj /usr/lib/jvm/gcj-jdk 
/usr/lib/jvm/cacao";
-    fi
-    ICEDTEA6_VMS="/usr/lib/jvm/icedtea-6 /usr/lib/jvm/icedtea6 
/usr/lib/jvm/java-6-openjdk
-                 /usr/lib/jvm/java-1.6.0-openjdk.x86_64 
/usr/lib64/jvm/java-1.6.0-openjdk
-                 /usr/lib/jvm/java-1.6.0"
-    ICEDTEA7_VMS="/usr/lib/jvm/icedtea-7 /usr/lib/jvm/icedtea7 
/usr/lib/jvm/java-1.7.0-openjdk
-                 /usr/lib/jvm/java-1.7.0-openjdk.x86_64 
/usr/lib64/jvm/java-1.7.0-openjdk
-                 /usr/lib/jvm/java-1.7.0 /usr/lib/jvm/java-7-openjdk"
-    for dir in ${BOOTSTRAP_VMS} ${ICEDTEA7_VMS} ${ICEDTEA6_VMS} \
-              /usr/lib/jvm/java-openjdk /usr/lib/jvm/openjdk 
/usr/lib/jvm/java-icedtea \
-              /etc/alternatives/java_sdk_openjdk ; do
-       AC_MSG_CHECKING([for ${dir}]);
+    for dir in /etc/alternatives/java_sdk \
+               /usr/lib/jvm/java-1.9.0-openjdk \
+               /usr/lib64/jvm/java-1.9.0-openjdk \
+               /usr/lib/jvm/icedtea9 \
+               /usr/lib64/jvm/icedtea9 \
+               /usr/lib/jvm/java-10-openjdk \
+               /usr/lib64/jvm/java-10-openjdk ; do
        if test -d $dir; then
-         SYSTEM_JDK_DIR=$dir ;
-        AC_MSG_RESULT([found]) ;
-        break ;
-       else
-         AC_MSG_RESULT([not found]) ;
+         SYSTEM_JDK_DIR=$dir
+         break
        fi
     done
-  else
-    AC_MSG_RESULT(${SYSTEM_JDK_DIR})
   fi
   if ! test -d "${SYSTEM_JDK_DIR}"; then
-    AC_MSG_ERROR("A JDK home directory could not be found.")
+    AC_MSG_ERROR("A JDK home directory could not be found. ${SYSTEM_JDK_DIR}")
+  else
+    READ=`readlink -f ${SYSTEM_JDK_DIR}`
+    AC_MSG_RESULT(${SYSTEM_JDK_DIR} (link to ${READ}))
   fi
   AC_SUBST(SYSTEM_JDK_DIR)
 ])
 
-AC_DEFUN([IT_USING_ECJ],[
-AC_CACHE_CHECK([if we are using ecj as javac], it_cv_ecj, [
-if $JAVAC -version 2>&1| grep '^Eclipse' >&AS_MESSAGE_LOG_FD ; then
-  it_cv_ecj=yes;
-else
-  it_cv_ecj=no;
-fi
-])
-USING_ECJ=$it_cv_ecj
-AC_SUBST(USING_ECJ)
-AC_PROVIDE([$0])dnl
-])
-
 dnl check that javac and java work
 AC_DEFUN_ONCE([IT_CHECK_JAVA_AND_JAVAC_WORK],[
   AC_REQUIRE([IT_FIND_JAVA])
@@ -538,7 +401,7 @@
     }
 }]
 EOF
-  if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $CLASS >&AS_MESSAGE_LOG_FD 
2>&1; then
+  if $JAVAC -cp . $JAVACFLAGS -source 10 -target 10 $CLASS >&AS_MESSAGE_LOG_FD 
2>&1; then
     if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
       it_cv_jdk_works=yes;
     else
@@ -560,7 +423,7 @@
 [
   AC_MSG_CHECKING(whether to enable Java compiler warnings)
   AC_ARG_ENABLE([warnings],
-             [AS_HELP_STRING(--enable-warnings,produce warnings from javac/ecj 
[[default=no]])],
+             [AS_HELP_STRING(--enable-warnings,produce warnings from javac 
[[default=no]])],
   [
     ENABLE_WARNINGS="${enableval}"
   ],
@@ -570,5 +433,4 @@
 
   AC_MSG_RESULT(${ENABLE_WARNINGS})
   AM_CONDITIONAL(ENABLE_WARNINGS, test x"${ENABLE_WARNINGS}" = "xyes")
-  AC_SUBST(ENABLE_WARNINGS)
 ])
--- icedtea-sound-1.0.1/configure.ac    Fri Jul 18 23:46:15 2014 +0100
+++ icedtea-sound-1.0.1/configure.ac    Thu Nov 02 13:16:38 2017 +0100
@@ -43,10 +43,8 @@
 IT_FIND_TOOL([ZIP], [zip])
 
 IT_CHECK_JAVA_AND_JAVAC_WORK
-IT_FIND_JAVAH
 IT_FIND_JAR
 IT_FIND_JAVADOC
-AC_CONFIG_FILES([javac], [chmod +x javac])
 
 IT_CHECK_ENABLE_WARNINGS
 
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ icedtea-sound-1.0.1/src/java/module-info.java       Thu Nov 02 13:16:38 
2017 +0100
@@ -0,0 +1,6 @@
+module icedtea.sound {
+    exports org.classpath.icedtea.pulseaudio;
+    requires java.desktop;
+    provides javax.sound.sampled.spi.MixerProvider
+        with org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider;
+}
++++++ icedtea-sound-soundproperties.patch ++++++
--- jdk10/src/java.desktop/share/conf/sound.properties  2008-08-28 
04:15:18.000000000 -0400
+++ jdk10/src/java.desktop/share/conf/sound.properties  2008-10-03 
16:59:21.000000000 -0400
@@ -37,3 +37,13 @@
 # Specify the default Receiver by provider and name:
 # javax.sound.midi.Receiver=com.sun.media.sound.MidiProvider#SunMIDI1
 #
+
+# 
javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
+# 
javax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
+# 
javax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
+# 
javax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
+
+javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
+javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
+javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
+javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider
++++++ implicit-pointer-decl.patch ++++++
--- jdk10/src/java.instrument/share/native/libinstrument/JarFacade.c    
2014-10-02 10:59:00.105666221 +0200
+++ jdk10/src/java.instrument/share/native/libinstrument/JarFacade.c    
2014-10-02 11:59:03.355452975 +0200
@@ -23,6 +23,7 @@
  * questions.
  */
 
+#include <ctype.h>
 #include <string.h>
 #include <stdlib.h>
 
++++++ java-atk-wrapper-security.patch ++++++
--- jdk10/src/java.base/share/conf/security/java.security       2017-01-23 
23:56:02.000000000 +0100
+++ jdk10/src/java.base/share/conf/security/java.security       2017-01-27 
08:41:10.551819770 +0100
@@ -304,6 +304,8 @@
 #
 package.access=sun.misc.,\
                sun.reflect.,\
+               org.GNOME.Accessibility.,\
+               org.GNOME.Bonobo.,\
 
 #
 # List of comma-separated packages that start with or equal this string
@@ -316,6 +318,8 @@
 #
 package.definition=sun.misc.,\
                    sun.reflect.,\
+                   org.GNOME.Accessibility.,\
+                   org.GNOME.Bonobo.,\
 
 #
 # Determines whether this properties file can be appended to
++++++ jaw-jdk10.patch ++++++
--- java-atk-wrapper-0.33.2/configure.ac        2017-11-06 13:37:11.504756491 
+0100
+++ java-atk-wrapper-0.33.2/configure.ac        2017-11-06 13:37:47.224756626 
+0100
@@ -64,7 +64,7 @@
 # java wrapper
 
 AM_CONDITIONAL(USER, test `whoami` = "root")
-JAVA_REQUIRED=1.7.0
+JAVA_REQUIRED=9.0.0
 JAVA_ERROR_MESSAGE="Java $JAVA_REQUIRED or later is required to build 
java-access-bridge"
 
 AC_ARG_VAR([JAVA_HOME],[Java Runtime Environment location])
@@ -170,6 +170,8 @@
     wrapper/org/GNOME/Makefile
     wrapper/org/GNOME/Accessibility/Makefile
     wrapper/org/GNOME/Accessibility/AtkWrapper.java
+    wrapper/META-INF/Makefile
+    wrapper/META-INF/services/Makefile
 ])
 AC_OUTPUT
 
--- java-atk-wrapper-0.33.2/wrapper/Makefile.am 2017-11-06 13:37:11.504756491 
+0100
+++ java-atk-wrapper-0.33.2/wrapper/Makefile.am 2017-11-06 13:47:48.648845631 
+0100
@@ -1,4 +1,4 @@
-SUBDIRS=org
+SUBDIRS=org META-INF
 JARFILES=java-atk-wrapper.jar
 ALL_CLASSES=org/GNOME/Accessibility/*.class
 DEP_CLASSES=$(wildcard $(ALL_CLASSES))
@@ -14,10 +14,13 @@
 java_atk_wrapper_DATA = $(JARFILES)
 properties_DATA = accessibility.properties
 EXTRA_DIST = $(properties_DATA) \
-            manifest.txt
+            manifest.txt module-info.java
 
-$(JARFILES) : $(DEP_CLASSES)
-       $(JAR) cfm $(JARFILES) manifest.txt org/GNOME/Accessibility/*.class
+module-info.class : $(srcdir)/module-info.java
+       $(JAVAC) -cp $(top_builddir)/wrapper -sourcepath 
$(top_srcdir)/wrapper:$(top_builddir)/wrapper $(JAVACFLAGS) -d 
$(top_builddir)/wrapper $<
+
+$(JARFILES) : $(DEP_CLASSES) module-info.class
+       $(JAR) cfm $(JARFILES) manifest.txt org/GNOME/Accessibility/*.class 
module-info.class META-INF/services/javax.accessibility.AccessibilityProvider
 
 all-local : $(DATA) $(JARFILES)
 
--- java-atk-wrapper-0.33.2/wrapper/META-INF/Makefile.am        1970-01-01 
01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/META-INF/Makefile.am        2017-11-06 
13:37:47.224756626 +0100
@@ -0,0 +1 @@
+SUBDIRS=services
--- 
java-atk-wrapper-0.33.2/wrapper/META-INF/services/javax.accessibility.AccessibilityProvider
 1970-01-01 01:00:00.000000000 +0100
+++ 
java-atk-wrapper-0.33.2/wrapper/META-INF/services/javax.accessibility.AccessibilityProvider
 2017-11-06 13:37:47.224756626 +0100
@@ -0,0 +1 @@
+org.GNOME.Accessibility.AtkProvider
--- java-atk-wrapper-0.33.2/wrapper/META-INF/services/Makefile.am       
1970-01-01 01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/META-INF/services/Makefile.am       
2017-11-06 13:37:47.224756626 +0100
@@ -0,0 +1 @@
+EXTRA_DIST = javax.accessibility.AccessibilityProvider
--- java-atk-wrapper-0.33.2/wrapper/module-info.java    1970-01-01 
01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/module-info.java    2017-11-06 
13:42:08.850466481 +0100
@@ -0,0 +1,6 @@
+module atk.wrapper {
+    exports org.GNOME.Accessibility;
+    requires java.desktop;
+    provides javax.accessibility.AccessibilityProvider
+        with org.GNOME.Accessibility.AtkProvider;
+}
--- java-atk-wrapper-0.33.2/wrapper/org/GNOME/Accessibility/AtkProvider.java    
1970-01-01 01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/org/GNOME/Accessibility/AtkProvider.java    
2017-11-06 13:37:47.224756626 +0100
@@ -0,0 +1,38 @@
+/*
+ * Java ATK Wrapper for GNOME
+ * Copyright (C) 2017 Oracle and/or its affiliates.
+ * Copyright (C) 2017 Fridrich Strba <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  
USA
+ */
+
+package org.GNOME.Accessibility;
+
+import javax.accessibility.AccessibilityProvider;
+
+public final class AtkProvider extends AccessibilityProvider {
+    private final String name = "org.GNOME.Accessibility.AtkWrapper";
+
+    public AtkProvider() {}
+
+    public String getName() {
+        return name;
+    }
+
+    public void activate() {
+        new AtkWrapper();
+    }
+
+}
--- java-atk-wrapper-0.33.2/wrapper/org/GNOME/Accessibility/Makefile.am 
2015-06-30 23:56:32.000000000 +0200
+++ java-atk-wrapper-0.33.2/wrapper/org/GNOME/Accessibility/Makefile.am 
2017-10-26 17:42:11.472221491 +0200
@@ -10,7 +10,7 @@
        sed -e "s;\@XPROP\@;${XPROP};g" \
                < $< >$@
 
-%.class : %.java
+%.class : %.java AtkWrapper.java
        CLASSPATH=$(top_srcdir)/wrapper $(JAVAC) $(JAVACFLAGS) -d 
$(top_builddir)/wrapper $<
 
 clean-local:
++++++ jaw-misc.patch ++++++
--- java-atk-wrapper-0.33.2/configure.ac        2015-07-07 13:52:28.000000000 
+0200
+++ java-atk-wrapper-0.33.2/configure.ac        2017-11-06 17:00:37.366413136 
+0100
@@ -46,7 +46,6 @@
   glib-2.0 >= 2.32.0
   gthread-2.0
   gdk-2.0
-  gdk-3.0
   gobject-2.0
 ])
 AC_SUBST(JAW_LIBS)
@@ -64,7 +63,7 @@
 # java wrapper
 
 AM_CONDITIONAL(USER, test `whoami` = "root")
-JAVA_REQUIRED=1.6
+JAVA_REQUIRED=1.7.0
 JAVA_ERROR_MESSAGE="Java $JAVA_REQUIRED or later is required to build 
java-access-bridge"
 
 AC_ARG_VAR([JAVA_HOME],[Java Runtime Environment location])
@@ -98,12 +98,6 @@ if test -z "$JAVAC"; then
 fi
 AC_SUBST(JAVAC)
 
-AC_PATH_PROG(JAVAH,javah,,${JAVA_PATH})
-if test -z "$JAVAH"; then
-  AC_MSG_ERROR([$JAVA_ERROR_MESSAGE])
-fi
-AC_SUBST(JAVAH)
-
 AC_SUBST(JAVACFLAGS)
 
 AC_PATH_PROG(JAR,jar,,${JAVA_PATH})
@@ -125,7 +124,7 @@
 
 
 if test "x$GCC" = xyes; then
-  JAW_CFLAGS=$JAW_CFLAGS $CFLAGS
+  JAW_CFLAGS="$JAW_CFLAGS $CFLAGS"
 else
   AC_MSG_ERROR("You should compile with GCC")
 fi
@@ -169,6 +168,7 @@
     wrapper/org/Makefile
     wrapper/org/GNOME/Makefile
     wrapper/org/GNOME/Accessibility/Makefile
+    wrapper/org/GNOME/Accessibility/AtkWrapper.java
 ])
 AC_OUTPUT
 
--- java-atk-wrapper-0.33.2/wrapper/Makefile.am 2015-07-01 02:19:15.000000000 
+0200
+++ java-atk-wrapper-0.33.2/wrapper/Makefile.am 2017-11-06 17:00:07.962413025 
+0100
@@ -13,7 +13,8 @@
 
 java_atk_wrapper_DATA = $(JARFILES)
 properties_DATA = accessibility.properties
-EXTRA_DIST = $(properties_DATA)
+EXTRA_DIST = $(properties_DATA) \
+            manifest.txt
 
 $(JARFILES) : $(DEP_CLASSES)
        $(JAR) cfm $(JARFILES) manifest.txt org/GNOME/Accessibility/*.class
--- java-atk-wrapper-0.33.2/wrapper/manifest.txt        1970-01-01 
01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/manifest.txt        2017-10-26 
15:25:02.159429001 +0200
@@ -0,0 +1,2 @@
+Main-Class: org.GNOME.Accessibility.AtkWrapper
+
++++++ jaw-nogtk.patch ++++++
--- java-atk-wrapper-0.33.2/configure.ac        2018-08-21 13:51:47.158216451 
+0200
+++ java-atk-wrapper-0.33.2/configure.ac        2018-08-21 13:52:22.122434818 
+0200
@@ -45,7 +45,6 @@
   dbus-1
   glib-2.0 >= 2.32.0
   gthread-2.0
-  gdk-2.0
   gobject-2.0
 ])
 AC_SUBST(JAW_LIBS)
--- java-atk-wrapper-0.33.2/jni/src/AtkWrapper.c        2015-07-02 
15:18:08.000000000 +0200
+++ java-atk-wrapper-0.33.2/jni/src/AtkWrapper.c        2018-08-21 
13:53:20.206797576 +0200
@@ -23,9 +23,6 @@
 #include <stdlib.h>
 #include <glib.h>
 #include <atk-bridge.h>
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h>
-#include <gtk/gtk.h>
 #include <X11/Xlib.h>
 #include "jawutil.h"
 #include "jawimpl.h"
@@ -258,7 +255,7 @@
 {
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
-  gdk_threads_add_idle(focus_notify_handler, para);
+  g_idle_add(focus_notify_handler, para);
 }
 
 static gboolean
@@ -336,7 +333,7 @@
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
   para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
-  gdk_threads_add_idle(window_open_handler, para);
+  g_idle_add(window_open_handler, para);
 }
 
 static gboolean
@@ -413,7 +410,7 @@
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
   para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
-  gdk_threads_add_idle(window_close_handler, para);
+  g_idle_add(window_close_handler, para);
 }
 
 static gboolean
@@ -462,7 +459,7 @@
 {
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
-  gdk_threads_add_idle(window_minimize_handler, para);
+  g_idle_add(window_minimize_handler, para);
 }
 
 static gboolean
@@ -511,7 +508,7 @@
 {
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac );
-  gdk_threads_add_idle(window_maximize_handler, para);
+  g_idle_add(window_maximize_handler, para);
 }
 
 static gboolean
@@ -561,7 +558,7 @@
 
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
-  gdk_threads_add_idle(window_restore_handler, para);
+  g_idle_add(window_restore_handler, para);
 }
 
 static gboolean
@@ -609,7 +606,7 @@
 
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
-  gdk_threads_add_idle(window_activate_handler, para);
+  g_idle_add(window_activate_handler, para);
 }
 
 static gboolean
@@ -659,7 +656,7 @@
 
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
-  gdk_threads_add_idle(window_deactivate_handler, para);
+  g_idle_add(window_deactivate_handler, para);
 }
 
 static gboolean
@@ -710,7 +707,7 @@
 
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
-  gdk_threads_add_idle(window_state_change_handler, para);
+  g_idle_add(window_state_change_handler, para);
 }
 
 static gchar
@@ -1047,7 +1044,7 @@
   CallbackPara *para = alloc_callback_para(global_ac);
   para->signal_id = (gint)id;
   para->args = global_args;
-  gdk_threads_add_idle(signal_emit_handler, para);
+  g_idle_add(signal_emit_handler, para);
 }
 
 static gboolean
@@ -1106,7 +1103,7 @@
   } else {
     para->state_value = FALSE;
   }
-  gdk_threads_add_idle(object_state_change_handler, para);
+  g_idle_add(object_state_change_handler, para);
 }
 
 static gboolean
@@ -1163,7 +1160,7 @@
 {
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
-  gdk_threads_add_idle(component_added_handler, para);
+  g_idle_add(component_added_handler, para);
 }
 
 static gboolean
@@ -1222,7 +1219,7 @@
 {
   jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
   CallbackPara *para = alloc_callback_para(global_ac);
-  gdk_threads_add_idle(component_removed_handler, para);
+  g_idle_add(component_removed_handler, para);
 }
 
 static gboolean
@@ -1340,7 +1337,7 @@
 {
   jboolean key_consumed;
   jobject global_key_event = (*jniEnv)->NewGlobalRef(jniEnv, jAtkKeyEvent);
-  gdk_threads_add_idle(key_dispatch_handler, (gpointer)global_key_event);
+  g_idle_add(key_dispatch_handler, (gpointer)global_key_event);
 
   if(jaw_debug)
     printf("key_dispatch_result saved = %d\n ", key_dispatch_result);
++++++ jconsole.desktop.in ++++++
[Desktop Entry]
Name=OpenJDK @VERSION@ Monitoring & Management Console
GenericName=OpenJDK Monitoring & Management Console
Comment=Monitor and manage OpenJDK applications
Exec=@JAVA_HOME@/bin/jconsole
Icon=java
Terminal=false
Type=Application
StartupWMClass=sun-tools-jconsole-JConsole
Categories=Development;Profiling;
Version=1.0
++++++ loadAssistiveTechnologies.patch ++++++
--- openjdk/src/java.desktop/share/classes/java/awt/Toolkit.java
+++ openjdk/src/java.desktop/share/classes/java/awt/Toolkit.java
@@ -883,9 +883,13 @@
                     return null;
                 }
             });
             if (!GraphicsEnvironment.isHeadless()) {
-                loadAssistiveTechnologies();
+                try {
+                    loadAssistiveTechnologies();
+                } catch (AWTError error) {
+                    // ignore silently
+                }
             }
         }
         return toolkit;
     }
++++++ multiple-pkcs11-library-init.patch ++++++
--- jdk10/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Config.java 
2016-12-20 23:13:34.000000000 +0100
+++ jdk10/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Config.java 
2016-12-22 11:45:10.418651583 +0100
@@ -51,6 +51,7 @@
     static final int ERR_HALT       = 1;
     static final int ERR_IGNORE_ALL = 2;
     static final int ERR_IGNORE_LIB = 3;
+    static final int ERR_IGNORE_MULTI_INIT = 4;
 
     // same as allowSingleThreadedModules but controlled via a system property
     // and applied to all providers. if set to false, no SunPKCS11 instances
@@ -992,6 +993,8 @@
             handleStartupErrors = ERR_IGNORE_LIB;
         } else if (val.equals("halt")) {
             handleStartupErrors = ERR_HALT;
+        } else if (val.equals("ignoreMultipleInitialisation")) {
+            handleStartupErrors = ERR_IGNORE_MULTI_INIT;
         } else {
             throw excToken("Invalid value for handleStartupErrors:");
         }
--- 
jdk10/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java  
    2016-12-20 23:13:34.000000000 +0100
+++ 
jdk10/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java  
    2016-12-22 11:45:10.418651583 +0100
@@ -174,26 +174,37 @@
                 String nssLibraryDirectory = config.getNssLibraryDirectory();
                 String nssSecmodDirectory = config.getNssSecmodDirectory();
                 boolean nssOptimizeSpace = config.getNssOptimizeSpace();
+                int errorHandling = config.getHandleStartupErrors();
 
                 if (secmod.isInitialized()) {
                     if (nssSecmodDirectory != null) {
                         String s = secmod.getConfigDir();
                         if ((s != null) &&
                                 (s.equals(nssSecmodDirectory) == false)) {
-                            throw new ProviderException("Secmod directory "
-                                + nssSecmodDirectory
-                                + " invalid, NSS already initialized with "
-                                + s);
+                            String msg = "Secmod directory " + 
nssSecmodDirectory
+                                + " invalid, NSS already initialized with " + 
s;
+                            if (errorHandling == Config.ERR_IGNORE_MULTI_INIT 
||
+                                errorHandling == Config.ERR_IGNORE_ALL) {
+                                throw new UnsupportedOperationException(msg);
+                            } else {
+                                throw new ProviderException(msg);
+                            }
                         }
                     }
                     if (nssLibraryDirectory != null) {
                         String s = secmod.getLibDir();
                         if ((s != null) &&
                                 (s.equals(nssLibraryDirectory) == false)) {
-                            throw new ProviderException("NSS library directory 
"
+                            String msg = "NSS library directory "
                                 + nssLibraryDirectory
                                 + " invalid, NSS already initialized with "
-                                + s);
+                                + s;
+                            if (errorHandling == Config.ERR_IGNORE_MULTI_INIT 
||
+                                errorHandling == Config.ERR_IGNORE_ALL) {
+                                throw new UnsupportedOperationException(msg);
+                            } else {
+                                throw new ProviderException(msg);
+                            }
                         }
                     }
                 } else {
++++++ nss.cfg ++++++
name = NSS
nssLibraryDirectory = 
nssDbMode = noDb
attributes = compatibility
++++++ openj9-nogit.patch.in ++++++
--- a/closed/OpenJ9.gmk
+++ b/closed/OpenJ9.gmk
@@ -32,15 +32,15 @@ ifeq (,$(BUILD_ID))
   BUILD_ID := 000000
 endif
 
-OPENJ9_SHA := $(shell git -C $(OPENJ9_TOPDIR) rev-parse --short HEAD)
+OPENJ9_SHA := @OPENJ9_SHA@
 ifeq (,$(OPENJ9_SHA))
   $(error Could not determine OpenJ9 SHA)
 endif
 
 # Find OpenJ9 tag associated with current commit (suppressing stderr in case 
there is no such tag).
-OPENJ9_TAG := $(shell git -C $(OPENJ9_TOPDIR) describe --exact-match HEAD 
2>/dev/null)
+OPENJ9_TAG := @OPENJ9_TAG@
 ifeq (,$(OPENJ9_TAG))
-  OPENJ9_BRANCH := $(shell git -C $(OPENJ9_TOPDIR) rev-parse --abbrev-ref HEAD)
+  OPENJ9_BRANCH := @OPENJ9_BRANCH@
   ifeq (,$(OPENJ9_BRANCH))
     $(error Could not determine OpenJ9 branch)
   endif
@@ -49,7 +49,7 @@ else
   OPENJ9_VERSION_STRING := $(OPENJ9_TAG)
 endif
 
-OPENJ9OMR_SHA := $(shell git -C $(OPENJ9OMR_TOPDIR) rev-parse --short HEAD)
+OPENJ9OMR_SHA := @OPENJ9OMR_SHA@
 ifeq (,$(OPENJ9OMR_SHA))
   $(error Could not determine OMR SHA)
 endif
--- a/closed/autoconf/custom-hook.m4
+++ b/closed/autoconf/custom-hook.m4
@@ -436,7 +436,7 @@ AC_DEFUN_ONCE([OPENJ9_CHECK_NASM_VERSION],
 
 AC_DEFUN_ONCE([OPENJDK_VERSION_DETAILS],
 [
-  OPENJDK_SHA=`git -C $TOPDIR rev-parse --short HEAD`
+  OPENJDK_SHA=@OPENJDK_SHA@
 
   AC_SUBST(OPENJDK_SHA)
 
++++++ system-pcsclite.patch ++++++
--- jdk11/make/autoconf/lib-bundled.m4  2018-06-13 06:35:04.000000000 +0200
+++ jdk11/make/autoconf/lib-bundled.m4  2018-06-14 15:06:38.825090243 +0200
@@ -37,6 +37,7 @@
   LIB_SETUP_LIBPNG
   LIB_SETUP_ZLIB
   LIB_SETUP_LCMS
+  LIB_SETUP_PCSCLITE
 ])
 
 
################################################################################
@@ -260,3 +261,41 @@
   AC_SUBST(LCMS_CFLAGS)
   AC_SUBST(LCMS_LIBS)
 ])
+
+################################################################################
+# Setup pcsclite
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_PCSCLITE],
+[
+  AC_ARG_WITH(pcsclite, [AS_HELP_STRING([--with-pcsclite],
+     [use pcsclite from build system or OpenJDK source (system, bundled) 
@<:@bundled@:>@])])
+
+  AC_MSG_CHECKING([for which pcsclite to use])
+
+  # default is bundled
+  DEFAULT_PCSCLITE=bundled
+  # if user didn't specify, use DEFAULT_PCSCLITE
+  if test "x${with_pcsclite}" = "x"; then
+      with_libpng=${DEFAULT_PCSCLITE}
+  fi
+
+  if test "x${with_pcsclite}" = "xbundled"; then
+      USE_EXTERNAL_PCSCLITE=false
+      AC_MSG_RESULT([bundled])
+  elif test "x${with_pcsclite}" = "xsystem"; then
+      PKG_CHECK_MODULES(PCSCLITE, libpcsclite,
+                   [ PCSCLITE_FOUND=yes ],
+                   [ PCSCLITE_FOUND=no ])
+      if test "x${PCSCLITE_FOUND}" = "xyes"; then
+          USE_EXTERNAL_PCSCLITE=true
+          AC_MSG_RESULT([system])
+      else
+          AC_MSG_RESULT([system not found])
+          AC_MSG_ERROR([--with-pcsclite=system specified, but no pcsclite 
found!])
+      fi
+  else
+      AC_MSG_ERROR([Invalid value of --with-pcsclite: ${with_pcsclite}, use 
'system' or 'bundled'])
+  fi
+
+  AC_SUBST(USE_EXTERNAL_PCSCLITE)
+])
--- jdk11/make/autoconf/spec.gmk.in     2018-06-13 06:35:04.000000000 +0200
+++ jdk11/make/autoconf/spec.gmk.in     2018-06-14 15:06:38.873090499 +0200
@@ -730,6 +730,7 @@
 ENABLE_INTREE_EC:=@ENABLE_INTREE_EC@
 USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
 USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
+USE_EXTERNAL_LIBPCSCLITE:=@USE_EXTERNAL_LIBPCSCLITE@
 USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
 LIBZ_CFLAGS:=@LIBZ_CFLAGS@
 LIBZ_LIBS:=@LIBZ_LIBS@
--- jdk11/make/lib/Lib-java.smartcardio.gmk     2018-06-13 06:35:04.000000000 
+0200
+++ jdk11/make/lib/Lib-java.smartcardio.gmk     2018-06-14 15:09:10.281896734 
+0200
@@ -30,12 +30,12 @@
 $(eval $(call SetupJdkLibrary, BUILD_LIBJ2PCSC, \
     NAME := j2pcsc, \
     CFLAGS := $(CFLAGS_JDKLIB), \
-    CFLAGS_unix := -D__sun_jdk, \
-    EXTRA_HEADER_DIRS := libj2pcsc/MUSCLE, \
+    CFLAGS_unix := -D__sun_jdk -DUSE_SYSTEM_LIBPCSCLITE, \
+    EXTRA_HEADER_DIRS := /usr/include/PCSC, \
     OPTIMIZATION := LOW, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
-    LIBS_unix := $(LIBDL), \
+    LIBS_unix := -lpcsclite $(LIBDL), \
     LIBS_windows := winscard.lib, \
 ))
 
--- jdk11/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c  2018-06-13 
06:35:04.000000000 +0200
+++ jdk11/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c  2018-06-14 
15:06:38.877090521 +0200
@@ -36,6 +36,7 @@
 
 #include "pcsc_md.h"
 
+#ifndef USE_SYSTEM_LIBPCSCLITE
 void *hModule;
 FPTR_SCardEstablishContext scardEstablishContext;
 FPTR_SCardConnect scardConnect;
@@ -47,6 +48,7 @@
 FPTR_SCardBeginTransaction scardBeginTransaction;
 FPTR_SCardEndTransaction scardEndTransaction;
 FPTR_SCardControl scardControl;
+#endif
 
 /*
  * Throws a Java Exception by name
@@ -75,6 +77,7 @@
     throwByName(env, "java/io/IOException", msg);
 }
 
+#ifndef USE_SYSTEM_LIBPCSCLITE
 void *findFunction(JNIEnv *env, void *hModule, char *functionName) {
     void *fAddress = dlsym(hModule, functionName);
     if (fAddress == NULL) {
@@ -85,9 +88,11 @@
     }
     return fAddress;
 }
+#endif
 
 JNIEXPORT void JNICALL Java_sun_security_smartcardio_PlatformPCSC_initialize
         (JNIEnv *env, jclass thisClass, jstring jLibName) {
+#ifndef USE_SYSTEM_LIBPCSCLITE
     const char *libName = (*env)->GetStringUTFChars(env, jLibName, NULL);
     if (libName == NULL) {
         throwNullPointerException(env, "PCSC library name is null");
@@ -141,4 +146,5 @@
 #else
     scardControl          = (FPTR_SCardControl)         findFunction(env, 
hModule, "SCardControl132");
 #endif // __APPLE__
+#endif
 }
--- jdk11/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.h  2018-06-13 
06:35:04.000000000 +0200
+++ jdk11/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.h  2018-06-14 
15:06:38.877090521 +0200
@@ -23,6 +23,8 @@
  * questions.
  */
 
+#ifndef USE_SYSTEM_LIBPCSCLITE
+
 typedef LONG (*FPTR_SCardEstablishContext)(DWORD dwScope,
                 LPCVOID pvReserved1,
                 LPCVOID pvReserved2,
@@ -110,3 +112,41 @@
 extern FPTR_SCardBeginTransaction scardBeginTransaction;
 extern FPTR_SCardEndTransaction scardEndTransaction;
 extern FPTR_SCardControl scardControl;
+
+#else
+
+#define CALL_SCardEstablishContext(dwScope, pvReserved1, pvReserved2, 
phContext) \
+    (SCardEstablishContext(dwScope, pvReserved1, pvReserved2, phContext))
+
+#define CALL_SCardConnect(hContext, szReader, dwSharedMode, 
dwPreferredProtocols, phCard, pdwActiveProtocols) \
+    (SCardConnect(hContext, szReader, dwSharedMode, dwPreferredProtocols, 
phCard, pdwActiveProtocols))
+
+#define CALL_SCardDisconnect(hCard, dwDisposition) \
+    (SCardDisconnect(hCard, dwDisposition))
+
+#define CALL_SCardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, 
pdwProtocol, pbAtr, pcbAtrLen) \
+    (SCardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, 
pbAtr, pcbAtrLen))
+
+#define CALL_SCardGetStatusChange(hContext, dwTimeout, rgReaderStates, 
cReaders) \
+    (SCardGetStatusChange(hContext, dwTimeout, rgReaderStates, cReaders))
+
+#define CALL_SCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, \
+                            pioRecvPci, pbRecvBuffer, pcbRecvLength) \
+    (SCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, \
+                            pioRecvPci, pbRecvBuffer, pcbRecvLength))
+
+#define CALL_SCardListReaders(hContext, mszGroups, mszReaders, pcchReaders) \
+    (SCardListReaders(hContext, mszGroups, mszReaders, pcchReaders))
+
+#define CALL_SCardBeginTransaction(hCard) \
+    (SCardBeginTransaction(hCard))
+
+#define CALL_SCardEndTransaction(hCard, dwDisposition) \
+    (SCardEndTransaction(hCard, dwDisposition))
+
+#define CALL_SCardControl(hCard, dwControlCode, pbSendBuffer, cbSendLength, \
+            pbRecvBuffer, pcbRecvLength, lpBytesReturned) \
+    (SCardControl(hCard, dwControlCode, pbSendBuffer, cbSendLength, \
+            pbRecvBuffer, pcbRecvLength, lpBytesReturned))
+
+#endif

Reply via email to